#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().HasParent = true; ent.GetComponent().Parent = *this; GetComponent().Children.push_back(ent); } } json Entity::Serialize() { BEGIN_SERIALIZE(); SERIALIZE_OBJECT_REF_LBL("NameComponent", GetComponent()) SERIALIZE_OBJECT_REF_LBL("ParentComponent", GetComponent()) SERIALIZE_OBJECT_REF_LBL("TransformComponent", GetComponent()) SERIALIZE_OBJECT_REF_LBL("VisibilityComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("CameraComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("SpriteComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("QuakeMapComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("LightComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("WrenScriptComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("CharacterControllerComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("BoxColliderComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("CapsuleColliderComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("CylinderColliderComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("SphereColliderComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("MeshColliderComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("ModelComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("BSPBrushComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("QuakeMapComponent", GetComponent()) if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("RigidBodyComponent", GetComponent()) END_SERIALIZE(); } bool Entity::Deserialize(const std::string& str) { BEGIN_DESERIALIZE(); DESERIALIZE_COMPONENT(TransformComponent) DESERIALIZE_COMPONENT(VisibilityComponent) else { AddComponent(); } 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; } }