pc.ModelComponent
Extends: pc.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 pc.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. |
| isStatic | Mark model as non-movable (optimization). |
| layers | An array of layer IDs (pc.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 pc.Material that will be used to render the model. |
| materialAsset | The material pc.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 pc.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.
Parameters
| system | pc.ModelComponentSystem | The ComponentSystem that created this Component. |
| entity | pc.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 pc.BatchGroup). Default value is -1 (no group).
If true, this model will cast shadows for lights that have shadow casting enabled.
An array of layer IDs (pc.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 pc.Material that will be used to render the model. Setting this property will apply the material to all mesh instances of the model.
The material pc.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 one of the following:
- "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)
Methods
hide()
Stop rendering model without removing it from the scene hierarchy. This method sets the pc.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 pc.ModelComponent#hide. This method sets all the pc.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 | object | 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
pc.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.
var 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 hander functions, called 'test' with scope this
Parameters
| name | string | Name of the event to unbind. |
| callback | pc.callbacks.HandleEvent | Function to be unbound. |
| scope | object | Scope that was used as the this when the event is fired. |
Returns
pc.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 | pc.callbacks.HandleEvent | 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
pc.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 | pc.callbacks.HandleEvent | 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
pc.EventHandlerSelf for chaining.