/** * Raw ParticleEngine API object - should always correspond with the ParticleEngine Schema * @param id * @param name * @param images * @param direction * @param particlesPerSecond * @param distanceType * @param minDistance * @param maxDistance * @param scaleType * @param minScale * @param maxScale * @param rotationType * @param minRotation * @param maxRotation * @param parentEntity * @constructor */ GameLib.D3.API.ParticleEngine = function( id, name, images, direction, particlesPerSecond, distanceType, minDistance, maxDistance, scaleType, minScale, maxScale, rotationType, minRotation, maxRotation, 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(images)) { images = []; } this.images = images; if (GameLib.Utils.UndefinedOrNull(direction)) { direction = new GameLib.API.Vector3(0, 0, 1); } this.direction = direction; if (GameLib.Utils.UndefinedOrNull(particlesPerSecond)) { particlesPerSecond = 1; } this.particlesPerSecond = particlesPerSecond; if (GameLib.Utils.UndefinedOrNull(distanceType)) { distanceType = GameLib.D3.ParticleEngine.DISTANCE_TYPE_CONSTANT; } this.distanceType = distanceType; if (GameLib.Utils.UndefinedOrNull(minDistance)) { minDistance = 1; } this.minDistance = minDistance; if (GameLib.Utils.UndefinedOrNull(maxDistance)) { maxDistance = 1; } this.maxDistance = maxDistance; if (GameLib.Utils.UndefinedOrNull(scaleType)) { scaleType = GameLib.D3.ParticleEngine.SCALE_TYPE_CONSTANT; } this.scaleType = scaleType; if (GameLib.Utils.UndefinedOrNull(minScale)) { minScale = null; } this.minScale = minScale; if (GameLib.Utils.UndefinedOrNull(maxScale)) { maxScale = null; } this.maxScale = maxScale; if (GameLib.Utils.UndefinedOrNull(rotationType)) { rotationType = GameLib.D3.ParticleEngine.ROTATION_TYPE_CONSTANT; } this.rotationType = rotationType; if (GameLib.Utils.UndefinedOrNull(minRotation)) { minRotation = 0; } this.minRotation = minRotation; if (GameLib.Utils.UndefinedOrNull(maxRotation)) { maxRotation = 0; } this.maxRotation = maxRotation; 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 apiImages = []; if (objectParticleEngine.images) { apiImages = objectParticleEngine.images.map( function (objectImage) { if (objectImage instanceof Object) { return GameLib.D3.API.Image.FromObject(objectImage); } else { return objectImage } } ) } return new GameLib.D3.API.ParticleEngine( objectParticleEngine.id, objectParticleEngine.name, apiImages, GameLib.API.Vector3.FromObject(objectParticleEngine.direction), objectParticleEngine.particlesPerSecond, objectParticleEngine.distanceType, objectParticleEngine.minDistance, objectParticleEngine.maxDistance, objectParticleEngine.scaleType, objectParticleEngine.minScale, objectParticleEngine.maxScale, objectParticleEngine.rotationType, objectParticleEngine.minRotation, objectParticleEngine.maxRotation, objectParticleEngine.parentEntity ); };