]> git.localhorst.tv Git - orbi.git/blobdiff - src/app/Application.cpp
entity/entity collision stub
[orbi.git] / src / app / Application.cpp
index cbfafd374537935625dbaad63955d4d7edacbcd6..44a71ccd7f5fddb33f06c0873c3228e2c1fd00d1 100644 (file)
@@ -148,15 +148,15 @@ void Application::OnKeyUp(const SDL_KeyboardEvent &e) {
 
 void Application::Update(int dt) {
        const float delta = dt / 1e3;
-       ctrl.Update(delta);
+       for (int i = 0; i < dt; ++i) {
+               ctrl.Update(1e-3);
+               world.Update(1e-3);
+       }
        target.Update(delta);
        focus = ctrl.Controlling()
-               ? ctrl.Controlled().bounds.Center()
+               ? ctrl.Controlled().vbox.Center()
                : target.Pos();
        cam.Update(delta);
-       for (int i = 0; i < dt; ++i) {
-               world.Update(1e-3);
-       }
 }
 
 
@@ -169,9 +169,13 @@ void Application::Render() {
 
 void Application::RenderBackground() {
        constexpr Color background(0x00, 0x00, 0x00);
+       constexpr Color outlineColor(0x00, 0x00, 0xFA);
 
        canvas.SetColor(background);
        canvas.Fill();
+
+       canvas.SetColor(outlineColor);
+       canvas.Grid(cam.ToScreen(Vector<int>(0, 0)), cam.ToScale(world.Size()), cam.ToScale(Vector<float>(1, 1)));
 }
 
 void Application::RenderWorld() {
@@ -186,23 +190,40 @@ void Application::RenderWorld() {
 }
 
 void Application::RenderEntities() {
-       constexpr Color entityColor(0x00, 0xFA, 0x00);
-       canvas.SetColor(entityColor);
+       constexpr Color boundsColor(0xFA, 0x00, 0x00);
+       constexpr Color vboxColor(0xFA, 0xFA, 0x00);
+       constexpr Color hboxColor(0x00, 0xFA, 0x00);
 
        for (const Entity &e : world.Entities()) {
-               const Vector<float> pos(e.bounds.Left(), e.bounds.Top());
-               const Vector<float> size(e.bounds.Size());
-               canvas.OutlineRect(cam.ToScreen(pos), cam.ToScale(size));
+               canvas.SetColor(boundsColor);
+               canvas.OutlineRect(
+                       cam.ToScreen(Vector<float>(e.bounds.Left(), e.bounds.Top())),
+                       cam.ToScale(Vector<float>(e.bounds.Size()))
+               );
+               canvas.SetColor(vboxColor);
+               canvas.Line(
+                       cam.ToScreen(Vector<float>(e.vbox.Left(), e.vbox.Top())),
+                       cam.ToScreen(Vector<float>(e.vbox.Right(), e.vbox.Top()))
+               );
+               canvas.Line(
+                       cam.ToScreen(Vector<float>(e.vbox.Left(), e.vbox.Bottom())),
+                       cam.ToScreen(Vector<float>(e.vbox.Right(), e.vbox.Bottom()))
+               );
+               canvas.SetColor(hboxColor);
+               canvas.Line(
+                       cam.ToScreen(Vector<float>(e.hbox.Left(), e.hbox.Top())),
+                       cam.ToScreen(Vector<float>(e.hbox.Left(), e.hbox.Bottom()))
+               );
+               canvas.Line(
+                       cam.ToScreen(Vector<float>(e.hbox.Right(), e.hbox.Top())),
+                       cam.ToScreen(Vector<float>(e.hbox.Right(), e.hbox.Bottom()))
+               );
        }
 }
 
 void Application::RenderUI() {
-       constexpr Color outlineColor(0x00, 0x00, 0xFA);
        constexpr Color targetColor(0xFA, 0xFA, 0x00);
 
-       canvas.SetColor(outlineColor);
-       canvas.Grid(cam.ToScreen(Vector<int>(0, 0)), cam.ToScale(world.Size()), cam.ToScale(Vector<float>(1, 1)));
-
        canvas.SetColor(targetColor);
        canvas.Cross(cam.ToScreen(target.Pos()), 15);
 }