Files
LNXSDK/lib/haxejolt/Sources/jolt/Jt.hx
2026-03-04 00:50:15 -08:00

695 lines
23 KiB
Haxe

// Jolt Physics bindings for Haxe
package jolt;
enum abstract EMotionType(Int) from Int to Int {
var Static = 0;
var Kinematic = 1;
var Dynamic = 2;
}
enum abstract EActivation(Int) from Int to Int {
var Activate = 0;
var DontActivate = 1;
}
enum abstract EShapeType(Int) from Int to Int {
var Convex = 0;
var Compound = 1;
var Decorated = 2;
var Mesh = 3;
var HeightField = 4;
var Plane = 5;
var Empty = 6;
}
enum abstract EShapeSubType(Int) from Int to Int {
var Sphere = 0;
var Box = 1;
var Capsule = 2;
var TaperedCapsule = 3;
var Cylinder = 4;
var TaperedCylinder = 5;
var ConvexHull = 6;
var StaticCompound = 7;
var MutableCompound = 8;
var RotatedTranslated = 9;
var Scaled = 10;
var OffsetCenterOfMass = 11;
var MeshShape = 12;
var HeightFieldShape = 13;
var PlaneShape = 14;
var EmptyShape = 15;
}
#if hl
typedef Jt = haxe.macro.MacroType<[webidl.Module.build({
idlFile: "Sources/jolt/jolt.idl",
chopPrefix: "",
autoGC: false,
nativeLib: "jolt"
})]>;
#else
@:native('Jolt.Vec3')
extern class Vec3 {
public function new(?x:Float, ?y:Float, ?z:Float):Void;
public static function sZero():Vec3;
public static function sOne():Vec3;
public static function sAxisX():Vec3;
public static function sAxisY():Vec3;
public static function sAxisZ():Vec3;
public function GetX():Float;
public function GetY():Float;
public function GetZ():Float;
public function SetX(x:Float):Void;
public function SetY(y:Float):Void;
public function SetZ(z:Float):Void;
public function Set(x:Float, y:Float, z:Float):Void;
public function Length():Float;
public function LengthSq():Float;
public function Normalized():Vec3;
public function Cross(v:Vec3):Vec3;
public function Dot(v:Vec3):Float;
public function Add(v:Vec3):Vec3;
public function Sub(v:Vec3):Vec3;
public function Mul(f:Float):Vec3;
public function Div(f:Float):Vec3;
}
@:native('Jolt.RVec3')
extern class RVec3 {
public function new(?x:Float, ?y:Float, ?z:Float):Void;
public static function sZero():RVec3;
public function GetX():Float;
public function GetY():Float;
public function GetZ():Float;
public function SetX(x:Float):Void;
public function SetY(y:Float):Void;
public function SetZ(z:Float):Void;
public function Set(x:Float, y:Float, z:Float):Void;
}
@:native('Jolt.Quat')
extern class Quat {
public function new(?x:Float, ?y:Float, ?z:Float, ?w:Float):Void;
public static function sIdentity():Quat;
public static function sRotation(axis:Vec3, angle:Float):Quat;
public static function sEulerAngles(angles:Vec3):Quat;
public function GetX():Float;
public function GetY():Float;
public function GetZ():Float;
public function GetW():Float;
public function SetX(x:Float):Void;
public function SetY(y:Float):Void;
public function SetZ(z:Float):Void;
public function SetW(w:Float):Void;
public function Set(x:Float, y:Float, z:Float, w:Float):Void;
public function Length():Float;
public function Normalized():Quat;
public function GetEulerAngles():Vec3;
public function Conjugated():Quat;
public function Inversed():Quat;
public function MulQuat(q:Quat):Quat;
public function MulVec3(v:Vec3):Vec3;
public function SLERP(dest:Quat, fraction:Float):Quat;
}
@:native('Jolt.Mat44')
extern class Mat44 {
public function new():Void;
public static function sIdentity():Mat44;
public static function sZero():Mat44;
public static function sRotation(q:Quat):Mat44;
public static function sTranslation(v:Vec3):Mat44;
public static function sRotationTranslation(q:Quat, v:Vec3):Mat44;
public static function sScale(s:Float):Mat44;
public function GetAxisX():Vec3;
public function GetAxisY():Vec3;
public function GetAxisZ():Vec3;
public function GetTranslation():Vec3;
public function GetQuaternion():Quat;
public function GetRotation():Mat44;
public function MulMat44(m:Mat44):Mat44;
public function MulVec3(v:Vec3):Vec3;
public function Inversed():Mat44;
}
@:native('Jolt.BodyID')
extern class BodyID {
public function new():Void;
public function GetIndex():Int;
public function GetSequenceNumber():Int;
public function IsInvalid():Bool;
}
@:native('Jolt.Body')
extern class Body {
public function GetID():BodyID;
public function GetBodyType():Int;
public function GetMotionType():Int;
public function SetMotionType(type:Int):Void;
public function IsActive():Bool;
public function IsStatic():Bool;
public function IsKinematic():Bool;
public function IsDynamic():Bool;
public function IsSensor():Bool;
public function SetIsSensor(sensor:Bool):Void;
public function GetPosition():RVec3;
public function GetRotation():Quat;
public function GetWorldTransform():Mat44;
public function GetCenterOfMassPosition():RVec3;
public function GetCenterOfMassTransform():Mat44;
public function GetLinearVelocity():Vec3;
public function GetAngularVelocity():Vec3;
public function SetLinearVelocity(v:Vec3):Void;
public function SetAngularVelocity(v:Vec3):Void;
public function SetLinearVelocityClamped(v:Vec3):Void;
public function SetAngularVelocityClamped(v:Vec3):Void;
public function GetPointVelocity(point:RVec3):Vec3;
public function AddForce(force:Vec3):Void;
public function AddForceAtPosition(force:Vec3, position:RVec3):Void;
public function AddTorque(torque:Vec3):Void;
public function AddImpulse(impulse:Vec3):Void;
public function AddImpulseAtPosition(impulse:Vec3, position:RVec3):Void;
public function AddAngularImpulse(impulse:Vec3):Void;
public function MoveKinematic(targetPosition:RVec3, targetRotation:Quat, deltaTime:Float):Void;
public function GetAccumulatedForce():Vec3;
public function GetAccumulatedTorque():Vec3;
public function ResetForce():Void;
public function ResetTorque():Void;
public function ResetMotion():Void;
public function GetInverseInertia():Mat44;
public function GetWorldSpaceBounds():Dynamic;
public function GetShape():Shape;
public function GetFriction():Float;
public function SetFriction(friction:Float):Void;
public function GetRestitution():Float;
public function SetRestitution(restitution:Float):Void;
public function GetUserData():Int;
public function SetUserData(data:Int):Void;
}
@:native('Jolt.Shape')
extern class Shape {
public function GetType():Int;
public function GetSubType():Int;
public function GetUserData():Int;
public function SetUserData(data:Int):Void;
public function MustBeStatic():Bool;
public function GetCenterOfMass():Vec3;
public function GetLocalBounds():Dynamic;
public function GetInnerRadius():Float;
public function GetVolume():Float;
public function GetMassProperties():Dynamic;
}
@:native('Jolt.BoxShapeSettings')
extern class BoxShapeSettings {
public function new(halfExtent:Vec3):Void;
public function Create():ShapeResult;
}
@:native('Jolt.BoxShape')
extern class BoxShape extends Shape {
public function new(halfExtent:Vec3):Void;
public function GetHalfExtent():Vec3;
}
@:native('Jolt.SphereShapeSettings')
extern class SphereShapeSettings {
public function new(radius:Float):Void;
public function Create():ShapeResult;
}
@:native('Jolt.SphereShape')
extern class SphereShape extends Shape {
public function new(radius:Float):Void;
public function GetRadius():Float;
}
@:native('Jolt.CapsuleShapeSettings')
extern class CapsuleShapeSettings {
public function new(halfHeight:Float, radius:Float):Void;
public function Create():ShapeResult;
}
@:native('Jolt.CapsuleShape')
extern class CapsuleShape extends Shape {
public function new(halfHeight:Float, radius:Float):Void;
public function GetHalfHeightOfCylinder():Float;
public function GetRadius():Float;
}
@:native('Jolt.CylinderShapeSettings')
extern class CylinderShapeSettings {
public function new(halfHeight:Float, radius:Float):Void;
public function Create():ShapeResult;
}
@:native('Jolt.CylinderShape')
extern class CylinderShape extends Shape {
public function new(halfHeight:Float, radius:Float):Void;
public function GetHalfHeight():Float;
public function GetRadius():Float;
}
@:native('Jolt.ConvexHullShapeSettings')
extern class ConvexHullShapeSettings {
public function new():Void;
public function Create():ShapeResult;
}
@:native('Jolt.MeshShapeSettings')
extern class MeshShapeSettings {
public function new():Void;
public function Create():ShapeResult;
}
@:native('Jolt.HeightFieldShapeSettings')
extern class HeightFieldShapeSettings {
public function new():Void;
public function Create():ShapeResult;
}
@:native('Jolt.ShapeResult')
extern class ShapeResult {
public function IsValid():Bool;
public function HasError():Bool;
public function Get():Shape;
}
@:native('Jolt.MassProperties')
extern class MassProperties {
public function new():Void;
public var mMass:Float;
public function ScaleToMass(mass:Float):Void;
}
@:native('Jolt.BodyCreationSettings')
extern class BodyCreationSettings {
public function new(shape:Shape, position:RVec3, rotation:Quat, motionType:Int, objectLayer:Int):Void;
public var mFriction:Float;
public var mRestitution:Float;
public var mLinearDamping:Float;
public var mAngularDamping:Float;
public var mMaxLinearVelocity:Float;
public var mMaxAngularVelocity:Float;
public var mGravityFactor:Float;
public var mAllowSleeping:Bool;
public var mIsSensor:Bool;
public var mMotionQuality:Int;
public var mAllowedDOFs:Int;
public var mOverrideMassProperties:Int;
public var mMassPropertiesOverride:MassProperties;
public var mNumVelocityStepsOverride:Int;
public var mNumPositionStepsOverride:Int;
}
@:native('Jolt.BodyInterface')
extern class BodyInterface {
public function CreateBody(settings:BodyCreationSettings):Body;
public function CreateBodyWithID(bodyId:BodyID, settings:BodyCreationSettings):Body;
public function DestroyBody(bodyId:BodyID):Void;
public function AddBody(bodyId:BodyID, activation:Int):Void;
public function RemoveBody(bodyId:BodyID):Void;
public function IsAdded(bodyId:BodyID):Bool;
public function ActivateBody(bodyId:BodyID):Void;
public function DeactivateBody(bodyId:BodyID):Void;
public function IsActive(bodyId:BodyID):Bool;
public function SetMotionType(bodyId:BodyID, motionType:Int, activation:Int):Void;
public function GetMotionType(bodyId:BodyID):Int;
public function SetPosition(bodyId:BodyID, position:RVec3, activation:Int):Void;
public function GetPosition(bodyId:BodyID):RVec3;
public function GetCenterOfMassPosition(bodyId:BodyID):RVec3;
public function SetRotation(bodyId:BodyID, rotation:Quat, activation:Int):Void;
public function GetRotation(bodyId:BodyID):Quat;
public function SetPositionAndRotation(bodyId:BodyID, position:RVec3, rotation:Quat, activation:Int):Void;
public function SetPositionAndRotationWhenChanged(bodyId:BodyID, position:RVec3, rotation:Quat, activation:Int):Void;
public function SetLinearVelocity(bodyId:BodyID, velocity:Vec3):Void;
public function GetLinearVelocity(bodyId:BodyID):Vec3;
public function SetAngularVelocity(bodyId:BodyID, velocity:Vec3):Void;
public function GetAngularVelocity(bodyId:BodyID):Vec3;
public function AddLinearVelocity(bodyId:BodyID, velocity:Vec3):Void;
public function AddLinearAndAngularVelocity(bodyId:BodyID, linear:Vec3, angular:Vec3):Void;
public function GetPointVelocity(bodyId:BodyID, point:RVec3):Vec3;
public function AddForce(bodyId:BodyID, force:Vec3, activation:Int = 0):Void;
public function AddForceAtPosition(bodyId:BodyID, force:Vec3, position:RVec3, activation:Int = 0):Void;
public function AddTorque(bodyId:BodyID, torque:Vec3, activation:Int = 0):Void;
public function AddImpulse(bodyId:BodyID, impulse:Vec3):Void;
public function AddImpulseAtPosition(bodyId:BodyID, impulse:Vec3, position:RVec3):Void;
public function AddAngularImpulse(bodyId:BodyID, impulse:Vec3):Void;
public function MoveKinematic(bodyId:BodyID, targetPosition:RVec3, targetRotation:Quat, deltaTime:Float):Void;
public function SetShape(bodyId:BodyID, shape:Shape, updateMassProperties:Bool, activation:Int):Void;
public function GetShape(bodyId:BodyID):Shape;
public function SetFriction(bodyId:BodyID, friction:Float):Void;
public function GetFriction(bodyId:BodyID):Float;
public function SetRestitution(bodyId:BodyID, restitution:Float):Void;
public function GetRestitution(bodyId:BodyID):Float;
public function SetGravityFactor(bodyId:BodyID, factor:Float):Void;
public function GetGravityFactor(bodyId:BodyID):Float;
public function SetUserData(bodyId:BodyID, data:Int):Void;
public function GetUserData(bodyId:BodyID):Int;
public function GetWorldTransform(bodyId:BodyID):Mat44;
public function GetCenterOfMassTransform(bodyId:BodyID):Mat44;
}
@:native('Jolt.RRayCast')
extern class RRayCast {
public function new(origin:RVec3, direction:Vec3):Void;
public var mOrigin:RVec3;
public var mDirection:Vec3;
}
@:native('Jolt.RayCastResult')
extern class RayCastResult {
public function new():Void;
public var mBodyID:BodyID;
public var mFraction:Float;
}
@:native('Jolt.BroadPhaseLayer')
extern class BroadPhaseLayer {
public function new(layer:Int):Void;
}
@:native('Jolt.BroadPhaseLayerInterfaceTable')
extern class BroadPhaseLayerInterfaceTable extends BroadPhaseLayerInterface {
public function new(numObjectLayers:Int, numBroadPhaseLayers:Int):Void;
public function MapObjectToBroadPhaseLayer(objectLayer:Int, broadPhaseLayer:BroadPhaseLayer):Void;
}
@:native('Jolt.ObjectLayerPairFilterTable')
extern class ObjectLayerPairFilterTable extends ObjectLayerPairFilter {
public function new(numObjectLayers:Int):Void;
public function EnableCollision(layer1:Int, layer2:Int):Void;
public function DisableCollision(layer1:Int, layer2:Int):Void;
}
@:native('Jolt.ObjectVsBroadPhaseLayerFilterTable')
extern class ObjectVsBroadPhaseLayerFilterTable extends ObjectVsBroadPhaseLayerFilter {
public function new(broadPhaseLayerInterface:BroadPhaseLayerInterfaceTable, numBroadPhaseLayers:Int,
objectLayerPairFilter:ObjectLayerPairFilterTable, numObjectLayers:Int):Void;
}
@:native('Jolt.BroadPhaseLayerInterfaceJS')
extern class BroadPhaseLayerInterface {
public function new():Void;
}
@:native('Jolt.ObjectVsBroadPhaseLayerFilterJS')
extern class ObjectVsBroadPhaseLayerFilter {
public function new():Void;
}
@:native('Jolt.ObjectLayerPairFilterJS')
extern class ObjectLayerPairFilter {
public function new():Void;
}
@:native('Jolt.NarrowPhaseQuery')
extern class NarrowPhaseQuery {
public function CastRay(ray:RRayCast, result:RayCastResult):Bool;
}
@:native('Jolt.ContactListenerJS')
extern class ContactListener {
public function new():Void;
}
@:native('Jolt.BodyActivationListenerJS')
extern class BodyActivationListener {
public function new():Void;
}
@:native('Jolt.PhysicsSystem')
extern class PhysicsSystem {
public function new():Void;
public function Init(maxBodies:Int, numBodyMutexes:Int, maxBodyPairs:Int, maxContactConstraints:Int):Void;
public function Update(deltaTime:Float, collisionSteps:Int):Void;
public function OptimizeBroadPhase():Void;
public function GetBodyInterface():BodyInterface;
public function GetBodyInterfaceNoLock():BodyInterface;
public function GetNumBodies():Int;
public function GetNumActiveBodies(bodyType:Int):Int;
public function GetMaxBodies():Int;
public function SetGravity(gravity:Vec3):Void;
public function GetGravity():Vec3;
public function SetContactListener(listener:ContactListener):Void;
public function SetBodyActivationListener(listener:BodyActivationListener):Void;
public function GetNarrowPhaseQuery():NarrowPhaseQuery;
public function AddConstraint(constraint:Constraint):Void;
public function RemoveConstraint(constraint:Constraint):Void;
}
@:native('Jolt.JoltSettings')
extern class JoltSettings {
public function new():Void;
public var mMaxBodies:Int;
public var mMaxBodyPairs:Int;
public var mMaxContactConstraints:Int;
public var mBroadPhaseLayerInterface:BroadPhaseLayerInterface;
public var mObjectVsBroadPhaseLayerFilter:ObjectVsBroadPhaseLayerFilter;
public var mObjectLayerPairFilter:ObjectLayerPairFilter;
}
@:native('Jolt.JoltInterface')
extern class JoltInterface {
public function new(settings:JoltSettings):Void;
public function Step(deltaTime:Float, collisionSteps:Int):Void;
public function GetPhysicsSystem():PhysicsSystem;
public function GetTempAllocator():Dynamic;
}
@:native('Jolt.Constraint')
extern class Constraint {
public function GetType():Int;
public function GetSubType():Int;
public function GetRefCount():Int;
public function SetEnabled(enabled:Bool):Void;
public function GetEnabled():Bool;
}
@:native('Jolt.TwoBodyConstraint')
extern class TwoBodyConstraint extends Constraint {
public function GetBody1():Body;
public function GetBody2():Body;
}
@:native('Jolt.FixedConstraintSettings')
extern class FixedConstraintSettings {
public function new():Void;
public var mSpace:Int;
public var mAutoDetectPoint:Bool;
public var mPoint1:RVec3;
public var mPoint2:RVec3;
public var mAxisX1:Vec3;
public var mAxisY1:Vec3;
public var mAxisX2:Vec3;
public var mAxisY2:Vec3;
public function Create(body1:Body, body2:Body):TwoBodyConstraint;
}
@:native('Jolt.PointConstraintSettings')
extern class PointConstraintSettings {
public function new():Void;
public var mSpace:Int;
public var mPoint1:RVec3;
public var mPoint2:RVec3;
public function Create(body1:Body, body2:Body):TwoBodyConstraint;
}
@:native('Jolt.HingeConstraintSettings')
extern class HingeConstraintSettings {
public function new():Void;
public var mSpace:Int;
public var mPoint1:RVec3;
public var mPoint2:RVec3;
public var mHingeAxis1:Vec3;
public var mHingeAxis2:Vec3;
public var mNormalAxis1:Vec3;
public var mNormalAxis2:Vec3;
public var mLimitsMin:Float;
public var mLimitsMax:Float;
public var mMaxFrictionTorque:Float;
public function Create(body1:Body, body2:Body):TwoBodyConstraint;
}
@:native('Jolt.SliderConstraintSettings')
extern class SliderConstraintSettings {
public function new():Void;
public var mSpace:Int;
public var mAutoDetectPoint:Bool;
public var mPoint1:RVec3;
public var mPoint2:RVec3;
public var mSliderAxis1:Vec3;
public var mSliderAxis2:Vec3;
public var mNormalAxis1:Vec3;
public var mNormalAxis2:Vec3;
public var mLimitsMin:Float;
public var mLimitsMax:Float;
public var mMaxFrictionForce:Float;
public function Create(body1:Body, body2:Body):TwoBodyConstraint;
}
@:native('Jolt.DistanceConstraintSettings')
extern class DistanceConstraintSettings {
public function new():Void;
public var mSpace:Int;
public var mPoint1:RVec3;
public var mPoint2:RVec3;
public var mMinDistance:Float;
public var mMaxDistance:Float;
public function Create(body1:Body, body2:Body):TwoBodyConstraint;
}
@:native('Jolt.ConeConstraintSettings')
extern class ConeConstraintSettings {
public function new():Void;
public var mSpace:Int;
public var mPoint1:RVec3;
public var mPoint2:RVec3;
public var mTwistAxis1:Vec3;
public var mTwistAxis2:Vec3;
public var mHalfConeAngle:Float;
public function Create(body1:Body, body2:Body):TwoBodyConstraint;
}
@:native('Jolt.SixDOFConstraintSettings')
extern class SixDOFConstraintSettings {
public function new():Void;
public var mSpace:Int;
public var mPosition1:RVec3;
public var mPosition2:RVec3;
public var mAxisX1:Vec3;
public var mAxisY1:Vec3;
public var mAxisX2:Vec3;
public var mAxisY2:Vec3;
public function MakeFreeAxis(axis:Int):Void;
public function MakeFixedAxis(axis:Int):Void;
public function SetLimitedAxis(axis:Int, min:Float, max:Float):Void;
public function Create(body1:Body, body2:Body):TwoBodyConstraint;
}
@:native('Jolt.SixDOFConstraintSettings.EAxis')
extern class SixDOFConstraintSettingsEAxis {
public static var TranslationX:Int;
public static var TranslationY:Int;
public static var TranslationZ:Int;
public static var RotationX:Int;
public static var RotationY:Int;
public static var RotationZ:Int;
}
@:native('Jolt.Float3')
extern class Float3 {
public function new(x:Float, y:Float, z:Float):Void;
public var x:Float;
public var y:Float;
public var z:Float;
}
@:native('Jolt.IndexedTriangle')
extern class IndexedTriangle {
public function new():Void;
public var mIdx:Array<Int>;
public var mMaterialIndex:Int;
}
@:native('Jolt.ConvexHullShapeSettings')
extern class ConvexHullShapeSettingsExt extends ConvexHullShapeSettings {
public var mPoints:Dynamic; // std::vector<Vec3>
public var mMaxConvexRadius:Float;
}
@:native('Jolt.MeshShapeSettings')
extern class MeshShapeSettingsExt extends MeshShapeSettings {
public var mTriangleVertices:Dynamic; // std::vector<Float3>
public var mIndexedTriangles:Dynamic; // std::vector<IndexedTriangle>
}
@:native('Jolt.HeightFieldShapeSettings')
extern class HeightFieldShapeSettingsExt extends HeightFieldShapeSettings {
public var mOffset:Vec3;
public var mScale:Vec3;
public var mSampleCount:Int;
public var mHeightSamples:Dynamic; // float array
}
@:native('Jolt.VehicleConstraintSettings')
extern class VehicleConstraintSettings {
public function new():Void;
public var mMaxPitchRollAngle:Float;
}
@:native('Jolt.WheelSettings')
extern class WheelSettings {
public function new():Void;
public var mPosition:Vec3;
public var mSuspensionDirection:Vec3;
public var mSteeringAxis:Vec3;
public var mWheelUp:Vec3;
public var mWheelForward:Vec3;
public var mSuspensionMinLength:Float;
public var mSuspensionMaxLength:Float;
public var mSuspensionPreloadLength:Float;
public var mRadius:Float;
public var mWidth:Float;
}
@:native('Jolt.CharacterVirtualSettings')
extern class CharacterVirtualSettings {
public function new():Void;
public var mShape:Shape;
public var mMaxSlopeAngle:Float;
public var mMass:Float;
public var mMaxStrength:Float;
public var mPredictiveContactDistance:Float;
public var mEnhancedInternalEdgeRemoval:Bool;
}
@:native('Jolt.CharacterVirtual')
extern class CharacterVirtual {
public function new(settings:CharacterVirtualSettings, position:RVec3, rotation:Quat, physicsSystem:PhysicsSystem):Void;
public function SetLinearVelocity(velocity:Vec3):Void;
public function GetLinearVelocity():Vec3;
public function GetPosition():RVec3;
public function SetPosition(position:RVec3):Void;
public function GetRotation():Quat;
public function SetRotation(rotation:Quat):Void;
public function GetGroundState():Int;
public function IsSupported():Bool;
public function GetGroundNormal():Vec3;
public function GetGroundVelocity():Vec3;
public function Update(deltaTime:Float, gravity:Vec3, broadPhaseLayerFilter:Dynamic, objectLayerFilter:Dynamic, bodyFilter:Dynamic, allocator:Dynamic):Void;
}
enum abstract EGroundState(Int) from Int to Int {
var OnGround = 0;
var OnSteepGround = 1;
var NotSupported = 2;
var InAir = 3;
}
@:native('Jolt.SoftBodySharedSettings')
extern class SoftBodySharedSettings {
public function new():Void;
public function AddFace(f:Dynamic):Void;
public function CreateConstraints(settings:Dynamic):Void;
public function Optimize():Void;
}
@:native('Jolt.SoftBodyCreationSettings')
extern class SoftBodyCreationSettings {
public function new(settings:SoftBodySharedSettings, position:RVec3, rotation:Quat, objectLayer:Int):Void;
}
@:native('Jolt')
extern class Jolt {
public static function destroy(obj:Dynamic):Void;
}
#end