41 lines
794 B
Haxe
41 lines
794 B
Haxe
|
package armory.trait;
|
||
|
|
||
|
import iron.object.MeshObject;
|
||
|
|
||
|
/**
|
||
|
* Trait to enable GPU instancing of Mesh objects
|
||
|
*/
|
||
|
class CustomParticle extends iron.Trait {
|
||
|
|
||
|
@prop
|
||
|
var ParticleCount: Int = 100;
|
||
|
|
||
|
public function new() {
|
||
|
super();
|
||
|
|
||
|
notifyOnInit(function() {
|
||
|
var partCount = ParticleCount;
|
||
|
setupSimpleInstanced(partCount);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function setupSimpleInstanced(count: Int){
|
||
|
if(object.raw.type == 'mesh_object')
|
||
|
{
|
||
|
var meshObjGeom = cast(object, MeshObject).data.geom;
|
||
|
meshObjGeom.instanced = true;
|
||
|
meshObjGeom.instanceCount = count;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function updateParticleCount(count: Int){
|
||
|
|
||
|
if(object.raw.type == 'mesh_object')
|
||
|
{
|
||
|
var meshObjGeom = cast(object, MeshObject).data.geom;
|
||
|
meshObjGeom.instanced = true;
|
||
|
meshObjGeom.instanceCount = count;
|
||
|
}
|
||
|
}
|
||
|
}
|