diff --git a/Nuake/Engine.cpp b/Nuake/Engine.cpp index b0be2537..6aa24c16 100644 --- a/Nuake/Engine.cpp +++ b/Nuake/Engine.cpp @@ -13,6 +13,7 @@ #include "src/Scripting/ScriptingEngine.h" #include "src/Scripting/ScriptingEngineNet.h" #include "src/Threading/JobSystem.h" +#include "src/Core/RegisterCoreTypes.h" #include "src/Modules/Modules.h" #include @@ -20,6 +21,8 @@ #include #include + + namespace Nuake { Ref Engine::currentProject; @@ -48,6 +51,8 @@ namespace Nuake Renderer2D::Init(); Logger::Log("Engine initialized"); + RegisterCoreTypes::RegisterCoreComponents(); + Modules::StartupModules(); } diff --git a/Nuake/src/Core/Object/ClassDB.cpp b/Nuake/src/Core/Object/ClassDB.cpp new file mode 100644 index 00000000..0aefb9d7 --- /dev/null +++ b/Nuake/src/Core/Object/ClassDB.cpp @@ -0,0 +1,5 @@ +#include "ClassDB.h" + +namespace Nuake +{ +} diff --git a/Nuake/src/Core/Object/ClassDB.h b/Nuake/src/Core/Object/ClassDB.h new file mode 100644 index 00000000..dde82bfa --- /dev/null +++ b/Nuake/src/Core/Object/ClassDB.h @@ -0,0 +1,14 @@ +#pragma once + +namespace Nuake +{ + class ClassDB + { + public: + template + static void RegisterComponent(T klass) + { + T::InternalInitializeClass(); + } + }; +} diff --git a/Nuake/src/Core/Object/Object.h b/Nuake/src/Core/Object/Object.h index 8c065dc6..127d8d92 100644 --- a/Nuake/src/Core/Object/Object.h +++ b/Nuake/src/Core/Object/Object.h @@ -1,16 +1,46 @@ #pragma once #include +#include -#define NK_HASHED_FN_NAME_IMPL(name) inline static constexpr entt::hashed_string name = entt::hashed_string(#name); +#define NK_HASHED_STATIC_STR(name) inline static constexpr entt::hashed_string name = entt::hashed_string(#name); namespace Nuake { struct HashedFnName { - NK_HASHED_FN_NAME_IMPL(GetComponentName) - NK_HASHED_FN_NAME_IMPL(AddToEntity) + NK_HASHED_STATIC_STR(GetComponentName) + NK_HASHED_STATIC_STR(AddToEntity) }; + + struct HashedName + { + NK_HASHED_STATIC_STR(DisplayName) + }; + + enum class ComponentTypeTrait : uint16_t + { + None = 0, + InspectorExposed = 1 << 0, + + + }; + + template + constexpr std::underlying_type_t ToUnderlying(Enum e) + { + return static_cast>(e); + } + + inline ComponentTypeTrait operator|(ComponentTypeTrait lhs, ComponentTypeTrait rhs) + { + return static_cast(ToUnderlying(lhs) | ToUnderlying(rhs)); + } + + inline ComponentTypeTrait operator&(ComponentTypeTrait lhs, ComponentTypeTrait rhs) + { + return static_cast(ToUnderlying(lhs) & ToUnderlying(rhs)); + } } #define NUAKECOMPONENT(klass, componentName) \ @@ -32,7 +62,33 @@ public: enttRegistry->emplace_or_replace(entity); \ } \ \ - inline static auto ComponentFactory = entt::meta() \ - .type(entt::hashed_string(#klass)) \ - .func<&klass::ComponentName>(HashedFnName::GetComponentName) \ - .func<&klass::AddToEntity>(HashedFnName::AddToEntity); + \ + static void (*GetInitializeComponentClass())() \ + { \ + return &klass::InitializeComponentClass; \ + } \ + \ + inline static auto ComponentFactory = entt::meta(); \ + static void InternalInitializeClass() \ + { \ + static bool initialized = false; \ + if (initialized) \ + return; \ + \ + ComponentFactory.type(entt::hashed_string(#klass)) \ + .traits(ComponentTypeTrait::InspectorExposed); \ + ComponentFactory.func<&klass::ComponentName>(HashedFnName::GetComponentName); \ + ComponentFactory.func<&klass::AddToEntity>(HashedFnName::AddToEntity); \ + \ + if (klass::GetInitializeComponentClass() != Component::GetInitializeComponentClass()) \ + { \ + GetInitializeComponentClass()(); \ + } \ + \ + initialized = true; \ + } + +#define BINDCOMPONENTFIELD(field, displayName) \ + ComponentFactory \ + .data<&field>(entt::hashed_string(#field)) \ + .prop(HashedName::DisplayName, displayName) \ No newline at end of file diff --git a/Nuake/src/Core/RegisterCoreTypes.cpp b/Nuake/src/Core/RegisterCoreTypes.cpp new file mode 100644 index 00000000..7e820e98 --- /dev/null +++ b/Nuake/src/Core/RegisterCoreTypes.cpp @@ -0,0 +1,47 @@ +#include "RegisterCoreTypes.h" + +#include "src/Scene/Components/AudioEmitterComponent.h" +#include "src/Scene/Components/BoneComponent.h" +#include "src/Scene/Components/BoxCollider.h" +#include "src/Scene/Components/CameraComponent.h" +#include "src/Scene/Components/CapsuleColliderComponent.h" +#include "src/Scene/Components/CharacterControllerComponent.h" +#include "src/Scene/Components/CylinderColliderComponent.h" +#include "src/Scene/Components/MeshCollider.h" +#include "src/Scene/Components/ModelComponent.h" +#include "src/Scene/Components/NavMeshVolumeComponent.h" +#include "src/Scene/Components/NetScriptComponent.h" +#include "src/Scene/Components/ParticleEmitterComponent.h" +#include "src/Scene/Components/QuakeMap.h" +#include "src/Scene/Components/RigidbodyComponent.h" +#include "src/Scene/Components/SkinnedModelComponent.h" +#include "src/Scene/Components/SphereCollider.h" +#include "src/Scene/Components/SpriteComponent.h" +#include "src/Scene/Components/UIComponent.h" + +namespace Nuake +{ + void RegisterCoreTypes::RegisterCoreComponents() + { + UIComponent::InternalInitializeClass(); + SpriteComponent::InternalInitializeClass(); + SphereColliderComponent::InternalInitializeClass(); + SkinnedModelComponent::InternalInitializeClass(); + RigidBodyComponent::InternalInitializeClass(); + QuakeMapComponent::InternalInitializeClass(); + ParticleEmitterComponent::InternalInitializeClass(); + NetScriptComponent::InternalInitializeClass(); + NavMeshVolumeComponent::InternalInitializeClass(); + ModelComponent::InternalInitializeClass(); + MeshColliderComponent::InternalInitializeClass(); + LightComponent::InternalInitializeClass(); + CylinderColliderComponent::InternalInitializeClass(); + CharacterControllerComponent::InternalInitializeClass(); + CapsuleColliderComponent::InternalInitializeClass(); + CameraComponent::InternalInitializeClass(); + BoxColliderComponent::InternalInitializeClass(); + BoneComponent::InternalInitializeClass(); + AudioEmitterComponent::InternalInitializeClass(); + } +} + diff --git a/Nuake/src/Core/RegisterCoreTypes.h b/Nuake/src/Core/RegisterCoreTypes.h new file mode 100644 index 00000000..c7a8b686 --- /dev/null +++ b/Nuake/src/Core/RegisterCoreTypes.h @@ -0,0 +1,11 @@ +#pragma once + +namespace Nuake +{ + class RegisterCoreTypes + { + public: + static void RegisterCoreComponents(); + }; +} + diff --git a/Nuake/src/Scene/Components.h b/Nuake/src/Scene/Components.h index c99682ca..37ad6487 100644 --- a/Nuake/src/Scene/Components.h +++ b/Nuake/src/Scene/Components.h @@ -1,7 +1,7 @@ #pragma once #include "Components/AudioEmitterComponent.h" -#include "Components/BaseComponent.h" +#include "Components/VisibilityComponent.h" #include "Components/BoneComponent.h" #include "Components/BoxCollider.h" #include "Components/BSPBrushComponent.h" diff --git a/Nuake/src/Scene/Components/AudioEmitterComponent.h b/Nuake/src/Scene/Components/AudioEmitterComponent.h index bebfd6fb..7f5d69e8 100644 --- a/Nuake/src/Scene/Components/AudioEmitterComponent.h +++ b/Nuake/src/Scene/Components/AudioEmitterComponent.h @@ -1,12 +1,13 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Core/Core.h" #include "src/Resource/Serializable.h" namespace Nuake { - class AudioEmitterComponent + class AudioEmitterComponent : public Component { NUAKECOMPONENT(AudioEmitterComponent, "Audio Emitter") diff --git a/Nuake/src/Scene/Components/BSPBrushComponent.h b/Nuake/src/Scene/Components/BSPBrushComponent.h index b4ba41cc..4e33a5c1 100644 --- a/Nuake/src/Scene/Components/BSPBrushComponent.h +++ b/Nuake/src/Scene/Components/BSPBrushComponent.h @@ -1,4 +1,7 @@ #pragma once + +#include "Component.h" + #include "src/Core/Core.h" #include "src/Core/Maths.h" @@ -7,7 +10,7 @@ #include "src/Physics/Rigibody.h" namespace Nuake { - class BSPBrushComponent + class BSPBrushComponent : public Component { public: //std::vector> Meshes; diff --git a/Nuake/src/Scene/Components/BoneComponent.h b/Nuake/src/Scene/Components/BoneComponent.h index f1c9a8b8..6688ee92 100644 --- a/Nuake/src/Scene/Components/BoneComponent.h +++ b/Nuake/src/Scene/Components/BoneComponent.h @@ -1,13 +1,13 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Core/Core.h" #include "src/Resource/Serializable.h" - namespace Nuake { - class BoneComponent + class BoneComponent : public Component { NUAKECOMPONENT(BoneComponent, "Bone") diff --git a/Nuake/src/Scene/Components/BoxCollider.h b/Nuake/src/Scene/Components/BoxCollider.h index 80c84d60..be5f4cdc 100644 --- a/Nuake/src/Scene/Components/BoxCollider.h +++ b/Nuake/src/Scene/Components/BoxCollider.h @@ -1,22 +1,41 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Physics/PhysicsShapes.h" #include "src/Core/Core.h" -namespace Nuake { +namespace Nuake +{ + class BoxColliderComponent : public Component + { + NUAKECOMPONENT(BoxColliderComponent, "Box Collider") - class BoxColliderComponent - { - NUAKECOMPONENT(BoxColliderComponent, "Box Collider") + static void InitializeComponentClass() + { + BINDCOMPONENTFIELD(BoxColliderComponent::IsTrigger, "Is Trigger"); - public: - Ref Box; - Vector3 Size = Vector3(0.5f, 0.5f, 0.5f); - bool IsTrigger = false; + ComponentFactory + .data<&BoxColliderComponent::SetSize, &BoxColliderComponent::GetSize>(entt::hashed_string("size")) + .prop(HashedName::DisplayName, "Size"); + } - json Serialize(); - bool Deserialize(const json& j); - }; + public: + Ref Box; + Vector3 Size = Vector3(0.5f, 0.5f, 0.5f); + bool IsTrigger = true; + + void SetSize(const Vector3& newSize) + { + Size = newSize; + } + + Vector3 GetSize() + { + return Size; + } + + json Serialize(); + bool Deserialize(const json& j); + }; } - \ No newline at end of file diff --git a/Nuake/src/Scene/Components/CameraComponent.h b/Nuake/src/Scene/Components/CameraComponent.h index b62b7cf8..f4f1cf2d 100644 --- a/Nuake/src/Scene/Components/CameraComponent.h +++ b/Nuake/src/Scene/Components/CameraComponent.h @@ -1,6 +1,6 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" #include "TransformComponent.h" #include "src/Core/Core.h" @@ -10,7 +10,7 @@ namespace Nuake { - class CameraComponent + class CameraComponent : public Component { NUAKECOMPONENT(CameraComponent, "Camera") diff --git a/Nuake/src/Scene/Components/CapsuleColliderComponent.h b/Nuake/src/Scene/Components/CapsuleColliderComponent.h index a0114945..ee146789 100644 --- a/Nuake/src/Scene/Components/CapsuleColliderComponent.h +++ b/Nuake/src/Scene/Components/CapsuleColliderComponent.h @@ -1,12 +1,13 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Physics/PhysicsShapes.h" #include "src/Core/Core.h" namespace Nuake { - class CapsuleColliderComponent + class CapsuleColliderComponent : public Component { NUAKECOMPONENT(CapsuleColliderComponent, "Capsule Collider") diff --git a/Nuake/src/Scene/Components/CharacterControllerComponent.h b/Nuake/src/Scene/Components/CharacterControllerComponent.h index 7d39bec1..9060cf09 100644 --- a/Nuake/src/Scene/Components/CharacterControllerComponent.h +++ b/Nuake/src/Scene/Components/CharacterControllerComponent.h @@ -1,11 +1,12 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Physics/CharacterController.h" namespace Nuake { - class CharacterControllerComponent + class CharacterControllerComponent : public Component { NUAKECOMPONENT(CharacterControllerComponent, "Character Controller") diff --git a/Nuake/src/Scene/Components/Component.cpp b/Nuake/src/Scene/Components/Component.cpp new file mode 100644 index 00000000..f8870d84 --- /dev/null +++ b/Nuake/src/Scene/Components/Component.cpp @@ -0,0 +1,15 @@ +#include "Component.h" + +using namespace Nuake; + +std::string Component::GetName(const entt::meta_type& componentMeta) +{ + // TODO: [WiggleWizard] Needs some error handling + if (entt::meta_func func = componentMeta.func(HashedFnName::GetComponentName)) + { + entt::meta_any ret = func.invoke(componentMeta); + return ret.cast(); + } + + return "Unknown Component"; +} diff --git a/Nuake/src/Scene/Components/Component.h b/Nuake/src/Scene/Components/Component.h new file mode 100644 index 00000000..5bfe9f06 --- /dev/null +++ b/Nuake/src/Scene/Components/Component.h @@ -0,0 +1,20 @@ +#pragma once + +#include "src/Core/Object/Object.h" + +namespace Nuake +{ + class Component + { + protected: + static void InitializeComponentClass() {} + + static void (* GetInitializeComponentClass(void))() + { + return &Component::InitializeComponentClass; + } + + public: + static std::string GetName(const entt::meta_type& componentMeta); + }; +} diff --git a/Nuake/src/Scene/Components/CylinderColliderComponent.h b/Nuake/src/Scene/Components/CylinderColliderComponent.h index 3aa31b29..fefa5c27 100644 --- a/Nuake/src/Scene/Components/CylinderColliderComponent.h +++ b/Nuake/src/Scene/Components/CylinderColliderComponent.h @@ -1,12 +1,13 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Physics/PhysicsShapes.h" #include "src/Core/Core.h" namespace Nuake { - class CylinderColliderComponent + class CylinderColliderComponent : public Component { NUAKECOMPONENT(CylinderColliderComponent, "Cylinder Collider") diff --git a/Nuake/src/Scene/Components/LightComponent.h b/Nuake/src/Scene/Components/LightComponent.h index 95204b52..a7d9e8a4 100644 --- a/Nuake/src/Scene/Components/LightComponent.h +++ b/Nuake/src/Scene/Components/LightComponent.h @@ -1,13 +1,13 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" #include #include #include "TransformComponent.h" #include "../Rendering/Camera.h" #include "src/Rendering/Buffers/Framebuffer.h" -#include "BaseComponent.h" +#include "VisibilityComponent.h" #include "../Resource/Serializable.h" #include @@ -20,7 +20,7 @@ namespace Nuake }; const int CSM_AMOUNT = 4; - class LightComponent + class LightComponent : public Component { NUAKECOMPONENT(LightComponent, "Light") diff --git a/Nuake/src/Scene/Components/MeshCollider.h b/Nuake/src/Scene/Components/MeshCollider.h index 8c2c32ec..d032cd33 100644 --- a/Nuake/src/Scene/Components/MeshCollider.h +++ b/Nuake/src/Scene/Components/MeshCollider.h @@ -1,11 +1,13 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Physics/PhysicsShapes.h" #include "src/Core/Core.h" -namespace Nuake { - class MeshColliderComponent +namespace Nuake +{ + class MeshColliderComponent : public Component { NUAKECOMPONENT(MeshColliderComponent, "Mesh Collider") diff --git a/Nuake/src/Scene/Components/ModelComponent.h b/Nuake/src/Scene/Components/ModelComponent.h index d130b677..ac27cfce 100644 --- a/Nuake/src/Scene/Components/ModelComponent.h +++ b/Nuake/src/Scene/Components/ModelComponent.h @@ -1,6 +1,7 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Core/String.h" #include "src/Resource/Model.h" #include "src/Resource/ResourceLoader.h" @@ -12,7 +13,7 @@ namespace Nuake { - struct ModelComponent + struct ModelComponent : public Component { NUAKECOMPONENT(ModelComponent, "Model") diff --git a/Nuake/src/Scene/Components/NavMeshVolumeComponent.h b/Nuake/src/Scene/Components/NavMeshVolumeComponent.h index 0b551ca4..a14f9ade 100644 --- a/Nuake/src/Scene/Components/NavMeshVolumeComponent.h +++ b/Nuake/src/Scene/Components/NavMeshVolumeComponent.h @@ -1,13 +1,14 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "../Entities/Entity.h" #include "Engine.h" #include namespace Nuake { - struct NavMeshVolumeComponent + struct NavMeshVolumeComponent : public Component { NUAKECOMPONENT(NavMeshVolumeComponent, "Nav Mesh Volume") diff --git a/Nuake/src/Scene/Components/NetScriptComponent.h b/Nuake/src/Scene/Components/NetScriptComponent.h index 8cd6bcfe..e3373cb4 100644 --- a/Nuake/src/Scene/Components/NetScriptComponent.h +++ b/Nuake/src/Scene/Components/NetScriptComponent.h @@ -1,6 +1,7 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Core/Core.h" #include "src/Core/Maths.h" #include "src/FileSystem/FileSystem.h" @@ -34,7 +35,7 @@ namespace Nuake { NetScriptExposedVarType Type; }; - class NetScriptComponent + class NetScriptComponent : public Component { NUAKECOMPONENT(NetScriptComponent, "Net Script") diff --git a/Nuake/src/Scene/Components/ParticleEmitterComponent.h b/Nuake/src/Scene/Components/ParticleEmitterComponent.h index fb309038..755294aa 100644 --- a/Nuake/src/Scene/Components/ParticleEmitterComponent.h +++ b/Nuake/src/Scene/Components/ParticleEmitterComponent.h @@ -1,6 +1,7 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Core/Core.h" #include "src/Core/Maths.h" #include "src/Resource/Serializable.h" @@ -10,7 +11,7 @@ namespace Nuake { - class ParticleEmitterComponent + class ParticleEmitterComponent : public Component { NUAKECOMPONENT(ParticleEmitterComponent, "Particle Emitter") diff --git a/Nuake/src/Scene/Components/QuakeMap.h b/Nuake/src/Scene/Components/QuakeMap.h index 9d9169b0..e777febf 100644 --- a/Nuake/src/Scene/Components/QuakeMap.h +++ b/Nuake/src/Scene/Components/QuakeMap.h @@ -1,17 +1,19 @@ #pragma once -#include -#include -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Rendering/Mesh/Mesh.h" #include "src/Resource/Serializable.h" #include "src/Scene/Systems/QuakeMapBuilder.h" #include "src/Scene/Entities/Entity.h" #include "Engine.h" +#include +#include + namespace Nuake { - class QuakeMapComponent + class QuakeMapComponent : public Component { NUAKECOMPONENT(QuakeMapComponent, "Quake Map") diff --git a/Nuake/src/Scene/Components/RigidbodyComponent.h b/Nuake/src/Scene/Components/RigidbodyComponent.h index 06ad21f6..66a15127 100644 --- a/Nuake/src/Scene/Components/RigidbodyComponent.h +++ b/Nuake/src/Scene/Components/RigidbodyComponent.h @@ -1,8 +1,9 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "TransformComponent.h" -#include "BaseComponent.h" +#include "VisibilityComponent.h" #include "src/Core/Core.h" namespace Nuake { @@ -11,7 +12,7 @@ namespace Nuake { class RigidBody; }; - class RigidBodyComponent + class RigidBodyComponent : public Component { NUAKECOMPONENT(RigidBodyComponent, "Rigid Body") diff --git a/Nuake/src/Scene/Components/SkinnedModelComponent.h b/Nuake/src/Scene/Components/SkinnedModelComponent.h index b33c9a07..14461f96 100644 --- a/Nuake/src/Scene/Components/SkinnedModelComponent.h +++ b/Nuake/src/Scene/Components/SkinnedModelComponent.h @@ -1,16 +1,16 @@ #pragma once -#include -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Resource/Serializable.h" #include "src/Resource/SkinnedModel.h" #include - +#include namespace Nuake { - struct SkinnedModelComponent + class SkinnedModelComponent : public Component { NUAKECOMPONENT(SkinnedModelComponent, "Skinned Model") diff --git a/Nuake/src/Scene/Components/SphereCollider.h b/Nuake/src/Scene/Components/SphereCollider.h index bd79f3d6..6ffdabfa 100644 --- a/Nuake/src/Scene/Components/SphereCollider.h +++ b/Nuake/src/Scene/Components/SphereCollider.h @@ -1,11 +1,13 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Physics/PhysicsShapes.h" #include "src/Core/Core.h" -namespace Nuake { - class SphereColliderComponent +namespace Nuake +{ + class SphereColliderComponent : public Component { NUAKECOMPONENT(SphereColliderComponent, "Sphere Component") diff --git a/Nuake/src/Scene/Components/SpriteComponent.h b/Nuake/src/Scene/Components/SpriteComponent.h index f5b06c19..f2e3f1fe 100644 --- a/Nuake/src/Scene/Components/SpriteComponent.h +++ b/Nuake/src/Scene/Components/SpriteComponent.h @@ -1,6 +1,7 @@ #pragma once -#include "src/Core/Object/Object.h" +#include "Component.h" + #include "src/Core/Core.h" #include "src/Resource/Serializable.h" #include "src/Rendering/Textures/Texture.h" @@ -8,7 +9,7 @@ namespace Nuake { - class SpriteComponent + class SpriteComponent : public Component { NUAKECOMPONENT(SpriteComponent, "Sprite") diff --git a/Nuake/src/Scene/Components/UIComponent.h b/Nuake/src/Scene/Components/UIComponent.h index 12245ec6..e5b9debf 100644 --- a/Nuake/src/Scene/Components/UIComponent.h +++ b/Nuake/src/Scene/Components/UIComponent.h @@ -1,33 +1,35 @@ #pragma once -#include "src/Core/Object/Object.h" + +#include "Component.h" +#include "src/Core/Logger.h" + #include "src/Resource/UUID.h" #include "src/Resource/Serializable.h" namespace Nuake { - struct UIComponent - { - NUAKECOMPONENT(UIComponent, "UI Component"); + struct UIComponent : public Component + { + NUAKECOMPONENT(UIComponent, "UI") - UUID UIResource = UUID(0); - std::string CSharpUIController; - std::string UIFilePath; - bool IsWorldSpace; - // TODO: Z-Ordering + public: + UUID UIResource = UUID(0); + std::string CSharpUIController; + std::string UIFilePath; + bool IsWorldSpace; + // TODO: Z-Ordering - json Serialize() - { - BEGIN_SERIALIZE(); - SERIALIZE_VAL(UIFilePath); - SERIALIZE_VAL(IsWorldSpace); - END_SERIALIZE(); - } + json Serialize() + { + BEGIN_SERIALIZE(); + SERIALIZE_VAL(UIFilePath); + END_SERIALIZE(); + } - bool Deserialize(const json& j) - { - DESERIALIZE_VAL(UIFilePath); - DESERIALIZE_VAL(IsWorldSpace); - return true; - } - }; -} \ No newline at end of file + bool Deserialize(const json& j) + { + DESERIALIZE_VAL(UIFilePath); + return true; + } + }; +} diff --git a/Nuake/src/Scene/Components/BaseComponent.h b/Nuake/src/Scene/Components/VisibilityComponent.h similarity index 100% rename from Nuake/src/Scene/Components/BaseComponent.h rename to Nuake/src/Scene/Components/VisibilityComponent.h diff --git a/Nuake/src/Scene/Entities/Entity.h b/Nuake/src/Scene/Entities/Entity.h index 2abff3dc..b64d3137 100644 --- a/Nuake/src/Scene/Entities/Entity.h +++ b/Nuake/src/Scene/Entities/Entity.h @@ -4,7 +4,6 @@ #include "src/Core/Logger.h" #include "../Scene.h" -#include "../Components/BaseComponent.h" #include "../Resource/Serializable.h" #include "../Components/NameComponent.h"