Advertisement
Guest User

Untitled

a guest
Mar 13th, 2012
379
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // File "Shape2D.as"
  2.  
  3. package  
  4. {
  5.     import Box2D.Common.Math.b2Vec2;
  6.     import flash.display.Sprite;
  7.     import flash.display.Stage;
  8.  
  9.     /**
  10.      * Shape.as
  11.      * Created On:  12/03/2012 17:47
  12.      */
  13.    
  14.     public class Shape2D
  15.     {
  16.         public var verts:Vector.<b2Vec2>;
  17.         public var position:b2Vec2;
  18.         public var angle:Number;
  19.        
  20.         public function Shape2D(vertices:Vector.<b2Vec2>, position:b2Vec2, angle:Number)
  21.         {
  22.             // INITIALZING FIELDS:
  23.             this.verts      = vertices;
  24.             this.position   = position;
  25.             this.angle      = angle;
  26.         }
  27.         public function getOBB():Vector.<b2Vec2>
  28.         {
  29.             // RETURNS THE ACTUAL VERTS RELATIVE TO THE SHAPES POSITION AND ROTATION:
  30.             var obb:Vector.<b2Vec2> = new Vector.<b2Vec2>();
  31.             var radians:Number = angle * (Math.PI / 180);
  32.             for (var v:int = 0; v < verts.length; v++)
  33.             {
  34.                 // COPYING CURRENT VERT TO TEMPORARY VARIABLE:
  35.                 var vert:b2Vec2 = verts[v].Copy();
  36.                
  37.                 // ROTATING VERTICES
  38.                 var xPos:Number = vert.x * Math.cos(radians) - vert.y * Math.sin(radians) + position.x;
  39.                 var yPos:Number = vert.x * Math.sin(radians) + vert.y * Math.cos(radians) + position.y;
  40.                 obb.push(new b2Vec2(xPos, yPos));
  41.             }
  42.             return obb;
  43.         }
  44.         public function draw(canvas:Sprite, fill:Boolean = false):void
  45.         {
  46.             var obb:Vector.<b2Vec2> = getOBB();
  47.             // DRAWING VERTICES:
  48.             if (fill)
  49.             {
  50.                 canvas.graphics.beginFill(0xFF0000);
  51.             }
  52.             canvas.graphics.lineStyle(2, 0xFF0000);
  53.             canvas.graphics.moveTo(obb[0].x, obb[0].y);
  54.             for (var i:int = 1; i < obb.length; i++)
  55.             {
  56.                 canvas.graphics.lineTo(obb[i].x, obb[i].y);
  57.             }
  58.             canvas.graphics.lineTo(obb[0].x, obb[0].y);
  59.             if (fill)
  60.             {
  61.                 canvas.graphics.endFill();
  62.             }
  63.         }
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement