Browse Source

Bind OnContactValidate

Rasmus Brönnegård 2 months ago
parent
commit
44f3441339
2 changed files with 11 additions and 10 deletions
  1. 6 6
      JoltC/Functions.h
  2. 5 4
      JoltCImpl/JoltC.cpp

+ 6 - 6
JoltC/Functions.h

@@ -538,12 +538,12 @@ ENSURE_NORMAL_FIELD(  CollideShapeSettings, MaxSeparationDistance)
 ENSURE_NORMAL_FIELD(  CollideShapeSettings, BackFaceMode)
 
 typedef struct JPC_ContactListenerFns {
-	// ValidateResult (*OnContactValidate)(
-	// 	void *self,
-	// 	const Body &inBody1,
-	// 	const Body &inBody2,
-	// 	RVec3Arg inBaseOffset,
-	// 	const CollideShapeResult &inCollisionResult);
+	JPC_ValidateResult (*OnContactValidate)(
+		void *self,
+		const JPC_Body *inBody1,
+		const JPC_Body *inBody2,
+		JPC_RVec3 inBaseOffset,
+		const JPC_CollideShapeResult *inCollisionResult);
 
 	void (*OnContactAdded)(
 		void *self,

+ 5 - 4
JoltCImpl/JoltC.cpp

@@ -101,6 +101,7 @@ ENUM_CONVERSION(JPC_ShapeType, JPH::EShapeType)
 ENUM_CONVERSION(JPC_ShapeSubType, JPH::EShapeSubType)
 ENUM_CONVERSION(JPC_SpringMode, JPH::ESpringMode)
 ENUM_CONVERSION(JPC_MotorState, JPH::EMotorState)
+ENUM_CONVERSION(JPC_ValidateResult, JPH::ValidateResult)
 
 OPAQUE_WRAPPER(JPC_PhysicsSystem, JPH::PhysicsSystem)
 DESTRUCTOR(JPC_PhysicsSystem)
@@ -691,10 +692,10 @@ public:
 		JPH::RVec3Arg inBaseOffset,
 		const JPH::CollideShapeResult &inCollisionResult) override
 	{
-		// if (fns.OnContactValidate != nullptr) {
-		// 	return fns.OnContactValidate(self, to_jpc(inBody1), to_jpc(inBody2), to_jpc(inBaseOffset), to_jpc(inCollisionResult));
-		// }
-
+		if (fns.OnContactValidate != nullptr) {
+			JPC_CollideShapeResult collisionResult = JPC_CollideShapeResult_to_jpc(inCollisionResult);
+			return to_jph(fns.OnContactValidate(self, to_jpc(&inBody1), to_jpc(&inBody2), to_jpc(inBaseOffset), &collisionResult));
+		}
 		return ContactListener::OnContactValidate(inBody1, inBody2, inBaseOffset, inCollisionResult);
 	}