package flare.physics { /** * Represents a Particle in a physics simulation. A particle is a * point-mass (or point-charge) subject to physical forces. */ public class Particle { /** The mass (or charge) of the particle. */ public var mass:Number; /** The number of springs (degree) attached to this particle. */ public var degree:Number; /** The x position of the particle. */ public var x:Number; /** The y position of the particle. */ public var y:Number; /** The x velocity of the particle. */ public var vx:Number; /** A temporary x velocity variable. */ public var _vx:Number; /** The y velocity of the particle. */ public var vy:Number; /** A temporary y velocity variable. */ public var _vy:Number; /** The x force exerted on the particle. */ public var fx:Number; /** The y force exerted on the particle. */ public var fy:Number; /** The age of the particle in simulation ticks. */ public var age:Number; /** Flag indicating if the particule should have a fixed position. */ public var fixed:Boolean; /** Flag indicating that the particle is scheduled for removal. */ public var die:Boolean; /** Tag property for storing an arbitrary value. */ public var tag:uint; /** * Creates a new Particle with given parameters. * @param mass the mass (or charge) of the particle * @param x the x position of the particle * @param y the y position of the particle * @param vx the x velocity of the particle * @param vy the y velocity of the particle * @param fixed flag indicating if the particle should have a * fixed position */ public function Particle(mass:Number=1, x:Number=0, y:Number=0, vx:Number=0, vy:Number=0, fixed:Boolean=false) { init(mass, x, y, vx, vy, fixed); } /** * Initializes an existing particle instance. * @param mass the mass (or charge) of the particle * @param x the x position of the particle * @param y the y position of the particle * @param vx the x velocity of the particle * @param vy the y velocity of the particle * @param fixed flag indicating if the particle should have a * fixed position */ public function init(mass:Number=1, x:Number=0, y:Number=0, vx:Number=0, vy:Number=0, fixed:Boolean=false):void { this.mass = mass; this.degree = 0; this.x = x; this.y = y; this.vx = this._vx = vx; this.vy = this._vy = vy; this.fx = 0; this.fy = 0; this.age = 0; this.fixed = fixed; this.die = false; this.tag = 0; } /** * "Kills" this particle, scheduling it for removal in the next * simulation cycle. */ public function kill():void { this.die = true; } } // end of class Particle }