]> git.localhorst.tv Git - orbi.git/blobdiff - src/app/Application.cpp
orientation for entities
[orbi.git] / src / app / Application.cpp
index 3ddb41443a3d4bd6860603cd69a7e1073b670a87..048ec263a4c56be5a779e90e793a0c6602044022 100644 (file)
@@ -197,31 +197,47 @@ void Application::RenderEntities() {
        constexpr Color boundsColor(0xFA, 0x00, 0x00);
        constexpr Color vboxColor(0xFA, 0xFA, 0x00);
        constexpr Color hboxColor(0x00, 0xFA, 0x00);
+       constexpr Color dotColor(0x00, 0xFA, 0xFA);
 
        for (const Entity *e : world.Entities()) {
                canvas.SetColor(boundsColor);
                canvas.OutlineRect(
-                       cam.ToScreen(e->bounds.Position()),
+                       cam.ToScreen(e->bounds.LeftTop()),
                        cam.ToScale(e->bounds.Size())
                );
                if (const Character *c = dynamic_cast<const Character *>(e)) {
-                       canvas.OutlineRectRot(
-                               Rect<float>(
-                                       cam.ToScreen(c->bounds.Position() + c->arm.Position()),
-                                       cam.ToScale(c->arm.Size())
-                               ),
-                               cam.ToScreen(c->bounds.Position() + c->armOrigin),
-                               c->armAngle
-                       );
+                       if (c->orient == Entity::LOOKS_LEFT) {
+                               canvas.OutlineRectRot(
+                                       Rect<float>(
+                                               cam.ToScreen(c->bounds.LeftTop() + c->arm.LeftTop()),
+                                               cam.ToScale(c->arm.Size())
+                                       ),
+                                       cam.ToScreen(c->bounds.LeftTop() + c->armOrigin),
+                                       c->armAngle
+                               );
+                               //canvas.SetColor(dotColor);
+                               //canvas.Cross(cam.ToScreen(c->bounds.LeftTop() + c->armOrigin), 5);
+                       } else {
+                               canvas.OutlineRectRot(
+                                       Rect<float>(
+                                               cam.ToScreen(c->bounds.RightTop() + MirrorY(c->arm.RightTop())),
+                                               cam.ToScale(c->arm.Size())
+                                       ),
+                                       cam.ToScreen(c->bounds.RightTop() + MirrorY(c->armOrigin)),
+                                       -c->armAngle
+                               );
+                               //canvas.SetColor(dotColor);
+                               //canvas.Cross(cam.ToScreen(c->bounds.RightTop() + MirrorY(c->armOrigin)), 5);
+                       }
                }
                canvas.SetColor(vboxColor);
                canvas.OutlineRect(
-                       cam.ToScreen(e->vbox.Position()),
+                       cam.ToScreen(e->vbox.LeftTop()),
                        cam.ToScale(e->vbox.Size())
                );
                canvas.SetColor(hboxColor);
                canvas.OutlineRect(
-                       cam.ToScreen(e->hbox.Position()),
+                       cam.ToScreen(e->hbox.LeftTop()),
                        cam.ToScale(e->hbox.Size())
                );
        }