Starting scene loader.
This commit is contained in:
@@ -9,4 +9,5 @@ target_sources(${DAWN_TARGET_NAME}
|
||||
TextureLoader.cpp
|
||||
JSONLoader.cpp
|
||||
TrueTypeLoader.cpp
|
||||
SceneLoader.cpp
|
||||
)
|
||||
@@ -7,8 +7,11 @@
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
JSONLoader::JSONLoader(const std::string name) :
|
||||
AssetLoader(name),
|
||||
JSONLoader::JSONLoader(
|
||||
const std::shared_ptr<AssetManager> assetManager,
|
||||
const std::string name
|
||||
) :
|
||||
AssetLoader(assetManager, name),
|
||||
loader(name),
|
||||
state(JSONLoaderState::INITIAL)
|
||||
{
|
||||
|
||||
@@ -25,7 +25,10 @@ namespace Dawn {
|
||||
public:
|
||||
json data;
|
||||
|
||||
JSONLoader(const std::string name);
|
||||
JSONLoader(
|
||||
const std::shared_ptr<AssetManager> assetManager,
|
||||
const std::string name
|
||||
);
|
||||
void updateSync() override;
|
||||
void updateAsync() override;
|
||||
~JSONLoader();
|
||||
|
||||
44
src/dawn/asset/loader/SceneLoader.cpp
Normal file
44
src/dawn/asset/loader/SceneLoader.cpp
Normal file
@@ -0,0 +1,44 @@
|
||||
// Copyright (c) 2024 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "SceneLoader.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
SceneLoader::SceneLoader(
|
||||
const std::shared_ptr<AssetManager> assetManager,
|
||||
const std::string name
|
||||
) :
|
||||
AssetLoader(assetManager, name),
|
||||
state(SceneLoaderState::INITIAL)
|
||||
{
|
||||
}
|
||||
|
||||
void SceneLoader::updateAsync() {
|
||||
switch(this->state) {
|
||||
case SceneLoaderState::INITIAL:
|
||||
this->jsonLoader = getAssetManager()->get<JSONLoader>(this->name);
|
||||
this->state = SceneLoaderState::LOADING_JSON;
|
||||
break;
|
||||
|
||||
case SceneLoaderState::LOADING_JSON:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SceneLoader::updateSync() {
|
||||
|
||||
}
|
||||
|
||||
std::shared_ptr<Scene> SceneLoader::getScene() {
|
||||
return scene;
|
||||
}
|
||||
|
||||
SceneLoader::~SceneLoader() {
|
||||
|
||||
}
|
||||
40
src/dawn/asset/loader/SceneLoader.hpp
Normal file
40
src/dawn/asset/loader/SceneLoader.hpp
Normal file
@@ -0,0 +1,40 @@
|
||||
// Copyright (c) 2024 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#pragma once
|
||||
#include "JSONLoader.hpp"
|
||||
#include "scene/Scene.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
enum class SceneLoaderState {
|
||||
INITIAL,
|
||||
LOADING_JSON,
|
||||
};
|
||||
|
||||
class SceneLoader : public AssetLoader {
|
||||
protected:
|
||||
SceneLoaderState state;
|
||||
|
||||
std::shared_ptr<JSONLoader> jsonLoader;
|
||||
std::shared_ptr<Scene> scene;
|
||||
|
||||
public:
|
||||
SceneLoader(
|
||||
const std::shared_ptr<AssetManager> assetManager,
|
||||
const std::string name
|
||||
);
|
||||
void updateSync() override;
|
||||
void updateAsync() override;
|
||||
|
||||
/**
|
||||
* Returns the Scene that was loaded, or nullptr if not loaded.
|
||||
*
|
||||
* @return The loaded scene.
|
||||
*/
|
||||
std::shared_ptr<Scene> getScene();
|
||||
|
||||
~SceneLoader();
|
||||
};
|
||||
}
|
||||
@@ -8,8 +8,11 @@
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
TextureLoader::TextureLoader(const std::string name) :
|
||||
AssetLoader(name),
|
||||
TextureLoader::TextureLoader(
|
||||
const std::shared_ptr<AssetManager> assetManager,
|
||||
const std::string name
|
||||
) :
|
||||
AssetLoader(assetManager, name),
|
||||
loader(name),
|
||||
state(TextureLoaderLoadState::INITIAL)
|
||||
{
|
||||
|
||||
@@ -33,13 +33,10 @@ namespace Dawn {
|
||||
std::shared_ptr<Texture> texture;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Constructs a texture asset loader. You should instead use the parent
|
||||
* asset managers' abstracted load method
|
||||
*
|
||||
* @param name File name asset to load, omitting the extension.
|
||||
*/
|
||||
TextureLoader(const std::string name);
|
||||
TextureLoader(
|
||||
const std::shared_ptr<AssetManager> assetManager,
|
||||
const std::string name
|
||||
);
|
||||
|
||||
void updateSync() override;
|
||||
void updateAsync() override;
|
||||
@@ -50,11 +47,6 @@ namespace Dawn {
|
||||
* @return Texture asset.
|
||||
*/
|
||||
std::shared_ptr<Texture> getTexture();
|
||||
|
||||
/**
|
||||
* Dispose / Cleanup the texture asset. Will also dispose the underlying
|
||||
* texture itself.
|
||||
*/
|
||||
~TextureLoader();
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,8 +8,11 @@
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
TrueTypeLoader::TrueTypeLoader(const std::string name) :
|
||||
AssetLoader(name),
|
||||
TrueTypeLoader::TrueTypeLoader(
|
||||
const std::shared_ptr<AssetManager> assetManager,
|
||||
const std::string name
|
||||
) :
|
||||
AssetLoader(assetManager, name),
|
||||
loader(name)
|
||||
{
|
||||
// Init the font.
|
||||
|
||||
@@ -27,13 +27,10 @@ namespace Dawn {
|
||||
uint8_t *buffer = nullptr;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Constructs a TrueTypeLoader. You should instead use the parent
|
||||
* asset managers' abstracted load method
|
||||
*
|
||||
* @param name File name asset to load, omitting the extension.
|
||||
*/
|
||||
TrueTypeLoader(const std::string name);
|
||||
TrueTypeLoader(
|
||||
const std::shared_ptr<AssetManager> assetManager,
|
||||
const std::string name
|
||||
);
|
||||
|
||||
void updateSync() override;
|
||||
void updateAsync() override;
|
||||
@@ -48,10 +45,6 @@ namespace Dawn {
|
||||
const uint32_t fontSize
|
||||
);
|
||||
|
||||
/**
|
||||
* Dispose / Cleanup the truetype asset. Will also dispose the underlying
|
||||
* truetype itself.
|
||||
*/
|
||||
~TrueTypeLoader();
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user