Fixes
This commit is contained in:
@ -83,6 +83,7 @@ namespace ia::iae
|
|||||||
FontManager::Initialize();
|
FontManager::Initialize();
|
||||||
UI::Initialize();
|
UI::Initialize();
|
||||||
Physics::Initialize();
|
Physics::Initialize();
|
||||||
|
SceneManager::Initialize();
|
||||||
|
|
||||||
Game_OnInitialize();
|
Game_OnInitialize();
|
||||||
|
|
||||||
@ -93,6 +94,7 @@ namespace ia::iae
|
|||||||
{
|
{
|
||||||
Game_OnTerminate();
|
Game_OnTerminate();
|
||||||
|
|
||||||
|
SceneManager::Terminate();
|
||||||
Physics::Terminate();
|
Physics::Terminate();
|
||||||
UI::Terminate();
|
UI::Terminate();
|
||||||
FontManager::Terminate();
|
FontManager::Terminate();
|
||||||
|
|||||||
@ -488,4 +488,9 @@ namespace ia::iae
|
|||||||
Renderer::s_activeSceneDesignViewport = value;
|
Renderer::s_activeSceneDesignViewport = value;
|
||||||
Renderer::UpdateSceneScalingFactor();
|
Renderer::UpdateSceneScalingFactor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vec2 Engine::GetSceneDesignViewport()
|
||||||
|
{
|
||||||
|
return Renderer::s_activeSceneDesignViewport;
|
||||||
|
}
|
||||||
} // namespace ia::iae
|
} // namespace ia::iae
|
||||||
@ -44,27 +44,32 @@ namespace ia::iae
|
|||||||
|
|
||||||
namespace ia::iae
|
namespace ia::iae
|
||||||
{
|
{
|
||||||
SceneManager::SceneManager(
|
Map<String, Scene *> SceneManager::s_scenes;
|
||||||
IN std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String> &)> getCustomNode,
|
std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String> &)> SceneManager::s_customNodeGetter;
|
||||||
IN std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> getResource)
|
std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> SceneManager::s_resourceGetter;
|
||||||
: m_customNodeGetter(getCustomNode), m_resourceGetter(getResource)
|
|
||||||
{
|
VOID SceneManager::Initialize(){}
|
||||||
|
VOID SceneManager::Terminate(){
|
||||||
|
for (const auto &t : s_scenes)
|
||||||
|
delete t->Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
SceneManager::~SceneManager()
|
VOID SceneManager::Setup(
|
||||||
|
IN std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String> &)> getCustomNode,
|
||||||
|
IN std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> getResource)
|
||||||
{
|
{
|
||||||
for (const auto &t : m_scenes)
|
s_customNodeGetter = getCustomNode;
|
||||||
delete t->Value;
|
s_resourceGetter = getResource;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID SceneManager::SwitchTo(IN CONST String &name)
|
VOID SceneManager::SwitchTo(IN CONST String &name)
|
||||||
{
|
{
|
||||||
Engine::ChangeActiveScene(m_scenes[name]);
|
Engine::ChangeActiveScene(s_scenes[name]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Scene *SceneManager::GetScene(IN CONST String &name)
|
Scene *SceneManager::GetScene(IN CONST String &name)
|
||||||
{
|
{
|
||||||
return m_scenes[name];
|
return s_scenes[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID SceneManager::AddScene(IN Scene *scene, IN CONST String &name, IN CONST String &xml)
|
VOID SceneManager::AddScene(IN Scene *scene, IN CONST String &name, IN CONST String &xml)
|
||||||
@ -84,13 +89,13 @@ namespace ia::iae
|
|||||||
{
|
{
|
||||||
if (!strcmp(t.name(), "Image"))
|
if (!strcmp(t.name(), "Image"))
|
||||||
{
|
{
|
||||||
resources[t.attribute("name").as_string()] = m_resourceGetter(
|
resources[t.attribute("name").as_string()] = s_resourceGetter(
|
||||||
ResourceType::IMAGE, t.attribute("path").as_string(), t.attribute("index").as_llong());
|
ResourceType::IMAGE, t.attribute("path").as_string(), t.attribute("index").as_llong());
|
||||||
}
|
}
|
||||||
else if (!strcmp(t.name(), "Audio"))
|
else if (!strcmp(t.name(), "Audio"))
|
||||||
{
|
{
|
||||||
resources[t.attribute("name").as_string()] =
|
resources[t.attribute("name").as_string()] =
|
||||||
m_resourceGetter(ResourceType::SOUND, t.attribute("path").as_string(), 0);
|
s_resourceGetter(ResourceType::SOUND, t.attribute("path").as_string(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -136,7 +141,7 @@ namespace ia::iae
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const auto node = m_customNodeGetter(t.name(), String(t.attribute("id").as_string()).split(';'));
|
const auto node = s_customNodeGetter(t.name(), String(t.attribute("id").as_string()).split(';'));
|
||||||
scene->AddNode(node);
|
scene->AddNode(node);
|
||||||
n = node.get();
|
n = node.get();
|
||||||
}
|
}
|
||||||
@ -165,11 +170,11 @@ namespace ia::iae
|
|||||||
});
|
});
|
||||||
scene->UIMarkup() = html;
|
scene->UIMarkup() = html;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_scenes[name] = scene;
|
s_scenes[name] = scene;
|
||||||
}
|
}
|
||||||
} // namespace ia::iae
|
} // namespace ia::iae
|
||||||
@ -24,9 +24,9 @@
|
|||||||
#include <IAEngine/Components/CameraComponent.hpp>
|
#include <IAEngine/Components/CameraComponent.hpp>
|
||||||
#include <IAEngine/Components/SoundEmitterComponent.hpp>
|
#include <IAEngine/Components/SoundEmitterComponent.hpp>
|
||||||
|
|
||||||
#include <IAEngine/Scene.hpp>
|
|
||||||
#include <IAEngine/UI.hpp>
|
#include <IAEngine/UI.hpp>
|
||||||
#include <IAEngine/Utils.hpp>
|
#include <IAEngine/Utils.hpp>
|
||||||
|
#include <IAEngine/SceneManager.hpp>
|
||||||
|
|
||||||
namespace ia::iae
|
namespace ia::iae
|
||||||
{
|
{
|
||||||
@ -54,6 +54,7 @@ namespace ia::iae
|
|||||||
STATIC VOID DrawQuad(IN Vec2 position, IN Handle texture, IN Vec2 scale, IN FLOAT32 rotation, IN UINT8 layer, IN UINT16 sortIndex);
|
STATIC VOID DrawQuad(IN Vec2 position, IN Handle texture, IN Vec2 scale, IN FLOAT32 rotation, IN UINT8 layer, IN UINT16 sortIndex);
|
||||||
STATIC VOID DrawCircle(IN Vec2 position, IN Handle texture, IN FLOAT32 radius, IN FLOAT32 rotation, IN UINT8 layer, IN UINT16 sortIndex);
|
STATIC VOID DrawCircle(IN Vec2 position, IN Handle texture, IN FLOAT32 radius, IN FLOAT32 rotation, IN UINT8 layer, IN UINT16 sortIndex);
|
||||||
STATIC VOID DrawText(IN CONST String& text, IN Vec2 position, IN FLOAT32 scale, IN FLOAT32 rotation, IN UINT8 layer, IN UINT16 sortIndex);
|
STATIC VOID DrawText(IN CONST String& text, IN Vec2 position, IN FLOAT32 scale, IN FLOAT32 rotation, IN UINT8 layer, IN UINT16 sortIndex);
|
||||||
|
STATIC Vec2 GetSceneDesignViewport();
|
||||||
STATIC VOID SetSceneDesignViewport(IN Vec2 value);
|
STATIC VOID SetSceneDesignViewport(IN Vec2 value);
|
||||||
|
|
||||||
// Renderer State Functions
|
// Renderer State Functions
|
||||||
|
|||||||
@ -23,16 +23,15 @@ namespace ia::iae
|
|||||||
class SceneManager
|
class SceneManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SceneManager(IN std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String>&)> getCustomNode,
|
STATIC VOID Setup(IN std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String> &)> getCustomNode,
|
||||||
IN std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> getResource);
|
IN std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> getResource);
|
||||||
~SceneManager();
|
|
||||||
|
|
||||||
VOID SwitchTo(IN CONST String &name);
|
STATIC VOID SwitchTo(IN CONST String &name);
|
||||||
|
|
||||||
Scene *GetScene(IN CONST String &name);
|
STATIC Scene *GetScene(IN CONST String &name);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template<typename SceneType> SceneType* AddScene(IN CONST String &name, IN CONST String &xml)
|
template<typename SceneType> STATIC SceneType *AddScene(IN CONST String &name, IN CONST String &xml)
|
||||||
{
|
{
|
||||||
const auto t = (Scene *) new SceneType();
|
const auto t = (Scene *) new SceneType();
|
||||||
AddScene(t, name, xml);
|
AddScene(t, name, xml);
|
||||||
@ -40,11 +39,17 @@ namespace ia::iae
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VOID AddScene(IN Scene *scene, IN CONST String &name, IN CONST String &xml);
|
STATIC VOID AddScene(IN Scene *scene, IN CONST String &name, IN CONST String &xml);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Map<String, Scene *> m_scenes;
|
STATIC Map<String, Scene *> s_scenes;
|
||||||
std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String>&)> m_customNodeGetter;
|
STATIC std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String> &)> s_customNodeGetter;
|
||||||
std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> m_resourceGetter;
|
STATIC std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> s_resourceGetter;
|
||||||
|
|
||||||
|
private:
|
||||||
|
STATIC VOID Initialize();
|
||||||
|
STATIC VOID Terminate();
|
||||||
|
|
||||||
|
friend class __Internal_Engine;
|
||||||
};
|
};
|
||||||
} // namespace ia::iae
|
} // namespace ia::iae
|
||||||
2
Vendor/IACore
vendored
2
Vendor/IACore
vendored
Submodule Vendor/IACore updated: 07638ea7b3...5a38f9f36d
Reference in New Issue
Block a user