]> git.lizzy.rs Git - nothing.git/commitdiff
(#656) Render Rigid Body id in Debug mode
authorrexim <reximkut@gmail.com>
Sat, 26 Jan 2019 17:54:15 +0000 (00:54 +0700)
committerrexim <reximkut@gmail.com>
Sat, 26 Jan 2019 17:54:15 +0000 (00:54 +0700)
src/game/level/rigid_bodies.c

index cab44b9aa86535e00ba43add77e4ef43461505fe..41197676d841e5683d40c5787ed0217c23db018f 100644 (file)
@@ -9,12 +9,15 @@
 
 #include "./rigid_bodies.h"
 
+#define ID_SIZE 100
+
 struct RigidBodies
 {
     Lt *lt;
     size_t capacity;
     size_t count;
 
+    char *id;
     Rect *bodies;
     Vec *velocities;
     Vec *movements;
@@ -64,6 +67,14 @@ RigidBodies *create_rigid_bodies(size_t capacity)
     rigid_bodies->capacity = capacity;
     rigid_bodies->count = 0;
 
+    rigid_bodies->id = PUSH_LT(
+        lt,
+        nth_calloc(ID_SIZE, sizeof(char)),
+        free);
+    if (rigid_bodies->id == NULL) {
+        RETURN_LT(lt, NULL);
+    }
+
     rigid_bodies->bodies = PUSH_LT(lt, nth_calloc(capacity, sizeof(Rect)), free);
     if (rigid_bodies->bodies == NULL) {
         RETURN_LT(lt, NULL);
@@ -230,8 +241,6 @@ int rigid_bodies_render(RigidBodies *rigid_bodies,
     trace_assert(rigid_bodies);
     trace_assert(camera);
 
-    /* TODO(#656): Rigid Bodies don't render their ids in the debug mode */
-
     for (size_t i = 0; i < rigid_bodies->count; ++i) {
         if (camera_fill_rect(
                 camera,
@@ -239,6 +248,16 @@ int rigid_bodies_render(RigidBodies *rigid_bodies,
                 rigid_bodies->colors[i]) < 0) {
             return -1;
         }
+
+        snprintf(rigid_bodies->id, ID_SIZE, "%ld", i);
+
+        if (camera_render_debug_text(
+                camera,
+                rigid_bodies->id,
+                vec(rigid_bodies->bodies[i].x,
+                    rigid_bodies->bodies[i].y)) < 0) {
+            return -1;
+        }
     }
 
     return 0;