57 lines
1.2 KiB
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);
|
|
}
|
|
} |