From 11d7c736ae24a73d22a8c142a8f2f817ddd2d448 Mon Sep 17 00:00:00 2001 From: octolinkyt Date: Tue, 16 Jun 2026 12:24:11 -0400 Subject: [PATCH] WIP docs: commenting in physics.c/physics.h and README updates --- src/docprogress.txt | 10 ++++++++++ src/physics.c | 19 ++++++++++++++++++- src/physics.h | 3 +++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/docprogress.txt diff --git a/src/docprogress.txt b/src/docprogress.txt new file mode 100644 index 0000000..6221f33 --- /dev/null +++ b/src/docprogress.txt @@ -0,0 +1,10 @@ +main.c - Done +physics.c - Done, refine later + physics.h +renderer.c + renderer.h +player.c + player.h +world.c + world.h +config.h diff --git a/src/physics.c b/src/physics.c index fcf8316..d6abc6d 100644 --- a/src/physics.c +++ b/src/physics.c @@ -1,20 +1,26 @@ #include - +// better hope you were paying attention in physics class for this one #include "physics.h" #include "world.h" #include "config.h" +// Main physics update loop for all entities void UpdateEntities(float dt, int screenWidth) { + // Iterate through all possible entities for (int i = 0; i < MAX_ENTITIES; i++) { Entity *e = &entities[i]; + // Skip inactive entities if (!e->active) continue; + // Check if entity is currently touching the ground + // YOU'RE GROUNDED!!! lol bool onGround = IsGrounded(e); + // Apply gravity force if enabled for this entity if (e->affectedByGravity) { ApplyForce( @@ -23,21 +29,25 @@ void UpdateEntities(float dt, int screenWidth) ); } + // Compute acceleration from accumulated forces (F = ma) e->acceleration.x = e->force.x / e->mass; e->acceleration.y = e->force.y / e->mass; + // Integrate velocity from acceleration e->velocity.x += e->acceleration.x * dt; e->velocity.y += e->acceleration.y * dt; + // Apply air drag to slow movement over time e->velocity.x *= AIR_DRAG; e->velocity.y *= AIR_DRAG; + // Apply ground friction when on the ground if (onGround) { if (e->velocity.x > 0) @@ -58,6 +68,7 @@ void UpdateEntities(float dt, int screenWidth) } } + // Clamp player horizontal speed if (e->isPlayer) { if (e->velocity.x > MAX_PLAYER_SPEED) @@ -67,14 +78,17 @@ void UpdateEntities(float dt, int screenWidth) e->velocity.x = -MAX_PLAYER_SPEED; } + // Integrate position from velocity e->position.x += e->velocity.x * dt; e->position.y += e->velocity.y * dt; + // Reset forces after integration step e->force = (Vector2){0, 0}; + // Ground collision if (e->position.y + e->size * 0.5f >= ground_y) @@ -86,12 +100,14 @@ void UpdateEntities(float dt, int screenWidth) e->velocity.y *= -BOUNCE; + // Stop tiny bounces... or at least, attempt to. if (fabsf(e->velocity.y) < 15.0f) { e->velocity.y = 0; } } + // Left wall collision if (e->position.x - e->size * 0.5f < 0) { @@ -101,6 +117,7 @@ void UpdateEntities(float dt, int screenWidth) e->velocity.x *= -0.6f; } + // Right wall collision if (e->position.x + e->size * 0.5f > screenWidth) diff --git a/src/physics.h b/src/physics.h index bafb766..6d8a0fe 100644 --- a/src/physics.h +++ b/src/physics.h @@ -1,6 +1,9 @@ #ifndef PHYSICS_H #define PHYSICS_H +// FUNction declaration! yay!!! +// used by main script to update entities as time goes on +// i don't think it's used anywhere else, but double check me void UpdateEntities(float dt, int screenWidth); #endif