From 9282f18bd39aaf9a189f5b63310f6029b07cbe14 Mon Sep 17 00:00:00 2001 From: Sirox228 Date: Sun, 1 Jun 2025 20:14:57 +0300 Subject: [PATCH 1/2] guard all debug renderer functionality with jolt define --- JoltC/Enums.h | 4 ++++ JoltC/Functions.h | 2 ++ JoltCImpl/JoltC.cpp | 24 ++++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/JoltC/Enums.h b/JoltC/Enums.h index 9c32f10..5ea78c8 100644 --- a/JoltC/Enums.h +++ b/JoltC/Enums.h @@ -301,21 +301,25 @@ const JPC_ShapeColor JPC_SHAPE_COLOR_SLEEP_COLOR = 3; const JPC_ShapeColor JPC_SHAPE_COLOR_ISLAND_COLOR = 4; const JPC_ShapeColor JPC_SHAPE_COLOR_MATERIAL_COLOR = 5; +#ifdef JPH_DEBUG_RENDERER ENSURE_ENUM_EQ(JPC_SHAPE_COLOR_INSTANCE_COLOR, JPH::BodyManager::EShapeColor::InstanceColor) ENSURE_ENUM_EQ(JPC_SHAPE_COLOR_SHAPE_TYPE_COLOR, JPH::BodyManager::EShapeColor::ShapeTypeColor) ENSURE_ENUM_EQ(JPC_SHAPE_COLOR_MOTION_TYPE_COLOR, JPH::BodyManager::EShapeColor::MotionTypeColor) ENSURE_ENUM_EQ(JPC_SHAPE_COLOR_SLEEP_COLOR, JPH::BodyManager::EShapeColor::SleepColor) ENSURE_ENUM_EQ(JPC_SHAPE_COLOR_ISLAND_COLOR, JPH::BodyManager::EShapeColor::IslandColor) ENSURE_ENUM_EQ(JPC_SHAPE_COLOR_MATERIAL_COLOR, JPH::BodyManager::EShapeColor::MaterialColor) +#endif typedef int JPC_SoftBodyConstraintColor; const JPC_SoftBodyConstraintColor JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_TYPE = 0; const JPC_SoftBodyConstraintColor JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_GROUP = 1; const JPC_SoftBodyConstraintColor JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_ORDER = 2; +#ifdef JPH_DEBUG_RENDERER ENSURE_ENUM_EQ(JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_TYPE, JPH::ESoftBodyConstraintColor::ConstraintType); ENSURE_ENUM_EQ(JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_GROUP, JPH::ESoftBodyConstraintColor::ConstraintGroup); ENSURE_ENUM_EQ(JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_ORDER, JPH::ESoftBodyConstraintColor::ConstraintOrder); +#endif // EActiveEdgeMode typedef uint8_t JPC_ActiveEdgeMode; diff --git a/JoltC/Functions.h b/JoltC/Functions.h index b25432a..f1a45aa 100644 --- a/JoltC/Functions.h +++ b/JoltC/Functions.h @@ -634,7 +634,9 @@ typedef struct JPC_BodyManager_DrawSettings { JPC_SoftBodyConstraintColor DrawSoftBodyConstraintColor; } JPC_BodyManager_DrawSettings; +#ifdef JPH_DEBUG_RENDERER ENSURE_SIZE_ALIGN(JPC_BodyManager_DrawSettings, JPH::BodyManager::DrawSettings) +#endif JPC_API void JPC_BodyManager_DrawSettings_default(JPC_BodyManager_DrawSettings* object); diff --git a/JoltCImpl/JoltC.cpp b/JoltCImpl/JoltC.cpp index 3716956..3e816aa 100644 --- a/JoltCImpl/JoltC.cpp +++ b/JoltCImpl/JoltC.cpp @@ -1,3 +1,5 @@ +#include + #include #include @@ -35,7 +37,9 @@ #include #include +#ifdef JPH_DEBUG_RENDERER #include +#endif #include @@ -137,7 +141,9 @@ DESTRUCTOR(JPC_IndexedTriangleList) OPAQUE_WRAPPER(JPC_String, JPH::String) DESTRUCTOR(JPC_String) +#ifdef JPH_DEBUG_RENDERER LAYOUT_COMPATIBLE(JPC_BodyManager_DrawSettings, JPH::BodyManager::DrawSettings) +#endif LAYOUT_COMPATIBLE(JPC_ShapeCastSettings, JPH::ShapeCastSettings) LAYOUT_COMPATIBLE(JPC_CollideShapeSettings, JPH::CollideShapeSettings) @@ -842,12 +848,17 @@ JPC_API void JPC_CollideShapeCollector_UpdateEarlyOutFraction(JPC_CollideShapeCo // BodyManager::DrawSettings JPC_API void JPC_BodyManager_DrawSettings_default(JPC_BodyManager_DrawSettings* object) { + #ifdef JPH_DEBUG_RENDERER *object = to_jpc(JPH::BodyManager::DrawSettings()); + #else + printf("JPC_BodyManager_DrawSettings_default is a debug functionality that is not supported in release build, skipping\n"); + #endif } //////////////////////////////////////////////////////////////////////////////// // DebugRendererSimple +#ifdef JPH_DEBUG_RENDERER class JPC_DebugRendererSimpleBridge final : public JPH::DebugRendererSimple { public: explicit JPC_DebugRendererSimpleBridge(const void *self, JPC_DebugRendererSimpleFns fns) : self(self), fns(fns) {} @@ -872,12 +883,17 @@ class JPC_DebugRendererSimpleBridge final : public JPH::DebugRendererSimple { OPAQUE_WRAPPER(JPC_DebugRendererSimple, JPC_DebugRendererSimpleBridge) DESTRUCTOR(JPC_DebugRendererSimple) +#endif JPC_API JPC_DebugRendererSimple* JPC_DebugRendererSimple_new( const void *self, JPC_DebugRendererSimpleFns fns) { + #ifdef JPH_DEBUG_RENDERER return to_jpc(new JPC_DebugRendererSimpleBridge(self, fns)); + #else + printf("JPC_DebugRendererSimple_new is a debug functionality that is not supported in release build, skipping\n"); + #endif } //////////////////////////////////////////////////////////////////////////////// @@ -2946,14 +2962,22 @@ JPC_API void JPC_PhysicsSystem_DrawBodies( JPC_DebugRendererSimple* inRenderer, [[maybe_unused]] const void* inBodyFilter) { + #ifdef JPH_DEBUG_RENDERER to_jph(self)->DrawBodies(to_jph(*inSettings), to_jph(inRenderer), nullptr); + #else + printf("JPC_PhysicsSystem_DrawBodies is a debug functionality that is not supported in release build, skipping\n"); + #endif } JPC_API void JPC_PhysicsSystem_DrawConstraints( JPC_PhysicsSystem* self, JPC_DebugRendererSimple* inRenderer) { + #ifdef JPH_DEBUG_RENDERER to_jph(self)->DrawConstraints(to_jph(inRenderer)); + #else + printf("JPC_PhysicsSystem_DrawConstraints is a debug functionality that is not supported in release build, skipping\n"); + #endif } From 3785bfd0f716bb8dcaecd0417da7ce09c67af105 Mon Sep 17 00:00:00 2001 From: Sirox228 Date: Thu, 5 Jun 2025 01:51:29 +0300 Subject: [PATCH 2/2] fix const redefinition --- JoltC/Enums.h | 89 ++++++++++++++++++++------------------------------- 1 file changed, 35 insertions(+), 54 deletions(-) diff --git a/JoltC/Enums.h b/JoltC/Enums.h index 5ea78c8..4469e18 100644 --- a/JoltC/Enums.h +++ b/JoltC/Enums.h @@ -2,19 +2,12 @@ #include -const int JPC_MAX_PHYSICS_JOBS = 2048; -const int JPC_MAX_PHYSICS_BARRIERS = 8; -const float JPC_DEFAULT_COLLISION_TOLERANCE = 1.0e-4f; -const float JPC_DEFAULT_PENETRATION_TOLERANCE = 1.0e-4f; -const float JPC_DEFAULT_CONVEX_RADIUS = 0.05f; -const float JPC_CAPSULE_PROJECTION_SLOP = 0.02f; - -ENSURE_EQUAL(JPC_MAX_PHYSICS_JOBS, JPH::cMaxPhysicsJobs) -ENSURE_EQUAL(JPC_MAX_PHYSICS_BARRIERS, JPH::cMaxPhysicsBarriers) -ENSURE_EQUAL(JPC_DEFAULT_COLLISION_TOLERANCE, JPH::cDefaultCollisionTolerance) -ENSURE_EQUAL(JPC_DEFAULT_PENETRATION_TOLERANCE, JPH::cDefaultPenetrationTolerance) -ENSURE_EQUAL(JPC_DEFAULT_CONVEX_RADIUS, JPH::cDefaultConvexRadius) -ENSURE_EQUAL(JPC_CAPSULE_PROJECTION_SLOP, JPH::cCapsuleProjectionSlop) +#define JPC_MAX_PHYSICS_JOBS 2048 +#define JPC_MAX_PHYSICS_BARRIERS 8 +#define JPC_DEFAULT_COLLISION_TOLERANCE 1.0e-4f +#define JPC_DEFAULT_PENETRATION_TOLERANCE 1.0e-4f +#define JPC_DEFAULT_CONVEX_RADIUS 0.05f +#define JPC_CAPSULE_PROJECTION_SLOP 0.02f typedef enum JPC_ShapeType: uint8_t { JPC_SHAPE_TYPE_CONVEX, @@ -106,10 +99,10 @@ ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX7, JPH::EShapeSubType::UserConvex7) ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX8, JPH::EShapeSubType::UserConvex8) typedef uint32_t JPC_PhysicsUpdateError; -const JPC_PhysicsUpdateError JPC_PHYSICS_UPDATE_ERROR_NONE = 0; -const JPC_PhysicsUpdateError JPC_PHYSICS_UPDATE_ERROR_MANIFOLD_CACHE_FULL = 1 << 0; -const JPC_PhysicsUpdateError JPC_PHYSICS_UPDATE_ERROR_BODY_PAIR_CACHE_FULL = 1 << 1; -const JPC_PhysicsUpdateError JPC_PHYSICS_UPDATE_ERROR_CONTACT_CONSTRAINTS_FULL = 1 << 2; +#define JPC_PHYSICS_UPDATE_ERROR_NONE 0 +#define JPC_PHYSICS_UPDATE_ERROR_MANIFOLD_CACHE_FULL 1 << 0 +#define JPC_PHYSICS_UPDATE_ERROR_BODY_PAIR_CACHE_FULL 1 << 1 +#define JPC_PHYSICS_UPDATE_ERROR_CONTACT_CONSTRAINTS_FULL 1 << 2 ENSURE_ENUM_EQ(JPC_PHYSICS_UPDATE_ERROR_NONE, JPH::EPhysicsUpdateError::None) ENSURE_ENUM_EQ(JPC_PHYSICS_UPDATE_ERROR_MANIFOLD_CACHE_FULL, JPH::EPhysicsUpdateError::ManifoldCacheFull) @@ -239,11 +232,8 @@ ENSURE_ENUM_EQ(JPC_VALIDATE_RESULT_REJECT_ALL_CONTACTS, // EBackFaceMode typedef uint8_t JPC_BackFaceMode; -const JPC_BackFaceMode JPC_BACK_FACE_MODE_IGNORE = 0; -const JPC_BackFaceMode JPC_BACK_FACE_MODE_COLLIDE = 1; - -ENSURE_ENUM_EQ(JPC_BACK_FACE_MODE_IGNORE, JPH::EBackFaceMode::IgnoreBackFaces) -ENSURE_ENUM_EQ(JPC_BACK_FACE_MODE_COLLIDE, JPH::EBackFaceMode::CollideWithBackFaces) +#define JPC_BACK_FACE_MODE_IGNORE 0 +#define JPC_BACK_FACE_MODE_COLLIDE 1 typedef enum JPC_BodyType: uint8_t { JPC_BODY_TYPE_RIGID_BODY = 0, @@ -294,12 +284,12 @@ typedef enum JPC_Features: uint32_t { } JPC_Features; typedef int JPC_ShapeColor; -const JPC_ShapeColor JPC_SHAPE_COLOR_INSTANCE_COLOR = 0; -const JPC_ShapeColor JPC_SHAPE_COLOR_SHAPE_TYPE_COLOR = 1; -const JPC_ShapeColor JPC_SHAPE_COLOR_MOTION_TYPE_COLOR = 2; -const JPC_ShapeColor JPC_SHAPE_COLOR_SLEEP_COLOR = 3; -const JPC_ShapeColor JPC_SHAPE_COLOR_ISLAND_COLOR = 4; -const JPC_ShapeColor JPC_SHAPE_COLOR_MATERIAL_COLOR = 5; +#define JPC_SHAPE_COLOR_INSTANCE_COLOR 0 +#define JPC_SHAPE_COLOR_SHAPE_TYPE_COLOR 1 +#define JPC_SHAPE_COLOR_MOTION_TYPE_COLOR 2 +#define JPC_SHAPE_COLOR_SLEEP_COLOR 3 +#define JPC_SHAPE_COLOR_ISLAND_COLOR 4 +#define JPC_SHAPE_COLOR_MATERIAL_COLOR 5 #ifdef JPH_DEBUG_RENDERER ENSURE_ENUM_EQ(JPC_SHAPE_COLOR_INSTANCE_COLOR, JPH::BodyManager::EShapeColor::InstanceColor) @@ -311,9 +301,9 @@ ENSURE_ENUM_EQ(JPC_SHAPE_COLOR_MATERIAL_COLOR, JPH::BodyManager::EShapeColor::Ma #endif typedef int JPC_SoftBodyConstraintColor; -const JPC_SoftBodyConstraintColor JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_TYPE = 0; -const JPC_SoftBodyConstraintColor JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_GROUP = 1; -const JPC_SoftBodyConstraintColor JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_ORDER = 2; +#define JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_TYPE 0 +#define JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_GROUP 1 +#define JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_ORDER 2 #ifdef JPH_DEBUG_RENDERER ENSURE_ENUM_EQ(JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_TYPE, JPH::ESoftBodyConstraintColor::ConstraintType); @@ -323,38 +313,29 @@ ENSURE_ENUM_EQ(JPC_SOFT_BODY_CONSTRAINT_COLOR_CONSTRAINT_ORDER, JPH::ESoftBodyCo // EActiveEdgeMode typedef uint8_t JPC_ActiveEdgeMode; -const JPC_ActiveEdgeMode JPC_ACTIVE_EDGE_MODE_COLLIDE_ONLY_WITH_ACTIVE = 0; -const JPC_ActiveEdgeMode JPC_ACTIVE_EDGE_MODE_COLLIDE_WITH_ALL = 1; - -ENSURE_ENUM_EQ(JPC_ACTIVE_EDGE_MODE_COLLIDE_ONLY_WITH_ACTIVE, JPH::EActiveEdgeMode::CollideOnlyWithActive); -ENSURE_ENUM_EQ(JPC_ACTIVE_EDGE_MODE_COLLIDE_WITH_ALL, JPH::EActiveEdgeMode::CollideWithAll); +#define JPC_ACTIVE_EDGE_MODE_COLLIDE_ONLY_WITH_ACTIVE 0 +#define JPC_ACTIVE_EDGE_MODE_COLLIDE_WITH_ALL 1 // ECollectFacesMode typedef uint8_t JPC_CollectFacesMode; -const JPC_CollectFacesMode JPC_COLLECT_FACES_MODE_COLLECT_FACES = 0; -const JPC_CollectFacesMode JPC_COLLECT_FACES_MODE_NO_FACES = 1; - -ENSURE_ENUM_EQ(JPC_COLLECT_FACES_MODE_COLLECT_FACES, JPH::ECollectFacesMode::CollectFaces); -ENSURE_ENUM_EQ(JPC_COLLECT_FACES_MODE_NO_FACES, JPH::ECollectFacesMode::NoFaces); +#define JPC_COLLECT_FACES_MODE_COLLECT_FACES 0 +#define JPC_COLLECT_FACES_MODE_NO_FACES 1 // ESwingType typedef uint8_t JPC_SwingType; -const JPC_SwingType JPC_SWING_TYPE_CONE = 0; -const JPC_SwingType JPC_SWING_TYPE_PYRAMID = 1; - -ENSURE_ENUM_EQ(JPC_SWING_TYPE_CONE, JPH::ESwingType::Cone); -ENSURE_ENUM_EQ(JPC_SWING_TYPE_PYRAMID, JPH::ESwingType::Pyramid); +#define JPC_SWING_TYPE_CONE 0 +#define JPC_SWING_TYPE_PYRAMID 1 // SixDOFConstraint::EAxis typedef uint32_t JPC_SixDOFConstraint_Axis; -const JPC_SixDOFConstraint_Axis JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_X = 0; -const JPC_SixDOFConstraint_Axis JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_Y = 1; -const JPC_SixDOFConstraint_Axis JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_Z = 2; -const JPC_SixDOFConstraint_Axis JPC_SIX_DOF_CONSTRAINT_AXIS_ROTATION_X = 3; -const JPC_SixDOFConstraint_Axis JPC_SIX_DOF_CONSTRAINT_AXIS_ROTATION_Y = 4; -const JPC_SixDOFConstraint_Axis JPC_SIX_DOF_CONSTRAINT_AXIS_ROTATION_Z = 5; -const JPC_SixDOFConstraint_Axis JPC_SIX_DOF_CONSTRAINT_AXIS_NUM = 6; -const JPC_SixDOFConstraint_Axis JPC_SIX_DOF_CONSTRAINT_AXIS_NUM_TRANSLATION = JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_Z + 1; +#define JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_X 0 +#define JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_Y 1 +#define JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_Z 2 +#define JPC_SIX_DOF_CONSTRAINT_AXIS_ROTATION_X 3 +#define JPC_SIX_DOF_CONSTRAINT_AXIS_ROTATION_Y 4 +#define JPC_SIX_DOF_CONSTRAINT_AXIS_ROTATION_Z 5 +#define JPC_SIX_DOF_CONSTRAINT_AXIS_NUM 6 +#define JPC_SIX_DOF_CONSTRAINT_AXIS_NUM_TRANSLATION JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_Z + 1 ENSURE_ENUM_EQ(JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_X, JPH::SixDOFConstraint::EAxis::TranslationX); ENSURE_ENUM_EQ(JPC_SIX_DOF_CONSTRAINT_AXIS_TRANSLATION_Y, JPH::SixDOFConstraint::EAxis::TranslationY);