157 lines
4.0 KiB
JavaScript
157 lines
4.0 KiB
JavaScript
|
/**
|
||
|
* 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
|
||
|
);
|
||
|
|
||
|
};
|