diff --git a/Assets/Application.SHConfig b/Assets/Application.SHConfig index c9b34a7a..3f7a4ac0 100644 --- a/Assets/Application.SHConfig +++ b/Assets/Application.SHConfig @@ -1,4 +1,4 @@ Start in Fullscreen: false -Starting Scene ID: 94246101 +Starting Scene ID: 94283040 Window Size: {x: 1920, y: 1080} Window Title: SHADE Engine \ No newline at end of file diff --git a/Assets/Scenes/UI Test.shade b/Assets/Scenes/UI Test.shade deleted file mode 100644 index b6aab1a1..00000000 --- a/Assets/Scenes/UI Test.shade +++ /dev/null @@ -1,79 +0,0 @@ -- EID: 0 - Name: Canvas - IsActive: true - NumberOfChildren: 1 - Components: - Canvas Component: - Canvas Width: 10 - Canvas Height: 10 - IsActive: true - Scripts: ~ -- EID: 6 - Name: Default - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 0, y: 0, z: 0} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 141771688 - Material: 129340704 - IsActive: true - Scripts: ~ -- EID: 1 - Name: Camera - IsActive: true - NumberOfChildren: 0 - Components: - Camera Component: - Position: {x: 0, y: 3, z: 8} - Pitch: 0 - Yaw: 0 - Roll: 0 - Width: 1920 - Height: 1080 - Near: 0.00999999978 - Far: 10000 - Perspective: true - IsActive: true - Light Component: - Position: {x: 0, y: 0, z: 0} - Type: Directional - Direction: {x: 1.79999995, y: 0, z: 1} - Color: {x: 0.951541841, y: 0.921719015, z: 0.553319454, w: 1} - Layer: 4294967295 - Strength: 0 - IsActive: true - Scripts: ~ -- EID: 7 - Name: BigBoi - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 0, y: -16.8647861, z: -14.039052} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 28.1434975, y: 28.1434975, z: 28.1434975} - IsActive: true - Renderable Component: - Mesh: 149697411 - Material: 126974645 - IsActive: true - Scripts: ~ -- EID: 8 - Name: AmbientLight - IsActive: true - NumberOfChildren: 0 - Components: - Light Component: - Position: {x: 0, y: 0, z: 0} - Type: Ambient - Direction: {x: 0, y: 0, z: 1} - Color: {x: 1, y: 1, z: 1, w: 1} - Layer: 4294967295 - Strength: 0.25 - IsActive: true - Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/UI Test.shade.shmeta b/Assets/Scenes/UI Test.shade.shmeta deleted file mode 100644 index 0e80f988..00000000 --- a/Assets/Scenes/UI Test.shade.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: UI Test -ID: 96139961 -Type: 5 diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 06c42d2d..1a00941f 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -126,9 +126,7 @@ namespace Sandbox //SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); - SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); - SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); #ifdef SHEDITOR diff --git a/SHADE_CSharp/premake5.lua b/SHADE_CSharp/premake5.lua index 8844b84c..f735b515 100644 --- a/SHADE_CSharp/premake5.lua +++ b/SHADE_CSharp/premake5.lua @@ -53,15 +53,16 @@ project "SHADE_CSharp" function configElementCS(cfg) _p(2,'Debug;Release;Publish') end - function docsElementCS(cfg) - _p(2,'true') - end - function docsLocationElementCS(cfg) - _p(2,'$(OutDir)') - end + -- function docsElementCS(cfg) + -- _p(2,'true') + -- end + -- function docsLocationElementCS(cfg) + -- _p(2,'$(OutDir)') + -- end premake.override(premake.vstudio.cs2005.elements, "projectProperties", function (oldfn, cfg) return table.join(oldfn(cfg), { - platformsElementCS, configElementCS, docsElementCS, docsLocationElementCS, +-- platformsElementCS, configElementCS, docsElementCS, docsLocationElementCS, + platformsElementCS, configElementCS, }) end) \ No newline at end of file diff --git a/SHADE_Engine/src/Camera/SHCameraDirector.cpp b/SHADE_Engine/src/Camera/SHCameraDirector.cpp index 7d5ec6f2..1f97160c 100644 --- a/SHADE_Engine/src/Camera/SHCameraDirector.cpp +++ b/SHADE_Engine/src/Camera/SHCameraDirector.cpp @@ -90,22 +90,5 @@ namespace SHADE return SHMatrix::Identity; } - float SHCameraDirector::GetWidth() noexcept - { - SHCameraComponent* camComponent = GetMainCameraComponent(); - if (camComponent) - return camComponent->GetWidth(); - else - return 0.0f; - } - - float SHCameraDirector::GetHeight() noexcept - { - SHCameraComponent* camComponent = GetMainCameraComponent(); - if (camComponent) - return camComponent->GetHeight(); - else - return 0.0f; - } } diff --git a/SHADE_Engine/src/Camera/SHCameraDirector.h b/SHADE_Engine/src/Camera/SHCameraDirector.h index 381531d6..8538a824 100644 --- a/SHADE_Engine/src/Camera/SHCameraDirector.h +++ b/SHADE_Engine/src/Camera/SHCameraDirector.h @@ -30,8 +30,6 @@ namespace SHADE void SetMainCamera(SHCameraComponent& cam) noexcept; SHMatrix const& GetOrthoMatrix() noexcept; SHMatrix const& GetPerspectiveMatrix() noexcept; - float GetWidth() noexcept; - float GetHeight() noexcept; private: SHMatrix viewMatrix; diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.cpp b/SHADE_Engine/src/Camera/SHCameraSystem.cpp index 30bdec29..489b05a1 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.cpp +++ b/SHADE_Engine/src/Camera/SHCameraSystem.cpp @@ -57,8 +57,6 @@ namespace SHADE //std::cout << camera.yaw << std::endl; - - camera.pitch -= mouseY * dt * camera.turnSpeed.x; camera.yaw -= mouseX * dt * camera.turnSpeed.y; camera.dirtyView = true; @@ -152,8 +150,6 @@ namespace SHADE void SHCameraSystem::UpdateCameraComponent(SHCameraComponent& camera) noexcept { - - if (camera.isActive == false) return; diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp index 83647da7..c4287e6f 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp @@ -20,7 +20,6 @@ #include "Camera/SHCameraArmComponent.h" #include "UI/SHUIComponent.h" #include "UI/SHCanvasComponent.h" -#include "UI/SHButtonComponent.h" #include "SHEditorComponentView.h" #include "AudioSystem/SHAudioListenerComponent.h" #include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h" @@ -150,10 +149,6 @@ namespace SHADE { DrawComponent(textRendererComponent); } - if (auto buttonComponent = SHComponentManager::GetComponent_s(eid)) - { - DrawComponent(buttonComponent); - } ImGui::Separator(); // Render Scripts SHScriptEngine* scriptEngine = static_cast(SHSystemManager::GetSystem()); @@ -166,7 +161,6 @@ namespace SHADE DrawAddComponentButton(eid); DrawAddComponentButton(eid); DrawAddComponentButton(eid); - DrawAddComponentButton(eid); // Components that require Transforms diff --git a/SHADE_Engine/src/Editor/SHEditorWidgets.hpp b/SHADE_Engine/src/Editor/SHEditorWidgets.hpp index 403992cc..2681e916 100644 --- a/SHADE_Engine/src/Editor/SHEditorWidgets.hpp +++ b/SHADE_Engine/src/Editor/SHEditorWidgets.hpp @@ -454,12 +454,12 @@ namespace SHADE ImGui::BeginGroup(); ImGui::PushID(label.data()); TextLabel(label); - const bool hasChange = ImGui::InputScalar("##dragScalar", data_type, &value); + const bool hasChange = ImGui::DragScalar("##dragScalar", data_type, &value, speed, &p_min, &p_max, displayFormat, flags); static bool startRecording = false; if (hasChange) { SHCommandManager::PerformCommand(std::reinterpret_pointer_cast(std::make_shared>(get(), value, set)), startRecording); - if (!startRecording && ImGui::IsMouseDown(ImGuiMouseButton_Left)) + if (!startRecording) startRecording = true; } if (startRecording && ImGui::IsMouseReleased(ImGuiMouseButton_Left)) @@ -477,7 +477,7 @@ namespace SHADE ImGui::EndTooltip(); } } - return false; + return hasChange; } static bool DragFloat(const std::string_view& label, std::function get, std::function set, std::string_view const& tooltip = {}, diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp index afa2f9e0..9b4b02b0 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp @@ -313,8 +313,7 @@ namespace SHADE auto uiComp = SHComponentManager::GetComponent_s(rendId); if (uiComp) { - if(uiComp->isActive) - transformData.emplace_back(uiComp->GetMatrix()); + transformData.emplace_back(uiComp->GetMatrix()); } else transformData.emplace_back(transform->GetTRS()); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp index 58993026..ec19691f 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp @@ -55,11 +55,7 @@ namespace SHADE void SHSuperBatch::Remove(const SHRenderable* renderable) noexcept { - Handle matInst = renderable->HasMaterialChanged() ? renderable->GetPrevMaterial() : renderable->GetMaterial(); - if (!matInst) - return; - - Handle baseMat = matInst->GetBaseMaterial(); + Handle baseMat = (renderable->HasMaterialChanged() ? renderable->GetPrevMaterial() : renderable->GetMaterial())->GetBaseMaterial(); const Handle PIPELINE = baseMat->HasPipelineChanged() ? baseMat->GetPrevPipeline() : baseMat->GetPipeline(); // Check if we have a Batch with the same pipeline yet diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index 03ca0b3d..af09c819 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -968,7 +968,7 @@ namespace SHADE for (auto& renderable : renderables) { // Check if the material instance is now unused - renderable.CleanUpMaterials(); + renderable.CleanUpMaterials(); if (!renderable.HasChanged()) continue; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp index 5dc5d22c..c7578137 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp @@ -34,10 +34,9 @@ namespace SHADE void SHRenderable::OnDestroy() { // Remove from SuperBatch - auto currMat = GetMaterial(); - if (currMat) + if (sharedMaterial) { - Handle superBatch = currMat->GetBaseMaterial()->GetPipeline()->GetPipelineState().GetSubpass()->GetSuperBatch(); + Handle superBatch = sharedMaterial->GetBaseMaterial()->GetPipeline()->GetPipelineState().GetSubpass()->GetSuperBatch(); superBatch->Remove(this); } @@ -65,6 +64,7 @@ namespace SHADE if (material) { oldMaterial = material; + material.Free(); material = {}; } else if (sharedMaterial) @@ -150,8 +150,6 @@ namespace SHADE { matChanged = false; meshChanged = false; - if (oldMaterial) - oldMaterial.Free(); oldMaterial = {}; oldMesh = {}; } diff --git a/SHADE_Engine/src/Math/Transform/SHTransformSystem.cpp b/SHADE_Engine/src/Math/Transform/SHTransformSystem.cpp index 38d44984..94c133dd 100644 --- a/SHADE_Engine/src/Math/Transform/SHTransformSystem.cpp +++ b/SHADE_Engine/src/Math/Transform/SHTransformSystem.cpp @@ -47,14 +47,14 @@ namespace SHADE { // Get the current scene graph to traverse and update const auto& SCENE_GRAPH = SHSceneManager::GetCurrentSceneGraph(); - UpdateEntity(SCENE_GRAPH.GetRoot(), false); + UpdateEntity(SCENE_GRAPH.GetRoot(), !IsRunInEditorPause); } void SHTransformSystem::TransformPostPhysicsUpdate::Execute(double) noexcept { // Get the current scene graph to traverse and update const auto& SCENE_GRAPH = SHSceneManager::GetCurrentSceneGraph(); - UpdateEntity(SCENE_GRAPH.GetRoot(), true); + UpdateEntity(SCENE_GRAPH.GetRoot(), IsRunInEditorPause); } void SHTransformSystem::Init() diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp index 24bd2f81..45f236f3 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp @@ -302,12 +302,9 @@ namespace SHADE { colliderComponent->position = WORLD_POS; colliderComponent->orientation = WORLD_ROT; + colliderComponent->scale = WORLD_SCL; - if (colliderComponent->scale != WORLD_SCL) - { - colliderComponent->scale = WORLD_SCL; - colliderComponent->RecomputeCollisionShapes(); - } + colliderComponent->RecomputeCollisionShapes(); } } @@ -328,11 +325,7 @@ namespace SHADE if (physicsObject.GetRigidBody()->isActive()) physicsObject.prevTransform = CURRENT_TF; - // Skip sleeping objects - if (physicsObject.GetRigidBody()->isSleeping()) - return; - - // Sync with rigid bodies + // Sync with rigid bodies. If an object doesn't have a rigidbody, no update is needed here as it is done in pre-update. if (rigidBodyComponent && SHSceneManager::CheckNodeAndComponentsActive(physicsObject.entityID)) { // Skip static bodies diff --git a/SHADE_Engine/src/Serialization/SHSerialization.cpp b/SHADE_Engine/src/Serialization/SHSerialization.cpp index 99e4fa41..be7c9cf0 100644 --- a/SHADE_Engine/src/Serialization/SHSerialization.cpp +++ b/SHADE_Engine/src/Serialization/SHSerialization.cpp @@ -12,12 +12,9 @@ #include "Assets/Asset Types/SHSceneAsset.h" #include "Camera/SHCameraComponent.h" -#include "Camera/SHCameraArmComponent.h" #include "Math/Transform/SHTransformComponent.h" #include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Physics/Interface/SHRigidBodyComponent.h" -#include "UI/SHCanvasComponent.h" -#include "UI/SHButtonComponent.h" #include "ECS_Base/Managers/SHSystemManager.h" #include "Graphics/MiddleEnd/Lights/SHLightComponent.h" #include "Scripting/SHScriptEngine.h" @@ -210,15 +207,10 @@ namespace SHADE AddComponentToComponentNode(components, eid); AddComponentToComponentNode(components, eid); - AddComponentToComponentNode(components, eid); AddConvComponentToComponentNode(components, eid); AddComponentToComponentNode(components, eid); AddComponentToComponentNode(components, eid); AddConvComponentToComponentNode(components, eid); - - AddComponentToComponentNode(components, eid); - AddComponentToComponentNode(components, eid); - AddConvComponentToComponentNode(components, eid); node[ComponentsNode] = components; @@ -267,14 +259,10 @@ namespace SHADE AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); - AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); - - AddComponentID(componentIDList, componentsNode); - AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); return componentIDList; @@ -349,13 +337,9 @@ namespace SHADE return; SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); - SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); SHSerializationHelper::ConvertNodeToComponent(componentsNode, eid); SHSerializationHelper::ConvertNodeToComponent(componentsNode, eid); - - SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); - SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); SHSerializationHelper::ConvertNodeToComponent(componentsNode, eid); SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); } diff --git a/SHADE_Engine/src/UI/SHButtonComponent.cpp b/SHADE_Engine/src/UI/SHButtonComponent.cpp deleted file mode 100644 index 7b275128..00000000 --- a/SHADE_Engine/src/UI/SHButtonComponent.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "SHpch.h" -#include "SHButtonComponent.h" - - -namespace SHADE -{ - SHButtonComponent::SHButtonComponent() - :size(1.0f), offset(0.0f), isHovered(false), isClicked(false), - defaultTexture(0), hoveredTexture(0), clickedTexture(0) - { - } - - AssetID SHButtonComponent::GetDefaultTexture() const noexcept - { - return defaultTexture; - } - - AssetID SHButtonComponent::GetHoveredTexture() const noexcept - { - return hoveredTexture; - } - - AssetID SHButtonComponent::GetClickedTexture() const noexcept - { - return clickedTexture; - } - - void SHButtonComponent::SetDefaultTexture(AssetID texture) noexcept - { - defaultTexture = texture; - } - - void SHButtonComponent::SetHoveredTexture(AssetID texture) noexcept - { - hoveredTexture = texture; - } - - void SHButtonComponent::SetClickedTexture(AssetID texture) noexcept - { - clickedTexture = texture; - } - -} - - -RTTR_REGISTRATION -{ - using namespace SHADE; - using namespace rttr; - - registration::class_("Button Component") - .property("Default Texture", &SHButtonComponent::GetDefaultTexture, &SHButtonComponent::SetDefaultTexture) - .property("Hovered Texture", &SHButtonComponent::GetHoveredTexture, &SHButtonComponent::SetHoveredTexture) - .property("Clicked Texture", &SHButtonComponent::GetClickedTexture, &SHButtonComponent::SetClickedTexture) - ; - - -} \ No newline at end of file diff --git a/SHADE_Engine/src/UI/SHButtonComponent.h b/SHADE_Engine/src/UI/SHButtonComponent.h deleted file mode 100644 index 39790b6a..00000000 --- a/SHADE_Engine/src/UI/SHButtonComponent.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include - -#include "SH_API.h" -#include "ECS_Base/Components/SHComponent.h" -#include "Math/Vector/SHVec3.h" -#include "Math/Vector/SHVec2.h" -#include "Assets/SHAssetMacros.h" - -namespace SHADE -{ - - class SH_API SHButtonComponent final: public SHComponent - { - public: - SHButtonComponent(); - virtual ~SHButtonComponent() = default; - - SHVec2 size; - SHVec2 offset; - - AssetID GetClickedTexture() const noexcept; - AssetID GetDefaultTexture() const noexcept; - AssetID GetHoveredTexture() const noexcept; - - - void SetDefaultTexture(AssetID texture) noexcept; - void SetHoveredTexture(AssetID texture) noexcept; - void SetClickedTexture(AssetID texture) noexcept; - - - - friend class SHUISystem; - private: - - bool isHovered; - bool isClicked; - AssetID defaultTexture; - AssetID hoveredTexture; - AssetID clickedTexture; - - - RTTR_ENABLE() - }; - - -} \ No newline at end of file diff --git a/SHADE_Engine/src/UI/SHUISystem.cpp b/SHADE_Engine/src/UI/SHUISystem.cpp index 247eb6cc..d7dfe3c5 100644 --- a/SHADE_Engine/src/UI/SHUISystem.cpp +++ b/SHADE_Engine/src/UI/SHUISystem.cpp @@ -3,13 +3,6 @@ #include "ECS_Base/Managers/SHComponentManager.h" #include "ECS_Base/Managers/SHSystemManager.h" #include "Math/Transform/SHTransformComponent.h" -#include "Graphics/MiddleEnd/Interface/SHRenderable.h" -#include "Camera/SHCameraSystem.h" -#include "Editor/EditorWindow/SHEditorWindowManager.h" -#include "Editor/EditorWindow/ViewportWindow/SHEditorViewport.h" -#include "Editor/SHEditor.h" -#include "Resource/SHResourceManager.h" -#include "Input/SHInputManager.h" namespace SHADE { @@ -19,7 +12,6 @@ namespace SHADE SystemFamily::GetID(); SHComponentManager::CreateComponentSparseSet(); SHComponentManager::CreateComponentSparseSet(); - SHComponentManager::CreateComponentSparseSet(); } void SHUISystem::Exit() @@ -103,7 +95,7 @@ namespace SHADE { auto transform = SHComponentManager::GetComponent(comp.GetEID()); if (canvasComp != nullptr) - comp.localToCanvasMatrix = canvasComp->GetMatrix()* transform->GetTRS(); + comp.localToCanvasMatrix = canvasComp->GetMatrix() * transform->GetTRS(); else comp.localToCanvasMatrix = transform->GetTRS(); } @@ -116,125 +108,6 @@ namespace SHADE } } - void SHUISystem::UpdateCanvasComponent(SHCanvasComponent& comp) noexcept - { - auto cameraSystem = SHSystemManager::GetSystem(); -#ifdef SHEDITOR - auto editor = SHSystemManager::GetSystem(); - if (editor->editorState != SHEditor::State::PLAY) - { - comp.canvasMatrix = SHMatrix::Identity; - comp.canvasMatrix(0, 0) = cameraSystem->GetEditorCamera()->GetWidth() * 0.5f / (comp.GetCanvasWidth() * 0.5f); - comp.canvasMatrix(1, 1) = cameraSystem->GetEditorCamera()->GetHeight() * 0.5f / (comp.GetCanvasHeight() * 0.5f); - } - else - { - comp.canvasMatrix = SHMatrix::Identity; - comp.canvasMatrix(0, 0) = cameraSystem->GetDirector(0)->GetWidth() * 0.5f / (comp.GetCanvasWidth() * 0.5f); - comp.canvasMatrix(1, 1) = cameraSystem->GetDirector(0)->GetHeight() * 0.5f / (comp.GetCanvasHeight() * 0.5f); - } -#else - comp.canvasMatrix = SHMatrix::Identity; - comp.canvasMatrix(0, 0) = cameraSystem->GetDirector(0)->GetWidth() * 0.5f / (comp.GetCanvasWidth() * 0.5f ); - comp.canvasMatrix(1, 1) = cameraSystem->GetDirector(0)->GetHeight() * 0.5f / (comp.GetCanvasHeight() * 0.5f ); -#endif - } - - void SHUISystem::UpdateCanvasMatrixRoutine::Execute(double dt) noexcept - { - SHUISystem* system = (SHUISystem*)GetSystem(); - auto& dense = SHComponentManager::GetDense(); - for (auto& comp : dense) - { - if(SHSceneManager::CheckNodeAndComponentsActive(comp.GetEID())) - system->UpdateCanvasComponent(comp); - } - } - - - void SHUISystem::UpdateButtonComponent(SHButtonComponent& comp) noexcept - { - if (!SHComponentManager::HasComponent(comp.GetEID()) || !SHComponentManager::HasComponent(comp.GetEID())) - { - return; - } - auto cameraSystem = SHSystemManager::GetSystem(); - auto uiComp = SHComponentManager::GetComponent(comp.GetEID()); - - SHVec4 topExtent4 = uiComp->GetMatrix() * SHVec4(-comp.size.x * 0.5f, comp.size.y * 0.5f , 0.0f,1.0f); - SHVec4 btmExtent4 = uiComp->GetMatrix() * SHVec4(comp.size.x * 0.5f , -comp.size.y * 0.5f , 0.0f, 1.0f); - - SHVec2 topExtent{ topExtent4.x,-topExtent4.y }; - SHVec2 btmExtent{ btmExtent4.x,-btmExtent4.y }; - - - - SHVec2 windowSize; - SHVec2 mousePos; -#ifdef SHEDITOR - - windowSize = SHEditorWindowManager::GetEditorWindow()->windowSize; - mousePos = SHEditorWindowManager::GetEditorWindow()->viewportMousePos; - - - -#endif - - - - SHVec2 camSize{ cameraSystem->GetDirector(0)->GetWidth() , cameraSystem->GetDirector(0)->GetHeight() }; - - topExtent += camSize * 0.5f; - btmExtent += camSize * 0.5f; - - //Convert everything to using ratios - topExtent /= camSize; - btmExtent /= camSize; - - mousePos /= windowSize; - - //SHLOG_INFO("mousePos: {} , {}", mousePos.x, mousePos.y); - comp.isClicked = false; - if (mousePos.x >= topExtent.x && mousePos.x <= btmExtent.x - && mousePos.y >= topExtent.y && mousePos.y <= btmExtent.y) - { - comp.isHovered = true; - if (SHInputManager::GetKeyUp(SHInputManager::SH_KEYCODE::LMB)) - { - comp.isClicked = true; - } - //SHLOG_INFO("BUTTON HOVERED"); - - - } - else - { - comp.isHovered = false; - - //SHLOG_INFO("BUTTON NOT HOVERED") - } - - - if (SHComponentManager::HasComponent(comp.GetEID())) - { - //auto renderable = SHComponentManager::GetComponent_s(comp.GetEID()); - //auto texture = SHResourceManager::Get(comp.GetDefaultTexture()); - - //auto material = renderable->GetModifiableMaterial(); - //material->SetProperty("texture", comp.GetDefaultTexture()); - } - } - - void SHUISystem::UpdateButtonsRoutine::Execute(double dt) noexcept - { - SHUISystem* system = (SHUISystem*)GetSystem(); - auto& dense = SHComponentManager::GetDense(); - for (auto& comp : dense) - { - if (SHSceneManager::CheckNodeAndComponentsActive(comp.GetEID())) - system->UpdateButtonComponent(comp); - } - } }//end namespace diff --git a/SHADE_Engine/src/UI/SHUISystem.h b/SHADE_Engine/src/UI/SHUISystem.h index 04e057ad..3da7efb3 100644 --- a/SHADE_Engine/src/UI/SHUISystem.h +++ b/SHADE_Engine/src/UI/SHUISystem.h @@ -4,7 +4,6 @@ #include "ECS_Base/System/SHSystem.h" #include "ECS_Base/System/SHSystemRoutine.h" #include "SHUIComponent.h" -#include "SHButtonComponent.h" #include "SHCanvasComponent.h" #include "Scene/SHSceneGraph.h" #include "Scene/SHSceneManager.h" @@ -39,23 +38,6 @@ namespace SHADE }; friend class UpdateUIMatrixRoutine; - class SH_API UpdateCanvasMatrixRoutine final: public SHSystemRoutine - { - public: - UpdateCanvasMatrixRoutine() :SHSystemRoutine("Update Canvas Matrix Routine", true) {}; - virtual void Execute(double dt) noexcept override final; - }; - friend class UpdateCanvasMatrixRoutine; - - - class SH_API UpdateButtonsRoutine final: public SHSystemRoutine - { - public: - UpdateButtonsRoutine() : SHSystemRoutine("Update Buttons Routine", true) {}; - virtual void Execute(double dt) noexcept override final; - }; - friend class UpdateButtonsRoutine; - void Init(); void Exit(); @@ -63,8 +45,8 @@ namespace SHADE private: void UpdateUIComponent(SHUIComponent& comp) noexcept; - void UpdateButtonComponent(SHButtonComponent& comp) noexcept; - void UpdateCanvasComponent(SHCanvasComponent& comp) noexcept; + + }; diff --git a/SHADE_Managed/premake5.lua b/SHADE_Managed/premake5.lua index 463e80b8..9253c81b 100644 --- a/SHADE_Managed/premake5.lua +++ b/SHADE_Managed/premake5.lua @@ -119,14 +119,14 @@ project "SHADE_Managed" links{"librttr_core.lib"} links{"fmodstudio_vc.lib", "fmod_vc.lib"} - require "vstudio" + -- require "vstudio" - function docsElementCPP(cfg) - _p(3,'true') - end + -- function docsElementCPP(cfg) + -- _p(3,'true') + -- end - premake.override(premake.vstudio.vc2010.elements, "clCompile", function (oldfn, cfg) - return table.join(oldfn(cfg), { - docsElementCPP, - }) - end) \ No newline at end of file + -- premake.override(premake.vstudio.vc2010.elements, "clCompile", function (oldfn, cfg) + -- return table.join(oldfn(cfg), { + -- docsElementCPP, + -- }) + -- end) \ No newline at end of file