home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Puzzle / filler.swf / scripts / org / cove / ape / CollisionResolver.as < prev    next >
Encoding:
Text File  |  2008-09-02  |  2.2 KB  |  63 lines

  1. package org.cove.ape
  2. {
  3.    internal final class CollisionResolver
  4.    {
  5.        
  6.       
  7.       public function CollisionResolver()
  8.       {
  9.          super();
  10.       }
  11.       
  12.       internal static function resolveParticleParticle(param1:AbstractParticle, param2:AbstractParticle, param3:Vector, param4:Number) : void
  13.       {
  14.          var _loc5_:Vector = null;
  15.          var _loc6_:Number = NaN;
  16.          var _loc7_:Number = NaN;
  17.          var _loc8_:Number = NaN;
  18.          var _loc9_:Collision = null;
  19.          var _loc10_:Collision = null;
  20.          var _loc11_:Vector = null;
  21.          var _loc12_:Vector = null;
  22.          var _loc13_:Vector = null;
  23.          var _loc14_:Vector = null;
  24.          param1.curr.copy(param1.samp);
  25.          param2.curr.copy(param2.samp);
  26.          _loc5_ = param3.mult(param4);
  27.          _loc6_ = param1.elasticity + param2.elasticity;
  28.          _loc7_ = param1.invMass + param2.invMass;
  29.          _loc8_ = clamp(1 - (param1.friction + param2.friction),0,1);
  30.          _loc9_ = param1.getComponents(param3);
  31.          _loc11_ = (_loc10_ = param2.getComponents(param3)).vn.mult((_loc6_ + 1) * param1.invMass).plus(_loc9_.vn.mult(param2.invMass - _loc6_ * param1.invMass)).divEquals(_loc7_);
  32.          _loc12_ = _loc9_.vn.mult((_loc6_ + 1) * param2.invMass).plus(_loc10_.vn.mult(param1.invMass - _loc6_ * param2.invMass)).divEquals(_loc7_);
  33.          _loc9_.vt.multEquals(_loc8_);
  34.          _loc10_.vt.multEquals(_loc8_);
  35.          _loc13_ = _loc5_.mult(param1.invMass / _loc7_);
  36.          _loc14_ = _loc5_.mult(-param2.invMass / _loc7_);
  37.          _loc11_.plusEquals(_loc9_.vt);
  38.          _loc12_.plusEquals(_loc10_.vt);
  39.          if(!param1.fixed)
  40.          {
  41.             param1.resolveCollision(_loc13_,_loc11_,param3,param4,-1,param2);
  42.          }
  43.          if(!param2.fixed)
  44.          {
  45.             param2.resolveCollision(_loc14_,_loc12_,param3,param4,1,param1);
  46.          }
  47.       }
  48.       
  49.       internal static function clamp(param1:Number, param2:Number, param3:Number) : Number
  50.       {
  51.          if(param1 > param3)
  52.          {
  53.             return param3;
  54.          }
  55.          if(param1 < param2)
  56.          {
  57.             return param2;
  58.          }
  59.          return param1;
  60.       }
  61.    }
  62. }
  63.