Added a dynamic array.

This commit is contained in:
2021-09-05 00:34:29 -07:00
parent c0d13042b4
commit cb447a6033
20 changed files with 403 additions and 25 deletions

57
src/display/scene.c Normal file
View 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);
}
}

21
src/display/scene.h Normal file
View File

@ -0,0 +1,21 @@
/**
* Copyright (c) 2021 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#pragma once
#include <dawn/dawn.h>
#include "camera.h"
#include "shader.h"
void sceneInit(scene_t *scene);
sceneitem_t * sceneAdd(scene_t *scene);
void sceneUpdate(scene_t *scene, engine_t *engine);
void sceneRender(scene_t *scene, engine_t *engine, shader_t *shader);
void sceneDispose(scene_t *scene);