From 6045214b136244e0d35c17816c911b5eab5c2d5d Mon Sep 17 00:00:00 2001 From: maverickdgg Date: Fri, 24 Feb 2023 15:35:02 +0800 Subject: [PATCH 1/2] Camera width to resize with view port --- Assets/Scenes/MainMenu.shade | 3 +-- SHADE_Engine/src/Camera/SHCameraSystem.cpp | 21 +++++++++++++++++++++ SHADE_Engine/src/Camera/SHCameraSystem.h | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Assets/Scenes/MainMenu.shade b/Assets/Scenes/MainMenu.shade index 30ef368a..15df64f4 100644 --- a/Assets/Scenes/MainMenu.shade +++ b/Assets/Scenes/MainMenu.shade @@ -113,8 +113,7 @@ Pitch: 0 Yaw: 0 Roll: 0 - Width: 1319 - Height: 622 + Width: 1175 Near: 0.00999999978 Far: 10000 Perspective: true diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.cpp b/SHADE_Engine/src/Camera/SHCameraSystem.cpp index e577207a..a574b47f 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.cpp +++ b/SHADE_Engine/src/Camera/SHCameraSystem.cpp @@ -144,8 +144,24 @@ namespace SHADE //std::cout << EVENT_DATA->resizeWidth << std::endl; //std::cout << EVENT_DATA->resizeHeight << std::endl; screenAspectRatio = (float)EVENT_DATA->resizeWidth / (float)EVENT_DATA->resizeHeight; + +#ifdef SHEDITOR + auto editor = SHSystemManager::GetSystem(); + if (editor->editorState != SHEditor::State::PLAY) + return eventPtr->handle; +#endif // SHEDITOR + + for (auto& director : directorHandleList) + { + auto camera = SHComponentManager::GetComponent_s(director->mainCameraEID); + if (camera) + { + camera->SetWidth(EVENT_DATA->resizeWidth); + } + } + return eventPtr->handle; } @@ -574,4 +590,9 @@ namespace SHADE #endif } + SHCameraComponent* SHCameraSystem::GetMainCamera() const noexcept + { + return SHComponentManager::GetComponent_s(directorHandleList[0]->mainCameraEID); + } + } diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.h b/SHADE_Engine/src/Camera/SHCameraSystem.h index 92728537..65761eb1 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.h +++ b/SHADE_Engine/src/Camera/SHCameraSystem.h @@ -65,6 +65,7 @@ namespace SHADE void SetCameraViewMatrix(SHCameraComponent& camera, SHMatrix const& viewMatrix, bool takePos) noexcept; void CameraLookAt(SHCameraComponent& camera, SHVec3 target) noexcept; void UpdateEditorArm(double dt,bool active ,SHVec3 const& targetPos) noexcept; + SHCameraComponent* GetMainCamera() const noexcept; SHVec2 GetCameraWidthHeight(size_t index) noexcept; }; -- 2.40.1 From 4690fa5f913610306a262f6a20420eceb80b7183 Mon Sep 17 00:00:00 2001 From: maverickdgg Date: Fri, 24 Feb 2023 16:31:53 +0800 Subject: [PATCH 2/2] GetMainCamera exposed to scripts. --- SHADE_Engine/src/Camera/SHCameraSystem.cpp | 4 ++-- SHADE_Engine/src/Camera/SHCameraSystem.h | 2 +- SHADE_Managed/src/Components/Camera.cxx | 7 ++++++- SHADE_Managed/src/Components/Camera.hxx | 6 ++++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.cpp b/SHADE_Engine/src/Camera/SHCameraSystem.cpp index a574b47f..95a461f8 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.cpp +++ b/SHADE_Engine/src/Camera/SHCameraSystem.cpp @@ -590,9 +590,9 @@ namespace SHADE #endif } - SHCameraComponent* SHCameraSystem::GetMainCamera() const noexcept + EntityID SHCameraSystem::GetMainCameraEID() const noexcept { - return SHComponentManager::GetComponent_s(directorHandleList[0]->mainCameraEID); + return directorHandleList[0]->mainCameraEID; } } diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.h b/SHADE_Engine/src/Camera/SHCameraSystem.h index 65761eb1..e7d06ddc 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.h +++ b/SHADE_Engine/src/Camera/SHCameraSystem.h @@ -65,7 +65,7 @@ namespace SHADE void SetCameraViewMatrix(SHCameraComponent& camera, SHMatrix const& viewMatrix, bool takePos) noexcept; void CameraLookAt(SHCameraComponent& camera, SHVec3 target) noexcept; void UpdateEditorArm(double dt,bool active ,SHVec3 const& targetPos) noexcept; - SHCameraComponent* GetMainCamera() const noexcept; + EntityID GetMainCameraEID() const noexcept; SHVec2 GetCameraWidthHeight(size_t index) noexcept; }; diff --git a/SHADE_Managed/src/Components/Camera.cxx b/SHADE_Managed/src/Components/Camera.cxx index 4640c17a..22eb2124 100644 --- a/SHADE_Managed/src/Components/Camera.cxx +++ b/SHADE_Managed/src/Components/Camera.cxx @@ -13,7 +13,6 @@ namespace SHADE } - float Camera::Pitch::get() { return (GetNativeComponent()->GetPitch()); @@ -126,4 +125,10 @@ namespace SHADE } + Camera^ Camera::GetMainCamera() + { + auto system = SHSystemManager::GetSystem(); + return ECS::GetComponent(system->GetMainCameraEID()); + } + } \ No newline at end of file diff --git a/SHADE_Managed/src/Components/Camera.hxx b/SHADE_Managed/src/Components/Camera.hxx index c793f1ed..babf2c28 100644 --- a/SHADE_Managed/src/Components/Camera.hxx +++ b/SHADE_Managed/src/Components/Camera.hxx @@ -15,6 +15,9 @@ namespace SHADE Camera(Entity entity); public: + + + property float Pitch { float get(); @@ -65,5 +68,8 @@ namespace SHADE Vector3 GetForward(); Vector3 GetRight(); + + static Camera^ GetMainCamera(); + }; } \ No newline at end of file -- 2.40.1