/** * Raw ParticleEngine API object - should always correspond with the ParticleEngine Schema * @param id * @param name * @param position * @param direction * @param enabled * @param templateParticle * @param particlesPerSecond * @param frequency * @param elapsed * @param camera * @param parentEntity * @constructor */ GameLib.D3.API.ParticleEngine = function( id, name, position, direction, enabled, templateParticle, particlesPerSecond, frequency, elapsed, camera, 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(direction)) { direction = new GameLib.API.Vector3(0, 1, 0); } this.direction = direction; 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(camera)) { camera = null; } this.camera = camera; 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.Particle.FromObject(objectParticleEngine.templateParticle); } else { apiTemplateParticle = objectParticleEngine.templateParticle; } } var apiPosition = null; if (objectParticleEngine.position) { apiPosition = GameLib.API.Vector3.FromObject(objectParticleEngine.position); } var apiDirection = null; if (objectParticleEngine.direction) { apiDirection = GameLib.API.Vector3.FromObject(objectParticleEngine.direction); } return new GameLib.D3.API.ParticleEngine( objectParticleEngine.id, objectParticleEngine.name, apiPosition, apiDirection, objectParticleEngine.enabled, apiTemplateParticle, objectParticleEngine.particlesPerSecond, objectParticleEngine.frequency, objectParticleEngine.elapsed, objectParticleEngine.camera, objectParticleEngine.parentEntity ); };