Prechádzať zdrojové kódy

Add a shim 'easiest' shape cast function for smoke testing

Lucien Greathouse 11 mesiacov pred
rodič
commit
4c6293ae45
2 zmenil súbory, kde vykonal 43 pridanie a 0 odobranie
  1. 1 0
      JoltC/Functions.h
  2. 42 0
      JoltC/JoltC.cpp

+ 1 - 0
JoltC/Functions.h

@@ -816,6 +816,7 @@ typedef struct JPC_NarrowPhaseQuery_CastShapeArgs {
 } JPC_NarrowPhaseQuery_CastShapeArgs;
 } JPC_NarrowPhaseQuery_CastShapeArgs;
 
 
 JPC_API void JPC_NarrowPhaseQuery_CastShape(const JPC_NarrowPhaseQuery* self, JPC_NarrowPhaseQuery_CastShapeArgs* args);
 JPC_API void JPC_NarrowPhaseQuery_CastShape(const JPC_NarrowPhaseQuery* self, JPC_NarrowPhaseQuery_CastShapeArgs* args);
+JPC_API bool JPC_NarrowPhaseQuery_CastShapeEasiest(const JPC_NarrowPhaseQuery* self, JPC_NarrowPhaseQuery_CastShapeArgs* args);
 
 
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
 // PhysicsSystem
 // PhysicsSystem

+ 42 - 0
JoltC/JoltC.cpp

@@ -1522,6 +1522,48 @@ JPC_API void JPC_NarrowPhaseQuery_CastShape(const JPC_NarrowPhaseQuery* self, JP
 		*shapeFilter);
 		*shapeFilter);
 }
 }
 
 
+JPC_API bool JPC_NarrowPhaseQuery_CastShapeEasiest(const JPC_NarrowPhaseQuery* self, JPC_NarrowPhaseQuery_CastShapeArgs* args) {
+	JPH::ShapeCastSettings settings{};
+
+	JPH::ClosestHitCollisionCollector<JPH::CastShapeCollector> collector{};
+
+	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);
+	}
+
+	JPH::ShapeFilter defaultShapeFilter{};
+	const JPH::ShapeFilter* shapeFilter = &defaultShapeFilter;
+	// if (args->ShapeFilter != nullptr) {
+	// 	shapeFilter = to_jph(args->ShapeFilter);
+	// }
+
+	to_jph(self)->CastShape(
+		to_jph(args->ShapeCast),
+		settings,
+		to_jph(args->BaseOffset),
+		collector,
+		*bplFilter,
+		*olFilter,
+		*bodyFilter,
+		*shapeFilter);
+
+	return collector.HadHit();
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
 // PhysicsSystem
 // PhysicsSystem