]> git.lizzy.rs Git - nothing.git/commitdiff
(#647) Commands for applying force to rigid bodies
authorrexim <reximkut@gmail.com>
Tue, 22 Jan 2019 03:38:41 +0000 (10:38 +0700)
committerrexim <reximkut@gmail.com>
Tue, 22 Jan 2019 03:38:41 +0000 (10:38 +0700)
src/game/level.c

index 799ffd360ffbfec441ca115957c2b4fd524b2797..24d803677e5caaabf19abda93628a07437d8c860 100644 (file)
@@ -451,6 +451,15 @@ struct EvalResult level_send(Level *level, Gc *gc, struct Scope *scope, struct E
         return labels_send(level->labels, gc, scope, rest);
     } else if (strcmp(target, "box") == 0) {
         return boxes_send(level->boxes, gc, scope, rest);
+    } else if (strcmp(target, "body") == 0) {
+        long int id = 0, x = 0, y = 0;
+        res = match_list(gc, "ddd", rest, &id, &x, &y);
+        if (res.is_error) {
+            return res;
+        }
+
+        rigid_bodies_apply_force(level->rigid_bodies, (size_t) id, vec((float) x, (float) y));
+        return eval_success(NIL(gc));
     }
 
     return unknown_target(gc, "level", target);