Browse Source

Use default filter impls if given nullptr in CastRay

Lucien Greathouse 1 year ago
parent
commit
ddbeff8ba4
1 changed files with 17 additions and 3 deletions
  1. 17 3
      JoltC/JoltC.cpp

+ 17 - 3
JoltC/JoltC.cpp

@@ -1424,9 +1424,23 @@ JPC_API void JPC_BodyInterface_InvalidateContactCache(JPC_BodyInterface *self, J
 JPC_API bool JPC_NarrowPhaseQuery_CastRay(const JPC_NarrowPhaseQuery* self, JPC_NarrowPhaseQuery_CastRayArgs* args) {
 	JPH::RayCastResult result;
 
-	const JPC_BroadPhaseLayerFilterBridge* bplFilter = to_jph(args->BroadPhaseLayerFilter);
-	const JPC_ObjectLayerFilterBridge* olFilter = to_jph(args->ObjectLayerFilter);
-	const JPC_BodyFilterBridge* bodyFilter = to_jph(args->BodyFilter);
+	JPH::BroadPhaseLayerFilter defaultBplFilter{};
+	const JPH::BroadPhaseLayerFilter* bplFilter = &defaultBplFilter;
+	if (args->BroadPhaseLayerFilter != nullptr) {
+		bplFilter = to_jph(args->BroadPhaseLayerFilter);
+	}
+
+	JPH::ObjectLayerFilter defaultOlFilter{};
+	const JPH::ObjectLayerFilter* olFilter = &defaultOlFilter;
+	if (args->ObjectLayerFilter != nullptr) {
+		olFilter = to_jph(args->ObjectLayerFilter);
+	}
+
+	JPH::BodyFilter defaultBodyFilter{};
+	const JPH::BodyFilter* bodyFilter = &defaultBodyFilter;
+	if (args->BodyFilter != nullptr) {
+		bodyFilter = to_jph(args->BodyFilter);
+	}
 
 	bool hit = to_jph(self)->CastRay(
 		to_jph(args->Ray),