Files
Dawn/src/display/scene.c

57 lines
1.2 KiB
C

/**
* 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);
}
}