Browse Source

Bind ShapeFilter::ShouldCollide two shapes overload

Lucien Greathouse 4 tháng trước cách đây
mục cha
commit
537bdecf91
2 tập tin đã thay đổi với 17 bổ sung0 xóa
  1. 4 0
      JoltC/Functions.h
  2. 13 0
      JoltCImpl/JoltC.cpp

+ 4 - 0
JoltC/Functions.h

@@ -343,6 +343,10 @@ JPC_API void JPC_BodyFilter_delete(JPC_BodyFilter* object);
 
 typedef struct JPC_ShapeFilterFns {
 	bool (*ShouldCollide)(const void *self, const JPC_Shape *inShape2, JPC_SubShapeID inSubShapeIDOfShape2);
+
+	bool (*ShouldCollideTwoShapes)(const void *self,
+		const JPC_Shape *inShape1, JPC_SubShapeID inSubShapeIDOfShape1,
+		const JPC_Shape *inShape2, JPC_SubShapeID inSubShapeIDOfShape2);
 } JPC_ShapeFilterFns;
 
 typedef struct JPC_ShapeFilter JPC_ShapeFilter;

+ 13 - 0
JoltCImpl/JoltC.cpp

@@ -549,6 +549,19 @@ public:
 		return fns.ShouldCollide(self, to_jpc(inShape2), to_jpc(inSubShapeIDOfShape2));
 	}
 
+	virtual bool ShouldCollide(
+		const JPH::Shape *inShape1, const JPH::SubShapeID &inSubShapeIDOfShape1,
+		const JPH::Shape *inShape2, const JPH::SubShapeID &inSubShapeIDOfShape2) const override
+	{
+		if (fns.ShouldCollideTwoShapes == nullptr) {
+			return true;
+		}
+
+		return fns.ShouldCollideTwoShapes(self,
+			to_jpc(inShape1), to_jpc(inSubShapeIDOfShape1),
+			to_jpc(inShape2), to_jpc(inSubShapeIDOfShape2));
+	}
+
 private:
 	const void* self;
 	JPC_ShapeFilterFns fns;