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

  1. package org.cove.ape
  2. {
  3.    public class WheelParticle extends CircleParticle
  4.    {
  5.        
  6.       
  7.       private var _traction:Number;
  8.       
  9.       private var normSlip:Vector;
  10.       
  11.       private var tan:Vector;
  12.       
  13.       private var rp:RimParticle;
  14.       
  15.       private var orientation:Vector;
  16.       
  17.       public function WheelParticle(param1:Number, param2:Number, param3:Number, param4:Boolean = false, param5:Number = 1, param6:Number = 0.3, param7:Number = 0, param8:Number = 1)
  18.       {
  19.          super(param1,param2,param3,param4,param5,param6,param7);
  20.          tan = new Vector(0,0);
  21.          normSlip = new Vector(0,0);
  22.          rp = new RimParticle(param3,2);
  23.          this.traction = param8;
  24.          orientation = new Vector();
  25.       }
  26.       
  27.       public function set speed(param1:Number) : void
  28.       {
  29.          rp.speed = param1;
  30.       }
  31.       
  32.       override public function init() : void
  33.       {
  34.          cleanup();
  35.          if(displayObject != null)
  36.          {
  37.             initDisplay();
  38.          }
  39.          else
  40.          {
  41.             sprite.graphics.clear();
  42.             sprite.graphics.lineStyle(lineThickness,lineColor,lineAlpha);
  43.             sprite.graphics.beginFill(fillColor,fillAlpha);
  44.             sprite.graphics.drawCircle(0,0,radius);
  45.             sprite.graphics.endFill();
  46.             sprite.graphics.moveTo(-radius,0);
  47.             sprite.graphics.lineTo(radius,0);
  48.             sprite.graphics.moveTo(0,-radius);
  49.             sprite.graphics.lineTo(0,radius);
  50.          }
  51.          paint();
  52.       }
  53.       
  54.       public function set traction(param1:Number) : void
  55.       {
  56.          _traction = 1 - param1;
  57.       }
  58.       
  59.       override internal function resolveCollision(param1:Vector, param2:Vector, param3:Vector, param4:Number, param5:int, param6:AbstractParticle) : void
  60.       {
  61.          super.resolveCollision(param1,param2,param3,param4,param5,param6);
  62.          resolve(param3.mult(MathUtil.sign(param4 * param5)));
  63.       }
  64.       
  65.       public function get traction() : Number
  66.       {
  67.          return 1 - _traction;
  68.       }
  69.       
  70.       public function get radian() : Number
  71.       {
  72.          orientation.setTo(rp.curr.x,rp.curr.y);
  73.          return Math.atan2(orientation.y,orientation.x) + Math.PI;
  74.       }
  75.       
  76.       public function set angularVelocity(param1:Number) : void
  77.       {
  78.          rp.angularVelocity = param1;
  79.       }
  80.       
  81.       public function get speed() : Number
  82.       {
  83.          return rp.speed;
  84.       }
  85.       
  86.       override public function update(param1:Number) : void
  87.       {
  88.          super.update(param1);
  89.          rp.update(param1);
  90.       }
  91.       
  92.       public function get angle() : Number
  93.       {
  94.          return radian * MathUtil.ONE_EIGHTY_OVER_PI;
  95.       }
  96.       
  97.       override public function paint() : void
  98.       {
  99.          sprite.x = curr.x;
  100.          sprite.y = curr.y;
  101.          sprite.rotation = angle;
  102.       }
  103.       
  104.       public function get angularVelocity() : Number
  105.       {
  106.          return rp.angularVelocity;
  107.       }
  108.       
  109.       private function resolve(param1:Vector) : void
  110.       {
  111.          var _loc2_:Vector = null;
  112.          var _loc3_:Vector = null;
  113.          var _loc4_:Number = NaN;
  114.          var _loc5_:Number = NaN;
  115.          tan.setTo(-rp.curr.y,rp.curr.x);
  116.          tan = tan.normalize();
  117.          _loc2_ = tan.mult(rp.speed);
  118.          _loc3_ = velocity.plusEquals(_loc2_);
  119.          _loc4_ = _loc3_.cross(param1);
  120.          tan.multEquals(_loc4_);
  121.          rp.prev.copy(rp.curr.minus(tan));
  122.          _loc5_ = (1 - _traction) * rp.speed;
  123.          normSlip.setTo(_loc5_ * param1.y,_loc5_ * param1.x);
  124.          curr.plusEquals(normSlip);
  125.          rp.speed *= _traction;
  126.       }
  127.    }
  128. }
  129.