phaser/wip/TS Source/particles/behaviours/Behaviour.js
2013-09-13 16:24:01 +01:00

118 lines
4.7 KiB
JavaScript

var Phaser;
(function (Phaser) {
(function (Particles) {
/// <reference path="../../_definitions.ts" />
(function (Behaviours) {
var Behaviour = (function () {
function Behaviour(life, easing) {
/**
* The behaviour's id;
* @property id
* @type {String} id
*/
this.id = 'Behaviour_' + Behaviour.ID++;
this.life = Particles.ParticleUtils.initValue(life, Infinity);
/**
* The behaviour's decaying trend, for example Proton.easeOutQuart;
* @property easing
* @type {String}
* @default Proton.easeLinear
*/
this.easing = Particles.ParticleUtils.setEasingByName(easing);
this.age = 0;
this.energy = 1;
/**
* The behaviour is Dead;
* @property dead
* @type {bool}
*/
this.dead = false;
/**
* The behaviour's parents array;
* @property parents
* @type {Array}
*/
this.parents = [];
/**
* The behaviour name;
* @property name
* @type {string}
*/
this.name = 'Behaviour';
}
Behaviour.prototype.normalizeForce = /**
* Reset this behaviour's parameters
*
* @method reset
* @param {Number} this behaviour's life
* @param {String} this behaviour's easing
*/
//reset (life, easing) {
// this.life = ParticleUtils.initValue(life, Infinity);
// //this.easing = ParticleUtils.initValue(easing, Proton.ease.setEasingByName(Proton.easeLinear));
//}
/**
* Normalize a force by 1:100;
*
* @method normalizeForce
* @param {Proton.Vector2D} force
*/
function (force) {
return force.multiplyScalar(Particles.ParticleManager.MEASURE);
};
Behaviour.prototype.normalizeValue = /**
* Normalize a value by 1:100;
*
* @method normalizeValue
* @param {Number} value
*/
function (value) {
return value * Particles.ParticleManager.MEASURE;
};
Behaviour.prototype.initialize = /**
* Initialize the behaviour's parameters for all particles
*
* @method initialize
* @param {Proton.Particle} particle
*/
function (particle) {
};
Behaviour.prototype.applyBehaviour = /**
* Apply this behaviour for all particles every time
*
* @method applyBehaviour
* @param {Proton.Particle} particle
* @param {Number} the integrate time 1/ms
* @param {Int} the particle index
*/
function (particle, time, index) {
this.age += time;
if(this.age >= this.life || this.dead) {
this.energy = 0;
this.dead = true;
this.destroy();
} else {
var scale = this.easing(particle.age / particle.life);
this.energy = Math.max(1 - scale, 0);
}
};
Behaviour.prototype.destroy = /**
* Destory this behaviour
* @method destory
*/
function () {
var index;
var length = this.parents.length, i;
for(i = 0; i < length; i++) {
this.parents[i].removeBehaviour(this);
}
this.parents = [];
};
return Behaviour;
})();
Behaviours.Behaviour = Behaviour;
})(Particles.Behaviours || (Particles.Behaviours = {}));
var Behaviours = Particles.Behaviours;
})(Phaser.Particles || (Phaser.Particles = {}));
var Particles = Phaser.Particles;
})(Phaser || (Phaser = {}));