aboutsummaryrefslogtreecommitdiff
path: root/src/main.odin
diff options
context:
space:
mode:
authoriamcheeseman <[hidden email]>2026-01-17 18:19:57 -0500
committeriamcheeseman <[hidden email]>2026-01-17 18:19:57 -0500
commitdb10e319cc2201924815b2d8c9a4c2d21c2bfbb6 (patch)
tree17c7d1b0e485dc07161cbdca80ae2239fd6146c5 /src/main.odin
parenteee06361048e34f6ca21348e8776636da95ef3f8 (diff)
Verlet ropes :)
Diffstat (limited to 'src/main.odin')
-rw-r--r--src/main.odin18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main.odin b/src/main.odin
index 1d3de1a..a0c2fcb 100644
--- a/src/main.odin
+++ b/src/main.odin
@@ -7,6 +7,7 @@ import "core:c/libc"
import "core:fmt"
import "core:log"
import "core:mem"
+import "core:math"
import "core:math/linalg"
import rl "vendor:raylib"
@@ -22,14 +23,18 @@ Rect :: struct {
ROOM_FADE_SIZE :: 8
+FIXED_UPDATE_RATE :: 1.0/60
+
state: struct {
debug_mode: bool,
camera_target: Vec2,
+ last_fixed_update: f64,
camera: rl.Camera2D,
prop_list: Entity_List(Prop),
wiggle_prop_list: Entity_List(Wiggle_Prop),
platform_list: Entity_List(Platform),
bullet_list: Entity_List(Bullet),
+ rope_list: Entity_List(Rope),
}
logger: log.Logger
@@ -72,6 +77,13 @@ frame :: proc() {
dt := rl.GetFrameTime()
+ if rl.GetTime() - state.last_fixed_update > FIXED_UPDATE_RATE {
+ state.last_fixed_update = rl.GetTime()
+ for cb in fixed_update_callbacks {
+ cb(FIXED_UPDATE_RATE)
+ }
+ }
+
for cb in update_callbacks {
cb(dt)
}
@@ -98,6 +110,7 @@ frame :: proc() {
for cb in draw_callbacks {
cb()
}
+
draw_room(current_room.id)
rl.DrawRectangleGradientH(
@@ -168,6 +181,10 @@ cleanup :: proc() {
delete_entity_list(state.bullet_list)
delete_entity_list(state.prop_list)
delete_entity_list(state.wiggle_prop_list)
+
+ clear_ropes()
+ delete_entity_list(state.rope_list)
+
phys.destroy_world()
}
@@ -221,3 +238,4 @@ main :: proc() {
cleanup()
}
+