From d9cf4070a833522ed19b8f5ad2bcd0a6ebcbd9c4 Mon Sep 17 00:00:00 2001 From: Dejan Trajkovic Date: Fri, 9 Apr 2021 18:10:11 +0200 Subject: [PATCH] Fixing linux build (2) #5 --- MoravaEngine/src/EnvMap/EnvMapEditorLayer.cpp | 2 +- MoravaEngine/src/Hazel/Core/Assert.h | 10 ++++++++-- .../src/Hazel/Editor/SceneHierarchyPanel.cpp | 3 ++- .../src/Hazel/Renderer/SceneRenderer.cpp | 11 ++++++----- MoravaEngine/src/Hazel/Renderer/SceneRenderer.h | 7 ++++--- MoravaEngine/src/Hazel/Scene/Entity.cpp | 17 +---------------- MoravaEngine/src/Hazel/Scene/Entity.h | 6 +++--- MoravaEngine/src/Hazel/Scene/HazelScene.cpp | 14 +++++++------- MoravaEngine/src/Hazel/Script/ScriptEngine.cpp | 9 +++++---- .../src/Hazel/Script/ScriptWrappers.cpp | 14 +++++++------- 10 files changed, 44 insertions(+), 49 deletions(-) diff --git a/MoravaEngine/src/EnvMap/EnvMapEditorLayer.cpp b/MoravaEngine/src/EnvMap/EnvMapEditorLayer.cpp index fae1467e..33b86375 100644 --- a/MoravaEngine/src/EnvMap/EnvMapEditorLayer.cpp +++ b/MoravaEngine/src/EnvMap/EnvMapEditorLayer.cpp @@ -2030,7 +2030,7 @@ bool EnvMapEditorLayer::OnMouseButtonPressed(MouseButtonPressedEvent& e) else { Ref meshEntity = GetMeshEntity(); if (meshEntity) { - m_CurrentlySelectedTransform = &meshEntity->Transform(); + m_CurrentlySelectedTransform = &meshEntity->Transform().GetTransform(); } } } diff --git a/MoravaEngine/src/Hazel/Core/Assert.h b/MoravaEngine/src/Hazel/Core/Assert.h index 362022af..2fde569a 100644 --- a/MoravaEngine/src/Hazel/Core/Assert.h +++ b/MoravaEngine/src/Hazel/Core/Assert.h @@ -5,13 +5,19 @@ #include +#ifdef HZ_PLATFORM_WINDOWS +#define HZ_DEBUGBREAK __debugbreak() +#elif HZ_PLATFORM_LINUX +#define HZ_DEBUGBREAK raise(SIGTRAP) +#endif + #ifdef HZ_DEBUG #define HZ_ENABLE_ASSERTS #endif #ifdef HZ_ENABLE_ASSERTS - #define HZ_ASSERT_NO_MESSAGE(condition) { if(!(condition)) { HZ_ERROR("Assertion Failed"); raise(SIGTRAP); } } // __debugbreak() not supported by GCC - #define HZ_ASSERT_MESSAGE(condition, ...) { if(!(condition)) { HZ_ERROR("Assertion Failed: {0}", __VA_ARGS__); raise(SIGTRAP); } } // __debugbreak() not supported by GCC + #define HZ_ASSERT_NO_MESSAGE(condition) { if(!(condition)) { HZ_ERROR("Assertion Failed"); HZ_DEBUGBREAK; } } // __debugbreak() not supported by GCC + #define HZ_ASSERT_MESSAGE(condition, ...) { if(!(condition)) { HZ_ERROR("Assertion Failed: {0}", __VA_ARGS__); HZ_DEBUGBREAK; } } // __debugbreak() not supported by GCC #define HZ_ASSERT_RESOLVE(arg1, arg2, macro, ...) macro #define HZ_GET_ASSERT_MACRO(...) HZ_EXPAND_VARGS(HZ_ASSERT_RESOLVE(__VA_ARGS__, HZ_ASSERT_MESSAGE, HZ_ASSERT_NO_MESSAGE)) diff --git a/MoravaEngine/src/Hazel/Editor/SceneHierarchyPanel.cpp b/MoravaEngine/src/Hazel/Editor/SceneHierarchyPanel.cpp index 7f9b3582..9f0ab14c 100644 --- a/MoravaEngine/src/Hazel/Editor/SceneHierarchyPanel.cpp +++ b/MoravaEngine/src/Hazel/Editor/SceneHierarchyPanel.cpp @@ -34,7 +34,8 @@ namespace Hazel UUID selectedEntityID = EntitySelection::s_SelectionContext[0].Entity.GetUUID(); if (entityMap.find(selectedEntityID) != entityMap.end()) { - EnvMapEditorLayer::AddSubmeshToSelectionContext(SelectedSubmesh({ entityMap.at(selectedEntityID), new Hazel::Submesh(), 0 })); + entt::entity entityID = entityMap.at(selectedEntityID); + EnvMapEditorLayer::AddSubmeshToSelectionContext(SelectedSubmesh({ Entity(entityID, scene.Raw()) , new Hazel::Submesh(), 0 })); } } } diff --git a/MoravaEngine/src/Hazel/Renderer/SceneRenderer.cpp b/MoravaEngine/src/Hazel/Renderer/SceneRenderer.cpp index c515b963..1eb6acb2 100644 --- a/MoravaEngine/src/Hazel/Renderer/SceneRenderer.cpp +++ b/MoravaEngine/src/Hazel/Renderer/SceneRenderer.cpp @@ -115,12 +115,12 @@ namespace Hazel { FlushDrawList(); } - void SceneRenderer::SubmitMesh(Hazel::MeshComponent meshComponent, Hazel::TransformComponent transformComponent) + void SceneRenderer::SubmitMesh(MeshComponent meshComponent, TransformComponent transformComponent) { SubmitMesh(meshComponent.Mesh, transformComponent.GetTransform(), nullptr); } - void SceneRenderer::SubmitSelectedMesh(Hazel::MeshComponent meshComponent, Hazel::TransformComponent transformComponent) + void SceneRenderer::SubmitSelectedMesh(MeshComponent meshComponent, TransformComponent transformComponent) { SubmitSelectedMesh(meshComponent.Mesh, transformComponent.GetTransform()); } @@ -158,9 +158,9 @@ namespace Hazel { glGenerateTextureMipmap(envUnfiltered->GetID()); }); - - if (!envFilteringShader) + if (!envFilteringShader) { envFilteringShader = HazelShader::Create("assets/shaders/EnvironmentMipFilter.glsl"); + } Ref envFiltered = HazelTextureCube::Create(HazelImageFormat::RGBA16F, cubemapSize, cubemapSize); @@ -185,8 +185,9 @@ namespace Hazel { } }); - if (!envIrradianceShader) + if (!envIrradianceShader) { envIrradianceShader = HazelShader::Create("assets/shaders/EnvironmentIrradiance.glsl"); + } Ref irradianceMap = HazelTextureCube::Create(HazelImageFormat::RGBA16F, irradianceMapSize, irradianceMapSize); envIrradianceShader->Bind(); diff --git a/MoravaEngine/src/Hazel/Renderer/SceneRenderer.h b/MoravaEngine/src/Hazel/Renderer/SceneRenderer.h index 6e7d3c44..c56254dd 100644 --- a/MoravaEngine/src/Hazel/Renderer/SceneRenderer.h +++ b/MoravaEngine/src/Hazel/Renderer/SceneRenderer.h @@ -1,6 +1,7 @@ #pragma once -#include "../Scene/HazelScene.h" +#include "Hazel/Scene/HazelScene.h" +#include "Hazel/Scene/Components.h" #include "HazelMesh.h" #include "RenderPass.h" @@ -32,8 +33,8 @@ namespace Hazel { static void EndScene(); // old? - static void SubmitMesh(Hazel::MeshComponent meshComponent, Hazel::TransformComponent transformComponent); - static void SubmitSelectedMesh(Hazel::MeshComponent meshComponent, Hazel::TransformComponent transformComponent); + static void SubmitMesh(MeshComponent meshComponent, TransformComponent transformComponent); + static void SubmitSelectedMesh(MeshComponent meshComponent, TransformComponent transformComponent); // new? static void SubmitMesh(Ref mesh, const glm::mat4& transform = glm::mat4(1.0f), Ref overrideMaterial = nullptr); diff --git a/MoravaEngine/src/Hazel/Scene/Entity.cpp b/MoravaEngine/src/Hazel/Scene/Entity.cpp index 185d2454..77ca05eb 100644 --- a/MoravaEngine/src/Hazel/Scene/Entity.cpp +++ b/MoravaEngine/src/Hazel/Scene/Entity.cpp @@ -12,24 +12,9 @@ namespace Hazel { m_Scene = nullptr; } - Entity::Entity(entt::entity handle, Ref scene) + Entity::Entity(entt::entity handle, HazelScene* scene) : m_EntityHandle(handle), m_Scene(scene) { } - glm::mat4& Entity::Transform() - { - return m_Scene->m_Registry.get(m_EntityHandle).GetTransform(); - } - - const glm::mat4& Entity::Transform() const - { - return m_Scene->m_Registry.get(m_EntityHandle).GetTransform(); - } - - UUID Entity::GetSceneUUID() - { - return m_Scene->GetUUID(); - } - } diff --git a/MoravaEngine/src/Hazel/Scene/Entity.h b/MoravaEngine/src/Hazel/Scene/Entity.h index d0684926..8df8bf1f 100644 --- a/MoravaEngine/src/Hazel/Scene/Entity.h +++ b/MoravaEngine/src/Hazel/Scene/Entity.h @@ -48,8 +48,8 @@ namespace Hazel { m_Scene->m_Registry.remove(m_EntityHandle); } - glm::mat4& Transform(); - const glm::mat4& Transform() const; + TransformComponent& Transform() { return m_Scene->m_Registry.get(m_EntityHandle); } + const glm::mat4& Transform() const { return m_Scene->m_Registry.get(m_EntityHandle).GetTransform(); } void SetMaterial(Material* material) { m_Material = material; } Material* GetMaterial() { return m_Material; } @@ -67,7 +67,7 @@ namespace Hazel { UUID GetUUID() { return GetComponent().ID; } - UUID GetSceneUUID(); + UUID GetSceneUUID() { return m_Scene->GetUUID(); } inline uint32_t GetHandle() { return (uint32_t)m_EntityHandle; } diff --git a/MoravaEngine/src/Hazel/Scene/HazelScene.cpp b/MoravaEngine/src/Hazel/Scene/HazelScene.cpp index af041615..3857cd84 100644 --- a/MoravaEngine/src/Hazel/Scene/HazelScene.cpp +++ b/MoravaEngine/src/Hazel/Scene/HazelScene.cpp @@ -182,15 +182,15 @@ namespace Hazel { for (auto entity : view) { Entity e = { entity, this }; - auto& transform = e.Transform(); + auto& tc = e.Transform(); auto& rb2d = e.GetComponent(); b2Body* body = static_cast(rb2d.RuntimeBody); auto& position = body->GetPosition(); - auto [translation, rotationQuat, scale] = Math::GetTransformDecomposition(transform); + auto [translation, rotationQuat, scale] = Math::GetTransformDecomposition(tc.GetTransform()); glm::vec3 rotation = glm::eulerAngles(rotationQuat); - transform = glm::translate(glm::mat4(1.0f), { position.x, position.y, transform[3].z }) * + tc.GetTransform() = glm::translate(glm::mat4(1.0f), { position.x, position.y, tc.GetTransform()[3].z }) * glm::toMat4(glm::quat({ rotation.x, rotation.y, body->GetAngle() })) * glm::scale(glm::mat4(1.0f), scale); } @@ -348,7 +348,7 @@ namespace Hazel { Entity HazelScene::CreateEntity(const std::string& name, Ref scene) { Entity entity = CreateEntity(name); - entity.m_Scene = scene; + entity.m_Scene = scene.Raw(); return entity; } @@ -625,7 +625,7 @@ namespace Hazel { { Entity e = { entity, this }; UUID entityID = e.GetComponent().ID; - auto& transform = e.Transform(); + auto& tc = e.Transform(); auto& rigidBody2D = m_Registry.get(entity); b2BodyDef bodyDef; @@ -638,9 +638,9 @@ namespace Hazel { else if (rigidBody2D.BodyType == RigidBody2DComponent::Type::Kinematic) { bodyDef.type = b2_kinematicBody; } - bodyDef.position.Set(transform[3].x, transform[3].y); + bodyDef.position.Set(tc.GetTransform()[3].x, tc.GetTransform()[3].y); - auto [translation, rotationQuat, scale] = Math::GetTransformDecomposition(transform); + auto [translation, rotationQuat, scale] = Math::GetTransformDecomposition(tc.GetTransform()); glm::vec3 rotation = glm::eulerAngles(rotationQuat); bodyDef.angle = rotation.z; diff --git a/MoravaEngine/src/Hazel/Script/ScriptEngine.cpp b/MoravaEngine/src/Hazel/Script/ScriptEngine.cpp index d63802c6..d0f25fb9 100644 --- a/MoravaEngine/src/Hazel/Script/ScriptEngine.cpp +++ b/MoravaEngine/src/Hazel/Script/ScriptEngine.cpp @@ -278,7 +278,7 @@ namespace Hazel { const auto& entityMap = scene->GetEntityMap(); HZ_CORE_ASSERT(entityMap.find(entityID) != entityMap.end(), "Invalid entity ID or entity doesn't exist in scene!"); - InitScriptEntity(entityMap.at(entityID)); + InitScriptEntity({ entityMap.at(entityID), scene.Raw() }); } } } @@ -466,7 +466,7 @@ namespace Hazel void ScriptEngine::InitScriptEntity(Entity entity) { - HazelScene* scene = entity.m_Scene.Raw(); + HazelScene* scene = entity.m_Scene; UUID id = entity.GetComponent().ID; auto& moduleName = entity.GetComponent().ModuleName; if (moduleName.empty()) @@ -549,7 +549,7 @@ namespace Hazel void ScriptEngine::InstantiateEntityClass(Entity entity) { - HazelScene* scene = entity.m_Scene.Raw(); + HazelScene* scene = entity.m_Scene; UUID id = entity.GetComponent().ID; auto& moduleName = entity.GetComponent().ModuleName; @@ -691,7 +691,8 @@ namespace Hazel Ref scene = HazelScene::GetScene(sceneID); for (auto& [entityID, entityInstanceData] : entityMap) { - Entity entity = scene->GetScene(sceneID)->GetEntityMap().at(entityID); + auto entityHandle = scene->GetScene(sceneID)->GetEntityMap().at(entityID); + Entity entity = { entityHandle, scene.Raw() }; std::string entityName = "Unnamed Entity"; if (entity.HasComponent()) entityName = entity.GetComponent().Tag; diff --git a/MoravaEngine/src/Hazel/Script/ScriptWrappers.cpp b/MoravaEngine/src/Hazel/Script/ScriptWrappers.cpp index 534fcb60..3ab1bdc4 100644 --- a/MoravaEngine/src/Hazel/Script/ScriptWrappers.cpp +++ b/MoravaEngine/src/Hazel/Script/ScriptWrappers.cpp @@ -80,7 +80,7 @@ namespace Hazel { namespace Script { const auto& entityMap = scene->GetEntityMap(); HZ_CORE_ASSERT(entityMap.find(entityID) != entityMap.end(), "Invalid entity ID or entity doesn't exist in scene!"); - Entity entity = entityMap.at(entityID); + Entity entity = { entityMap.at(entityID), scene.Raw() }; auto& transformComponent = entity.GetComponent(); memcpy((void*)glm::value_ptr(transformComponent.GetTransform()), inTransform, sizeof(glm::mat4)); } @@ -92,7 +92,7 @@ namespace Hazel { namespace Script { const auto& entityMap = scene->GetEntityMap(); HZ_CORE_ASSERT(entityMap.find(entityID) != entityMap.end(), "Invalid entity ID or entity doesn't exist in scene!"); - Entity entity = entityMap.at(entityID); + Entity entity = { entityMap.at(entityID), scene.Raw() }; MonoType* monoType = mono_reflection_type_get_type((MonoReflectionType*)type); s_CreateComponentFuncs[monoType](entity); } @@ -104,7 +104,7 @@ namespace Hazel { namespace Script { const auto& entityMap = scene->GetEntityMap(); HZ_CORE_ASSERT(entityMap.find(entityID) != entityMap.end(), "Invalid entity ID or entity doesn't exist in scene!"); - Entity entity = entityMap.at(entityID); + Entity entity = { entityMap.at(entityID), scene.Raw() }; MonoType* monoType = mono_reflection_type_get_type((MonoReflectionType*)type); bool result = s_HasComponentFuncs[monoType](entity); return result; @@ -130,7 +130,7 @@ namespace Hazel { namespace Script { const auto& entityMap = scene->GetEntityMap(); HZ_CORE_ASSERT(entityMap.find(entityID) != entityMap.end(), "Invalid entity ID or entity doesn't exist in scene!"); - Entity entity = entityMap.at(entityID); + Entity entity = { entityMap.at(entityID), scene.Raw() }; auto& meshComponent = entity.GetComponent(); return new Ref(meshComponent.Mesh); @@ -156,7 +156,7 @@ namespace Hazel { namespace Script { const auto& entityMap = scene->GetEntityMap(); HZ_CORE_ASSERT(entityMap.find(entityID) != entityMap.end(), "Invalid entity ID or entity doesn't exist in scene!"); - Entity entity = entityMap.at(entityID); + Entity entity = { entityMap.at(entityID), scene.Raw() }; HZ_CORE_ASSERT(entity.HasComponent()); auto& component = entity.GetComponent(); b2Body* body = (b2Body*)component.RuntimeBody; @@ -170,7 +170,7 @@ namespace Hazel { namespace Script { const auto& entityMap = scene->GetEntityMap(); HZ_CORE_ASSERT(entityMap.find(entityID) != entityMap.end(), "Invalid entity ID or entity doesn't exist in scene!"); - Entity entity = entityMap.at(entityID); + Entity entity = { entityMap.at(entityID), scene.Raw() }; HZ_CORE_ASSERT(entity.HasComponent()); auto& component = entity.GetComponent(); b2Body* body = (b2Body*)component.RuntimeBody; @@ -186,7 +186,7 @@ namespace Hazel { namespace Script { const auto& entityMap = scene->GetEntityMap(); HZ_CORE_ASSERT(entityMap.find(entityID) != entityMap.end(), "Invalid entity ID or entity doesn't exist in scene!"); - Entity entity = entityMap.at(entityID); + Entity entity = { entityMap.at(entityID), scene.Raw() }; HZ_CORE_ASSERT(entity.HasComponent()); auto& component = entity.GetComponent(); b2Body* body = (b2Body*)component.RuntimeBody;