/** * Raw ParticleEngine API object - should always correspond with the ParticleEngine Schema * @param id * @param name * @param position * @param rotation * @param scale * @param enabled * @param templateParticle * @param particlesPerSecond * @param frequency * @param elapsed * @param parentEntity * @constructor */ GameLib.D3.API.ParticleEngine = function( id, name, position, rotation, scale, enabled, templateParticle, particlesPerSecond, frequency, elapsed, parentEntity ) { if (GameLib.Utils.UndefinedOrNull(id)) { id = GameLib.Utils.RandomId(); } this.id = id; if (GameLib.Utils.UndefinedOrNull(name)) { name = 'ParticleEngine (' + this.id + ')'; } this.name = name; if (GameLib.Utils.UndefinedOrNull(position)) { position = new GameLib.API.Vector3(0, 0, 0); } this.position = position; if (GameLib.Utils.UndefinedOrNull(rotation)) { rotation = new GameLib.API.Vector3(0, 0, 0); } this.rotation = rotation; if (GameLib.Utils.UndefinedOrNull(scale)) { scale = new GameLib.API.Vector3(1, 1, 1); } this.scale = scale; if (GameLib.Utils.UndefinedOrNull(enabled)) { enabled = false; } this.enabled = enabled; if (GameLib.Utils.UndefinedOrNull(templateParticle)) { templateParticle = null; } this.templateParticle = templateParticle; if (GameLib.Utils.UndefinedOrNull(particlesPerSecond)) { particlesPerSecond = 1; } this.particlesPerSecond = particlesPerSecond; if (GameLib.Utils.UndefinedOrNull(frequency)) { frequency = Number(1 / Number(this.particlesPerSecond)); } this.frequency = frequency; if (GameLib.Utils.UndefinedOrNull(elapsed)) { elapsed = 0; } this.elapsed = elapsed; if (GameLib.Utils.UndefinedOrNull(parentEntity)) { parentEntity = null; } this.parentEntity = parentEntity; }; GameLib.D3.API.ParticleEngine.prototype = Object.create(GameLib.Component.prototype); GameLib.D3.API.ParticleEngine.prototype.constructor = GameLib.D3.API.ParticleEngine; /** * Creates an API ParticleEngine from an Object ParticleEngine * @param objectParticleEngine * @constructor */ GameLib.D3.API.ParticleEngine.FromObject = function(objectParticleEngine) { var apiTemplateParticle = null; if (objectParticleEngine.templateParticle) { if (objectParticleEngine.templateParticle instanceof Object) { apiTemplateParticle = GameLib.D3.API.Material.FromObject(objectParticleEngine.templateParticle); } else { apiTemplateParticle = objectParticleEngine.templateParticle; } } return new GameLib.D3.API.ParticleEngine( objectParticleEngine.id, objectParticleEngine.name, GameLib.API.Vector3.FromObject(objectParticleEngine.position), GameLib.API.Vector3.FromObject(objectParticleEngine.rotation), GameLib.API.Vector3.FromObject(objectParticleEngine.scale), objectParticleEngine.enabled, apiTemplateParticle, objectParticleEngine.particlesPerSecond, objectParticleEngine.frequency, objectParticleEngine.elapsed, objectParticleEngine.parentEntity ); };