home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Diversos / pup_idol.swf / scripts / Box2D / Dynamics / Contacts / b2ContactSolver.as < prev    next >
Encoding:
Text File  |  2008-08-07  |  19.2 KB  |  461 lines

  1. package Box2D.Dynamics.Contacts
  2. {
  3.    import Box2D.Collision.*;
  4.    import Box2D.Common.*;
  5.    import Box2D.Common.Math.*;
  6.    import Box2D.Dynamics.*;
  7.    
  8.    public class b2ContactSolver
  9.    {
  10.        
  11.       
  12.       public var m_constraintCount:int;
  13.       
  14.       public var m_constraints:Array;
  15.       
  16.       public var m_allocator:*;
  17.       
  18.       public function b2ContactSolver(param1:Array, param2:int, param3:*)
  19.       {
  20.          var _loc4_:int = 0;
  21.          var _loc5_:b2Vec2 = null;
  22.          var _loc6_:b2Mat22 = null;
  23.          var _loc8_:b2Contact = null;
  24.          var _loc9_:b2Body = null;
  25.          var _loc10_:b2Body = null;
  26.          var _loc11_:int = 0;
  27.          var _loc12_:Array = null;
  28.          var _loc13_:Number = NaN;
  29.          var _loc14_:Number = NaN;
  30.          var _loc15_:Number = NaN;
  31.          var _loc16_:Number = NaN;
  32.          var _loc17_:Number = NaN;
  33.          var _loc18_:Number = NaN;
  34.          var _loc19_:Number = NaN;
  35.          var _loc20_:Number = NaN;
  36.          var _loc21_:int = 0;
  37.          var _loc22_:b2Manifold = null;
  38.          var _loc23_:Number = NaN;
  39.          var _loc24_:Number = NaN;
  40.          var _loc25_:b2ContactConstraint = null;
  41.          var _loc26_:uint = 0;
  42.          var _loc27_:b2ContactPoint = null;
  43.          var _loc28_:b2ContactConstraintPoint = null;
  44.          var _loc29_:Number = NaN;
  45.          var _loc30_:Number = NaN;
  46.          var _loc31_:Number = NaN;
  47.          var _loc32_:Number = NaN;
  48.          var _loc33_:Number = NaN;
  49.          var _loc34_:Number = NaN;
  50.          var _loc35_:Number = NaN;
  51.          var _loc36_:Number = NaN;
  52.          var _loc37_:Number = NaN;
  53.          var _loc38_:Number = NaN;
  54.          var _loc39_:Number = NaN;
  55.          var _loc40_:Number = NaN;
  56.          var _loc41_:Number = NaN;
  57.          var _loc42_:Number = NaN;
  58.          var _loc43_:Number = NaN;
  59.          var _loc44_:Number = NaN;
  60.          var _loc45_:Number = NaN;
  61.          m_constraints = new Array();
  62.          super();
  63.          m_allocator = param3;
  64.          m_constraintCount = 0;
  65.          _loc4_ = 0;
  66.          while(_loc4_ < param2)
  67.          {
  68.             m_constraintCount += param1[_loc4_].GetManifoldCount();
  69.             _loc4_++;
  70.          }
  71.          _loc4_ = 0;
  72.          while(_loc4_ < m_constraintCount)
  73.          {
  74.             m_constraints[_loc4_] = new b2ContactConstraint();
  75.             _loc4_++;
  76.          }
  77.          var _loc7_:int = 0;
  78.          _loc4_ = 0;
  79.          while(_loc4_ < param2)
  80.          {
  81.             _loc9_ = (_loc8_ = param1[_loc4_]).m_shape1.m_body;
  82.             _loc10_ = _loc8_.m_shape2.m_body;
  83.             _loc11_ = _loc8_.GetManifoldCount();
  84.             _loc12_ = _loc8_.GetManifolds();
  85.             _loc13_ = _loc8_.m_friction;
  86.             _loc14_ = _loc8_.m_restitution;
  87.             _loc15_ = _loc9_.m_linearVelocity.x;
  88.             _loc16_ = _loc9_.m_linearVelocity.y;
  89.             _loc17_ = _loc10_.m_linearVelocity.x;
  90.             _loc18_ = _loc10_.m_linearVelocity.y;
  91.             _loc19_ = _loc9_.m_angularVelocity;
  92.             _loc20_ = _loc10_.m_angularVelocity;
  93.             _loc21_ = 0;
  94.             while(_loc21_ < _loc11_)
  95.             {
  96.                _loc23_ = (_loc22_ = _loc12_[_loc21_]).normal.x;
  97.                _loc24_ = _loc22_.normal.y;
  98.                (_loc25_ = m_constraints[_loc7_]).body1 = _loc9_;
  99.                _loc25_.body2 = _loc10_;
  100.                _loc25_.manifold = _loc22_;
  101.                _loc25_.normal.x = _loc23_;
  102.                _loc25_.normal.y = _loc24_;
  103.                _loc25_.pointCount = _loc22_.pointCount;
  104.                _loc25_.friction = _loc13_;
  105.                _loc25_.restitution = _loc14_;
  106.                _loc26_ = 0;
  107.                while(_loc26_ < _loc25_.pointCount)
  108.                {
  109.                   _loc27_ = _loc22_.points[_loc26_];
  110.                   (_loc28_ = _loc25_.points[_loc26_]).normalImpulse = _loc27_.normalImpulse;
  111.                   _loc28_.tangentImpulse = _loc27_.tangentImpulse;
  112.                   _loc28_.separation = _loc27_.separation;
  113.                   _loc29_ = _loc27_.position.x - _loc9_.m_position.x;
  114.                   _loc30_ = _loc27_.position.y - _loc9_.m_position.y;
  115.                   _loc31_ = _loc27_.position.x - _loc10_.m_position.x;
  116.                   _loc32_ = _loc27_.position.y - _loc10_.m_position.y;
  117.                   _loc5_ = _loc28_.localAnchor1;
  118.                   _loc6_ = _loc9_.m_R;
  119.                   _loc5_.x = _loc29_ * _loc6_.col1.x + _loc30_ * _loc6_.col1.y;
  120.                   _loc5_.y = _loc29_ * _loc6_.col2.x + _loc30_ * _loc6_.col2.y;
  121.                   _loc5_ = _loc28_.localAnchor2;
  122.                   _loc6_ = _loc10_.m_R;
  123.                   _loc5_.x = _loc31_ * _loc6_.col1.x + _loc32_ * _loc6_.col1.y;
  124.                   _loc5_.y = _loc31_ * _loc6_.col2.x + _loc32_ * _loc6_.col2.y;
  125.                   _loc33_ = _loc29_ * _loc29_ + _loc30_ * _loc30_;
  126.                   _loc34_ = _loc31_ * _loc31_ + _loc32_ * _loc32_;
  127.                   _loc35_ = _loc29_ * _loc23_ + _loc30_ * _loc24_;
  128.                   _loc36_ = _loc31_ * _loc23_ + _loc32_ * _loc24_;
  129.                   _loc37_ = (_loc37_ = _loc9_.m_invMass + _loc10_.m_invMass) + (_loc9_.m_invI * (_loc33_ - _loc35_ * _loc35_) + _loc10_.m_invI * (_loc34_ - _loc36_ * _loc36_));
  130.                   _loc28_.normalMass = 1 / _loc37_;
  131.                   _loc38_ = _loc24_;
  132.                   _loc39_ = -_loc23_;
  133.                   _loc40_ = _loc29_ * _loc38_ + _loc30_ * _loc39_;
  134.                   _loc41_ = _loc31_ * _loc38_ + _loc32_ * _loc39_;
  135.                   _loc42_ = (_loc42_ = _loc9_.m_invMass + _loc10_.m_invMass) + (_loc9_.m_invI * (_loc33_ - _loc40_ * _loc40_) + _loc10_.m_invI * (_loc34_ - _loc41_ * _loc41_));
  136.                   _loc28_.tangentMass = 1 / _loc42_;
  137.                   _loc28_.velocityBias = 0;
  138.                   if(_loc28_.separation > 0)
  139.                   {
  140.                      _loc28_.velocityBias = -60 * _loc28_.separation;
  141.                   }
  142.                   _loc43_ = _loc17_ + -_loc20_ * _loc32_ - _loc15_ - -_loc19_ * _loc30_;
  143.                   _loc44_ = _loc18_ + _loc20_ * _loc31_ - _loc16_ - _loc19_ * _loc29_;
  144.                   if((_loc45_ = _loc25_.normal.x * _loc43_ + _loc25_.normal.y * _loc44_) < -b2Settings.b2_velocityThreshold)
  145.                   {
  146.                      _loc28_.velocityBias += -_loc25_.restitution * _loc45_;
  147.                   }
  148.                   _loc26_++;
  149.                }
  150.                _loc7_++;
  151.                _loc21_++;
  152.             }
  153.             _loc4_++;
  154.          }
  155.       }
  156.       
  157.       public function SolveVelocityConstraints() : void
  158.       {
  159.          var _loc1_:int = 0;
  160.          var _loc2_:b2ContactConstraintPoint = null;
  161.          var _loc3_:Number = NaN;
  162.          var _loc4_:Number = NaN;
  163.          var _loc5_:Number = NaN;
  164.          var _loc6_:Number = NaN;
  165.          var _loc7_:Number = NaN;
  166.          var _loc8_:Number = NaN;
  167.          var _loc9_:Number = NaN;
  168.          var _loc10_:Number = NaN;
  169.          var _loc11_:Number = NaN;
  170.          var _loc12_:Number = NaN;
  171.          var _loc13_:b2Mat22 = null;
  172.          var _loc14_:b2Vec2 = null;
  173.          var _loc16_:b2ContactConstraint = null;
  174.          var _loc17_:b2Body = null;
  175.          var _loc18_:b2Body = null;
  176.          var _loc19_:Number = NaN;
  177.          var _loc20_:b2Vec2 = null;
  178.          var _loc21_:Number = NaN;
  179.          var _loc22_:b2Vec2 = null;
  180.          var _loc23_:Number = NaN;
  181.          var _loc24_:Number = NaN;
  182.          var _loc25_:Number = NaN;
  183.          var _loc26_:Number = NaN;
  184.          var _loc27_:Number = NaN;
  185.          var _loc28_:Number = NaN;
  186.          var _loc29_:Number = NaN;
  187.          var _loc30_:Number = NaN;
  188.          var _loc31_:int = 0;
  189.          var _loc32_:Number = NaN;
  190.          var _loc33_:Number = NaN;
  191.          var _loc34_:Number = NaN;
  192.          var _loc15_:int = 0;
  193.          while(_loc15_ < m_constraintCount)
  194.          {
  195.             _loc17_ = (_loc16_ = m_constraints[_loc15_]).body1;
  196.             _loc18_ = _loc16_.body2;
  197.             _loc19_ = _loc17_.m_angularVelocity;
  198.             _loc20_ = _loc17_.m_linearVelocity;
  199.             _loc21_ = _loc18_.m_angularVelocity;
  200.             _loc22_ = _loc18_.m_linearVelocity;
  201.             _loc23_ = _loc17_.m_invMass;
  202.             _loc24_ = _loc17_.m_invI;
  203.             _loc25_ = _loc18_.m_invMass;
  204.             _loc26_ = _loc18_.m_invI;
  205.             _loc27_ = _loc16_.normal.x;
  206.             _loc29_ = _loc28_ = _loc16_.normal.y;
  207.             _loc30_ = -_loc27_;
  208.             _loc31_ = _loc16_.pointCount;
  209.             _loc1_ = 0;
  210.             while(_loc1_ < _loc31_)
  211.             {
  212.                _loc2_ = _loc16_.points[_loc1_];
  213.                _loc13_ = _loc17_.m_R;
  214.                _loc14_ = _loc2_.localAnchor1;
  215.                _loc3_ = _loc13_.col1.x * _loc14_.x + _loc13_.col2.x * _loc14_.y;
  216.                _loc4_ = _loc13_.col1.y * _loc14_.x + _loc13_.col2.y * _loc14_.y;
  217.                _loc13_ = _loc18_.m_R;
  218.                _loc14_ = _loc2_.localAnchor2;
  219.                _loc5_ = _loc13_.col1.x * _loc14_.x + _loc13_.col2.x * _loc14_.y;
  220.                _loc6_ = _loc13_.col1.y * _loc14_.x + _loc13_.col2.y * _loc14_.y;
  221.                _loc7_ = _loc22_.x + -_loc21_ * _loc6_ - _loc20_.x - -_loc19_ * _loc4_;
  222.                _loc8_ = _loc22_.y + _loc21_ * _loc5_ - _loc20_.y - _loc19_ * _loc3_;
  223.                _loc32_ = _loc7_ * _loc27_ + _loc8_ * _loc28_;
  224.                _loc9_ = -_loc2_.normalMass * (_loc32_ - _loc2_.velocityBias);
  225.                _loc11_ = (_loc9_ = (_loc10_ = b2Math.b2Max(_loc2_.normalImpulse + _loc9_,0)) - _loc2_.normalImpulse) * _loc27_;
  226.                _loc12_ = _loc9_ * _loc28_;
  227.                _loc20_.x -= _loc23_ * _loc11_;
  228.                _loc20_.y -= _loc23_ * _loc12_;
  229.                _loc19_ -= _loc24_ * (_loc3_ * _loc12_ - _loc4_ * _loc11_);
  230.                _loc22_.x += _loc25_ * _loc11_;
  231.                _loc22_.y += _loc25_ * _loc12_;
  232.                _loc21_ += _loc26_ * (_loc5_ * _loc12_ - _loc6_ * _loc11_);
  233.                _loc2_.normalImpulse = _loc10_;
  234.                _loc7_ = _loc22_.x + -_loc21_ * _loc6_ - _loc20_.x - -_loc19_ * _loc4_;
  235.                _loc8_ = _loc22_.y + _loc21_ * _loc5_ - _loc20_.y - _loc19_ * _loc3_;
  236.                _loc33_ = _loc7_ * _loc29_ + _loc8_ * _loc30_;
  237.                _loc9_ = _loc2_.tangentMass * -_loc33_;
  238.                _loc34_ = _loc16_.friction * _loc2_.normalImpulse;
  239.                _loc11_ = (_loc9_ = (_loc10_ = b2Math.b2Clamp(_loc2_.tangentImpulse + _loc9_,-_loc34_,_loc34_)) - _loc2_.tangentImpulse) * _loc29_;
  240.                _loc12_ = _loc9_ * _loc30_;
  241.                _loc20_.x -= _loc23_ * _loc11_;
  242.                _loc20_.y -= _loc23_ * _loc12_;
  243.                _loc19_ -= _loc24_ * (_loc3_ * _loc12_ - _loc4_ * _loc11_);
  244.                _loc22_.x += _loc25_ * _loc11_;
  245.                _loc22_.y += _loc25_ * _loc12_;
  246.                _loc21_ += _loc26_ * (_loc5_ * _loc12_ - _loc6_ * _loc11_);
  247.                _loc2_.tangentImpulse = _loc10_;
  248.                _loc1_++;
  249.             }
  250.             _loc17_.m_angularVelocity = _loc19_;
  251.             _loc18_.m_angularVelocity = _loc21_;
  252.             _loc15_++;
  253.          }
  254.       }
  255.       
  256.       public function PreSolve() : void
  257.       {
  258.          var _loc1_:b2Vec2 = null;
  259.          var _loc2_:b2Vec2 = null;
  260.          var _loc3_:b2Mat22 = null;
  261.          var _loc5_:b2ContactConstraint = null;
  262.          var _loc6_:b2Body = null;
  263.          var _loc7_:b2Body = null;
  264.          var _loc8_:Number = NaN;
  265.          var _loc9_:Number = NaN;
  266.          var _loc10_:Number = NaN;
  267.          var _loc11_:Number = NaN;
  268.          var _loc12_:Number = NaN;
  269.          var _loc13_:Number = NaN;
  270.          var _loc14_:Number = NaN;
  271.          var _loc15_:Number = NaN;
  272.          var _loc16_:int = 0;
  273.          var _loc17_:int = 0;
  274.          var _loc18_:b2ContactConstraintPoint = null;
  275.          var _loc19_:Number = NaN;
  276.          var _loc20_:Number = NaN;
  277.          var _loc21_:Number = NaN;
  278.          var _loc22_:Number = NaN;
  279.          var _loc23_:Number = NaN;
  280.          var _loc24_:Number = NaN;
  281.          var _loc25_:b2ContactConstraintPoint = null;
  282.          var _loc4_:int = 0;
  283.          while(_loc4_ < m_constraintCount)
  284.          {
  285.             _loc6_ = (_loc5_ = m_constraints[_loc4_]).body1;
  286.             _loc7_ = _loc5_.body2;
  287.             _loc8_ = _loc6_.m_invMass;
  288.             _loc9_ = _loc6_.m_invI;
  289.             _loc10_ = _loc7_.m_invMass;
  290.             _loc11_ = _loc7_.m_invI;
  291.             _loc12_ = _loc5_.normal.x;
  292.             _loc14_ = _loc13_ = _loc5_.normal.y;
  293.             _loc15_ = -_loc12_;
  294.             if(b2World.s_enableWarmStarting)
  295.             {
  296.                _loc17_ = _loc5_.pointCount;
  297.                _loc16_ = 0;
  298.                while(_loc16_ < _loc17_)
  299.                {
  300.                   _loc19_ = (_loc18_ = _loc5_.points[_loc16_]).normalImpulse * _loc12_ + _loc18_.tangentImpulse * _loc14_;
  301.                   _loc20_ = _loc18_.normalImpulse * _loc13_ + _loc18_.tangentImpulse * _loc15_;
  302.                   _loc3_ = _loc6_.m_R;
  303.                   _loc1_ = _loc18_.localAnchor1;
  304.                   _loc21_ = _loc3_.col1.x * _loc1_.x + _loc3_.col2.x * _loc1_.y;
  305.                   _loc22_ = _loc3_.col1.y * _loc1_.x + _loc3_.col2.y * _loc1_.y;
  306.                   _loc3_ = _loc7_.m_R;
  307.                   _loc1_ = _loc18_.localAnchor2;
  308.                   _loc23_ = _loc3_.col1.x * _loc1_.x + _loc3_.col2.x * _loc1_.y;
  309.                   _loc24_ = _loc3_.col1.y * _loc1_.x + _loc3_.col2.y * _loc1_.y;
  310.                   _loc6_.m_angularVelocity -= _loc9_ * (_loc21_ * _loc20_ - _loc22_ * _loc19_);
  311.                   _loc6_.m_linearVelocity.x -= _loc8_ * _loc19_;
  312.                   _loc6_.m_linearVelocity.y -= _loc8_ * _loc20_;
  313.                   _loc7_.m_angularVelocity += _loc11_ * (_loc23_ * _loc20_ - _loc24_ * _loc19_);
  314.                   _loc7_.m_linearVelocity.x += _loc10_ * _loc19_;
  315.                   _loc7_.m_linearVelocity.y += _loc10_ * _loc20_;
  316.                   _loc18_.positionImpulse = 0;
  317.                   _loc16_++;
  318.                }
  319.             }
  320.             else
  321.             {
  322.                _loc17_ = _loc5_.pointCount;
  323.                _loc16_ = 0;
  324.                while(_loc16_ < _loc17_)
  325.                {
  326.                   (_loc25_ = _loc5_.points[_loc16_]).normalImpulse = 0;
  327.                   _loc25_.tangentImpulse = 0;
  328.                   _loc25_.positionImpulse = 0;
  329.                   _loc16_++;
  330.                }
  331.             }
  332.             _loc4_++;
  333.          }
  334.       }
  335.       
  336.       public function SolvePositionConstraints(param1:Number) : Boolean
  337.       {
  338.          var _loc3_:b2Mat22 = null;
  339.          var _loc4_:b2Vec2 = null;
  340.          var _loc6_:b2ContactConstraint = null;
  341.          var _loc7_:b2Body = null;
  342.          var _loc8_:b2Body = null;
  343.          var _loc9_:b2Vec2 = null;
  344.          var _loc10_:Number = NaN;
  345.          var _loc11_:b2Vec2 = null;
  346.          var _loc12_:Number = NaN;
  347.          var _loc13_:Number = NaN;
  348.          var _loc14_:Number = NaN;
  349.          var _loc15_:Number = NaN;
  350.          var _loc16_:Number = NaN;
  351.          var _loc17_:Number = NaN;
  352.          var _loc18_:Number = NaN;
  353.          var _loc19_:Number = NaN;
  354.          var _loc20_:Number = NaN;
  355.          var _loc21_:int = 0;
  356.          var _loc22_:int = 0;
  357.          var _loc23_:b2ContactConstraintPoint = null;
  358.          var _loc24_:Number = NaN;
  359.          var _loc25_:Number = NaN;
  360.          var _loc26_:Number = NaN;
  361.          var _loc27_:Number = NaN;
  362.          var _loc28_:Number = NaN;
  363.          var _loc29_:Number = NaN;
  364.          var _loc30_:Number = NaN;
  365.          var _loc31_:Number = NaN;
  366.          var _loc32_:Number = NaN;
  367.          var _loc33_:Number = NaN;
  368.          var _loc34_:Number = NaN;
  369.          var _loc35_:Number = NaN;
  370.          var _loc36_:Number = NaN;
  371.          var _loc37_:Number = NaN;
  372.          var _loc38_:Number = NaN;
  373.          var _loc39_:Number = NaN;
  374.          var _loc2_:Number = 0;
  375.          var _loc5_:int = 0;
  376.          while(_loc5_ < m_constraintCount)
  377.          {
  378.             _loc7_ = (_loc6_ = m_constraints[_loc5_]).body1;
  379.             _loc8_ = _loc6_.body2;
  380.             _loc9_ = _loc7_.m_position;
  381.             _loc10_ = _loc7_.m_rotation;
  382.             _loc11_ = _loc8_.m_position;
  383.             _loc12_ = _loc8_.m_rotation;
  384.             _loc13_ = _loc7_.m_invMass;
  385.             _loc14_ = _loc7_.m_invI;
  386.             _loc15_ = _loc8_.m_invMass;
  387.             _loc16_ = _loc8_.m_invI;
  388.             _loc17_ = _loc6_.normal.x;
  389.             _loc19_ = _loc18_ = _loc6_.normal.y;
  390.             _loc20_ = -_loc17_;
  391.             _loc21_ = _loc6_.pointCount;
  392.             _loc22_ = 0;
  393.             while(_loc22_ < _loc21_)
  394.             {
  395.                _loc23_ = _loc6_.points[_loc22_];
  396.                _loc3_ = _loc7_.m_R;
  397.                _loc4_ = _loc23_.localAnchor1;
  398.                _loc24_ = _loc3_.col1.x * _loc4_.x + _loc3_.col2.x * _loc4_.y;
  399.                _loc25_ = _loc3_.col1.y * _loc4_.x + _loc3_.col2.y * _loc4_.y;
  400.                _loc3_ = _loc8_.m_R;
  401.                _loc4_ = _loc23_.localAnchor2;
  402.                _loc26_ = _loc3_.col1.x * _loc4_.x + _loc3_.col2.x * _loc4_.y;
  403.                _loc27_ = _loc3_.col1.y * _loc4_.x + _loc3_.col2.y * _loc4_.y;
  404.                _loc28_ = _loc9_.x + _loc24_;
  405.                _loc29_ = _loc9_.y + _loc25_;
  406.                _loc30_ = _loc11_.x + _loc26_;
  407.                _loc31_ = _loc11_.y + _loc27_;
  408.                _loc32_ = _loc30_ - _loc28_;
  409.                _loc33_ = _loc31_ - _loc29_;
  410.                _loc34_ = _loc32_ * _loc17_ + _loc33_ * _loc18_ + _loc23_.separation;
  411.                _loc2_ = b2Math.b2Min(_loc2_,_loc34_);
  412.                _loc35_ = param1 * b2Math.b2Clamp(_loc34_ + b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0);
  413.                _loc36_ = -_loc23_.normalMass * _loc35_;
  414.                _loc37_ = _loc23_.positionImpulse;
  415.                _loc23_.positionImpulse = b2Math.b2Max(_loc37_ + _loc36_,0);
  416.                _loc38_ = (_loc36_ = _loc23_.positionImpulse - _loc37_) * _loc17_;
  417.                _loc39_ = _loc36_ * _loc18_;
  418.                _loc9_.x -= _loc13_ * _loc38_;
  419.                _loc9_.y -= _loc13_ * _loc39_;
  420.                _loc10_ -= _loc14_ * (_loc24_ * _loc39_ - _loc25_ * _loc38_);
  421.                _loc7_.m_R.Set(_loc10_);
  422.                _loc11_.x += _loc15_ * _loc38_;
  423.                _loc11_.y += _loc15_ * _loc39_;
  424.                _loc12_ += _loc16_ * (_loc26_ * _loc39_ - _loc27_ * _loc38_);
  425.                _loc8_.m_R.Set(_loc12_);
  426.                _loc22_++;
  427.             }
  428.             _loc7_.m_rotation = _loc10_;
  429.             _loc8_.m_rotation = _loc12_;
  430.             _loc5_++;
  431.          }
  432.          return _loc2_ >= -b2Settings.b2_linearSlop;
  433.       }
  434.       
  435.       public function PostSolve() : void
  436.       {
  437.          var _loc2_:b2ContactConstraint = null;
  438.          var _loc3_:b2Manifold = null;
  439.          var _loc4_:int = 0;
  440.          var _loc5_:b2ContactPoint = null;
  441.          var _loc6_:b2ContactConstraintPoint = null;
  442.          var _loc1_:int = 0;
  443.          while(_loc1_ < m_constraintCount)
  444.          {
  445.             _loc2_ = m_constraints[_loc1_];
  446.             _loc3_ = _loc2_.manifold;
  447.             _loc4_ = 0;
  448.             while(_loc4_ < _loc2_.pointCount)
  449.             {
  450.                _loc5_ = _loc3_.points[_loc4_];
  451.                _loc6_ = _loc2_.points[_loc4_];
  452.                _loc5_.normalImpulse = _loc6_.normalImpulse;
  453.                _loc5_.tangentImpulse = _loc6_.tangentImpulse;
  454.                _loc4_++;
  455.             }
  456.             _loc1_++;
  457.          }
  458.       }
  459.    }
  460. }
  461.