package com.ulfben.slingshot.entities
{
import nape.geom.Vec2;
import nape.phys.Body;
import nape.space.Space;
import starling.display.DisplayObject;
import starling.display.Sprite;
public class Entity extends Sprite
{
public var _isDead:Boolean = false;
protected var _body:Body = null;
protected var _space:Space = null;
protected var _visual:DisplayObject; //MovieClip, Sprite or what have you
protected var _graphicOffset:Vec2 = new Vec2(0,0); //from PhysicEditor
public function set body(b:Body):void {_body = b;}
public function get body():Body {return _body;}
public function set space(s:Space):void { _space = s; if(_body){_body.space = _space;}}
public function set allowMovement(b:Boolean):void {_body.allowMovement = b;}
public function get allowMovement():Boolean {return _body.allowMovement;}
public function get velocity():Vec2 {return _body.velocity;}
public function set velocity(v:Vec2):void {_body.velocity = v;}
public function get angularVel():Number {return _body.angularVel;}
public function set angularVel(n:Number):void {_body.angularVel = n;}
public function get position():Vec2 {return _body.position;}
public function set position(v:Vec2):void {_body.position = v; x = _body.position.x; y = _body.position.y; }
public function Entity(space:Space)
{
super();
_space = space;
touchable = false;
}
public function setxy(x:Number, y:Number):void
{
_body.position.x = x;
_body.position.y = y;
}
private var pos:Vec2; //temp, for re-use.
public function tick(dt:Number):void
{
pos = _body.localPointToWorld(_graphicOffset);
x = pos.x;
y = pos.y;
rotation = _body.rotation;
}
override public function dispose():void
{
if(_body){
_space.bodies.remove(_body);
_body.shapes.clear();
_body.userData.entity = null;
_body.userData.graphicOffset = null;
_body = null;
}
if(_visual){
_visual.removeFromParent(true);
_visual = null;
}
_space = null;
super.dispose();
}
}
}
Comments
0 B
|👍
/👎
0 B
|0 👍
/0 👎
0 B
|👍
/👎
0 B
|👍
/👎