particle updates
parent
fb8bff5277
commit
ed82c3d787
|
@ -3,13 +3,14 @@
|
||||||
* @param id
|
* @param id
|
||||||
* @param name
|
* @param name
|
||||||
* @param position
|
* @param position
|
||||||
* @param rotation
|
* @param direction
|
||||||
* @param scale
|
* @param scale
|
||||||
* @param enabled
|
* @param enabled
|
||||||
* @param templateParticle
|
* @param templateParticle
|
||||||
* @param particlesPerSecond
|
* @param particlesPerSecond
|
||||||
* @param frequency
|
* @param frequency
|
||||||
* @param elapsed
|
* @param elapsed
|
||||||
|
* @param camera
|
||||||
* @param parentEntity
|
* @param parentEntity
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
|
@ -17,13 +18,14 @@ GameLib.D3.API.ParticleEngine = function(
|
||||||
id,
|
id,
|
||||||
name,
|
name,
|
||||||
position,
|
position,
|
||||||
rotation,
|
direction,
|
||||||
scale,
|
scale,
|
||||||
enabled,
|
enabled,
|
||||||
templateParticle,
|
templateParticle,
|
||||||
particlesPerSecond,
|
particlesPerSecond,
|
||||||
frequency,
|
frequency,
|
||||||
elapsed,
|
elapsed,
|
||||||
|
camera,
|
||||||
parentEntity
|
parentEntity
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
@ -42,10 +44,10 @@ GameLib.D3.API.ParticleEngine = function(
|
||||||
}
|
}
|
||||||
this.position = position;
|
this.position = position;
|
||||||
|
|
||||||
if (GameLib.Utils.UndefinedOrNull(rotation)) {
|
if (GameLib.Utils.UndefinedOrNull(direction)) {
|
||||||
rotation = new GameLib.API.Vector3(0, 0, 0);
|
direction = new GameLib.API.Vector3(0, 1, 0);
|
||||||
}
|
}
|
||||||
this.rotation = rotation;
|
this.direction = direction;
|
||||||
|
|
||||||
if (GameLib.Utils.UndefinedOrNull(scale)) {
|
if (GameLib.Utils.UndefinedOrNull(scale)) {
|
||||||
scale = new GameLib.API.Vector3(1, 1, 1);
|
scale = new GameLib.API.Vector3(1, 1, 1);
|
||||||
|
@ -77,6 +79,11 @@ GameLib.D3.API.ParticleEngine = function(
|
||||||
}
|
}
|
||||||
this.elapsed = elapsed;
|
this.elapsed = elapsed;
|
||||||
|
|
||||||
|
if (GameLib.Utils.UndefinedOrNull(camera)) {
|
||||||
|
camera = null;
|
||||||
|
}
|
||||||
|
this.camera = camera;
|
||||||
|
|
||||||
if (GameLib.Utils.UndefinedOrNull(parentEntity)) {
|
if (GameLib.Utils.UndefinedOrNull(parentEntity)) {
|
||||||
parentEntity = null;
|
parentEntity = null;
|
||||||
}
|
}
|
||||||
|
@ -97,24 +104,40 @@ GameLib.D3.API.ParticleEngine.FromObject = function(objectParticleEngine) {
|
||||||
var apiTemplateParticle = null;
|
var apiTemplateParticle = null;
|
||||||
if (objectParticleEngine.templateParticle) {
|
if (objectParticleEngine.templateParticle) {
|
||||||
if (objectParticleEngine.templateParticle instanceof Object) {
|
if (objectParticleEngine.templateParticle instanceof Object) {
|
||||||
apiTemplateParticle = GameLib.D3.API.Material.FromObject(objectParticleEngine.templateParticle);
|
apiTemplateParticle = GameLib.D3.API.Particle.FromObject(objectParticleEngine.templateParticle);
|
||||||
} else {
|
} else {
|
||||||
apiTemplateParticle = objectParticleEngine.templateParticle;
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
var apiScale = null;
|
||||||
|
if (objectParticleEngine.scale) {
|
||||||
|
apiScale = GameLib.API.Vector3.FromObject(objectParticleEngine.scale);
|
||||||
|
}
|
||||||
|
|
||||||
return new GameLib.D3.API.ParticleEngine(
|
return new GameLib.D3.API.ParticleEngine(
|
||||||
|
|
||||||
objectParticleEngine.id,
|
objectParticleEngine.id,
|
||||||
objectParticleEngine.name,
|
objectParticleEngine.name,
|
||||||
GameLib.API.Vector3.FromObject(objectParticleEngine.position),
|
apiPosition,
|
||||||
GameLib.API.Vector3.FromObject(objectParticleEngine.rotation),
|
apiDirection,
|
||||||
GameLib.API.Vector3.FromObject(objectParticleEngine.scale),
|
apiScale,
|
||||||
objectParticleEngine.enabled,
|
objectParticleEngine.enabled,
|
||||||
apiTemplateParticle,
|
apiTemplateParticle,
|
||||||
objectParticleEngine.particlesPerSecond,
|
objectParticleEngine.particlesPerSecond,
|
||||||
objectParticleEngine.frequency,
|
objectParticleEngine.frequency,
|
||||||
objectParticleEngine.elapsed,
|
objectParticleEngine.elapsed,
|
||||||
|
objectParticleEngine.camera,
|
||||||
objectParticleEngine.parentEntity
|
objectParticleEngine.parentEntity
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
* @param scale
|
* @param scale
|
||||||
* @param direction
|
* @param direction
|
||||||
* @param directionFn
|
* @param directionFn
|
||||||
|
* @param speed
|
||||||
* @param scaleFn
|
* @param scaleFn
|
||||||
* @param scaleType
|
* @param scaleType
|
||||||
* @param rotationType
|
* @param rotationType
|
||||||
|
@ -33,6 +34,7 @@ GameLib.D3.API.Particle = function(
|
||||||
directionType,
|
directionType,
|
||||||
direction,
|
direction,
|
||||||
directionFn,
|
directionFn,
|
||||||
|
speed,
|
||||||
scaleType,
|
scaleType,
|
||||||
scale,
|
scale,
|
||||||
scaleFn,
|
scaleFn,
|
||||||
|
@ -98,6 +100,11 @@ GameLib.D3.API.Particle = function(
|
||||||
}
|
}
|
||||||
this.directionFn = directionFn;
|
this.directionFn = directionFn;
|
||||||
|
|
||||||
|
if (GameLib.Utils.UndefinedOrNull(speed)) {
|
||||||
|
speed = 1;
|
||||||
|
}
|
||||||
|
this.speed = speed;
|
||||||
|
|
||||||
if (GameLib.Utils.UndefinedOrNull(scaleType)) {
|
if (GameLib.Utils.UndefinedOrNull(scaleType)) {
|
||||||
scaleType = GameLib.D3.Particle.SCALE_TYPE_CONSTANT;
|
scaleType = GameLib.D3.Particle.SCALE_TYPE_CONSTANT;
|
||||||
}
|
}
|
||||||
|
@ -170,6 +177,7 @@ GameLib.D3.API.Particle.FromObject = function(objectParticle) {
|
||||||
objectParticle.directionType,
|
objectParticle.directionType,
|
||||||
GameLib.API.Vector3.FromObject(objectParticle.direction),
|
GameLib.API.Vector3.FromObject(objectParticle.direction),
|
||||||
objectParticle.directionFn,
|
objectParticle.directionFn,
|
||||||
|
objectParticle.speed,
|
||||||
objectParticle.scaleType,
|
objectParticle.scaleType,
|
||||||
GameLib.API.Vector3.FromObject(objectParticle.scale),
|
GameLib.API.Vector3.FromObject(objectParticle.scale),
|
||||||
objectParticle.scaleFn,
|
objectParticle.scaleFn,
|
||||||
|
|
|
@ -25,13 +25,14 @@ GameLib.D3.ParticleEngine = function(
|
||||||
apiParticleEngine.id,
|
apiParticleEngine.id,
|
||||||
apiParticleEngine.name,
|
apiParticleEngine.name,
|
||||||
apiParticleEngine.position,
|
apiParticleEngine.position,
|
||||||
apiParticleEngine.rotation,
|
apiParticleEngine.direction,
|
||||||
apiParticleEngine.scale,
|
apiParticleEngine.scale,
|
||||||
apiParticleEngine.enabled,
|
apiParticleEngine.enabled,
|
||||||
apiParticleEngine.templateParticle,
|
apiParticleEngine.templateParticle,
|
||||||
apiParticleEngine.particlesPerSecond,
|
apiParticleEngine.particlesPerSecond,
|
||||||
apiParticleEngine.frequency,
|
apiParticleEngine.frequency,
|
||||||
apiParticleEngine.elapsed,
|
apiParticleEngine.elapsed,
|
||||||
|
apiParticleEngine.camera,
|
||||||
apiParticleEngine.parentEntity
|
apiParticleEngine.parentEntity
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -46,15 +47,15 @@ GameLib.D3.ParticleEngine = function(
|
||||||
throw new Error('position not instance of API.Vector3');
|
throw new Error('position not instance of API.Vector3');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.rotation instanceof GameLib.API.Vector3) {
|
if (this.direction instanceof GameLib.API.Vector3) {
|
||||||
this.rotation = new GameLib.Vector3(
|
this.direction = new GameLib.Vector3(
|
||||||
graphics,
|
graphics,
|
||||||
this.rotation,
|
this.direction,
|
||||||
this
|
this
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
console.warn('rotation not instance of API.Vector3');
|
console.warn('direction not instance of API.Vector3');
|
||||||
throw new Error('rotation not instance of API.Vector3');
|
throw new Error('direction not instance of API.Vector3');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.scale instanceof GameLib.API.Vector3) {
|
if (this.scale instanceof GameLib.API.Vector3) {
|
||||||
|
@ -68,10 +69,17 @@ GameLib.D3.ParticleEngine = function(
|
||||||
throw new Error('scale not instance of API.Vector3');
|
throw new Error('scale not instance of API.Vector3');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.camera instanceof GameLib.D3.API.Camera) {
|
||||||
|
this.templateParticle = new GameLib.D3.Camera(
|
||||||
|
graphics,
|
||||||
|
this.camera
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if (this.templateParticle instanceof GameLib.D3.API.Particle) {
|
if (this.templateParticle instanceof GameLib.D3.API.Particle) {
|
||||||
this.templateParticle = new GameLib.D3.Particle(
|
this.templateParticle = new GameLib.D3.Particle(
|
||||||
graphics,
|
graphics,
|
||||||
material
|
this.templateParticle
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +89,8 @@ GameLib.D3.ParticleEngine = function(
|
||||||
this,
|
this,
|
||||||
GameLib.Component.COMPONENT_PARTICLE_ENGINE,
|
GameLib.Component.COMPONENT_PARTICLE_ENGINE,
|
||||||
{
|
{
|
||||||
templateParticle : GameLib.D3.Particle
|
templateParticle : GameLib.D3.Particle,
|
||||||
|
camera : GameLib.D3.Camera
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -98,6 +107,17 @@ GameLib.D3.ParticleEngine.prototype.createInstance = function() {
|
||||||
|
|
||||||
this.instance = true;
|
this.instance = true;
|
||||||
|
|
||||||
|
if (this.templateParticle) {
|
||||||
|
|
||||||
|
this.templateParticle.mesh.position.x = this.position.x;
|
||||||
|
this.templateParticle.mesh.position.y = this.position.y;
|
||||||
|
this.templateParticle.mesh.position.z = this.position.z;
|
||||||
|
|
||||||
|
this.templateParticle.direction.x = this.direction.x;
|
||||||
|
this.templateParticle.direction.y = this.direction.y;
|
||||||
|
this.templateParticle.direction.z = this.direction.z;
|
||||||
|
}
|
||||||
|
|
||||||
GameLib.Component.prototype.createInstance.call(this);
|
GameLib.Component.prototype.createInstance.call(this);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -114,34 +134,62 @@ GameLib.D3.ParticleEngine.prototype.updateInstance = function(property) {
|
||||||
this.particlesPerSecond = Math.round(1 / this.frequency);
|
this.particlesPerSecond = Math.round(1 / this.frequency);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (property === 'templateParticle') {
|
||||||
|
this.templateParticle.mesh.position.x = this.position.x;
|
||||||
|
this.templateParticle.mesh.position.y = this.position.y;
|
||||||
|
this.templateParticle.mesh.position.z = this.position.z;
|
||||||
|
this.templateParticle.direction.x = this.direction.x;
|
||||||
|
this.templateParticle.direction.y = this.direction.y;
|
||||||
|
this.templateParticle.direction.z = this.direction.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (property === 'position') {
|
||||||
|
|
||||||
|
this.position.updateInstance('position', true);
|
||||||
|
|
||||||
|
this.templateParticle.mesh.position.x = this.position.x;
|
||||||
|
this.templateParticle.mesh.position.y = this.position.y;
|
||||||
|
this.templateParticle.mesh.position.z = this.position.z;
|
||||||
|
|
||||||
|
this.templateParticle.mesh.updateInstancePosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (property === 'direction') {
|
||||||
|
|
||||||
|
this.direction.updateInstance('direction', true);
|
||||||
|
|
||||||
|
this.templateParticle.direction.x = this.direction.x;
|
||||||
|
this.templateParticle.direction.y = this.direction.y;
|
||||||
|
this.templateParticle.direction.z = this.direction.z;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
GameLib.D3.ParticleEngine.prototype.processParticles = function(delta) {
|
GameLib.D3.ParticleEngine.prototype.processParticles = function(delta) {
|
||||||
this.particles = this.particles.reduce(
|
// this.particles = this.particles.reduce(
|
||||||
function(result, particle){
|
// function(result, particle){
|
||||||
|
//
|
||||||
particle.position.x += particle.userData.direction.x * delta;
|
// particle.position.x += particle.userData.direction.x * delta;
|
||||||
particle.position.y += particle.userData.direction.y * delta;
|
// particle.position.y += particle.userData.direction.y * delta;
|
||||||
particle.position.z += particle.userData.direction.z * delta;
|
// particle.position.z += particle.userData.direction.z * delta;
|
||||||
|
//
|
||||||
particle.userData.elapsed += delta;
|
// particle.userData.elapsed += delta;
|
||||||
if (particle.userData.elapsed > particle.userData.lifeTime) {
|
// if (particle.userData.elapsed > particle.userData.lifeTime) {
|
||||||
particle.parent.remove(particle);
|
// particle.parent.remove(particle);
|
||||||
} else {
|
// } else {
|
||||||
result.push(particle);
|
// result.push(particle);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
return result;
|
// return result;
|
||||||
},
|
// },
|
||||||
[]
|
// []
|
||||||
);
|
// );
|
||||||
};
|
};
|
||||||
|
|
||||||
GameLib.D3.ParticleEngine.prototype.createNewParticle = function(camera) {
|
GameLib.D3.ParticleEngine.prototype.createNewParticle = function(camera) {
|
||||||
|
//
|
||||||
var particle = this.templateParticle.clone(camera);
|
// var particle = this.templateParticle.clone(camera);
|
||||||
|
//
|
||||||
this.particles.push(particle);
|
// this.particles.push(particle);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -155,13 +203,14 @@ GameLib.D3.ParticleEngine.prototype.toApiObject = function() {
|
||||||
this.id,
|
this.id,
|
||||||
this.name,
|
this.name,
|
||||||
this.position.toApiObject(),
|
this.position.toApiObject(),
|
||||||
this.rotation.toApiObject(),
|
this.direction.toApiObject(),
|
||||||
this.scale.toApiObject(),
|
this.scale.toApiObject(),
|
||||||
this.enabled,
|
this.enabled,
|
||||||
GameLib.Utils.IdOrNull(this.templateParticle),
|
GameLib.Utils.IdOrNull(this.templateParticle),
|
||||||
this.particlesPerSecond,
|
this.particlesPerSecond,
|
||||||
this.frequency,
|
this.frequency,
|
||||||
this.elapsed,
|
this.elapsed,
|
||||||
|
GameLib.Utils.IdOrNull(this.camera),
|
||||||
GameLib.Utils.IdOrNull(this.parentEntity)
|
GameLib.Utils.IdOrNull(this.parentEntity)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ GameLib.D3.Particle = function(
|
||||||
apiParticle.directionType,
|
apiParticle.directionType,
|
||||||
apiParticle.direction,
|
apiParticle.direction,
|
||||||
apiParticle.directionFn,
|
apiParticle.directionFn,
|
||||||
|
apiParticle.speed,
|
||||||
apiParticle.scaleType,
|
apiParticle.scaleType,
|
||||||
apiParticle.scale,
|
apiParticle.scale,
|
||||||
apiParticle.scaleFn,
|
apiParticle.scaleFn,
|
||||||
|
@ -191,6 +192,7 @@ GameLib.D3.Particle.prototype.toApiObject = function() {
|
||||||
this.directionType,
|
this.directionType,
|
||||||
this.direction.toApiObject(),
|
this.direction.toApiObject(),
|
||||||
this.directionFn,
|
this.directionFn,
|
||||||
|
this.speed,
|
||||||
this.scaleType,
|
this.scaleType,
|
||||||
this.scale.toApiObject(),
|
this.scale.toApiObject(),
|
||||||
this.scaleFn,
|
this.scaleFn,
|
||||||
|
|
|
@ -559,11 +559,17 @@ GameLib.System.Linking.prototype.arrayItemAdded = function(data) {
|
||||||
};
|
};
|
||||||
|
|
||||||
GameLib.System.Linking.prototype.instanceCloned = function(data) {
|
GameLib.System.Linking.prototype.instanceCloned = function(data) {
|
||||||
if (
|
|
||||||
data.component.parentScene
|
if (data.component instanceof GameLib.D3.Particle) {
|
||||||
) {
|
|
||||||
// data.component.parentScene.instance.add(data.instance);
|
var mesh = data.component.mesh;
|
||||||
|
|
||||||
|
if (mesh.parentScene && mesh.parentScene.instance) {
|
||||||
|
data.instance.userData.scene = mesh.parentScene.instance;
|
||||||
|
mesh.parentScene.instance.add(data.instance);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
GameLib.System.Linking.prototype.instanceCreated = function(data) {
|
GameLib.System.Linking.prototype.instanceCreated = function(data) {
|
||||||
|
|
|
@ -112,19 +112,25 @@ GameLib.System.Particle.prototype.beforeRender = function(data) {
|
||||||
this.particleEngines.map(
|
this.particleEngines.map(
|
||||||
function(particleEngine) {
|
function(particleEngine) {
|
||||||
|
|
||||||
|
if (GameLib.Utils.UndefinedOrNull(particleEngine.camera)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
particleEngine.elapsed += data.delta;
|
particleEngine.elapsed += data.delta;
|
||||||
|
|
||||||
particleEngine.particles = particleEngine.particles.reduce(
|
particleEngine.particles = particleEngine.particles.reduce(
|
||||||
|
|
||||||
function(result, particle){
|
function(result, particle){
|
||||||
|
|
||||||
particle.position.x += particle.userData.direction.x * data.delta;
|
particle.position.x += particle.userData.direction.x * data.delta * particle.userData.speed;
|
||||||
particle.position.y += particle.userData.direction.y * data.delta;
|
particle.position.y += particle.userData.direction.y * data.delta * particle.userData.speed;
|
||||||
particle.position.z += particle.userData.direction.z * data.delta;
|
particle.position.z += particle.userData.direction.z * data.delta * particle.userData.speed;
|
||||||
|
|
||||||
|
particle.quaternion.copy(particleEngine.camera.instance.quaternion);
|
||||||
|
|
||||||
particle.userData.elapsed += data.delta;
|
particle.userData.elapsed += data.delta;
|
||||||
if (particle.userData.elapsed > particle.userData.lifeTime) {
|
if (particle.userData.elapsed > particle.userData.lifeTime) {
|
||||||
particle.parent.remove(particle);
|
particle.userData.scene.remove(particle);
|
||||||
} else {
|
} else {
|
||||||
result.push(particle);
|
result.push(particle);
|
||||||
}
|
}
|
||||||
|
@ -140,16 +146,16 @@ GameLib.System.Particle.prototype.beforeRender = function(data) {
|
||||||
|
|
||||||
particleEngine.elapsed = 0;
|
particleEngine.elapsed = 0;
|
||||||
|
|
||||||
|
|
||||||
var particleInstance = particleEngine.templateParticle.cloneInstance();
|
var particleInstance = particleEngine.templateParticle.cloneInstance();
|
||||||
|
|
||||||
particleEngine.particles.push(particleInstance);
|
//particleEngine.templateParticle.parentScene.instance.add(particleInstance);
|
||||||
|
|
||||||
particleEngine.templateParticle.parentScene.instance.add(particleInstance);
|
particleInstance.userData.direction = particleEngine.direction.instance.clone();
|
||||||
|
|
||||||
particleInstance.userData.direction = this.direction.instance.clone();
|
|
||||||
particleInstance.userData.elapsed = 0;
|
particleInstance.userData.elapsed = 0;
|
||||||
particleInstance.userData.lifeTime = this.lifeTime;
|
particleInstance.userData.lifeTime = particleEngine.templateParticle.lifeTime;
|
||||||
|
particleInstance.userData.speed = particleEngine.templateParticle.speed;
|
||||||
|
|
||||||
|
particleEngine.particles.push(particleInstance);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -586,6 +586,17 @@ GameLib.System.Storage.prototype.loadComponent = function(apiUrl, toProcess, inc
|
||||||
|
|
||||||
var toProcess = GameLib.Utils.Difference(loaded.map(function(component){return component.id}), loading);
|
var toProcess = GameLib.Utils.Difference(loaded.map(function(component){return component.id}), loading);
|
||||||
|
|
||||||
|
if (!runtimeComponent) {
|
||||||
|
/**
|
||||||
|
* Make sure we don't try to download this component again, it failed
|
||||||
|
*/
|
||||||
|
var index = toProcess.indexOf(component.id);
|
||||||
|
|
||||||
|
if (index !== -1) {
|
||||||
|
toProcess.splice(index, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GameLib.Event.Emit(
|
GameLib.Event.Emit(
|
||||||
GameLib.Event.LOAD_PROGRESS,
|
GameLib.Event.LOAD_PROGRESS,
|
||||||
{
|
{
|
||||||
|
|
|
@ -83,13 +83,14 @@ GameLib.Vector3.prototype.createInstance = function() {
|
||||||
/**
|
/**
|
||||||
* Updates the instance vector, calls updateInstance on the parent object
|
* Updates the instance vector, calls updateInstance on the parent object
|
||||||
*/
|
*/
|
||||||
GameLib.Vector3.prototype.updateInstance = function(property) {
|
GameLib.Vector3.prototype.updateInstance = function(property, preventParentUpdate) {
|
||||||
|
|
||||||
this.instance.x = this.x;
|
this.instance.x = this.x;
|
||||||
this.instance.y = this.y;
|
this.instance.y = this.y;
|
||||||
this.instance.z = this.z;
|
this.instance.z = this.z;
|
||||||
|
|
||||||
if (this.parentObject &&
|
if (!preventParentUpdate &&
|
||||||
|
this.parentObject &&
|
||||||
this.parentObject !== this &&
|
this.parentObject !== this &&
|
||||||
this.parentObject.updateInstance) {
|
this.parentObject.updateInstance) {
|
||||||
this.parentObject.updateInstance(property);
|
this.parentObject.updateInstance(property);
|
||||||
|
|
Loading…
Reference in New Issue