Files
CodenameEngine/source/funkin/editors/character/CharacterGizmos.hx
T

70 lines
2.2 KiB
Haxe

package funkin.editors.character;
import funkin.game.Character;
class CharacterGizmos extends FlxSprite {
public var character:Character;
public var boxGizmo:Bool = true;
public var cameraGizmo:Bool = true;
public override function draw() {
super.draw();
if (character == null) return;
if (boxGizmo) drawHitbox();
if (cameraGizmo) drawCamera();
}
public function drawHitbox() {
for (camera in cameras) {
if (character.animateAtlas != null) {
// TODO: ATLAS CALCUATIONS
character._rect.set();
} else if (character._matrix != null && character.frame != null) {
character._rect.set(
character._matrix.tx, character._matrix.ty,
Math.abs(character.frame.frame.width * character._matrix.a),
Math.abs(character.frame.frame.height * character._matrix.d)
);
if (character._matrix.a < 0) character._rect.x -= character._rect.width;
if (character._matrix.d < 0) character._rect.y -= character._rect.height;
character._rect.offset(-character.cameras[0].viewMarginLeft, -character.cameras[0].viewMarginTop);
character._rect.x *= character.cameras[0].zoom;
character._rect.y *= character.cameras[0].zoom;
character._rect.width *= character.cameras[0].zoom;
character._rect.height *= character.cameras[0].zoom;
}
if (DrawUtil.line == null) DrawUtil.createDrawers();
DrawUtil.line.camera = camera; DrawUtil.line.alpha = 0.85;
DrawUtil.drawRect(character._rect, 1, 0xFF007B8F);
}
}
public function drawCamera() {
for (camera in cameras) {
var camPos:FlxPoint = character.getCameraPosition();
camPos -= camera.scroll;
if (DrawUtil.line == null) DrawUtil.createDrawers();
DrawUtil.line.camera = camera; DrawUtil.line.alpha = 1;
DrawUtil.drawLine(
CoolUtil.pointToScreenPosition(FlxPoint.weak(camPos.x - 8, camPos.y), FlxG.camera, FlxPoint.weak()),
CoolUtil.pointToScreenPosition(FlxPoint.weak(camPos.x + 8, camPos.y), FlxG.camera, FlxPoint.weak()),
1, 0xFF00A0B9);
DrawUtil.drawLine(
CoolUtil.pointToScreenPosition(FlxPoint.weak(camPos.x, camPos.y - 8), FlxG.camera, FlxPoint.weak()),
CoolUtil.pointToScreenPosition(FlxPoint.weak(camPos.x, camPos.y + 8), FlxG.camera, FlxPoint.weak()),
1, 0xFF00A0B9);
camPos.put();
}
}
}