Added serialization of SHRenderable (only Mesh)
This commit is contained in:
parent
c47a68947a
commit
1ea482ff38
|
@ -93,3 +93,11 @@ namespace SHADE
|
|||
oldMaterial = {};
|
||||
}
|
||||
}
|
||||
|
||||
RTTR_REGISTRATION
|
||||
{
|
||||
using namespace SHADE;
|
||||
using namespace rttr;
|
||||
|
||||
registration::class_<SHRenderable>("Renderable Component");
|
||||
}
|
|
@ -11,9 +11,10 @@ of DigiPen Institute of Technology is prohibited.
|
|||
*//*************************************************************************************/
|
||||
#pragma once
|
||||
|
||||
// External Dependencies
|
||||
#include <rttr/registration>
|
||||
// Project Includes
|
||||
#include "Resource/SHHandle.h"
|
||||
//#include "SHTransform.h"
|
||||
#include "ECS_Base/Components/SHComponent.h"
|
||||
#include "Math/SHMatrix.h"
|
||||
#include "SH_API.h"
|
||||
|
@ -75,6 +76,8 @@ namespace SHADE
|
|||
Handle<SHMaterialInstance> material;
|
||||
bool materialChanged = true;
|
||||
Handle<SHMaterial> oldMaterial;
|
||||
|
||||
RTTR_ENABLE()
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -156,7 +156,6 @@ namespace std
|
|||
std::size_t hash<pair<SHADE::Handle<T1>, SHADE::Handle<T2>>>::operator()(
|
||||
std::pair<SHADE::Handle<T1>, SHADE::Handle<T2>> const& pair) const
|
||||
{
|
||||
|
||||
return std::hash<uint64_t>{}(pair.first.GetId().Raw) ^ std::hash<uint64_t>{}(pair.second.GetId().Raw);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -135,11 +135,11 @@ namespace SHADE
|
|||
template<typename T>
|
||||
static std::optional<AssetID> SHResourceManager::GetAssetID(Handle<T> handle)
|
||||
{
|
||||
const Handle GENERIC_HANDLE = Handle(handle);
|
||||
const Handle<void> GENERIC_HANDLE = Handle<void>(handle);
|
||||
auto [typedHandleMap, typedAssetIdMap] = getAssetHandleMap<T>();
|
||||
if (typedAssetIdMap.get().contains(GENERIC_HANDLE))
|
||||
{
|
||||
return typedAssetIdMap.GetId()[GENERIC_HANDLE];
|
||||
return typedAssetIdMap.get()[GENERIC_HANDLE];
|
||||
}
|
||||
|
||||
return {};
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#include "SHpch.h"
|
||||
#include "SHSerializationHelper.hpp"
|
||||
#include "SHSerialization.h"
|
||||
|
||||
#include <yaml-cpp/yaml.h>
|
||||
#include "SHSerializationHelper.hpp"
|
||||
#include "SHSerialization.h"
|
||||
|
||||
#include "ECS_Base/Managers/SHEntityManager.h"
|
||||
#include "Scene/SHSceneManager.h"
|
||||
|
@ -178,7 +178,7 @@ namespace SHADE
|
|||
}
|
||||
if (const auto renderable = SHComponentManager::GetComponent_s<SHRenderable>(eid))
|
||||
{
|
||||
components[rttr::type::get<SHRenderable>().get_name().data()] = SHSerializationHelper::SerializeComponentToNode(renderable);
|
||||
components[rttr::type::get<SHRenderable>().get_name().data()] = *renderable;
|
||||
}
|
||||
if (const auto rigidbody = SHComponentManager::GetComponent_s<SHRigidBodyComponent>(eid))
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "ECS_Base/Components/SHComponent.h"
|
||||
#include <yaml-cpp/yaml.h>
|
||||
#include "ECS_Base/Components/SHComponent.h"
|
||||
|
||||
#include <rttr/registration>
|
||||
|
||||
|
@ -9,6 +9,40 @@
|
|||
#include "Math/Vector/SHVec2.h"
|
||||
#include "Math/Vector/SHVec3.h"
|
||||
#include "Math/Vector/SHVec4.h"
|
||||
#include "Resource/SHResourceManager.h"
|
||||
#include "Graphics/MiddleEnd/Interface/SHRenderable.h"
|
||||
|
||||
namespace YAML
|
||||
{
|
||||
using namespace SHADE;
|
||||
template<>
|
||||
struct convert<SHRenderable>
|
||||
{
|
||||
static constexpr std::string_view MESH_YAML_TAG = "Mesh";
|
||||
static constexpr std::string_view MAT_YAML_TAG = "Material";
|
||||
|
||||
static YAML::Node encode(SHRenderable const& rhs)
|
||||
{
|
||||
YAML::Node node;
|
||||
node[MESH_YAML_TAG.data()] = SHResourceManager::GetAssetID<SHMesh>(rhs.Mesh).value_or(0);
|
||||
node[MAT_YAML_TAG.data()] = 0; // TODO: Asset ID
|
||||
return node;
|
||||
}
|
||||
static bool decode(YAML::Node const& node, SHRenderable& rhs)
|
||||
{
|
||||
if (node[MESH_YAML_TAG.data()])
|
||||
{
|
||||
rhs.Mesh = {};//SHResourceManager::LoadOrGet<SHMesh>(node[MESH_YAML_TAG].as<AssetID>());
|
||||
}
|
||||
if (node[MAT_YAML_TAG.data()])
|
||||
{
|
||||
// TODO: Convert Asset ID To Material HAndle
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue