Files
Nuake-custom/Nuake/src/Scene/Entities/Entity.cpp
2023-08-01 15:15:27 -04:00

119 lines
4.6 KiB
C++

#include "Entity.h"
#include "src/Scene/Components/ParentComponent.h"
#include "src/Scene/Components/NameComponent.h"
#include "src/Scene/Components/TransformComponent.h"
#include "src/Scene/Components/CameraComponent.h"
#include "src/Scene/Components/QuakeMap.h"
#include "src/Scene/Components/LightComponent.h"
#include "src/Scene/Components/QuakeMap.h"
#include "src/Scene/Components/WrenScriptComponent.h"
#include "src/Scene/Components/CharacterControllerComponent.h"
#include "src/Scene/Components/RigidbodyComponent.h"
#include "src/Scene/Components/BSPBrushComponent.h"
#include "src/Scene/Components/Components.h"
#include "src/Scene/Components/BoxCollider.h"
#include "src/Scene/Components/CapsuleColliderComponent.h"
#include "src/Scene/Components/SpriteComponent.h"
namespace Nuake
{
void Entity::AddChild(Entity ent)
{
if ((int)m_EntityHandle != ent.GetHandle())
{
ent.GetComponent<ParentComponent>().HasParent = true;
ent.GetComponent<ParentComponent>().Parent = *this;
GetComponent<ParentComponent>().Children.push_back(ent);
}
}
json Entity::Serialize()
{
BEGIN_SERIALIZE();
SERIALIZE_OBJECT_REF_LBL("NameComponent", GetComponent<NameComponent>())
SERIALIZE_OBJECT_REF_LBL("ParentComponent", GetComponent<ParentComponent>())
SERIALIZE_OBJECT_REF_LBL("TransformComponent", GetComponent<TransformComponent>())
SERIALIZE_OBJECT_REF_LBL("VisibilityComponent", GetComponent<VisibilityComponent>())
if (HasComponent<CameraComponent>())
SERIALIZE_OBJECT_REF_LBL("CameraComponent", GetComponent<CameraComponent>())
if (HasComponent<SpriteComponent>())
SERIALIZE_OBJECT_REF_LBL("SpriteComponent", GetComponent<SpriteComponent>())
if (HasComponent<QuakeMapComponent>())
SERIALIZE_OBJECT_REF_LBL("QuakeMapComponent", GetComponent<QuakeMapComponent>())
if (HasComponent<LightComponent>())
SERIALIZE_OBJECT_REF_LBL("LightComponent", GetComponent<LightComponent>())
if (HasComponent<WrenScriptComponent>())
SERIALIZE_OBJECT_REF_LBL("WrenScriptComponent", GetComponent<WrenScriptComponent>())
if (HasComponent<CharacterControllerComponent>())
SERIALIZE_OBJECT_REF_LBL("CharacterControllerComponent", GetComponent<CharacterControllerComponent>())
if (HasComponent<BoxColliderComponent>())
SERIALIZE_OBJECT_REF_LBL("BoxColliderComponent", GetComponent<BoxColliderComponent>())
if (HasComponent<CapsuleColliderComponent>())
SERIALIZE_OBJECT_REF_LBL("CapsuleColliderComponent", GetComponent<CapsuleColliderComponent>())
if (HasComponent<CylinderColliderComponent>())
SERIALIZE_OBJECT_REF_LBL("CylinderColliderComponent", GetComponent<CylinderColliderComponent>())
if (HasComponent<SphereColliderComponent>())
SERIALIZE_OBJECT_REF_LBL("SphereColliderComponent", GetComponent<SphereColliderComponent>())
if (HasComponent<MeshColliderComponent>())
SERIALIZE_OBJECT_REF_LBL("MeshColliderComponent", GetComponent<MeshColliderComponent>())
if (HasComponent<ModelComponent>())
SERIALIZE_OBJECT_REF_LBL("ModelComponent", GetComponent<ModelComponent>())
if (HasComponent<BSPBrushComponent>())
SERIALIZE_OBJECT_REF_LBL("BSPBrushComponent", GetComponent<BSPBrushComponent>())
if (HasComponent<QuakeMapComponent>())
SERIALIZE_OBJECT_REF_LBL("QuakeMapComponent", GetComponent<QuakeMapComponent>())
if (HasComponent<RigidBodyComponent>())
SERIALIZE_OBJECT_REF_LBL("RigidBodyComponent", GetComponent<RigidBodyComponent>())
END_SERIALIZE();
}
bool Entity::Deserialize(const std::string& str)
{
BEGIN_DESERIALIZE();
DESERIALIZE_COMPONENT(TransformComponent)
DESERIALIZE_COMPONENT(VisibilityComponent)
else
{
AddComponent<VisibilityComponent>();
}
DESERIALIZE_COMPONENT(NameComponent)
DESERIALIZE_COMPONENT(ParentComponent)
DESERIALIZE_COMPONENT(SpriteComponent)
DESERIALIZE_COMPONENT(CameraComponent)
DESERIALIZE_COMPONENT(QuakeMapComponent)
DESERIALIZE_COMPONENT(LightComponent)
DESERIALIZE_COMPONENT(ModelComponent)
DESERIALIZE_COMPONENT(WrenScriptComponent)
DESERIALIZE_COMPONENT(CharacterControllerComponent)
DESERIALIZE_COMPONENT(BoxColliderComponent)
DESERIALIZE_COMPONENT(CapsuleColliderComponent)
DESERIALIZE_COMPONENT(CylinderColliderComponent)
DESERIALIZE_COMPONENT(MeshColliderComponent)
DESERIALIZE_COMPONENT(SphereColliderComponent)
DESERIALIZE_COMPONENT(RigidBodyComponent)
DESERIALIZE_COMPONENT(BSPBrushComponent)
return true;
}
Entity::Entity(entt::entity handle, Scene* scene)
{
m_EntityHandle = handle;
m_Scene = scene;
}
Entity::Entity(const Entity& ent)
{
this->m_EntityHandle = ent.m_EntityHandle;
this->m_Scene = ent.m_Scene;
}
Entity::Entity()
{
this->m_EntityHandle = (entt::entity)-1;
}
}