home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Diversos / pup_idol.swf / scripts / Box2D / Collision / Shapes / b2Shape.as < prev    next >
Encoding:
Text File  |  2008-08-07  |  7.9 KB  |  257 lines

  1. package Box2D.Collision.Shapes
  2. {
  3.    import Box2D.Collision.*;
  4.    import Box2D.Common.*;
  5.    import Box2D.Common.Math.*;
  6.    import Box2D.Dynamics.*;
  7.    
  8.    public class b2Shape
  9.    {
  10.       
  11.       public static const e_boxShape:int = 1;
  12.       
  13.       public static const e_unknownShape:int = -1;
  14.       
  15.       public static const e_shapeTypeCount:int = 4;
  16.       
  17.       public static const e_circleShape:int = 0;
  18.       
  19.       public static const e_meshShape:int = 3;
  20.       
  21.       public static const e_polyShape:int = 2;
  22.        
  23.       
  24.       public var m_position:b2Vec2;
  25.       
  26.       public var m_maxRadius:Number;
  27.       
  28.       public var m_next:b2Shape;
  29.       
  30.       public var m_type:int;
  31.       
  32.       public var m_R:b2Mat22;
  33.       
  34.       public var m_friction:Number;
  35.       
  36.       public var m_proxyId:uint;
  37.       
  38.       public var m_maskBits:uint;
  39.       
  40.       public var m_groupIndex:int;
  41.       
  42.       public var m_userData:* = null;
  43.       
  44.       public var m_body:b2Body;
  45.       
  46.       public var m_restitution:Number;
  47.       
  48.       public var m_categoryBits:uint;
  49.       
  50.       public function b2Shape(param1:b2ShapeDef, param2:b2Body)
  51.       {
  52.          m_R = new b2Mat22();
  53.          m_position = new b2Vec2();
  54.          super();
  55.          m_userData = param1.userData;
  56.          m_friction = param1.friction;
  57.          m_restitution = param1.restitution;
  58.          m_body = param2;
  59.          m_proxyId = b2Pair.b2_nullProxy;
  60.          m_maxRadius = 0;
  61.          m_categoryBits = param1.categoryBits;
  62.          m_maskBits = param1.maskBits;
  63.          m_groupIndex = param1.groupIndex;
  64.       }
  65.       
  66.       public static function Destroy(param1:b2Shape) : void
  67.       {
  68.          if(param1.m_proxyId != b2Pair.b2_nullProxy)
  69.          {
  70.             param1.m_body.m_world.m_broadPhase.DestroyProxy(param1.m_proxyId);
  71.          }
  72.       }
  73.       
  74.       public static function PolyMass(param1:b2MassData, param2:Array, param3:int, param4:Number) : void
  75.       {
  76.          var _loc11_:b2Vec2 = null;
  77.          var _loc12_:b2Vec2 = null;
  78.          var _loc13_:b2Vec2 = null;
  79.          var _loc14_:b2Vec2 = null;
  80.          var _loc15_:b2Vec2 = null;
  81.          var _loc16_:Number = NaN;
  82.          var _loc17_:Number = NaN;
  83.          var _loc18_:b2Vec2 = null;
  84.          var _loc19_:Number = NaN;
  85.          var _loc20_:Number = NaN;
  86.          var _loc21_:Number = NaN;
  87.          var _loc22_:Number = NaN;
  88.          var _loc23_:Number = NaN;
  89.          var _loc24_:Number = NaN;
  90.          var _loc25_:Number = NaN;
  91.          var _loc26_:Number = NaN;
  92.          var _loc5_:b2Vec2;
  93.          (_loc5_ = new b2Vec2()).SetZero();
  94.          var _loc6_:Number = 0;
  95.          var _loc7_:Number = 0;
  96.          var _loc8_:b2Vec2 = new b2Vec2(0,0);
  97.          var _loc9_:Number = 1 / 3;
  98.          var _loc10_:int = 0;
  99.          while(_loc10_ < param3)
  100.          {
  101.             _loc11_ = _loc8_;
  102.             _loc12_ = param2[_loc10_];
  103.             _loc13_ = _loc10_ + 1 < param3 ? param2[_loc10_ + 1] : param2[0];
  104.             _loc14_ = b2Math.SubtractVV(_loc12_,_loc11_);
  105.             _loc15_ = b2Math.SubtractVV(_loc13_,_loc11_);
  106.             _loc16_ = b2Math.b2CrossVV(_loc14_,_loc15_);
  107.             _loc17_ = 0.5 * _loc16_;
  108.             _loc6_ += _loc17_;
  109.             (_loc18_ = new b2Vec2()).SetV(_loc11_);
  110.             _loc18_.Add(_loc12_);
  111.             _loc18_.Add(_loc13_);
  112.             _loc18_.Multiply(_loc9_ * _loc17_);
  113.             _loc5_.Add(_loc18_);
  114.             _loc19_ = _loc11_.x;
  115.             _loc20_ = _loc11_.y;
  116.             _loc21_ = _loc14_.x;
  117.             _loc22_ = _loc14_.y;
  118.             _loc23_ = _loc15_.x;
  119.             _loc24_ = _loc15_.y;
  120.             _loc25_ = _loc9_ * (0.25 * (_loc21_ * _loc21_ + _loc23_ * _loc21_ + _loc23_ * _loc23_) + (_loc19_ * _loc21_ + _loc19_ * _loc23_)) + 0.5 * _loc19_ * _loc19_;
  121.             _loc26_ = _loc9_ * (0.25 * (_loc22_ * _loc22_ + _loc24_ * _loc22_ + _loc24_ * _loc24_) + (_loc20_ * _loc22_ + _loc20_ * _loc24_)) + 0.5 * _loc20_ * _loc20_;
  122.             _loc7_ += _loc16_ * (_loc25_ + _loc26_);
  123.             _loc10_++;
  124.          }
  125.          param1.mass = param4 * _loc6_;
  126.          _loc5_.Multiply(1 / _loc6_);
  127.          param1.center = _loc5_;
  128.          _loc7_ = param4 * (_loc7_ - _loc6_ * b2Math.b2Dot(_loc5_,_loc5_));
  129.          param1.I = _loc7_;
  130.       }
  131.       
  132.       public static function PolyCentroid(param1:Array, param2:int, param3:b2Vec2) : void
  133.       {
  134.          var _loc11_:Number = NaN;
  135.          var _loc12_:Number = NaN;
  136.          var _loc13_:Number = NaN;
  137.          var _loc14_:Number = NaN;
  138.          var _loc15_:Number = NaN;
  139.          var _loc16_:Number = NaN;
  140.          var _loc17_:Number = NaN;
  141.          var _loc18_:Number = NaN;
  142.          var _loc19_:Number = NaN;
  143.          var _loc20_:Number = NaN;
  144.          var _loc21_:Number = NaN;
  145.          var _loc22_:Number = NaN;
  146.          var _loc4_:Number = 0;
  147.          var _loc5_:Number = 0;
  148.          var _loc6_:Number = 0;
  149.          var _loc7_:Number = 0;
  150.          var _loc8_:Number = 0;
  151.          var _loc9_:Number = 1 / 3;
  152.          var _loc10_:int = 0;
  153.          while(_loc10_ < param2)
  154.          {
  155.             _loc11_ = _loc7_;
  156.             _loc12_ = _loc8_;
  157.             _loc13_ = Number(param1[_loc10_].x);
  158.             _loc14_ = Number(param1[_loc10_].y);
  159.             _loc15_ = _loc10_ + 1 < param2 ? Number(param1[_loc10_ + 1].x) : Number(param1[0].x);
  160.             _loc16_ = _loc10_ + 1 < param2 ? Number(param1[_loc10_ + 1].y) : Number(param1[0].y);
  161.             _loc17_ = _loc13_ - _loc11_;
  162.             _loc18_ = _loc14_ - _loc12_;
  163.             _loc19_ = _loc15_ - _loc11_;
  164.             _loc20_ = _loc16_ - _loc12_;
  165.             _loc21_ = _loc17_ * _loc20_ - _loc18_ * _loc19_;
  166.             _loc22_ = 0.5 * _loc21_;
  167.             _loc6_ += _loc22_;
  168.             _loc4_ += _loc22_ * _loc9_ * (_loc11_ + _loc13_ + _loc15_);
  169.             _loc5_ += _loc22_ * _loc9_ * (_loc12_ + _loc14_ + _loc16_);
  170.             _loc10_++;
  171.          }
  172.          _loc4_ *= 1 / _loc6_;
  173.          _loc5_ *= 1 / _loc6_;
  174.          param3.Set(_loc4_,_loc5_);
  175.       }
  176.       
  177.       public static function Create(param1:b2ShapeDef, param2:b2Body, param3:b2Vec2) : b2Shape
  178.       {
  179.          switch(param1.type)
  180.          {
  181.             case e_circleShape:
  182.                return new b2CircleShape(param1,param2,param3);
  183.             case e_boxShape:
  184.             case e_polyShape:
  185.                return new b2PolyShape(param1,param2,param3);
  186.             default:
  187.                return null;
  188.          }
  189.       }
  190.       
  191.       public function GetMaxRadius() : Number
  192.       {
  193.          return m_maxRadius;
  194.       }
  195.       
  196.       public function ResetProxy(param1:b2BroadPhase) : void
  197.       {
  198.       }
  199.       
  200.       public function QuickSync(param1:b2Vec2, param2:b2Mat22) : void
  201.       {
  202.       }
  203.       
  204.       public function GetNext() : b2Shape
  205.       {
  206.          return m_next;
  207.       }
  208.       
  209.       public function GetType() : int
  210.       {
  211.          return m_type;
  212.       }
  213.       
  214.       public function GetUserData() : *
  215.       {
  216.          return m_userData;
  217.       }
  218.       
  219.       public function Support(param1:Number, param2:Number, param3:b2Vec2) : void
  220.       {
  221.       }
  222.       
  223.       public function Synchronize(param1:b2Vec2, param2:b2Mat22, param3:b2Vec2, param4:b2Mat22) : void
  224.       {
  225.       }
  226.       
  227.       public function GetRotationMatrix() : b2Mat22
  228.       {
  229.          return m_R;
  230.       }
  231.       
  232.       public function GetBody() : b2Body
  233.       {
  234.          return m_body;
  235.       }
  236.       
  237.       public function DestroyProxy() : void
  238.       {
  239.          if(m_proxyId != b2Pair.b2_nullProxy)
  240.          {
  241.             m_body.m_world.m_broadPhase.DestroyProxy(m_proxyId);
  242.             m_proxyId = b2Pair.b2_nullProxy;
  243.          }
  244.       }
  245.       
  246.       public function TestPoint(param1:b2Vec2) : Boolean
  247.       {
  248.          return false;
  249.       }
  250.       
  251.       public function GetPosition() : b2Vec2
  252.       {
  253.          return m_position;
  254.       }
  255.    }
  256. }
  257.