浏览代码

Attempt to clean up enums

Lucien Greathouse 1 年之前
父节点
当前提交
1d9c8e562d
共有 4 个文件被更改,包括 125 次插入66 次删除
  1. 2 1
      CMakeLists.txt
  2. 66 0
      JoltC/Enums_Test.cpp
  3. 56 64
      JoltC/JoltPhysicsC.h
  4. 1 1
      JoltPhysics

+ 2 - 1
CMakeLists.txt

@@ -5,9 +5,10 @@ project(JoltC VERSION 0.1
     LANGUAGES CXX)
 
 add_library(joltc STATIC
+    JoltC/Enums_Test.cpp
     JoltC/JoltPhysicsC.cpp
     JoltC/JoltPhysicsC.h
-    JoltC/JoltPhysicsC_Extensions.cpp
+    # JoltC/JoltPhysicsC_Extensions.cpp
     JoltC/JoltPhysicsC_Tests.c
 )
 

+ 66 - 0
JoltC/Enums_Test.cpp

@@ -0,0 +1,66 @@
+#include <assert.h>
+#include <stddef.h>
+#include <type_traits>
+
+#include "JoltPhysicsC.h"
+
+#include "Jolt/Jolt.h"
+#include "Jolt/Physics/EPhysicsUpdateError.h"
+#include "Jolt/Physics/Collision/Shape/Shape.h"
+
+template<typename E>
+constexpr auto to_integral(E e) -> typename std::underlying_type<E>::type 
+{
+   return static_cast<typename std::underlying_type<E>::type>(e);
+}
+
+#define ENSURE_ENUM_EQ(c_const, cpp_enum) \
+	static_assert(c_const == to_integral(cpp_enum), #c_const " did not match " #cpp_enum); \
+	static_assert(sizeof(c_const) == sizeof(cpp_enum), #c_const " did not have same size as " #cpp_enum)
+
+ENSURE_ENUM_EQ(JPC_SHAPE_TYPE_CONVEX, JPH::EShapeType::Convex);
+ENSURE_ENUM_EQ(JPC_SHAPE_TYPE_COMPOUND, JPH::EShapeType::Compound);
+ENSURE_ENUM_EQ(JPC_SHAPE_TYPE_DECORATED, JPH::EShapeType::Decorated);
+ENSURE_ENUM_EQ(JPC_SHAPE_TYPE_MESH, JPH::EShapeType::Mesh);
+ENSURE_ENUM_EQ(JPC_SHAPE_TYPE_HEIGHT_FIELD, JPH::EShapeType::HeightField);
+ENSURE_ENUM_EQ(JPC_SHAPE_TYPE_USER1, JPH::EShapeType::User1);
+ENSURE_ENUM_EQ(JPC_SHAPE_TYPE_USER2, JPH::EShapeType::User2);
+ENSURE_ENUM_EQ(JPC_SHAPE_TYPE_USER3, JPH::EShapeType::User3);
+ENSURE_ENUM_EQ(JPC_SHAPE_TYPE_USER4, JPH::EShapeType::User4);
+
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_SPHERE, JPH::EShapeSubType::Sphere);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_BOX, JPH::EShapeSubType::Box);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_TRIANGLE, JPH::EShapeSubType::Triangle);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_CAPSULE, JPH::EShapeSubType::Capsule);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_TAPEREDCAPSULE, JPH::EShapeSubType::TaperedCapsule);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_CYLINDER, JPH::EShapeSubType::Cylinder);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_CONVEX_HULL, JPH::EShapeSubType::ConvexHull);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_STATIC_COMPOUND, JPH::EShapeSubType::StaticCompound);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_MUTABLE_COMPOUND, JPH::EShapeSubType::MutableCompound);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_ROTATED_TRANSLATED, JPH::EShapeSubType::RotatedTranslated);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_SCALED, JPH::EShapeSubType::Scaled);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_OFFSET_CENTER_OF_MASS, JPH::EShapeSubType::OffsetCenterOfMass);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_MESH, JPH::EShapeSubType::Mesh);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_HEIGHT_FIELD, JPH::EShapeSubType::HeightField);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_SOFT_BODY, JPH::EShapeSubType::SoftBody);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER1, JPH::EShapeSubType::User1);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER2, JPH::EShapeSubType::User2);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER3, JPH::EShapeSubType::User3);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER4, JPH::EShapeSubType::User4);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER5, JPH::EShapeSubType::User5);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER6, JPH::EShapeSubType::User6);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER7, JPH::EShapeSubType::User7);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER8, JPH::EShapeSubType::User8);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX1, JPH::EShapeSubType::UserConvex1);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX2, JPH::EShapeSubType::UserConvex2);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX3, JPH::EShapeSubType::UserConvex3);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX4, JPH::EShapeSubType::UserConvex4);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX5, JPH::EShapeSubType::UserConvex5);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX6, JPH::EShapeSubType::UserConvex6);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX7, JPH::EShapeSubType::UserConvex7);
+ENSURE_ENUM_EQ(JPC_SHAPE_SUB_TYPE_USER_CONVEX8, JPH::EShapeSubType::UserConvex8);
+
+ENSURE_ENUM_EQ(JPC_PHYSICS_UPDATE_ERROR_NONE, JPH::EPhysicsUpdateError::None);
+ENSURE_ENUM_EQ(JPC_PHYSICS_UPDATE_ERROR_MANIFOLD_CACHE_FULL, JPH::EPhysicsUpdateError::ManifoldCacheFull);
+ENSURE_ENUM_EQ(JPC_PHYSICS_UPDATE_ERROR_BODY_PAIR_CACHE_FULL, JPH::EPhysicsUpdateError::BodyPairCacheFull);
+ENSURE_ENUM_EQ(JPC_PHYSICS_UPDATE_ERROR_CONTACT_CONSTRAINTS_FULL, JPH::EPhysicsUpdateError::ContactConstraintsFull);

