151 lines
3.8 KiB
JavaScript
151 lines
3.8 KiB
JavaScript
/**
|
|
* 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 pulse
|
|
* @param parentEntity
|
|
* @constructor
|
|
*/
|
|
GameLib.D3.API.ParticleEngine = function(
|
|
id,
|
|
name,
|
|
position,
|
|
direction,
|
|
enabled,
|
|
templateParticle,
|
|
particlesPerSecond,
|
|
frequency,
|
|
elapsed,
|
|
camera,
|
|
pulse,
|
|
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(pulse)) {
|
|
pulse = false;
|
|
}
|
|
this.pulse = pulse;
|
|
|
|
GameLib.API.Component.call(
|
|
this,
|
|
GameLib.Component.PARTICLE_ENGINE,
|
|
parentEntity
|
|
);
|
|
};
|
|
|
|
GameLib.D3.API.ParticleEngine.prototype = Object.create(GameLib.API.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 apiCamera = null;
|
|
if (objectParticleEngine.camera) {
|
|
if (objectParticleEngine.camera instanceof Object) {
|
|
apiCamera = GameLib.D3.API.Camera.FromObject(objectParticleEngine.camera);
|
|
} else {
|
|
apiCamera = objectParticleEngine.camera;
|
|
}
|
|
}
|
|
|
|
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,
|
|
apiCamera,
|
|
objectParticleEngine.pulse,
|
|
objectParticleEngine.parentEntity
|
|
|
|
);
|
|
|
|
};
|