Added a dynamic array.
This commit is contained in:
57
src/display/scene.c
Normal file
57
src/display/scene.c
Normal file
@ -0,0 +1,57 @@
|
||||
/**
|
||||
* Copyright (c) 2021 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#include "scene.h"
|
||||
|
||||
void sceneInit(scene_t *scene) {
|
||||
scene->itemCount = 0;
|
||||
|
||||
cameraLookAt(&scene->camera, 3,3,3, 0,0,0);
|
||||
cameraPerspective(&scene->camera, 75, 16.0f/9.0f, 0.01f, 100.0f);
|
||||
}
|
||||
|
||||
sceneitem_t * sceneAdd(scene_t *scene) {
|
||||
sceneitem_t *item = scene->items + scene->itemCount;
|
||||
scene->itemCount++;
|
||||
return item;
|
||||
}
|
||||
|
||||
void sceneUpdate(scene_t *scene, engine_t *engine) {
|
||||
int32_t i;
|
||||
sceneitem_t *item;
|
||||
|
||||
for(i = 0; i < scene->itemCount; i++) {
|
||||
item = scene->items + i;
|
||||
if(item->onUpdate == NULL) continue;
|
||||
item->onUpdate(scene, i, engine);
|
||||
}
|
||||
}
|
||||
|
||||
void sceneRender(scene_t *scene, engine_t *engine, shader_t *shader) {
|
||||
int32_t i;
|
||||
sceneitem_t *item;
|
||||
|
||||
shaderUse(shader);
|
||||
shaderUseCamera(shader, &scene->camera);
|
||||
|
||||
for(i = 0; i < scene->itemCount; i++) {
|
||||
item = scene->items + i;
|
||||
if(item->onRender == NULL) continue;
|
||||
item->onRender(scene, i, engine);
|
||||
}
|
||||
}
|
||||
|
||||
void sceneDispose(scene_t *scene) {
|
||||
int32_t i;
|
||||
sceneitem_t *item;
|
||||
|
||||
for(i = 0; i < scene->itemCount; i++) {
|
||||
item = scene->items + i;
|
||||
if(item->onDispose == NULL) continue;
|
||||
item->onDispose(scene, i, NULL);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user