HPC_Voxel_Engine 0.2.0
High-Performance C++ Voxel Engine
Loading...
Searching...
No Matches
PhysicsSystem.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <vector>
10#include "../core/MathUtils.h"
11#include "../core/Ray.h"
12#include "AABB.h"
13
14class ChunkManager;
15
20struct RigidBody {
23 Core::Vec3 m_ObjSize; // Half extents (Width/2, Height/2, Length/2)
24 bool m_bIsGrounded{false};
25
26 AABB GetAABB(const Core::Vec3& newPos) const {
27 return AABB(newPos - m_ObjSize, newPos + m_ObjSize);
28 }
29};
30
42
48public:
56 static void Update(RigidBody& objRigidBody,
57 float fDeltaTime,
58 const ChunkManager& objChunkManager,
59 bool bFlyMode = false);
60
68 static RayHit RayCast(const Core::Ray& objRay,
69 float fMaxDistance,
70 const ChunkManager& objChunkManager);
71
72private:
73 // Helper: AABBox-to-Voxel world collision
74 static bool checkCollision(const AABB& objAABB, const ChunkManager& objChunkManager);
75
76 // Helper: Linear Interpolation
77 static float lerp(float a, float b, float t) { return a + (b - a) * t; }
78};
Axis-Aligned Bounding Box for collision detection. Defined by a Minimum and Maximum point in 3D space...
Definition AABB.h:12
Orchestrates infinite world generation, active chunk tracking, and multi-threaded data loading.
Definition ChunkManager.h:33
Static utility class handling AABB collisions, velocity integration, and DDA raycasting.
Definition PhysicsSystem.h:47
static void Update(RigidBody &objRigidBody, float fDeltaTime, const ChunkManager &objChunkManager, bool bFlyMode=false)
Updates physics (Gravity, Friction, Velocity).
Definition PhysicsSystem.cpp:16
static bool checkCollision(const AABB &objAABB, const ChunkManager &objChunkManager)
Definition PhysicsSystem.cpp:88
static float lerp(float a, float b, float t)
Definition PhysicsSystem.h:77
static RayHit RayCast(const Core::Ray &objRay, float fMaxDistance, const ChunkManager &objChunkManager)
Performs a DDA Raycast to find the first block hit.
Definition PhysicsSystem.cpp:120
Represents a ray in 3D space defined by an origin and a direction. Used for raycasting and picking.
Definition Ray.h:11
A 3-component vector structure (x, y, z) with standard math operations.
Definition MathUtils.h:11
Encapsulates the result of a raycast query against the voxel world.
Definition PhysicsSystem.h:35
float m_fDistance
Definition PhysicsSystem.h:38
Core::Vec3 m_objNormal
Definition PhysicsSystem.h:37
int m_iBlocKZ
Definition PhysicsSystem.h:39
bool m_bHit
Definition PhysicsSystem.h:40
int m_iBlocKX
Definition PhysicsSystem.h:39
int m_iBlocKY
Definition PhysicsSystem.h:39
Core::Vec3 m_objHitPoint
Definition PhysicsSystem.h:36
Represents a physical object subject to gravity and collision in the voxel world.
Definition PhysicsSystem.h:20
AABB GetAABB(const Core::Vec3 &newPos) const
Definition PhysicsSystem.h:26
Core::Vec3 m_ObjVelocity
Definition PhysicsSystem.h:22
Core::Vec3 m_ObjPos
Definition PhysicsSystem.h:21
Core::Vec3 m_ObjSize
Definition PhysicsSystem.h:23
bool m_bIsGrounded
Definition PhysicsSystem.h:24