فهرست منبع

Add FixedConstraint

Lucien Greathouse 6 ماه پیش
والد
کامیت
e1aa8ab458
2فایلهای تغییر یافته به همراه55 افزوده شده و 1 حذف شده
  1. 23 0
      JoltC/Functions.h
  2. 32 1
      JoltC/JoltC.cpp

+ 23 - 0
JoltC/Functions.h

@@ -554,6 +554,27 @@ typedef struct JPC_String JPC_String;
 JPC_API void JPC_String_delete(JPC_String* self);
 JPC_API void JPC_String_delete(JPC_String* self);
 JPC_API const char* JPC_String_c_str(JPC_String* self);
 JPC_API const char* JPC_String_c_str(JPC_String* self);
 
 
+////////////////////////////////////////////////////////////////////////////////
+// FixedConstraintSettings
+
+typedef struct JPC_Constraint JPC_Constraint;
+
+typedef struct JPC_FixedConstraintSettings {
+	// Constraint
+
+	// TwoBodyConstraint
+	// (no extra members)
+
+	// FixedConstraint
+	bool autoDetectPoint;
+} JPC_FixedConstraintSettings;
+
+JPC_API void JPC_FixedConstraintSettings_default(JPC_FixedConstraintSettings* object);
+JPC_API JPC_Constraint* JPC_FixedConstraintSettings_Create(
+	const JPC_FixedConstraintSettings* self,
+	JPC_Body* inBody1,
+	JPC_Body* inBody2);
+
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
 // TriangleShapeSettings
 // TriangleShapeSettings
 
 
@@ -1036,6 +1057,8 @@ JPC_API JPC_PhysicsUpdateError JPC_PhysicsSystem_Update(
 	JPC_TempAllocatorImpl *inTempAllocator, // FIXME: un-specialize
 	JPC_TempAllocatorImpl *inTempAllocator, // FIXME: un-specialize
 	JPC_JobSystemThreadPool *inJobSystem); // FIXME: un-specialize
 	JPC_JobSystemThreadPool *inJobSystem); // FIXME: un-specialize
 
 
+JPC_API void JPC_PhysicsSystem_AddConstraint(JPC_PhysicsSystem* self, JPC_Constraint* constraint);
+
 JPC_API JPC_BodyInterface* JPC_PhysicsSystem_GetBodyInterface(JPC_PhysicsSystem* self);
 JPC_API JPC_BodyInterface* JPC_PhysicsSystem_GetBodyInterface(JPC_PhysicsSystem* self);
 
 
 JPC_API const JPC_NarrowPhaseQuery* JPC_PhysicsSystem_GetNarrowPhaseQuery(const JPC_PhysicsSystem* self);
 JPC_API const JPC_NarrowPhaseQuery* JPC_PhysicsSystem_GetNarrowPhaseQuery(const JPC_PhysicsSystem* self);

+ 32 - 1
JoltC/JoltC.cpp

@@ -6,9 +6,9 @@
 #include <Jolt/Physics/Body/BodyActivationListener.h>
 #include <Jolt/Physics/Body/BodyActivationListener.h>
 #include <Jolt/Physics/Body/BodyCreationSettings.h>
 #include <Jolt/Physics/Body/BodyCreationSettings.h>
 #include <Jolt/Physics/Collision/CastResult.h>
 #include <Jolt/Physics/Collision/CastResult.h>
+#include <Jolt/Physics/Collision/CollideShape.h>
 #include <Jolt/Physics/Collision/CollisionCollectorImpl.h>
 #include <Jolt/Physics/Collision/CollisionCollectorImpl.h>
 #include <Jolt/Physics/Collision/ContactListener.h>
 #include <Jolt/Physics/Collision/ContactListener.h>
-#include <Jolt/Physics/Collision/CollideShape.h>
 #include <Jolt/Physics/Collision/RayCast.h>
 #include <Jolt/Physics/Collision/RayCast.h>
 #include <Jolt/Physics/Collision/Shape/BoxShape.h>
 #include <Jolt/Physics/Collision/Shape/BoxShape.h>
 #include <Jolt/Physics/Collision/Shape/CapsuleShape.h>
 #include <Jolt/Physics/Collision/Shape/CapsuleShape.h>
@@ -21,6 +21,7 @@
 #include <Jolt/Physics/Collision/Shape/TriangleShape.h>
 #include <Jolt/Physics/Collision/Shape/TriangleShape.h>
 #include <Jolt/Physics/Collision/ShapeCast.h>
 #include <Jolt/Physics/Collision/ShapeCast.h>
 #include <Jolt/Physics/Collision/SimShapeFilter.h>
 #include <Jolt/Physics/Collision/SimShapeFilter.h>
+#include <Jolt/Physics/Constraints/FixedConstraint.h>
 #include <Jolt/Physics/PhysicsSettings.h>
 #include <Jolt/Physics/PhysicsSettings.h>
 #include <Jolt/Physics/PhysicsSystem.h>
 #include <Jolt/Physics/PhysicsSystem.h>
 #include <Jolt/RegisterTypes.h>
 #include <Jolt/RegisterTypes.h>
@@ -728,6 +729,32 @@ JPC_API const char* JPC_String_c_str(JPC_String* self) {
 	return to_jph(self)->c_str();
 	return to_jph(self)->c_str();
 }
 }
 
 
+////////////////////////////////////////////////////////////////////////////////
+// Constraint
+
+OPAQUE_WRAPPER(JPC_Constraint, JPH::Constraint);
+
+////////////////////////////////////////////////////////////////////////////////
+// TwoBodyConstraint
+
+////////////////////////////////////////////////////////////////////////////////
+// FixedConstraint
+
+JPC_API void JPC_FixedConstraintSettings_default(JPC_FixedConstraintSettings* object) {
+	object->autoDetectPoint = false;
+}
+
+JPC_API JPC_Constraint* JPC_FixedConstraintSettings_Create(
+	const JPC_FixedConstraintSettings* self,
+	JPC_Body* inBody1,
+	JPC_Body* inBody2)
+{
+	JPH::FixedConstraintSettings jphSettings;
+	jphSettings.mAutoDetectPoint = self->autoDetectPoint;
+
+	return to_jpc(jphSettings.Create(*to_jph(inBody1), *to_jph(inBody2)));
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
 // Shape
 // Shape
 
 
@@ -1886,6 +1913,10 @@ JPC_API void JPC_PhysicsSystem_OptimizeBroadPhase(JPC_PhysicsSystem* self) {
 	to_jph(self)->OptimizeBroadPhase();
 	to_jph(self)->OptimizeBroadPhase();
 }
 }
 
 
+JPC_API void JPC_PhysicsSystem_AddConstraint(JPC_PhysicsSystem* self, JPC_Constraint* constraint) {
+	to_jph(self)->AddConstraint(to_jph(constraint));
+}
+
 JPC_API JPC_BodyInterface* JPC_PhysicsSystem_GetBodyInterface(JPC_PhysicsSystem* self) {
 JPC_API JPC_BodyInterface* JPC_PhysicsSystem_GetBodyInterface(JPC_PhysicsSystem* self) {
 	return to_jpc(&to_jph(self)->GetBodyInterface());
 	return to_jpc(&to_jph(self)->GetBodyInterface());
 }
 }