feat: add vec3 type to nhollman json / fix: scene serialisation stuff
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <algorithm>
|
||||
|
||||
#include <destrum/ObjectModel/GameObject.h>
|
||||
#include <destrum/Serialization/GlmJson.h>
|
||||
|
||||
#include <imgui.h>
|
||||
|
||||
@@ -60,7 +61,7 @@ void Door::ApplyPosition()
|
||||
nlohmann::json Door::Serialize() const
|
||||
{
|
||||
return {
|
||||
{"openOffset", {m_OpenOffset.x, m_OpenOffset.y, m_OpenOffset.z}},
|
||||
{"openOffset", m_OpenOffset},
|
||||
{"openDuration", m_OpenDuration},
|
||||
{"toggleable", m_Toggleable},
|
||||
{"open", m_IsOpen},
|
||||
@@ -70,10 +71,7 @@ nlohmann::json Door::Serialize() const
|
||||
|
||||
void Door::Deserialize(const nlohmann::json& data)
|
||||
{
|
||||
if (data.contains("openOffset")) {
|
||||
const auto& offset = data.at("openOffset");
|
||||
m_OpenOffset = {offset.at(0).get<float>(), offset.at(1).get<float>(), offset.at(2).get<float>()};
|
||||
}
|
||||
m_OpenOffset = data.value("openOffset", m_OpenOffset);
|
||||
m_OpenDuration = std::max(data.value("openDuration", m_OpenDuration), 0.0f);
|
||||
m_Toggleable = data.value("toggleable", m_Toggleable);
|
||||
m_IsOpen = data.value("open", m_IsOpen);
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
#include <components/GameComponentRegistry.h>
|
||||
|
||||
#include <mutex>
|
||||
|
||||
#include <destrum/Serialization/ComponentFactory.h>
|
||||
|
||||
#include <components/GameComponentList.h>
|
||||
|
||||
void RegisterGameComponents()
|
||||
{
|
||||
static bool registered = false;
|
||||
if (registered) {
|
||||
return;
|
||||
}
|
||||
|
||||
registered = true;
|
||||
|
||||
static std::once_flag registered;
|
||||
std::call_once(registered, [] {
|
||||
#define LIGHTKEEPER_REGISTER_COMPONENT(ComponentType) \
|
||||
ComponentFactory::Register<ComponentType>(#ComponentType);
|
||||
LIGHTKEEPER_GAME_COMPONENTS(LIGHTKEEPER_REGISTER_COMPONENT)
|
||||
ComponentFactory::Register<ComponentType>(#ComponentType);
|
||||
LIGHTKEEPER_GAME_COMPONENTS(LIGHTKEEPER_REGISTER_COMPONENT)
|
||||
#undef LIGHTKEEPER_REGISTER_COMPONENT
|
||||
});
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <cmath>
|
||||
|
||||
#include <destrum/ObjectModel/GameObject.h>
|
||||
#include <destrum/Serialization/GlmJson.h>
|
||||
|
||||
#include <imgui.h>
|
||||
|
||||
@@ -52,7 +53,7 @@ glm::vec3 MovingPlatform::GetOffsetAt(float progress) const
|
||||
nlohmann::json MovingPlatform::Serialize() const
|
||||
{
|
||||
return {
|
||||
{"travelOffset", {m_TravelOffset.x, m_TravelOffset.y, m_TravelOffset.z}},
|
||||
{"travelOffset", m_TravelOffset},
|
||||
{"travelDuration", m_TravelDuration},
|
||||
{"pauseDuration", m_PauseDuration},
|
||||
{"elapsedTime", m_ElapsedTime},
|
||||
@@ -61,10 +62,7 @@ nlohmann::json MovingPlatform::Serialize() const
|
||||
|
||||
void MovingPlatform::Deserialize(const nlohmann::json& data)
|
||||
{
|
||||
if (data.contains("travelOffset")) {
|
||||
const auto& offset = data.at("travelOffset");
|
||||
m_TravelOffset = {offset.at(0).get<float>(), offset.at(1).get<float>(), offset.at(2).get<float>()};
|
||||
}
|
||||
m_TravelOffset = data.value("travelOffset", m_TravelOffset);
|
||||
m_TravelDuration = std::max(data.value("travelDuration", m_TravelDuration), 0.01f);
|
||||
m_PauseDuration = std::max(data.value("pauseDuration", m_PauseDuration), 0.0f);
|
||||
m_ElapsedTime = std::max(data.value("elapsedTime", m_ElapsedTime), 0.0f);
|
||||
|
||||
@@ -22,7 +22,7 @@ void PrintComponent::ImGuiInspector()
|
||||
|
||||
nlohmann::json PrintComponent::Serialize() const
|
||||
{
|
||||
return {"message", m_message};
|
||||
return {{"message", m_message}};
|
||||
}
|
||||
|
||||
void PrintComponent::Deserialize(const nlohmann::json& basic_jsons)
|
||||
|
||||
Reference in New Issue
Block a user