not quite yet working live reload

This commit is contained in:
2025-03-13 00:52:35 +02:00
parent d2fcb9a24a
commit ab18ed1d4a
4 changed files with 58 additions and 25 deletions

View File

@@ -3,18 +3,17 @@
#define SDL_MAIN_USE_CALLBACKS 1 /* use the callbacks instead of main() */
#include <SDL3/SDL.h>
/* We will use this renderer to draw into this window every frame. */
static SDL_Window *window = NULL;
static SDL_Renderer *renderer = NULL;
#define WINDOW_WIDTH 1280
#define WINDOW_HEIGHT 720
/* This function runs once at startup. */
int init(void *appstate, int argc, char *argv[])
int init(EngineData *state, int argc, char *argv[])
{
SDL_SetAppMetadata("Hiisi Engine", "0.0.1", "me.kitemoonsche.hiisi-engine");
SDL_Window *window = 0;
SDL_Renderer *renderer = 0;
if (!SDL_Init(SDL_INIT_VIDEO)) {
SDL_Log("Couldn't initialize SDL: %s", SDL_GetError());
return SDL_APP_FAILURE;
@@ -25,11 +24,14 @@ int init(void *appstate, int argc, char *argv[])
return SDL_APP_FAILURE;
}
state->window = window;
state->renderer = renderer;
return SDL_APP_CONTINUE; /* carry on with the program! */
}
/* This function runs when a new event (mouse input, keypresses, etc) occurs. */
int event(void *appstate)
int event(EngineData* state)
{
SDL_Event event;
while (SDL_PollEvent(&event)) {
@@ -41,8 +43,9 @@ int event(void *appstate)
}
/* This function runs once per frame, and is the heart of the program. */
int iterate(void *appstate)
int iterate(EngineData *state)
{
SDL_Renderer *renderer = (SDL_Renderer*)state->renderer;
SDL_FRect rects[16];
const Uint64 now = SDL_GetTicks();
int i;
@@ -52,7 +55,7 @@ int iterate(void *appstate)
const float scale = ((float) (((int) (now % 1000)) - 500) / 500.0f) * direction;
/* as you can see from this, rendering draws over whatever was drawn before it. */
SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE); /* black, full alpha */
SDL_SetRenderDrawColor(renderer, 0, 50, 50, SDL_ALPHA_OPAQUE); /* black, full alpha */
SDL_RenderClear(renderer); /* start with a blank canvas. */
/* Rectangles are comprised of set of X and Y coordinates, plus width and
@@ -63,7 +66,7 @@ int iterate(void *appstate)
/* Let's draw a single rectangle (square, really). */
rects[0].x = rects[0].y = 100;
rects[0].w = rects[0].h = 100 + (100 * scale);
SDL_SetRenderDrawColor(renderer, 255, 0, 0, SDL_ALPHA_OPAQUE); /* red, full alpha */
SDL_SetRenderDrawColor(renderer, 250, 0, 0, SDL_ALPHA_OPAQUE); /* red, full alpha */
SDL_RenderRect(renderer, &rects[0]);
/* Now let's draw several rectangles with one function call. */
@@ -84,6 +87,7 @@ int iterate(void *appstate)
SDL_SetRenderDrawColor(renderer, 0, 0, 255, SDL_ALPHA_OPAQUE); /* blue, full alpha */
SDL_RenderFillRect(renderer, &rects[0]);
/* ...and also fill a bunch of rectangles at once... */
for (i = 0; i < SDL_arraysize(rects); i++) {
const float w = (float) (WINDOW_WIDTH / SDL_arraysize(rects));
@@ -102,7 +106,7 @@ int iterate(void *appstate)
}
/* This function runs once at shutdown. */
void quit(void *appstate)
void quit(EngineData *state)
{
/* SDL will clean up the window/renderer for us. */
}