+ 56 - 64
JoltC/JoltPhysicsC.h

@@ -1,4 +1,4 @@
-// JoltPhysicsC v0.0.6 - C API for Jolt Physics C++ library
+// JoltC - C API for Jolt Physics C++ library
 
 #pragma once
 #include <stdlib.h>
@@ -6,12 +6,8 @@
 #include <stdint.h>
 #include <stdalign.h>
 #include <float.h>
-//--------------------------------------------------------------------------------------------------
-//
-// Const
-//
-//--------------------------------------------------------------------------------------------------
-#define JPC_API extern __declspec(dllexport) // TODO: Define this properly
+
+#define JPC_API extern __declspec(dllexport)
 
 // Always turn on asserts in Debug mode
 #if defined(_DEBUG) || defined(JPH_ENABLE_ASSERTS)
@@ -65,63 +61,59 @@ enum JPC_JobSystemConstants
     JPC_MAX_PHYSICS_BARRIERS = 8
 };
 
-typedef uint8_t JPC_PhysicsUpdateError;
-typedef enum JPC_EPhysicsUpdateError
-{
-    JPC_PHYSICS_UPDATE_NO_ERROR                 = 0,
-    JPC_PHYSICS_UPDATE_MANIFOLD_CACHE_FULL      = 1 << 0,
-    JPC_PHYSICS_UPDATE_BODY_PAIR_CACHE_FULL     = 1 << 1,
-    JPC_PHYSICS_UPDATE_CONTACT_CONSTRAINTS_FULL = 1 << 2,
-} JPC_EPhysicsUpdateError;
-
-typedef uint8_t JPC_ShapeType;
-typedef enum JPC_EShapeType
-{
-    JPC_SHAPE_TYPE_CONVEX       = 0,
-    JPC_SHAPE_TYPE_COMPOUND     = 1,
-    JPC_SHAPE_TYPE_DECORATED    = 2,
-    JPC_SHAPE_TYPE_MESH         = 3,
-    JPC_SHAPE_TYPE_HEIGHT_FIELD = 4,
-    JPC_SHAPE_TYPE_USER1        = 5,
-    JPC_SHAPE_TYPE_USER2        = 6,
-    JPC_SHAPE_TYPE_USER3        = 7,
-    JPC_SHAPE_TYPE_USER4        = 8
-} JPC_EShapeType;
-
-typedef uint8_t JPC_ShapeSubType;
-typedef enum JPC_EShapeSubType
-{
-    JPC_SHAPE_SUB_TYPE_SPHERE                = 0,
-    JPC_SHAPE_SUB_TYPE_BOX                   = 1,
-    JPC_SHAPE_SUB_TYPE_TRIANGLE              = 2,
-    JPC_SHAPE_SUB_TYPE_CAPSULE               = 3,
-    JPC_SHAPE_SUB_TYPE_TAPERED_CAPSULE       = 4,
-    JPC_SHAPE_SUB_TYPE_CYLINDER              = 5,
-    JPC_SHAPE_SUB_TYPE_CONVEX_HULL           = 6,
-    JPC_SHAPE_SUB_TYPE_STATIC_COMPOUND       = 7,
-    JPC_SHAPE_SUB_TYPE_MUTABLE_COMPOUND      = 8,
-    JPC_SHAPE_SUB_TYPE_ROTATED_TRANSLATED    = 9,
-    JPC_SHAPE_SUB_TYPE_SCALED                = 10,
-    JPC_SHAPE_SUB_TYPE_OFFSET_CENTER_OF_MASS = 11,
-    JPC_SHAPE_SUB_TYPE_MESH                  = 12,
-    JPC_SHAPE_SUB_TYPE_HEIGHT_FIELD          = 13,
-    JPC_SHAPE_SUB_TYPE_USER1                 = 14,
-    JPC_SHAPE_SUB_TYPE_USER2                 = 15,
-    JPC_SHAPE_SUB_TYPE_USER3                 = 16,
-    JPC_SHAPE_SUB_TYPE_USER4                 = 17,
-    JPC_SHAPE_SUB_TYPE_USER5                 = 18,
-    JPC_SHAPE_SUB_TYPE_USER6                 = 19,
-    JPC_SHAPE_SUB_TYPE_USER7                 = 20,
-    JPC_SHAPE_SUB_TYPE_USER8                 = 21,
-    JPC_SHAPE_SUB_TYPE_USER_CONVEX1          = 22,
-    JPC_SHAPE_SUB_TYPE_USER_CONVEX2          = 23,
-    JPC_SHAPE_SUB_TYPE_USER_CONVEX3          = 24,
-    JPC_SHAPE_SUB_TYPE_USER_CONVEX4          = 25,
-    JPC_SHAPE_SUB_TYPE_USER_CONVEX5          = 26,
-    JPC_SHAPE_SUB_TYPE_USER_CONVEX6          = 27,
-    JPC_SHAPE_SUB_TYPE_USER_CONVEX7          = 28,
-    JPC_SHAPE_SUB_TYPE_USER_CONVEX8          = 29,
-} JPC_EShapeSubType;
+typedef enum JPC_ShapeType: uint8_t {
+    JPC_SHAPE_TYPE_CONVEX,
+    JPC_SHAPE_TYPE_COMPOUND,
+    JPC_SHAPE_TYPE_DECORATED,
+    JPC_SHAPE_TYPE_MESH,
+    JPC_SHAPE_TYPE_HEIGHT_FIELD,
+    JPC_SHAPE_TYPE_SOFTBODY,
+    JPC_SHAPE_TYPE_USER1,
+    JPC_SHAPE_TYPE_USER2,
+    JPC_SHAPE_TYPE_USER3,
+    JPC_SHAPE_TYPE_USER4,
+} JPC_ShapeType;
+
+typedef enum JPC_ShapeSubType: uint8_t {
+    JPC_SHAPE_SUB_TYPE_SPHERE,
+    JPC_SHAPE_SUB_TYPE_BOX,
+    JPC_SHAPE_SUB_TYPE_TRIANGLE,
+    JPC_SHAPE_SUB_TYPE_CAPSULE,
+    JPC_SHAPE_SUB_TYPE_TAPEREDCAPSULE,
+    JPC_SHAPE_SUB_TYPE_CYLINDER,
+    JPC_SHAPE_SUB_TYPE_CONVEX_HULL,
+    JPC_SHAPE_SUB_TYPE_STATIC_COMPOUND,
+    JPC_SHAPE_SUB_TYPE_MUTABLE_COMPOUND,
+    JPC_SHAPE_SUB_TYPE_ROTATED_TRANSLATED,
+    JPC_SHAPE_SUB_TYPE_SCALED,
+    JPC_SHAPE_SUB_TYPE_OFFSET_CENTER_OF_MASS,
+    JPC_SHAPE_SUB_TYPE_MESH,
+    JPC_SHAPE_SUB_TYPE_HEIGHT_FIELD,
+    JPC_SHAPE_SUB_TYPE_SOFT_BODY,
+    JPC_SHAPE_SUB_TYPE_USER1,
+    JPC_SHAPE_SUB_TYPE_USER2,
+    JPC_SHAPE_SUB_TYPE_USER3,
+    JPC_SHAPE_SUB_TYPE_USER4,
+    JPC_SHAPE_SUB_TYPE_USER5,
+    JPC_SHAPE_SUB_TYPE_USER6,
+    JPC_SHAPE_SUB_TYPE_USER7,
+    JPC_SHAPE_SUB_TYPE_USER8,
+    JPC_SHAPE_SUB_TYPE_USER_CONVEX1,
+    JPC_SHAPE_SUB_TYPE_USER_CONVEX2,
+    JPC_SHAPE_SUB_TYPE_USER_CONVEX3,
+    JPC_SHAPE_SUB_TYPE_USER_CONVEX4,
+    JPC_SHAPE_SUB_TYPE_USER_CONVEX5,
+    JPC_SHAPE_SUB_TYPE_USER_CONVEX6,
+    JPC_SHAPE_SUB_TYPE_USER_CONVEX7,
+    JPC_SHAPE_SUB_TYPE_USER_CONVEX8,
+} JPC_ShapeSubType;
+
+typedef enum JPC_PhysicsUpdateError: uint32_t {
+    JPC_PHYSICS_UPDATE_ERROR_NONE                     = 0,
+    JPC_PHYSICS_UPDATE_ERROR_MANIFOLD_CACHE_FULL      = 1 << 0,
+    JPC_PHYSICS_UPDATE_ERROR_BODY_PAIR_CACHE_FULL     = 1 << 1,
+    JPC_PHYSICS_UPDATE_ERROR_CONTACT_CONSTRAINTS_FULL = 1 << 2,
+} JPC_PhysicsUpdateError;
 
 typedef enum JPC_ConstraintType
 {

+ 1 - 1
JoltPhysics

@@ -1 +1 @@
-Subproject commit f5ab4fd526fe1e03a408a5ead3ee396263d8a1d3
+Subproject commit f2d1175432f8225450dea252322ba2dbaa83a370