The RenderComponent enables an Entity to render 3D meshes. The RenderComponent#type
property can be set to one of several predefined shape types (such as box, sphere, cone
and so on). Alternatively, the component can be configured to manage an arbitrary array of
MeshInstance objects. These can either be created programmatically or loaded from an
Asset.
You should never need to use the RenderComponent constructor directly. To add a RenderComponent to an Entity, use Entity#addComponent:
// Add a render component to an entity with the default options
const entity = new Entity()
entity.addComponent('render') // This defaults to a 1x1x1 box
To create an entity with a specific primitive shape:
entity.addComponent('render', {
type: 'cone',
castShadows: false,
receiveShadows: false
})
Once the RenderComponent is added to the entity, you can set and get any of its properties:
entity.render.type = 'capsule' // Set the render component's type
console.log(entity.render.type) // Get the render component's type and print it
entity: Entity
The Entity that this Component is attached to.
Component.entity
isStatic: boolean = false
Mark meshes as non-movable (optimization).
system: ComponentSystem
The ComponentSystem used to create this Component.
Component.system
get asset(): number
Gets the render asset id for the render component.
number
set asset(value: number): void
Sets the render asset (or asset id) for the render component. This only applies to render components with type 'asset'.
number
void
get batchGroupId(): number
Gets the batch group for the mesh instances in this component (see BatchGroup).
number
set batchGroupId(value: number): void
Sets the batch group for the mesh instances in this component (see BatchGroup). Default is -1 (no group).
number
void
get castShadows(): boolean
Gets whether attached meshes will cast shadows for lights that have shadow casting enabled.
boolean
set castShadows(value: boolean): void
Sets whether attached meshes will cast shadows for lights that have shadow casting enabled.
boolean
void
get castShadowsLightmap(): boolean
Gets whether meshes instances will cast shadows when rendering lightmaps.
boolean
set castShadowsLightmap(value: boolean): void
Sets whether meshes instances will cast shadows when rendering lightmaps.
boolean
void
get customAabb(): null | BoundingBox
Gets the custom object space bounding box that is used for visibility culling of attached mesh instances.
null | BoundingBox
set customAabb(value: null | BoundingBox): void
Sets the custom object space bounding box that is used for visibility culling of attached mesh instances. This is an optimization, allowing an oversized bounding box to be specified for skinned characters in order to avoid per frame bounding box computations based on bone positions.
null | BoundingBox
void
get enabled(): boolean
Gets the enabled state of the component.
boolean
set enabled(arg: boolean): void
Sets the enabled state of the component.
boolean
void
Component.enabled
get layers(): number[]
Gets the array of layer IDs (Layer#id) to which the mesh instances belong.
number
set layers(value: number[]): void
Sets the array of layer IDs (Layer#id) to which the mesh instances belong. Don't push, pop, splice or modify this array. If you want to change it, set a new one instead.
number
void
get lightmapped(): boolean
Gets whether the component is affected by the runtime lightmapper.
boolean
set lightmapped(value: boolean): void
Sets whether the component is affected by the runtime lightmapper. If true, the meshes will be lightmapped after using lightmapper.bake().
boolean
void
get lightmapSizeMultiplier(): number
Gets the lightmap resolution multiplier.
number
set lightmapSizeMultiplier(value: number): void
Sets the lightmap resolution multiplier.
number
void
get material(): Material
Gets the material Material that will be used to render the component.
set material(value: Material): void
Sets the material Material that will be used to render the component. The material is ignored for renders of type 'asset'.
void
get materialAssets(): number[] | Asset[]
Gets the material assets that will be used to render the component.
number | Asset
set materialAssets(value: number[] | Asset[]): void
Sets the material assets that will be used to render the component. Each material corresponds to the respective mesh instance.
number | Asset
void
get meshInstances(): MeshInstance[]
Gets the array of meshInstances contained in the component.
set meshInstances(value: MeshInstance[]): void
Sets the array of meshInstances contained in the component.
void
get receiveShadows(): boolean
Gets whether shadows will be cast on attached meshes.
boolean
set receiveShadows(value: boolean): void
Sets whether shadows will be cast on attached meshes.
boolean
void
get renderStyle(): number
Gets the render style of this component's MeshInstances.
number
set renderStyle(renderStyle: number): void
Sets the render style of this component's MeshInstances. Can be:
Defaults to RENDERSTYLE_SOLID.
number
void
get rootBone(): null | Entity
Gets the root bone entity for the render component.
null | Entity
set rootBone(value: null | Entity): void
Sets the root bone entity (or entity guid) for the render component.
null | Entity
void
get type(): string
Gets the type of the component.
string
set type(value: string): void
Sets the type of the component. Can be one of the following:
string
void
fire(
name: string,
arg1?: any,
arg2?: any,
arg3?: any,
arg4?: any,
arg5?: any,
arg6?: any,
arg7?: any,
arg8?: any): EventHandler
Fire an event, all additional arguments are passed on to the event listener.
string
Name of event to fire.
any
First argument that is passed to the event handler.
any
Second argument that is passed to the event handler.
any
Third argument that is passed to the event handler.
any
Fourth argument that is passed to the event handler.
any
Fifth argument that is passed to the event handler.
any
Sixth argument that is passed to the event handler.
any
Seventh argument that is passed to the event handler.
any
Eighth argument that is passed to the event handler.
Self for chaining.
obj.fire('test', 'This is the message')
Component.fire
hasEvent(name: string): boolean
Test if there are any handlers bound to an event name.
string
The name of the event to test.
boolean
True if the object has handlers bound to the specified event name.
obj.on('test', () => {}) // bind an event to 'test'
obj.hasEvent('test') // returns true
obj.hasEvent('hello') // returns false
Component.hasEvent
hide(): void
Stop rendering MeshInstances without removing them from the scene hierarchy. This method sets the MeshInstance#visible property of every MeshInstance to false. Note, this does not remove the mesh instances from the scene hierarchy or draw call list. So the render component still incurs some CPU overhead.
void
off(
name?: string,
callback?: HandleEventCallback,
scope?: any): EventHandler
Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.
string
Name of the event to unbind.
HandleEventCallback
Function to be unbound.
any
Scope that was used as the this when the event is fired.
Self for chaining.
const handler = () => {}
obj.on('test', handler)
obj.off() // Removes all events
obj.off('test') // Removes all events called 'test'
obj.off('test', handler) // Removes all handler functions, called 'test'
obj.off('test', handler, this) // Removes all handler functions, called 'test' with scope this
Component.off
on(
name: string,
callback: HandleEventCallback,
scope?: any): EventHandle
Attach an event handler to an event.
string
Name of the event to bind the callback to.
HandleEventCallback
Function that is called when event is fired. Note the callback is limited to 8 arguments.
any = ...
Object to use as 'this' when the event is fired, defaults to current this.
Can be used for removing event in the future.
obj.on('test', (a, b) => {
console.log(a + b)
})
obj.fire('test', 1, 2) // prints 3 to the console
const evt = obj.on('test', (a, b) => {
console.log(a + b)
})
// some time later
evt.off()
Component.on
once(
name: string,
callback: HandleEventCallback,
scope?: any): EventHandle
Attach an event handler to an event. This handler will be removed after being fired once.
string
Name of the event to bind the callback to.
HandleEventCallback
Function that is called when event is fired. Note the callback is limited to 8 arguments.
any = ...
Object to use as 'this' when the event is fired, defaults to current this.
obj.once('test', (a, b) => {
console.log(a + b)
})
obj.fire('test', 1, 2) // prints 3 to the console
obj.fire('test', 1, 2) // not going to get handled
Component.once
show(): void
Enable rendering of the component's MeshInstances if hidden using RenderComponent#hide. This method sets the MeshInstance#visible property on all mesh instances to true.
void