From e89f5df35f39ea1b97289d865c5d7ca58bd8f4b0 Mon Sep 17 00:00:00 2001 From: Diren D Bharwani Date: Mon, 6 Mar 2023 18:17:13 +0800 Subject: [PATCH] Added physics constants --- ...ysicsWorld.cpp => SHPhysicsWorldState.cpp} | 2 +- ...SHPhysicsWorld.h => SHPhysicsWorldState.h} | 9 ++++--- SHADE_Engine/src/Physics/SHPhysicsConstants.h | 25 +++++++++++++++++++ .../src/Physics/System/SHPhysicsSystem.cpp | 7 +----- .../src/Physics/System/SHPhysicsSystem.h | 4 +-- .../System/SHPhysicsSystemInterface.cpp | 24 +++++++++--------- .../Physics/System/SHPhysicsSystemInterface.h | 12 ++++----- SHADE_Managed/src/Engine/Time.cxx | 4 +-- 8 files changed, 54 insertions(+), 33 deletions(-) rename SHADE_Engine/src/Physics/RP3DWrapper/{SHPhysicsWorld.cpp => SHPhysicsWorldState.cpp} (98%) rename SHADE_Engine/src/Physics/RP3DWrapper/{SHPhysicsWorld.h => SHPhysicsWorldState.h} (89%) create mode 100644 SHADE_Engine/src/Physics/SHPhysicsConstants.h diff --git a/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.cpp b/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.cpp similarity index 98% rename from SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.cpp rename to SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.cpp index 85e76702..82a9aa26 100644 --- a/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.cpp +++ b/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.cpp @@ -11,7 +11,7 @@ #include // Primary Header -#include "SHPhysicsWorld.h" +#include "SHPhysicsWorldState.h" namespace SHADE { diff --git a/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.h b/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.h similarity index 89% rename from SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.h rename to SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.h index 09a2b260..40483a8c 100644 --- a/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorld.h +++ b/SHADE_Engine/src/Physics/RP3DWrapper/SHPhysicsWorldState.h @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHPhysicsWorld.h + * \file SHPhysicsWorldState.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Physics World. + * \brief Interface for a Physics World State. * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -14,6 +14,7 @@ // Project Headers #include "Math/Vector/SHVec3.h" +#include "Physics/SHPhysicsConstants.h" namespace SHADE { @@ -37,8 +38,8 @@ namespace SHADE /*-------------------------------------------------------------------------------*/ SHVec3 gravity = SHVec3{ 0.0f, -9.81f, 0.0f }; - uint16_t numVelocitySolverIterations = 10; - uint16_t numPositionSolverIterations = 5; + uint16_t numVelocitySolverIterations = SHPhysicsConstants::DEFAULT_VELOCITY_ITERATIONS; + uint16_t numPositionSolverIterations = SHPhysicsConstants::DEFAULT_POSITION_ITERATIONS; bool sleepingEnabled = true; }; diff --git a/SHADE_Engine/src/Physics/SHPhysicsConstants.h b/SHADE_Engine/src/Physics/SHPhysicsConstants.h new file mode 100644 index 00000000..fe3b9ee5 --- /dev/null +++ b/SHADE_Engine/src/Physics/SHPhysicsConstants.h @@ -0,0 +1,25 @@ +/**************************************************************************************** + * \file SHPhysicsConstants.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Declaration of Constants used for physics simulations + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "Math/Vector/SHVec3.h" + +namespace SHADE +{ + struct SHPhysicsConstants + { + static constexpr double DEFAULT_FIXED_DT = 1.0 / 60.0; + + static constexpr int DEFAULT_VELOCITY_ITERATIONS = 10; + static constexpr int DEFAULT_POSITION_ITERATIONS = 5; + }; +} diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp index 84b36ac5..de654e0c 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp @@ -34,7 +34,7 @@ namespace SHADE SHPhysicsSystem::SHPhysicsSystem() noexcept : worldUpdated { false } , interpolationFactor { 0.0 } - , fixedDT { DEFAULT_FIXED_STEP } + , fixedDT { SHPhysicsConstants::DEFAULT_FIXED_DT } { // Add more events here to register them @@ -63,11 +63,6 @@ namespace SHADE return fixedDT; } - double SHPhysicsSystem::GetDefaultFixedDT() const noexcept - { - return DEFAULT_FIXED_STEP; - } - const std::vector& SHPhysicsSystem::GetAllCollisionInfo() const noexcept { return collisionListener.GetCollisionInfoContainer(); diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h index 06476c6b..00a252aa 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h @@ -21,7 +21,7 @@ #include "Math/Geometry/SHAABB.h" #include "Physics/Collision/SHCollisionInfo.h" #include "Physics/Interface/PhysicsObject/SHPhysicsObjectManager.h" -#include "Physics/RP3DWrapper/SHPhysicsWorld.h" +#include "Physics/RP3DWrapper/SHPhysicsWorldState.h" #include "Physics/RP3DWrapper/SHCollisionListener.h" #include "Physics/RP3DWrapper/SHRaycaster.h" #include "Scene/SHSceneGraph.h" @@ -59,7 +59,6 @@ namespace SHADE [[nodiscard]] double GetFixedUpdateRate () const noexcept; [[nodiscard]] double GetFixedDT () const noexcept; - [[nodiscard]] double GetDefaultFixedDT () const noexcept; [[nodiscard]] const std::vector& GetAllTriggerInfo () const noexcept; [[nodiscard]] const std::vector& GetAllCollisionInfo () const noexcept; @@ -70,6 +69,7 @@ namespace SHADE void SetFixedUpdateRate (double fixedUpdateRate) noexcept; void SetFixedDT (double fixedDt) noexcept; + /*---------------------------------------------------------------------------------*/ /* Function Members */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp index fa578836..88502292 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp @@ -60,21 +60,11 @@ namespace SHADE return 0.0; } - double SHPhysicsSystemInterface::GetDeafultFixedDT() noexcept + void SHPhysicsSystemInterface::SetFixedDT(double fixedDT) noexcept { auto* physicsSystem = SHSystemManager::GetSystem(); if (physicsSystem) - return physicsSystem->GetDefaultFixedDT(); - - SHLOGV_WARNING("Failed to get defualt fixed delta time. 0.0 returned instead."); - return 0.0; - } - - void SHPhysicsSystemInterface::SetFixedDT(double value) noexcept - { - auto* physicsSystem = SHSystemManager::GetSystem(); - if (physicsSystem) - physicsSystem->SetFixedDT(value); + physicsSystem->SetFixedDT(fixedDT); SHLOGV_WARNING("Failed to set fixed delta time."); } @@ -89,6 +79,16 @@ namespace SHADE return 0.0; } + void SHPhysicsSystemInterface::SetFixedUpdateRate(double fixedUpdateRate) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + return physicsSystem->SetFixedUpdateRate(fixedUpdateRate); + + SHLOGV_WARNING("Failed to set fixed update rate."); + } + + const std::vector& SHPhysicsSystemInterface::Raycast(const RaycastInfo& info) noexcept { static std::vector emptyVec; diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h index 6040a9c2..3b26d3e3 100644 --- a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h @@ -90,12 +90,12 @@ namespace SHADE /* Static Usage Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] static const std::vector& GetCollisionInfo () noexcept; - [[nodiscard]] static const std::vector& GetTriggerInfo () noexcept; - [[nodiscard]] static double GetFixedDT () noexcept; - [[nodiscard]] static void SetFixedDT (double value) noexcept; - [[nodiscard]] static double GetDeafultFixedDT () noexcept; - [[nodiscard]] static int GetFixedUpdateRate () noexcept; + [[nodiscard]] static const std::vector& GetCollisionInfo () noexcept; + [[nodiscard]] static const std::vector& GetTriggerInfo () noexcept; + [[nodiscard]] static double GetFixedDT () noexcept; + [[nodiscard]] static void SetFixedDT (double fixedDT) noexcept; + [[nodiscard]] static int GetFixedUpdateRate () noexcept; + [[nodiscard]] static void SetFixedUpdateRate (double fixedUpdateRate) noexcept; [[nodiscard]] static const std::vector& Raycast (const RaycastInfo& info) noexcept; }; diff --git a/SHADE_Managed/src/Engine/Time.cxx b/SHADE_Managed/src/Engine/Time.cxx index 41a3b1c0..27cf1e22 100644 --- a/SHADE_Managed/src/Engine/Time.cxx +++ b/SHADE_Managed/src/Engine/Time.cxx @@ -17,6 +17,7 @@ of DigiPen Institute of Technology is prohibited. // External Dependencies #include "FRC/SHFramerateController.h" #include "Physics/System/SHPhysicsSystemInterface.h" +#include "Physics/SHPhysicsConstants.h" // Primary Header #include "Time.hxx" @@ -47,7 +48,6 @@ namespace SHADE double Time::DefaultFixDeltaTime::get() { - return SHPhysicsSystemInterface::GetDeafultFixedDT(); + return SHPhysicsConstants::DEFAULT_FIXED_DT; } - } \ No newline at end of file