Moved a tonne of code around

This commit is contained in:
2021-11-22 09:20:01 -08:00
parent 3a6b6ea655
commit 8a77b39e07
227 changed files with 61 additions and 810 deletions

View File

@ -0,0 +1,32 @@
/**
* Copyright (c) 2021 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "loadingscene.h"
void loadingSceneInit(
loadingscene_t *scene,
assetmanager_t *assetManager
) {
scene->manager = assetManager;
}
void loadingSceneStart(loadingscene_t *scene) {
assetManagerStart(scene->manager);
}
bool loadingSceneUpdate(loadingscene_t *scene) {
assetManagerUpdate(scene->manager);
return scene->manager->finished;
}
void loadingSceneRender(loadingscene_t *scene) {
}
void loadingSceneDispose(loadingscene_t *scene) {
}

View File

@ -0,0 +1,26 @@
/**
* Copyright (c) 2021 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#pragma once
#include "../file/assetmanager.h"
typedef struct {
assetmanager_t *manager;
} loadingscene_t;
void loadingSceneInit(
loadingscene_t *scene,
assetmanager_t *assetManager
);
void loadingSceneStart(loadingscene_t *scene);
bool loadingSceneUpdate(loadingscene_t *scene);
void loadingSceneRender(loadingscene_t *scene);
void loadingSceneDispose(loadingscene_t *scene);

72
src/dawn/scene/scene.c Normal file
View File

@ -0,0 +1,72 @@
/**
* 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, engine_t *engine, void *user) {
scene->engine = engine;
scene->assetOwner = assetManagerHolderCreate(&engine->assetManager);
scene->user = user;
scene->onLoaded = NULL;
scene->onRender = NULL;
scene->loaded = false;
renderListInit(&scene->renderList, (int32_t)1, (int32_t)1);
}
float sceneUpdate(
scene_t *scene, int32_t width, int32_t height, shader_t *shader,
shaderuniform_t *uniforms
) {
// First, lets check how loading has been going
float n = assetManagerProgressGetForHolder(
&scene->engine->assetManager, scene->assetOwner
);
// TODO: Loading screen
if(n < 1.0f) return n;
// Fire event
if(!scene->loaded) {
scene->loaded = true;
if(scene->onLoaded != NULL) scene->onLoaded(scene);
}
// Resize the render list
renderListResize(&scene->renderList, width, height);
// Fire callback
if(scene->onRender != NULL) scene->onRender(scene);
// Render the render list itself.
renderListRender(&scene->renderList, shader, uniforms);
return n;
}
void sceneUpdateToBackbuffer(scene_t *scene,
shader_t *shaderRenderList, shaderuniform_t *listUniforms,
shader_t *shaderBackBuffer, shaderuniform_t *backUniforms
) {
float n = sceneUpdate(scene,
(int32_t)scene->engine->render.width, (int32_t)scene->engine->render.height,
shaderRenderList, listUniforms
);
if(n < 1.0f) return;
renderListAsBackbuffer(&scene->renderList, scene->engine, shaderBackBuffer,
backUniforms
);
}
void sceneDispose(scene_t *scene) {
assetManagerHolderRelease(&scene->engine->assetManager, scene->assetOwner);
renderListDispose(&scene->renderList);
}
renderpass_t * sceneUsePass(scene_t *scene, uint8_t i) {
return renderListRenderPass(&scene->renderList, scene->engine, i);
}

50
src/dawn/scene/scene.h Normal file
View File

@ -0,0 +1,50 @@
/**
* Copyright (c) 2021 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#pragma once
#include "../libs.h"
#include "../file/assetmanager.h"
#include "../engine/engine.h"
#include "../display/renderlist.h"
#include "../display/shader.h"
// Forwarder for scene_t
typedef struct _scene_t scene_t;
// Callbacks
typedef void scenecallback_t(scene_t *scene);
// Scene Definition
typedef struct _scene_t {
engine_t *engine;
assetmanagerowner_t assetOwner;
renderlist_t renderList;
void *user;
bool loaded;
/** Scene Callbacks */
scenecallback_t *onLoaded;
scenecallback_t *onRender;
} scene_t;
void sceneInit(scene_t *scene, engine_t *engine, void *user);
float sceneUpdate(
scene_t *scene, int32_t width, int32_t height, shader_t *shader,
shaderuniform_t *uniforms
);
void sceneUpdateToBackbuffer(scene_t *scene,
shader_t *shaderRenderList, shaderuniform_t *listUniforms,
shader_t *shaderBackBuffer, shaderuniform_t *backUniforms
);
void sceneDispose(scene_t *scene);
renderpass_t * sceneUsePass(scene_t *scene, uint8_t i);