/** * Copyright (c) 2021 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "../libs.h" #include "../engine/engine.h" /** Maximum number of items a scene can support */ #define SCENE_ITEMS_MAX 32 typedef struct _scene_t scene_t; typedef struct _sceneitem_t sceneitem_t; /** * Callback for when scene events occur. * * @param scene The scene that is being evented. * @param i The index of the current scene item. * @param engine The game's engine. */ typedef void sceneitemcallback_t( scene_t *scene, int32_t i, engine_t *engine ); typedef struct _sceneitem_t { sceneitemcallback_t *onUpdate; sceneitemcallback_t *onRender; sceneitemcallback_t *onDispose; } sceneitem_t; typedef struct _scene_t { /** Camera that is used to render the scene */ camera_t camera; /** Any custom user data pointer */ void *user; /** Items within the scene */ sceneitem_t items[SCENE_ITEMS_MAX]; int32_t itemCount; } scene_t;