home *** CD-ROM | disk | FTP | other *** search
- package org.cove.ape
- {
- public class Group extends AbstractCollection
- {
-
-
- private var _collideInternal:Boolean;
-
- private var _composites:Array;
-
- private var _collisionList:Array;
-
- public function Group(param1:Boolean = false)
- {
- super();
- _composites = new Array();
- _collisionList = new Array();
- this.collideInternal = param1;
- }
-
- internal function checkCollisions() : void
- {
- var _loc1_:int = 0;
- var _loc2_:int = 0;
- var _loc3_:Group = null;
- if(collideInternal)
- {
- checkCollisionGroupInternal();
- }
- _loc1_ = int(collisionList.length);
- _loc2_ = 0;
- while(_loc2_ < _loc1_)
- {
- _loc3_ = collisionList[_loc2_];
- checkCollisionVsGroup(_loc3_);
- _loc2_++;
- }
- }
-
- public function get composites() : Array
- {
- return _composites;
- }
-
- override public function init() : void
- {
- var _loc1_:int = 0;
- super.init();
- _loc1_ = 0;
- while(_loc1_ < composites.length)
- {
- composites[_loc1_].init();
- _loc1_++;
- }
- }
-
- public function removeCollidable(param1:Group) : void
- {
- var _loc2_:int = 0;
- _loc2_ = collisionList.indexOf(param1);
- if(_loc2_ == -1)
- {
- return;
- }
- collisionList.splice(_loc2_,1);
- }
-
- private function checkCollisionVsGroup(param1:Group) : void
- {
- var _loc2_:int = 0;
- var _loc3_:int = 0;
- var _loc4_:int = 0;
- var _loc5_:Composite = null;
- var _loc6_:int = 0;
- var _loc7_:Composite = null;
- checkCollisionsVsCollection(param1);
- _loc2_ = int(_composites.length);
- _loc3_ = int(param1.composites.length);
- _loc4_ = 0;
- while(_loc4_ < _loc2_)
- {
- (_loc5_ = _composites[_loc4_]).checkCollisionsVsCollection(param1);
- _loc6_ = 0;
- while(_loc6_ < _loc3_)
- {
- _loc7_ = param1.composites[_loc6_];
- _loc5_.checkCollisionsVsCollection(_loc7_);
- _loc6_++;
- }
- _loc4_++;
- }
- _loc6_ = 0;
- while(_loc6_ < _loc3_)
- {
- _loc7_ = param1.composites[_loc6_];
- checkCollisionsVsCollection(_loc7_);
- _loc6_++;
- }
- }
-
- override internal function satisfyConstraints() : void
- {
- var _loc1_:int = 0;
- var _loc2_:int = 0;
- var _loc3_:Composite = null;
- super.satisfyConstraints();
- _loc1_ = int(_composites.length);
- _loc2_ = 0;
- while(_loc2_ < _loc1_)
- {
- _loc3_ = _composites[_loc2_];
- _loc3_.satisfyConstraints();
- _loc2_++;
- }
- }
-
- public function get collideInternal() : Boolean
- {
- return _collideInternal;
- }
-
- override public function paint() : void
- {
- var _loc1_:int = 0;
- var _loc2_:int = 0;
- var _loc3_:Composite = null;
- super.paint();
- _loc1_ = int(_composites.length);
- _loc2_ = 0;
- while(_loc2_ < _loc1_)
- {
- _loc3_ = _composites[_loc2_];
- _loc3_.paint();
- _loc2_++;
- }
- }
-
- public function addCollidableList(param1:Array) : void
- {
- var _loc2_:int = 0;
- var _loc3_:Group = null;
- _loc2_ = 0;
- while(_loc2_ < param1.length)
- {
- _loc3_ = param1[_loc2_];
- collisionList.push(_loc3_);
- _loc2_++;
- }
- }
-
- public function removeComposite(param1:Composite) : void
- {
- var _loc2_:int = 0;
- _loc2_ = composites.indexOf(param1);
- if(_loc2_ == -1)
- {
- return;
- }
- composites.splice(_loc2_,1);
- param1.isParented = false;
- param1.cleanup();
- }
-
- override public function cleanup() : void
- {
- var _loc1_:int = 0;
- super.cleanup();
- _loc1_ = 0;
- while(_loc1_ < composites.length)
- {
- composites[_loc1_].cleanup();
- _loc1_++;
- }
- }
-
- public function addCollidable(param1:Group) : void
- {
- collisionList.push(param1);
- }
-
- public function get collisionList() : Array
- {
- return _collisionList;
- }
-
- override internal function integrate(param1:Number) : void
- {
- var _loc2_:int = 0;
- var _loc3_:int = 0;
- var _loc4_:Composite = null;
- super.integrate(param1);
- _loc2_ = int(_composites.length);
- _loc3_ = 0;
- while(_loc3_ < _loc2_)
- {
- (_loc4_ = _composites[_loc3_]).integrate(param1);
- _loc3_++;
- }
- }
-
- override public function getAll() : Array
- {
- return particles.concat(constraints).concat(composites);
- }
-
- public function addComposite(param1:Composite) : void
- {
- composites.push(param1);
- param1.isParented = true;
- if(isParented)
- {
- param1.init();
- }
- }
-
- private function checkCollisionGroupInternal() : void
- {
- var _loc1_:int = 0;
- var _loc2_:int = 0;
- var _loc3_:Composite = null;
- var _loc4_:int = 0;
- var _loc5_:Composite = null;
- checkInternalCollisions();
- _loc1_ = int(_composites.length);
- _loc2_ = 0;
- while(_loc2_ < _loc1_)
- {
- _loc3_ = _composites[_loc2_];
- _loc3_.checkCollisionsVsCollection(this);
- _loc4_ = _loc2_ + 1;
- while(_loc4_ < _loc1_)
- {
- _loc5_ = _composites[_loc4_];
- _loc3_.checkCollisionsVsCollection(_loc5_);
- _loc4_++;
- }
- _loc2_++;
- }
- }
-
- public function set collideInternal(param1:Boolean) : void
- {
- _collideInternal = param1;
- }
- }
- }
-