Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // File "Shape2D.as"
- package
- {
- import Box2D.Common.Math.b2Vec2;
- import flash.display.Sprite;
- import flash.display.Stage;
- /**
- * Shape.as
- * Created On: 12/03/2012 17:47
- */
- public class Shape2D
- {
- public var verts:Vector.<b2Vec2>;
- public var position:b2Vec2;
- public var angle:Number;
- public function Shape2D(vertices:Vector.<b2Vec2>, position:b2Vec2, angle:Number)
- {
- // INITIALZING FIELDS:
- this.verts = vertices;
- this.position = position;
- this.angle = angle;
- }
- public function getOBB():Vector.<b2Vec2>
- {
- // RETURNS THE ACTUAL VERTS RELATIVE TO THE SHAPES POSITION AND ROTATION:
- var obb:Vector.<b2Vec2> = new Vector.<b2Vec2>();
- var radians:Number = angle * (Math.PI / 180);
- for (var v:int = 0; v < verts.length; v++)
- {
- // COPYING CURRENT VERT TO TEMPORARY VARIABLE:
- var vert:b2Vec2 = verts[v].Copy();
- // ROTATING VERTICES
- var xPos:Number = vert.x * Math.cos(radians) - vert.y * Math.sin(radians) + position.x;
- var yPos:Number = vert.x * Math.sin(radians) + vert.y * Math.cos(radians) + position.y;
- obb.push(new b2Vec2(xPos, yPos));
- }
- return obb;
- }
- public function draw(canvas:Sprite, fill:Boolean = false):void
- {
- var obb:Vector.<b2Vec2> = getOBB();
- // DRAWING VERTICES:
- if (fill)
- {
- canvas.graphics.beginFill(0xFF0000);
- }
- canvas.graphics.lineStyle(2, 0xFF0000);
- canvas.graphics.moveTo(obb[0].x, obb[0].y);
- for (var i:int = 1; i < obb.length; i++)
- {
- canvas.graphics.lineTo(obb[i].x, obb[i].y);
- }
- canvas.graphics.lineTo(obb[0].x, obb[0].y);
- if (fill)
- {
- canvas.graphics.endFill();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement