diff options
author | Mitya Selivanov <automainint@guattari.tech> | 2024-11-13 22:43:04 +0100 |
---|---|---|
committer | Mitya Selivanov <automainint@guattari.tech> | 2024-11-13 22:43:04 +0100 |
commit | 674f8aa8f7a4e5a7197eae49c116727f4d681831 (patch) | |
tree | 4cdcd9cac33117d344b45a53a29792939a3372bd /examples/gravity.c | |
parent | 7966948062e55fac965d1a6a13b848dc0df78a9f (diff) | |
download | reduced_system_layer-674f8aa8f7a4e5a7197eae49c116727f4d681831.zip |
Remove shstk option
Diffstat (limited to 'examples/gravity.c')
-rwxr-xr-x | examples/gravity.c | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/examples/gravity.c b/examples/gravity.c deleted file mode 100755 index d21a4f5..0000000 --- a/examples/gravity.c +++ /dev/null @@ -1,156 +0,0 @@ -#if 0 /* -#/ ================================================================ -#/ -#/ gravity.c -#/ -#/ ================================================================ -#/ -#/ Self-compilation shell script -#/ -SRC=${0##*./} -BIN=${SRC%.*} -gcc \ - -Wall -Wextra -Werror -pedantic \ - -Wno-old-style-declaration \ - -Wno-missing-braces \ - -Wno-unused-variable \ - -Wno-unused-but-set-variable \ - -Wno-unused-parameter \ - -Wno-overlength-strings \ - -O3 \ - -fsanitize=undefined,address,leak -mshstk \ - -lX11 -lm \ - -o $BIN $SRC && \ - ./$BIN $@ && rm $BIN -exit $? # */ -#endif - -#include "../graphics.c" - -typedef struct { - f64 x; - f64 y; - f64 vx; - f64 vy; -} Entity; - -typedef struct { - i64 time; - i64 num_entities; - Entity entities[10 * 1024 * 1024]; -} World; - -World world = {0}; -u32 background; -i64 time_0; - -void update_and_render_frame(void) { - p_handle_events(); - - i64 time_elapsed = p_time() - time_0; - time_0 += time_elapsed; - - if (platform.key_pressed[BUTTON_LEFT]) { - i64 n = world.num_entities++; - - world.entities[n] = (Entity) { - .x = (f64) platform.cursor_x - (f64) platform.frame_width / 2, - .y = -((f64) platform.cursor_y - (f64) platform.frame_height / 2), - }; - } - - if (time_elapsed > 0) { - if (platform.key_down[BUTTON_RIGHT]) { - for (i64 n = 0; n < time_elapsed; ++n) - world.entities[world.num_entities + n] = (Entity) { - .x = (f64) platform.cursor_x - (f64) platform.frame_width / 2, - .y = -((f64) platform.cursor_y - (f64) platform.frame_height / 2), - }; - - world.num_entities += time_elapsed; - } - - for (i64 n = 0; n < world.num_entities; ++n) { - Entity *e = &world.entities[n]; - - for (i64 k = 0; k < n; ++k) { - Entity *u = &world.entities[k]; - - f64 dx = e->x - u->x; - f64 dy = e->y - u->y; - f64 d = dx * dx + dy * dy; - if (d < 1000.) continue; - - f64 r = sqrt(d); - dx /= r; - dy /= r; - - f64 a = (1. / d) * time_elapsed; - - if (d < 5000.) - a = -a; - - e->vx -= dx * a; - e->vy -= dy * a; - u->vx += dx * a; - u->vy += dy * a; - } - } - - for (i64 n = 0; n < world.num_entities; ++n) { - Entity *e = &world.entities[n]; - - e->x += e->vx * time_elapsed; - e->y += e->vy * time_elapsed; - - f64 z = (M_PI * 2.0) * (rand() % 10000) * .0001; - e->vx += .0001 * cos(z); - e->vy += .0001 * sin(z); - } - - world.time += time_elapsed; - } - - for (i32 j = 0; j < platform.frame_height; ++j) - for (i32 i = 0; i < platform.frame_width; ++i) - platform.pixels[j * platform.frame_width + i] = background; - - for (i64 n = 0; n < world.num_entities; ++n) { - Entity *e = &world.entities[n]; - - i32 x = platform.frame_width / 2 + (i32) floor(e->x + .5); - i32 y = platform.frame_height / 2 - (i32) floor(e->y + .5); - - for (i32 j = y - 10; j <= y + 10; ++j) { - if (j < 0 || j >= platform.frame_height) continue; - for (i32 i = x - 10; i <= x + 10; ++i) { - if (i < 0 || i >= platform.frame_width) continue; - if ((i - x) * (i - x) + (j - y) * (j - y) > 100) continue; - f64 v = (e->vx * e->vx + e->vy * e->vy) * 8.; - platform.pixels[j * platform.frame_width + i] = u32_from_rgb(-.2 + v * 2., .1 + v * .7, 1. - v); - } - } - } - - p_render_frame(); -} - -i32 main(i32 argc, c8 **argv) { - (void) argc; - (void) argv; - - platform = (Platform) { - .title = "Gravity", - .frame_width = 960, - .frame_height = 720, - }; - - background = u32_from_rgb(.0f, .0f, .08f); - time_0 = p_time(); - - srand(p_time()); - - p_event_loop(); - - return 0; -} |