Added Capsule Collider, AABB Query & SimulateBody for Trajectory path prediction #402
|
@ -11,7 +11,7 @@
|
|||
#include <SHpch.h>
|
||||
|
||||
// Primary Header
|
||||
#include "SHPhysicsWorld.h"
|
||||
#include "SHPhysicsWorldState.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
|
@ -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;
|
||||
};
|
||||
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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<SHCollisionInfo>& SHPhysicsSystem::GetAllCollisionInfo() const noexcept
|
||||
{
|
||||
return collisionListener.GetCollisionInfoContainer();
|
||||
|
|
|
@ -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<SHCollisionInfo>& GetAllTriggerInfo () const noexcept;
|
||||
[[nodiscard]] const std::vector<SHCollisionInfo>& GetAllCollisionInfo () const noexcept;
|
||||
|
@ -70,6 +69,7 @@ namespace SHADE
|
|||
|
||||
void SetFixedUpdateRate (double fixedUpdateRate) noexcept;
|
||||
void SetFixedDT (double fixedDt) noexcept;
|
||||
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* Function Members */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
|
|
@ -60,21 +60,11 @@ namespace SHADE
|
|||
return 0.0;
|
||||
}
|
||||
|
||||
double SHPhysicsSystemInterface::GetDeafultFixedDT() noexcept
|
||||
void SHPhysicsSystemInterface::SetFixedDT(double fixedDT) noexcept
|
||||
{
|
||||
auto* physicsSystem = SHSystemManager::GetSystem<SHPhysicsSystem>();
|
||||
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<SHPhysicsSystem>();
|
||||
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<SHPhysicsSystem>();
|
||||
if (physicsSystem)
|
||||
return physicsSystem->SetFixedUpdateRate(fixedUpdateRate);
|
||||
|
||||
SHLOGV_WARNING("Failed to set fixed update rate.");
|
||||
}
|
||||
|
||||
|
||||
const std::vector<SHPhysicsRaycastResult>& SHPhysicsSystemInterface::Raycast(const RaycastInfo& info) noexcept
|
||||
{
|
||||
static std::vector<SHPhysicsRaycastResult> emptyVec;
|
||||
|
|
|
@ -90,12 +90,12 @@ namespace SHADE
|
|||
/* Static Usage Functions */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
||||
[[nodiscard]] static const std::vector<SHCollisionInfo>& GetCollisionInfo () noexcept;
|
||||
[[nodiscard]] static const std::vector<SHCollisionInfo>& 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<SHCollisionInfo>& GetCollisionInfo () noexcept;
|
||||
[[nodiscard]] static const std::vector<SHCollisionInfo>& 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<SHPhysicsRaycastResult>& Raycast (const RaycastInfo& info) noexcept;
|
||||
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue