Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package {
- import com.genome2d.components.GCamera;
- import com.genome2d.components.renderables.GTile;
- import com.genome2d.components.renderables.GTileMap;
- import com.genome2d.core.GNode;
- import com.genome2d.g2d;
- use namespace g2d;
- public class GTileMap2 extends GTileMap {
- public function GTileMap2(p_node: GNode) {
- super(p_node);
- }
- override public function getTileAt(p_x: Number, p_y: Number, p_camera: GCamera = null): GTile {
- if (p_camera == null) p_camera = node.core.defaultCamera;
- var czoom: Number = p_camera.zoom;
- p_x -= p_camera.rViewRectangle.x + p_camera.rViewRectangle.width / 2;
- p_y -= p_camera.rViewRectangle.y + p_camera.rViewRectangle.height / 2;
- var mapHalfWidth: Number = _iTileWidth * _iWidth * .5;
- var mapHalfHeight: Number = _iTileHeight * _iHeight * (_bIso ? .25 : .5);
- mapHalfWidth *= czoom;
- mapHalfHeight *= czoom;
- var firstX: Number = -mapHalfWidth + (_bIso ? _iTileWidth / 2 : 0);
- var firstY: Number = -mapHalfHeight + (_bIso ? _iTileHeight / 2 : 0);
- var tx: Number = ( p_camera.cNode.cTransform.nWorldX - cNode.cTransform.nWorldX ) * czoom + p_x;
- var ty: Number = ( p_camera.cNode.cTransform.nWorldY - cNode.cTransform.nWorldY ) * czoom + p_y;
- // adjust camera rotation.
- var ang: Number = Math.atan2(ty, tx) - p_camera.cNode.cTransform.nWorldRotation;
- var dist: Number = Math.sqrt(tx * tx + ty * ty);
- tx = Math.cos(ang) * dist;
- ty = Math.sin(ang) * dist;
- var indexX: int = (tx - firstX) / ( _iTileWidth * czoom );
- var indexY: int = (ty - firstY) / ( _iTileHeight * czoom );
- if (indexX < 0 || indexX >= _iWidth || indexY < 0 || indexY >= _iHeight) return null;
- return _aTiles[indexY * _iWidth + indexX];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment