Added asset manager into the game engine itself.
This commit is contained in:
@ -20,11 +20,16 @@ void engineInit(engine_t *engine) {
|
|||||||
epochInit(&engine->time);
|
epochInit(&engine->time);
|
||||||
renderInit();
|
renderInit();
|
||||||
inputInit(&engine->input);
|
inputInit(&engine->input);
|
||||||
|
|
||||||
|
assetManagerInit(&engine->assetManager);
|
||||||
|
assetManagerStart(&engine->assetManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
void engineUpdateStart(engine_t *engine, float delta) {
|
void engineUpdateStart(engine_t *engine, float delta) {
|
||||||
epochUpdate(&engine->time, delta);
|
epochUpdate(&engine->time, delta);
|
||||||
inputUpdate(&engine->input);
|
inputUpdate(&engine->input);
|
||||||
|
assetManagerUpdate(&engine->assetManager);
|
||||||
|
|
||||||
renderFrameStart(&engine->render);
|
renderFrameStart(&engine->render);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,6 +42,7 @@ bool engineUpdateEnd(engine_t *engine) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void engineDispose(engine_t *engine) {
|
void engineDispose(engine_t *engine) {
|
||||||
|
assetManagerDispose(&engine->assetManager);
|
||||||
inputDispose(&engine->input);
|
inputDispose(&engine->input);
|
||||||
renderDispose();
|
renderDispose();
|
||||||
}
|
}
|
@ -12,6 +12,7 @@
|
|||||||
#include "../input/input.h"
|
#include "../input/input.h"
|
||||||
#include "../epoch/epoch.h"
|
#include "../epoch/epoch.h"
|
||||||
#include "../display/render.h"
|
#include "../display/render.h"
|
||||||
|
#include "../file/assetmanager.h"
|
||||||
|
|
||||||
// #if !defined(GAME_NAME)
|
// #if !defined(GAME_NAME)
|
||||||
// #error You need to define the GAME_NAME string
|
// #error You need to define the GAME_NAME string
|
||||||
@ -27,6 +28,9 @@ typedef struct {
|
|||||||
/** Render Manager for the game */
|
/** Render Manager for the game */
|
||||||
render_t render;
|
render_t render;
|
||||||
|
|
||||||
|
/** Asset Manager for the game */
|
||||||
|
assetmanager_t assetManager;
|
||||||
|
|
||||||
/** Input Manager for the game */
|
/** Input Manager for the game */
|
||||||
input_t input;
|
input_t input;
|
||||||
|
|
||||||
|
@ -102,17 +102,3 @@ int32_t assetBufferSkip(assetbuffer_t *buffer, long n) {
|
|||||||
size_t assetBufferGetCurrentPosition(assetbuffer_t *buffer) {
|
size_t assetBufferGetCurrentPosition(assetbuffer_t *buffer) {
|
||||||
return ftell((FILE *)buffer);
|
return ftell((FILE *)buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void assetScripterAppend(scripter_t *scripter, char *fileName) {
|
|
||||||
char *data;
|
|
||||||
|
|
||||||
data = assetStringLoad(fileName);
|
|
||||||
duk_push_global_object(scripter->context);
|
|
||||||
duk_push_lstring(scripter->context, data, strlen(data));
|
|
||||||
|
|
||||||
if(duk_peval(scripter->context) != 0) {
|
|
||||||
printf("Error running: %s\n", duk_safe_to_string(scripter->context, -1));
|
|
||||||
}
|
|
||||||
|
|
||||||
free(data);
|
|
||||||
}
|
|
@ -10,7 +10,6 @@
|
|||||||
#include "../display/shader.h"
|
#include "../display/shader.h"
|
||||||
#include "../display/texture.h"
|
#include "../display/texture.h"
|
||||||
#include "../display/font.h"
|
#include "../display/font.h"
|
||||||
#include "../script/scripter.h"
|
|
||||||
|
|
||||||
#if !defined(ASSET_PREFIX)
|
#if !defined(ASSET_PREFIX)
|
||||||
#error Asset Prefix has not been defined.
|
#error Asset Prefix has not been defined.
|
||||||
@ -89,6 +88,3 @@ int32_t assetBufferSkip(assetbuffer_t *buffer, long n);
|
|||||||
* @return Position (in bytes) that the current seek is at.
|
* @return Position (in bytes) that the current seek is at.
|
||||||
*/
|
*/
|
||||||
size_t assetBufferGetCurrentPosition(assetbuffer_t *buffer);
|
size_t assetBufferGetCurrentPosition(assetbuffer_t *buffer);
|
||||||
|
|
||||||
/** @deprecated */
|
|
||||||
void assetScripterAppend(scripter_t *scripter, char *fileName);
|
|
@ -109,6 +109,22 @@ void assetManagerDisposeReleased(assetmanager_t *man) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void assetManagerDispose(assetmanager_t *man) {
|
||||||
|
uint8_t i;
|
||||||
|
assetmanagerloader_t *disp;
|
||||||
|
assetmanageritem_t *item;
|
||||||
|
|
||||||
|
for(i = 0; i < man->itemCount; i++) {
|
||||||
|
item = man->items + i;
|
||||||
|
disp = ASSET_MANAGER_LOADERS[item->type].dispose;
|
||||||
|
if(item->holderCount > 0) continue;
|
||||||
|
if(disp != NULL) disp(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
man->itemCount = 0;
|
||||||
|
man->holderCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Thread Management
|
// Thread Management
|
||||||
void assetManagerStart(assetmanager_t *manager) {
|
void assetManagerStart(assetmanager_t *manager) {
|
||||||
threadStart(&manager->thread);
|
threadStart(&manager->thread);
|
||||||
|
@ -129,6 +129,7 @@ float assetManagerProgressGet(assetmanager_t *manager);
|
|||||||
uint8_t assetManagerHolderCreate(assetmanager_t *man);
|
uint8_t assetManagerHolderCreate(assetmanager_t *man);
|
||||||
void assetManagerHolderRelease(assetmanager_t *man, uint8_t hold);
|
void assetManagerHolderRelease(assetmanager_t *man, uint8_t hold);
|
||||||
void assetManagerDisposeReleased(assetmanager_t *man);
|
void assetManagerDisposeReleased(assetmanager_t *man);
|
||||||
|
void assetManagerDispose(assetmanager_t *man);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@ -10,27 +10,25 @@
|
|||||||
bool sandboxGameInit(sandboxgame_t *game) {
|
bool sandboxGameInit(sandboxgame_t *game) {
|
||||||
quadInit(&game->quad, 0, 0,0,0,0, 500,500,1,1);
|
quadInit(&game->quad, 0, 0,0,0,0, 500,500,1,1);
|
||||||
|
|
||||||
assetManagerInit(&game->assetManager);
|
game->assetOwner = assetManagerHolderCreate(&game->engine.assetManager);
|
||||||
game->assetOwner = assetManagerHolderCreate(&game->assetManager);
|
|
||||||
assetManagerLoadFont(
|
assetManagerLoadFont(
|
||||||
&game->assetManager, game->assetOwner,
|
&game->engine.assetManager, game->assetOwner,
|
||||||
&game->font, "fonts/opensans/OpenSans-Regular.ttf"
|
&game->font, "fonts/opensans/OpenSans-Regular.ttf"
|
||||||
);
|
);
|
||||||
assetManagerLoadShader(
|
assetManagerLoadShader(
|
||||||
&game->assetManager, game->assetOwner,
|
&game->engine.assetManager, game->assetOwner,
|
||||||
&game->shader, "shaders/textured.vert", "shaders/textured.frag"
|
&game->shader, "shaders/textured.vert", "shaders/textured.frag"
|
||||||
);
|
);
|
||||||
assetManagerLoadScaledTexture(
|
assetManagerLoadScaledTexture(
|
||||||
&game->assetManager, game->assetOwner,
|
&game->engine.assetManager, game->assetOwner,
|
||||||
&game->st, "poker/characters/sammy", "sprite"
|
&game->st, "poker/characters/sammy", "sprite"
|
||||||
);
|
);
|
||||||
assetManagerLoadTextureScale(
|
assetManagerLoadTextureScale(
|
||||||
&game->assetManager, game->assetOwner,
|
&game->engine.assetManager, game->assetOwner,
|
||||||
&game->st, &game->texture, 0
|
&game->st, &game->texture, 0
|
||||||
);
|
);
|
||||||
|
|
||||||
assetManagerStart(&game->assetManager);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,11 +36,8 @@ void sandboxGameUpdate(sandboxgame_t *game) {
|
|||||||
camera_t camera;
|
camera_t camera;
|
||||||
float n;
|
float n;
|
||||||
|
|
||||||
n = assetManagerProgressGet(&game->assetManager);
|
n = assetManagerProgressGet(&game->engine.assetManager);
|
||||||
if(n < 1.0f) {
|
if(n < 1.0f) return;
|
||||||
assetManagerUpdate(&game->assetManager);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
cameraOrtho(&camera,
|
cameraOrtho(&camera,
|
||||||
0, game->engine.render.width,
|
0, game->engine.render.width,
|
||||||
@ -59,6 +54,6 @@ void sandboxGameUpdate(sandboxgame_t *game) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void sandboxGameDispose(sandboxgame_t *game) {
|
void sandboxGameDispose(sandboxgame_t *game) {
|
||||||
assetManagerHolderRelease(&game->assetManager, game->assetOwner);
|
assetManagerHolderRelease(&game->engine.assetManager, game->assetOwner);
|
||||||
primitiveDispose(&game->quad);
|
primitiveDispose(&game->quad);
|
||||||
}
|
}
|
@ -17,13 +17,11 @@
|
|||||||
#include "../../ui/label.h"
|
#include "../../ui/label.h"
|
||||||
#include "../../ui/breakpoint.h"
|
#include "../../ui/breakpoint.h"
|
||||||
#include "../../file/assetmanager.h"
|
#include "../../file/assetmanager.h"
|
||||||
|
|
||||||
#include "../../file/xml.h"
|
#include "../../file/xml.h"
|
||||||
|
#include "../../engine/engine.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
engine_t engine;
|
engine_t engine;
|
||||||
|
|
||||||
assetmanager_t assetManager;
|
|
||||||
uint8_t assetOwner;
|
uint8_t assetOwner;
|
||||||
|
|
||||||
shader_t shader;
|
shader_t shader;
|
||||||
|
Reference in New Issue
Block a user