ModelComponent
Extends: Component
Enables an Entity to render a model or a primitive shape. This Component attaches additional model geometry in to the scene graph below the Entity.
Summary
Properties
asset | The asset for the model (only applies to models of type 'asset') can also be an asset id. |
batchGroupId | Assign model to a specific batch group (see BatchGroup). |
castShadows | If true, this model will cast shadows for lights that have shadow casting enabled. |
castShadowsLightmap | If true, this model will cast shadows when rendering lightmaps. |
customAabb | If set, the object space bounding box is used as a bounding box for visibility culling of attached mesh instances. |
isStatic | Mark meshes as non-movable (optimization). |
layers | An array of layer IDs (Layer#id) to which this model should belong. |
lightmapSizeMultiplier | Lightmap resolution multiplier. |
lightmapped | If true, this model will be lightmapped after using lightmapper. |
mapping | A dictionary that holds material overrides for each mesh instance. |
material | The material Material that will be used to render the model (not used on models of type 'asset'). |
materialAsset | The material Asset that will be used to render the model (not used on models of type 'asset'). |
meshInstances | An array of meshInstances contained in the component's model. |
model | The model that is added to the scene graph. |
receiveShadows | If true, shadows will be cast on this model. |
type | The type of the model. |
Methods
hide | Stop rendering model without removing it from the scene hierarchy. |
show | Enable rendering of the model if hidden using ModelComponent#hide. |
Inherited
Properties
enabled | Enables or disables the component. |
entity | The Entity that this Component is attached to. |
system | The ComponentSystem used to create this Component. |
Methods
fire | Fire an event, all additional arguments are passed on to the event listener. |
hasEvent | Test if there are any handlers bound to an event name. |
off | Detach an event handler from an event. |
on | Attach an event handler to an event. |
once | Attach an event handler to an event. |
Details
Constructor
ModelComponent(system, entity)
Create a new ModelComponent instance.
Parameters
system | ModelComponentSystem | The ComponentSystem that created this Component. |
entity | Entity | The Entity that this Component is attached to. |
Properties
The asset for the model (only applies to models of type 'asset') can also be an asset id.
Assign model to a specific batch group (see BatchGroup). Default is -1 (no group).
If true, this model will cast shadows for lights that have shadow casting enabled.
If set, the object space bounding box is used as a bounding box for visibility culling of attached mesh instances. This is an optimization, allowing oversized bounding box to be specified for skinned characters in order to avoid per frame bounding box computations based on bone positions.
An array of layer IDs (Layer#id) to which this model should belong. Don't push, pop, splice or modify this array, if you want to change it - set a new one instead.
A dictionary that holds material overrides for each mesh instance. Only applies to model components of type 'asset'. The mapping contains pairs of mesh instance index - material asset id.
The material Material that will be used to render the model (not used on models of type 'asset').
The material Asset that will be used to render the model (not used on models of type 'asset').
An array of meshInstances contained in the component's model. If model is not set or loaded for component it will return null.
The model that is added to the scene graph. It can be not set or loaded, so will return null.
The type of the model. Can be:
- "asset": The component will render a model asset
- "box": The component will render a box (1 unit in each dimension)
- "capsule": The component will render a capsule (radius 0.5, height 2)
- "cone": The component will render a cone (radius 0.5, height 1)
- "cylinder": The component will render a cylinder (radius 0.5, height 1)
- "plane": The component will render a plane (1 unit in each dimension)
- "sphere": The component will render a sphere (radius 0.5)
- "torus": The component will render a torus (tubeRadius: 0.2, ringRadius: 0.3)
Methods
hide()
Stop rendering model without removing it from the scene hierarchy. This method sets the MeshInstance#visible property of every MeshInstance in the model to false Note, this does not remove the model or mesh instances from the scene hierarchy or draw call list. So the model component still incurs some CPU overhead.
this.timer = 0;
this.visible = true;
// ...
// blink model every 0.1 seconds
this.timer += dt;
if (this.timer > 0.1) {
if (!this.visible) {
this.entity.model.show();
this.visible = true;
} else {
this.entity.model.hide();
this.visible = false;
}
this.timer = 0;
}
show()
Enable rendering of the model if hidden using ModelComponent#hide. This method sets all the MeshInstance#visible property on all mesh instances to true.
Inherited
Properties
Methods
fire(name, [arg1], [arg2], [arg3], [arg4], [arg5], [arg6], [arg7], [arg8])
Fire an event, all additional arguments are passed on to the event listener.
obj.fire('test', 'This is the message');
Parameters
name | string | Name of event to fire. |
arg1 | * | First argument that is passed to the event handler. |
arg2 | * | Second argument that is passed to the event handler. |
arg3 | * | Third argument that is passed to the event handler. |
arg4 | * | Fourth argument that is passed to the event handler. |
arg5 | * | Fifth argument that is passed to the event handler. |
arg6 | * | Sixth argument that is passed to the event handler. |
arg7 | * | Seventh argument that is passed to the event handler. |
arg8 | * | Eighth argument that is passed to the event handler. |
Returns
EventHandlerSelf for chaining.
hasEvent(name)
Test if there are any handlers bound to an event name.
obj.on('test', function () { }); // bind an event to 'test'
obj.hasEvent('test'); // returns true
obj.hasEvent('hello'); // returns false
Parameters
name | string | The name of the event to test. |
Returns
booleanTrue if the object has handlers bound to the specified event name.
off([name], [callback], [scope])
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.
const handler = function () {
};
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
Parameters
name | string | Name of the event to unbind. |
callback | HandleEventCallback | Function to be unbound. |
scope | object | Scope that was used as the this when the event is fired. |
Returns
EventHandlerSelf for chaining.
on(name, callback, [scope])
Attach an event handler to an event.
obj.on('test', function (a, b) {
console.log(a + b);
});
obj.fire('test', 1, 2); // prints 3 to the console
Parameters
name | string | Name of the event to bind the callback to. |
callback | HandleEventCallback | Function that is called when event is fired. Note the callback is limited to 8 arguments. |
scope | object | Object to use as 'this' when the event is fired, defaults to current this. |
Returns
EventHandlerSelf for chaining.
once(name, callback, [scope])
Attach an event handler to an event. This handler will be removed after being fired once.
obj.once('test', function (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
Parameters
name | string | Name of the event to bind the callback to. |
callback | HandleEventCallback | Function that is called when event is fired. Note the callback is limited to 8 arguments. |
scope | object | Object to use as 'this' when the event is fired, defaults to current this. |
Returns
EventHandlerSelf for chaining.