840 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			840 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | // Bullet physics bindings for Haxe | ||
|  | 
 | ||
|  | package bullet; | ||
|  | 
 | ||
|  | enum abstract CollisionObjectActivationState(Int) from Int to Int { | ||
|  | 	var ACTIVE_TAG = 1; | ||
|  | 	var ISLAND_SLEEPING = 2; | ||
|  | 	var WANTS_DEACTIVATION = 3; | ||
|  | 	var DISABLE_DEACTIVATION = 4; | ||
|  | 	var DISABLE_SIMULATION = 5; | ||
|  | } | ||
|  | 
 | ||
|  | #if hl | ||
|  | abstract BulletString(hl.Bytes) from hl.Bytes to hl.Bytes { | ||
|  | #else | ||
|  | abstract BulletString(Int) from Int to Int { | ||
|  | #end | ||
|  | 	public inline function toHaxeString(): String { | ||
|  | 		#if js | ||
|  | 			// Not available in currently used version of ammo.js | ||
|  | 			// TODO remove custom utf8 conversion code when updating ammo | ||
|  | 			// return js.Syntax.code("Ammo.UTF8ToString({0})", this); | ||
|  | 
 | ||
|  | 			return js_UTF8ToString(this); | ||
|  | 		#elseif hl | ||
|  | 			return @:privateAccess String.fromUTF8(this); | ||
|  | 		#end | ||
|  | 	} | ||
|  | 
 | ||
|  | 	#if js | ||
|  | 	function js_UTF8ToString(heapOffset: Int) { | ||
|  | 		final heap: js.lib.Uint8Array = js.Syntax.code("Ammo.HEAPU8"); | ||
|  | 		var end = heapOffset; | ||
|  | 		while (heap[end] != 0) { | ||
|  | 			end++; | ||
|  | 		} | ||
|  | 		return haxe.io.Bytes.ofData(heap.buffer).getString(heapOffset, end - heapOffset, UTF8); | ||
|  | 	} | ||
|  | 	#end | ||
|  | } | ||
|  | 
 | ||
|  | #if hl | ||
|  | 
 | ||
|  | typedef Bt = haxe.macro.MacroType<[webidl.Module.build({ idlFile : "Sources/bullet/bullet.idl", chopPrefix : "bt", autoGC : false, nativeLib : "bullet" })]>; | ||
|  | 
 | ||
|  | #else | ||
|  | 
 | ||
|  | // These will be eventually auto-generated, similar to the above | ||
|  | 
 | ||
|  | @:native('Ammo.btTypedObject') | ||
|  | extern class TypedObject { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btVector3') | ||
|  | extern class Vector3 { | ||
|  | 	public function new(x:Float, y:Float, z:Float):Void; | ||
|  | 	public function setValue(x:Float, y:Float, z:Float):Void; | ||
|  | 	public function setX(x:Float):Void; | ||
|  | 	public function setY(y:Float):Void; | ||
|  | 	public function setZ(z:Float):Void; | ||
|  | 	public function x():Float; | ||
|  | 	public function y():Float; | ||
|  | 	public function z():Float; | ||
|  | 	public function length():Float; | ||
|  | 	// public function normalize():Vector3; // Does not return itself in ammo | ||
|  | 	public function normalize():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btQuadWord') | ||
|  | extern class QuadWord { | ||
|  | 	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 x():Float; | ||
|  | 	public function y():Float; | ||
|  | 	public function z():Float; | ||
|  | 	public function w():Float; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btQuaternion') | ||
|  | extern class Quaternion extends QuadWord { | ||
|  | 	public function new(x:Float, y:Float, z:Float, w:Float):Void; | ||
|  | 	public function setEuler(yaw:Float, pitch:Float, roll:Float):Void; | ||
|  | 	public function slerp(q:Quaternion, t:Float):Quaternion; | ||
|  | 	public function setValue(x:Float, y:Float, z:Float, w:Float):Void; | ||
|  | 	//public function inverse():Quaternion; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btMatrix3x3') | ||
|  | extern class Matrix3x3 { | ||
|  | 	public function setEulerZYX(ex:Float, ey:Float, ez:Float):Void; | ||
|  | 	public function getRotation(q:Quaternion):Void; | ||
|  | 	public function getRow(y:Int):Vector3; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btActionInterface') | ||
|  | extern class ActionInterface { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btTransform') | ||
|  | extern class Transform { | ||
|  | 	public function new():Void; | ||
|  | 	public function setIdentity():Void; | ||
|  | 	public function setOrigin(inVec:Vector3):Void; | ||
|  | 	public function getOrigin():Vector3; | ||
|  | 	public function setRotation(inQuat:Quaternion):Void; | ||
|  | 	public function getRotation():Quaternion; | ||
|  | 	//public function inverse():Transform; // Missing in ammo | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btIDebugDraw') | ||
|  | extern class IDebugDraw { | ||
|  | 	public function new():Void; | ||
|  | 	public dynamic function drawLine(from:Vector3, to:Vector3, color:Vector3): Void; | ||
|  | 	public dynamic function drawContactPoint(pointOnB:Vector3, normalOnB:Vector3, distance:Float, lifeTime:Int, color:Vector3):Void; | ||
|  | 	public dynamic function reportErrorWarning(warningString:BulletString):Void; | ||
|  | 	public dynamic function draw3dText(location:Vector3, textString:BulletString):Void; | ||
|  | 	public dynamic function setDebugMode(debugMode:Int): Void; | ||
|  | 	public dynamic function getDebugMode():Int; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.DebugDrawer') | ||
|  | extern class DebugDrawer { | ||
|  | 	public function new():Void; | ||
|  | 	public dynamic function drawLine(from:Vector3, to:Vector3, color:Vector3): Void; | ||
|  | 	public dynamic function drawContactPoint(pointOnB:Vector3, normalOnB:Vector3, distance:Float, lifeTime:Int, color:Vector3):Void; | ||
|  | 	public dynamic function reportErrorWarning(warningString:BulletString):Void; | ||
|  | 	public dynamic function draw3dText(location:Vector3, textString:BulletString):Void; | ||
|  | 	public dynamic function setDebugMode(debugMode:Int): Void; | ||
|  | 	public dynamic function getDebugMode():Int; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btMotionState') | ||
|  | extern class MotionState { | ||
|  | 	public function getWorldTransform(centerOfMassWorldTrans:Transform):Void; | ||
|  | 	public function setWorldTransform(centerOfMassWorldTrans:Transform):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btDefaultMotionState') | ||
|  | extern class DefaultMotionState extends MotionState { | ||
|  | 	public function new(worldTrans:Transform, centerOfMassOffset:Transform):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btRigidBodyConstructionInfo') | ||
|  | extern class RigidBodyConstructionInfo { | ||
|  | 	public function new(mass:Float, motionState:MotionState, collisionShape:CollisionShape, localInertia:Vector3):Void; | ||
|  | 	public var m_friction:Float; | ||
|  | 	public var m_rollingFriction:Float; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCollisionObject') | ||
|  | extern class CollisionObject { | ||
|  | 	public static inline var ACTIVE_TAG = CollisionObjectActivationState.ACTIVE_TAG; | ||
|  | 	public static inline var ISLAND_SLEEPING = CollisionObjectActivationState.ISLAND_SLEEPING; | ||
|  | 	public static inline var WANTS_DEACTIVATION = CollisionObjectActivationState.WANTS_DEACTIVATION; | ||
|  | 	public static inline var DISABLE_DEACTIVATION = CollisionObjectActivationState.DISABLE_DEACTIVATION; | ||
|  | 	public static inline var DISABLE_SIMULATION = CollisionObjectActivationState.DISABLE_SIMULATION; | ||
|  | 
 | ||
|  | 	public function getWorldTransform():Transform; | ||
|  | 	public function setWorldTransform(trans:Transform):Void; | ||
|  | 	public function activate(forceActivation:Bool = false):Void; | ||
|  | 	public function setActivationState(newState:CollisionObjectActivationState):Void; | ||
|  | 	public function getUserIndex():Int; | ||
|  | 	public function setUserIndex(index:Int):Void; | ||
|  | 	public function getUserPointer():Dynamic; | ||
|  | 	public function setUserPointer(userPointer:Dynamic):Void; | ||
|  | 	public function isActive():Bool; | ||
|  | 	public function isKinematicObject():Bool; | ||
|  | 	public function isStaticObject():Bool; | ||
|  | 	public function isStaticOrKinematicObject():Bool; | ||
|  | 	public function setFriction(frict:Float):Void; | ||
|  | 	public function setRollingFriction(frict:Float):Void; | ||
|  | 	public function setRestitution(rest:Float):Void; | ||
|  | 	public function setContactProcessingThreshold(contactProcessingThreshold:Float):Void; | ||
|  | 	public function setCollisionShape(collisionShape:CollisionShape):Void; | ||
|  | 	public function getCollisionShape():CollisionShape; | ||
|  | 	public function setCollisionFlags(flags:Int):Void; | ||
|  | 	public function getCollisionFlags():Int; | ||
|  | 	public function setCcdSweptSphereRadius(radius:Float):Void; | ||
|  | 	public function setCcdMotionThreshold(ccdMotionThreshold:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btRigidBody') | ||
|  | extern class RigidBody extends CollisionObject { | ||
|  | 	public function new(constructionInfo:RigidBodyConstructionInfo):Void; | ||
|  | 	public function setMassProps(mass:Float, inertia:Vector3):Void; | ||
|  | 	public function getMotionState():MotionState; | ||
|  | 	public function applyCentralForce(force:Vector3):Void; | ||
|  | 	public function applyForce(force:Vector3, rel_pos:Vector3):Void; | ||
|  | 	public function applyCentralImpulse(impulse:Vector3):Void; | ||
|  | 	public function applyImpulse(impulse:Vector3, rel_pos:Vector3):Void; | ||
|  | 	public function applyTorque(torque:Vector3):Void; | ||
|  | 	public function applyTorqueImpulse(torque:Vector3):Void; | ||
|  | 	public function clearForces():Void; | ||
|  | 	public function setDamping(linear:Float, angular:Float):Void; | ||
|  | 	public function updateInertiaTensor():Void; | ||
|  | 	// public function getCenterOfMassPosition():Vector3;  // Not implemented in Ammo | ||
|  | 	public function getCenterOfMassTransform():Transform; | ||
|  | 	public function setCenterOfMassTransform(trans:Transform):Void; | ||
|  | 	public function getLinearVelocity():Vector3; | ||
|  | 	public function setLinearVelocity(lin_vel:Vector3):Void; | ||
|  | 	public function getAngularVelocity():Vector3; | ||
|  | 	public function setAngularVelocity(ang_vel:Vector3):Void; | ||
|  | 	public function setLinearFactor(linearFactor:Vector3):Void; | ||
|  | 	public function setAngularFactor(angFac:Vector3):Void; | ||
|  | 	public function setSleepingThresholds(linear:Float, angular:Float):Void; | ||
|  | 	public function applyGravity():Void; | ||
|  | 	public function getGravity():Vector3; | ||
|  | 	public function setGravity(acceleration:Vector3):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCollisionConfiguration') | ||
|  | extern class CollisionConfiguration { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btDefaultCollisionConfiguration') | ||
|  | extern class DefaultCollisionConfiguration extends CollisionConfiguration { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btSoftBodyRigidBodyCollisionConfiguration') | ||
|  | extern class SoftBodyRigidBodyCollisionConfiguration extends CollisionConfiguration { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btDispatcher') | ||
|  | extern class Dispatcher { | ||
|  | 	public function getManifoldByIndexInternal(index:Int):PersistentManifold; | ||
|  | 	public function	getNumManifolds():Int; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCollisionDispatcher') | ||
|  | extern class CollisionDispatcher extends Dispatcher { | ||
|  | 	public function new(collisionConfiguration:CollisionConfiguration):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btBroadphaseInterface') | ||
|  | extern class BroadphaseInterface { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btDbvtBroadphase') | ||
|  | extern class DbvtBroadphase extends BroadphaseInterface { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btAxisSweep3') | ||
|  | extern class AxisSweep3 extends BroadphaseInterface { | ||
|  | 	public function new(worldAabbMin:Vector3, worldAabbMax:Vector3):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btConstraintSolver') | ||
|  | extern class ConstraintSolver { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btSequentialImpulseConstraintSolver') | ||
|  | extern class SequentialImpulseConstraintSolver extends ConstraintSolver { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btDefaultSoftBodySolver') | ||
|  | extern class DefaultSoftBodySolver extends ConstraintSolver { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.RayResultCallback') | ||
|  | extern class RayResultCallback { | ||
|  | 	public function hasHit():Bool; | ||
|  | 	public function new():Void; | ||
|  | 	public function get_m_collisionFilterGroup():Int; | ||
|  |     public function set_m_collisionFilterGroup(g:Int):Void; | ||
|  |     public function get_m_collisionFilterMask():Int; | ||
|  |     public function set_m_collisionFilterMask(m:Int):Void; | ||
|  | 	public function get_m_collisionObject():CollisionObject; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.ClosestRayResultCallback') | ||
|  | extern class ClosestRayResultCallback extends RayResultCallback { | ||
|  | 	public function new(rayFromWorld:Vector3, rayToWorld:Vector3):Void; | ||
|  | 	public function get_m_hitNormalWorld():Vector3; | ||
|  | 	public function get_m_hitPointWorld():Vector3; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.ConcreteContactResultCallback') | ||
|  | extern class ConcreteContactResultCallback extends RayResultCallback { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCollisionWorld') | ||
|  | extern class CollisionWorld { | ||
|  | 	public function rayTest(rayFromWorld:Vector3, rayToWorld:Vector3, resultCallback:RayResultCallback):Void; | ||
|  | 	public function updateSingleAabb(colObj:CollisionObject):Void; | ||
|  | 	public function getPairCache():OverlappingPairCache; | ||
|  | 	public function addCollisionObject(collisionObject:CollisionObject):Void; | ||
|  | 	public function removeCollisionObject(collisionObject:CollisionObject):Void; | ||
|  | 	@:native("addCollisionObject") | ||
|  | 	public function addCollisionObjectToGroup(collisionObject:CollisionObject, collisionFilterGroup:Int, collisionFilterMask:Int):Void; | ||
|  | 	public function convexSweepTest(castShape:ConvexShape, from:Transform, to:Transform, resultCallback:ConvexResultCallback, allowedCcdPenetration:Float):Void; | ||
|  | 	public function setDebugDrawer(debugDrawer:DebugDrawer):Void; | ||
|  | 	public function getDebugDrawer():DebugDrawer; | ||
|  | 	public function debugDrawWorld():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.ConvexResultCallback') | ||
|  | extern class ConvexResultCallback { | ||
|  | 	public function hasHit():Bool; | ||
|  | 	public function new():Void; | ||
|  | 	public function get_m_collisionFilterGroup():Int; | ||
|  | 	public function set_m_collisionFilterGroup(g:Int):Void; | ||
|  | 	public function get_m_collisionFilterMask():Int; | ||
|  | 	public function set_m_collisionFilterMask(m:Int):Void; | ||
|  | 	public function get_m_closestHitFraction():Float; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.ClosestConvexResultCallback') | ||
|  | extern class ClosestConvexResultCallback extends ConvexResultCallback { | ||
|  | 	public function new(convexFromWorld:Vector3, convexToWorld: Vector3):Void; | ||
|  | 	public function get_m_convexFromWorld():Vector3; | ||
|  | 	public function get_m_convexToWorld():Vector3; | ||
|  | 	public function get_m_hitNormalWorld():Vector3; | ||
|  | 	public function get_m_hitPointWorld():Vector3; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btDynamicsWorld') | ||
|  | extern class DynamicsWorld extends CollisionWorld { | ||
|  | 	public function addRigidBody(body:RigidBody):Void; | ||
|  | 	@:native("addRigidBody") | ||
|  | 	public function addRigidBodyToGroup(body:RigidBody, group:Int, mask:Int):Void; | ||
|  | 	public function removeRigidBody(body:RigidBody):Void; | ||
|  | 	public function addAction(action:ActionInterface):Void; | ||
|  | 	public function removeAction(action:ActionInterface):Void; | ||
|  | 	public function addConstraint(constraint:TypedConstraint, disableCollisionsBetweenLinkedBodies:Bool = false):Void; | ||
|  | 	public function removeConstraint(constraint:TypedConstraint):Void; | ||
|  | 	public function getGravity():Vector3; | ||
|  | 	public function setGravity(v:Vector3):Void; | ||
|  | 	public function stepSimulation(timeStep:Float, maxSubSteps:Float = 1, fixedTimeStep:Float = 1.0 / 60.0):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btDiscreteDynamicsWorld') | ||
|  | extern class DiscreteDynamicsWorld extends DynamicsWorld { | ||
|  | 	public function new(dispatcher:Dispatcher, pairCache:BroadphaseInterface, constraintSolver:ConstraintSolver, collisionConfiguration:CollisionConfiguration):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btSoftBodyWorldInfo') | ||
|  | extern class SoftBodyWorldInfo { | ||
|  | 	public function set_m_gravity(v:Vector3):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btSoftRigidDynamicsWorld') | ||
|  | extern class SoftRigidDynamicsWorld extends DynamicsWorld { | ||
|  | 	public function new(dispatcher:Dispatcher, pairCache:BroadphaseInterface, constraintSolver:ConstraintSolver, collisionConfiguration:CollisionConfiguration, softConstraintSolver:ConstraintSolver):Void; | ||
|  | 	public function addSoftBody(body:SoftBody, collisionFilterGroup:Int, collisionFilterMask:Int):Void; | ||
|  | 	public function removeSoftBody(body:SoftBody):Void; | ||
|  | 	public function getWorldInfo():SoftBodyWorldInfo; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btSimpleDynamicsWorld') | ||
|  | extern class SimpleDynamicsWorld extends DynamicsWorld { | ||
|  | 	public function new(dispatcher:Dispatcher, pairCache:BroadphaseInterface, constraintSolver:ConstraintSolver, collisionConfiguration:CollisionConfiguration):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCollisionShape') | ||
|  | extern class CollisionShape { | ||
|  | 	public function calculateLocalInertia(mass:Float, inertia:Vector3):Void; | ||
|  | 	public function setMargin(margin:Float):Void; | ||
|  | 	public function setLocalScaling(scaling:Vector3):Void; | ||
|  | 	public function getLocalScaling():Vector3; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCompoundShape') | ||
|  | extern class CompoundShape extends CollisionShape { | ||
|  | 	public function new(enableDynamicAabbTree:Bool = true):Void; | ||
|  | 	public function addChildShape(localTransform:Transform, shape:CollisionShape):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btConvexShape') | ||
|  | extern class ConvexShape extends CollisionShape { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btConcaveShape') | ||
|  | extern class ConcaveShape extends CollisionShape { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btConvexInternalShape') | ||
|  | extern class ConvexInternalShape extends ConvexShape { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btPolyhedralConvexShape') | ||
|  | extern class PolyhedralConvexShape extends ConvexInternalShape { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btBoxShape') | ||
|  | extern class BoxShape extends PolyhedralConvexShape { | ||
|  | 	public function new(boxHalfExtents:Vector3):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btSphereShape') | ||
|  | extern class SphereShape extends ConvexInternalShape { | ||
|  | 	public function new(radius:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btStaticPlaneShape') | ||
|  | extern class StaticPlaneShape extends ConcaveShape { | ||
|  | 	public function new(planeNormal:Vector3, planeConstant:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btPolyhedralConvexAabbCachingShape') | ||
|  | extern class PolyhedralConvexAabbCachingShape extends PolyhedralConvexShape { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btConvexHullShape') | ||
|  | extern class ConvexHullShape extends PolyhedralConvexAabbCachingShape { | ||
|  | 	public function new():Void; | ||
|  | 	public function addPoint(point:Vector3, recalculateLocalAabb:Bool = true):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCapsuleShape') | ||
|  | extern class CapsuleShape extends ConvexInternalShape { | ||
|  | 	public function new(radius:Float, height:Float):Void; | ||
|  | 	public function getUpAxis():Int; | ||
|  | 	public function getRadius():Float; | ||
|  | 	public function getHalfHeight():Float; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCapsuleShapeX') | ||
|  | extern class CapsuleShapeX extends CapsuleShape { | ||
|  | 	public function new(radius:Float, height:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCapsuleShapeZ') | ||
|  | extern class CapsuleShapeZ extends CapsuleShape { | ||
|  | 	public function new(radius:Float, height:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCylinderShape') | ||
|  | extern class CylinderShape extends ConvexInternalShape { | ||
|  | 	public function new(halfExtents:Vector3):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCylinderShapeX') | ||
|  | extern class CylinderShapeX extends CylinderShape { | ||
|  | 	public function new(halfExtents:Vector3):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btCylinderShapeZ') | ||
|  | extern class CylinderShapeZ extends CylinderShape { | ||
|  | 	public function new(halfExtents:Vector3):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btConeShape') | ||
|  | extern class ConeShape extends ConvexInternalShape { | ||
|  | 	public function new(radius:Float, height:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btConeShapeX') | ||
|  | extern class ConeShapeX extends ConeShape { | ||
|  | 	public function new(radius:Float, height:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btConeShapeZ') | ||
|  | extern class ConeShapeZ extends ConeShape { | ||
|  | 	public function new(radius:Float, height:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btHeightfieldTerrainShape') | ||
|  | extern class HeightfieldTerrainShape extends ConcaveShape { | ||
|  | 	// heightDataType - float, double, integer, short, fixedpoint88, uchar | ||
|  | 	public function new(heightStickWidth:Int, heightStickLength:Int, heightfieldData:Dynamic, heightScale:Float, minHeight:Float, maxHeight:Float, upAxis:Int, heightDataType:Int, flipQuadEdges:Bool):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btStridingMeshInterface') | ||
|  | extern class StridingMeshInterface { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btIndexedMesh') | ||
|  | extern class IndexedMesh { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btTriangleIndexVertexArray') | ||
|  | extern class TriangleIndexVertexArray extends StridingMeshInterface { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btTriangleMesh') | ||
|  | extern class TriangleMesh extends TriangleIndexVertexArray { | ||
|  | 	public function new(use32bitIndices:Bool = true, use4componentVertices:Bool = true):Void; | ||
|  | 	public function addTriangle(vertex0:Vector3, vertex1:Vector3, vertex2:Vector3, removeDuplicateVertices:Bool = false):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btTriangleMeshShape') | ||
|  | extern class TriangleMeshShape extends ConcaveShape { | ||
|  | 	public function new(meshInterface:StridingMeshInterface):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btBvhTriangleMeshShape') | ||
|  | extern class BvhTriangleMeshShape extends TriangleMeshShape { | ||
|  | 	public function new(meshInterface:StridingMeshInterface, useQuantizedAabbCompression:Bool, buildBvh:Bool = true):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btGImpactMeshShape') | ||
|  | extern class GImpactMeshShape extends ConcaveShape { | ||
|  | 	public function new(meshInterface:StridingMeshInterface):Void; | ||
|  | 	public function updateBound():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.GImpactCollisionAlgorithm') | ||
|  | extern class GImpactCollisionAlgorithm { | ||
|  | 	public function new():Void; | ||
|  | 	public function registerAlgorithm(dispatcher:CollisionDispatcher):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btVehicleTuning') | ||
|  | extern class VehicleTuning extends ActionInterface { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btVehicleRaycaster') | ||
|  | extern class VehicleRaycaster { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btDefaultVehicleRaycaster') | ||
|  | extern class DefaultVehicleRaycaster extends VehicleRaycaster { | ||
|  | 	public function new(world:DynamicsWorld):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btWheelInfoConstructionInfo') | ||
|  | extern class RaycastInfo { | ||
|  | 	public var m_contactNormalWS:Vector3; | ||
|  | 	public var m_contactPointWS:Vector3; | ||
|  | 	public var m_suspensionLength:Float; | ||
|  | 	public var m_hardPointWS:Vector3; | ||
|  | 	public var m_wheelDirectionWS:Vector3; | ||
|  | 	public var m_wheelAxleWS:Vector3; | ||
|  | 	public var m_isInContact:Bool; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btWheelInfoConstructionInfo') | ||
|  | extern class WheelInfoConstructionInfo { | ||
|  | 	public function new():Void; | ||
|  | 	public var m_chassisConnectionCS:Vector3; | ||
|  | 	public var m_wheelDirectionCS:Vector3; | ||
|  | 	public var m_wheelAxleCS:Vector3; | ||
|  | 	public var m_suspensionRestLength:Float; | ||
|  | 	public var m_maxSuspensionTravelCm:Float; | ||
|  | 	public var m_wheelRadius:Float; | ||
|  | 	public var m_suspensionStiffness:Float; | ||
|  | 	public var m_wheelsDampingCompression:Float; | ||
|  | 	public var m_wheelsDampingRelaxation:Float; | ||
|  | 	public var m_frictionSlip:Float; | ||
|  | 	public var m_maxSuspensionForce:Float; | ||
|  | 	public var m_bIsFrontWheel:Bool; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btWheelInfo') | ||
|  | extern class WheelInfo { | ||
|  | 	public function new(ci:WheelInfoConstructionInfo):Void; | ||
|  |     public var m_raycastInfo:RaycastInfo; | ||
|  |     public var m_worldTransform:Transform; | ||
|  |     public var m_chassisConnectionPointCS:Vector3; | ||
|  |     public var m_wheelDirectionCS:Vector3; | ||
|  |     public var m_wheelAxleCS:Vector3; | ||
|  | 	public var m_suspensionRestLength1:Float; | ||
|  | 	public var m_maxSuspensionTravelCm:Float; | ||
|  | 	public function getSuspensionRestLength():Float; | ||
|  | 	public var m_suspensionStiffness:Float; | ||
|  | 	public var m_wheelsDampingCompression:Float; | ||
|  | 	public var m_wheelsDampingRelaxation:Float; | ||
|  | 	public var m_frictionSlip:Float; | ||
|  | 	public var m_steering:Float; | ||
|  | 	public var m_rotation:Float; | ||
|  | 	public var m_deltaRotation:Float; | ||
|  | 	public var m_rollInfluence:Float; | ||
|  | 	public var m_maxSuspensionForce:Float; | ||
|  |     public var m_wheelsRadius:Float; | ||
|  | 	public var m_engineForce:Float; | ||
|  | 	public var m_brake:Float; | ||
|  | 	public var m_bIsFrontWheel:Bool; | ||
|  |     public var m_clippedInvContactDotSuspension:Float; | ||
|  |     public var m_suspensionRelativeVelocity:Float; | ||
|  |     public var m_wheelsSuspensionForce:Float; | ||
|  |     public var m_skidInfo:Float; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btRaycastVehicle') | ||
|  | extern class RaycastVehicle extends ActionInterface { | ||
|  | 	public function new(tuning:VehicleTuning, chassis:RigidBody, raycaster:VehicleRaycaster):Void; | ||
|  | 	public function setCoordinateSystem(rightIndex:Int, upIndex:Int, forwardIndex:Int):Void; | ||
|  | 	public function addWheel(connectionPointCS0:Vector3, wheelDirectionCS0:Vector3, wheelAxleCS:Vector3, suspensionRestLength:Float, wheelRadius:Float, tuning:VehicleTuning, isFrontWheel:Bool):WheelInfo; | ||
|  | 	public function getNumWheels():Int; | ||
|  | 	public function getWheelInfo(index:Int):WheelInfo; | ||
|  | 	public function resetSuspension():Void; | ||
|  | 	public function getWheelTransformWS(wheelIndex:Int):Transform; | ||
|  | 	public function updateWheelTransform(wheelIndex:Int, interpolatedTransform:Bool = true):Void; | ||
|  | 	public function applyEngineForce(force:Float, wheel:Int):Void; | ||
|  | 	public function setBrake(brake:Float, wheelIndex:Int):Void; | ||
|  | 	public function setPitchControl(pitch:Float):Void; | ||
|  | 	public function updateSuspension(deltaTime:Float ):Void; | ||
|  | 	public function updateFriction(deltaTime:Float ):Void; | ||
|  | 	public function setSteeringValue(steering:Float, wheel:Int):Void; | ||
|  | 	public function getRightAxis():Int; | ||
|  | 	public function getUpAxis():Int; | ||
|  | 	public function getForwardAxis():Int; | ||
|  | 	public function getForwardVector():Vector3; | ||
|  | 	public function getCurrentSpeedKmHour():Float; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btPersistentManifold') | ||
|  | extern class PersistentManifold extends TypedObject { | ||
|  | 	public function new():Void; | ||
|  | 	public function getBody0():CollisionObject; | ||
|  | 	public function getBody1():CollisionObject; | ||
|  | 	public function getNumContacts():Int; | ||
|  | 	public function getContactPoint(index:Int):ManifoldPoint; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btManifoldPoint') | ||
|  | extern class ManifoldPoint { | ||
|  | 	public function new():Void; | ||
|  | 	public function get_m_positionWorldOnA():Vector3; | ||
|  | 	public function get_m_positionWorldOnB():Vector3; | ||
|  | 	public function get_m_normalWorldOnB():Vector3; | ||
|  | 	public function getDistance():Float; | ||
|  | 	public function getAppliedImpulse():Float; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btTypedConstraint') | ||
|  | extern class TypedConstraint extends TypedObject { | ||
|  | 	public function setBreakingImpulseThreshold(threshold:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btGeneric6DofConstraint') | ||
|  | extern class Generic6DofConstraint extends TypedConstraint { | ||
|  | 	//BT_CONSTRAINT_ERP=1, | ||
|  | 	//BT_CONSTRAINT_STOP_ERP, | ||
|  | 	//BT_CONSTRAINT_CFM, | ||
|  | 	//BT_CONSTRAINT_STOP_CFM | ||
|  | 	public function new(rbB:RigidBody, frameInB:Transform, useLinearReferenceFrameB:Bool):Void; | ||
|  | 	public static inline function new2(rbA:RigidBody, rbB:RigidBody, frameInA:Transform, frameInB:Transform, useLinearReferenceFrameB:Bool = false):Generic6DofConstraint { | ||
|  | 		var _r1 = rbA, _r2 = rbB, _fa = frameInA, _fb = frameInB, _b = useLinearReferenceFrameB; | ||
|  | 		return untyped js.Syntax.code("new Ammo.btGeneric6DofConstraint(_r1, _r2, _fa, _fb, _b)"); | ||
|  | 	} | ||
|  | 	public function setLinearLowerLimit(linearLower:Vector3):Void; | ||
|  | 	public function setLinearUpperLimit(linearUpper:Vector3):Void; | ||
|  | 	public function setAngularLowerLimit(angularLower:Vector3):Void; | ||
|  | 	public function setAngularUpperLimit(angularUpper:Vector3):Void; | ||
|  | 	public function setParam(num:Int, value:Float, axis:Int = -1):Void; | ||
|  | 	public function getFrameOffsetA():Transform; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btGeneric6DofSpringConstraint') | ||
|  | extern class Generic6DofSpringConstraint extends Generic6DofConstraint { | ||
|  | 	public function new(rbA:RigidBody, rbB:RigidBody, frameInA:Transform, frameInB:Transform, useLinearReferenceFrameB:Bool):Void; | ||
|  | 	public function enableSpring(index:Int, onOff:Bool):Void; | ||
|  |     public function setStiffness(index:Int,stiffness:Float):Void; | ||
|  |   	public function setDamping(index:Int,damping:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btHingeConstraint') | ||
|  | extern class HingeConstraint extends TypedConstraint { | ||
|  | 	public function new(rbA:RigidBody, rbB:RigidBody, pivotInA:Vector3, pivotInB:Vector3, axisInA:Vector3, axisInB:Vector3, useReferenceFrameA:Bool = false):Void; | ||
|  | 	public function setLimit(low:Float, high:Float, _softness:Float = 0.9, _biasFactor:Float = 0.3, _relaxationFactor:Float = 1.0):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btSliderConstraint') | ||
|  | extern class SliderConstraint extends TypedConstraint { | ||
|  | 	public function new(rbA:RigidBody, rbB:RigidBody, frameInA:Transform, frameInB:Transform, useReferenceFrameA:Bool):Void; | ||
|  | 	public function setLowerLinLimit(lowerLimit:Float):Void; | ||
|  |     public function setUpperLinLimit(upperLimit:Float):Void; | ||
|  |     public function setLowerAngLimit(lowerAngLimit:Float):Void; | ||
|  |     public function setUpperAngLimit(upperAngLimit:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btPoint2PointConstraint') | ||
|  | extern class Point2PointConstraint extends TypedConstraint { | ||
|  | 	public function new(rbA:RigidBody, rbB:RigidBody, pivotInA:Vector3, pivotInB:Vector3):Void; | ||
|  | 	public function setPivotA(pivotA:Vector3):Void; | ||
|  | 	public function setPivotB(pivotB:Vector3):Void; | ||
|  | 	public function getPivotInA():Vector3; | ||
|  | 	public function getPivotInB():Vector3; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.Config') | ||
|  | extern class Config { | ||
|  | 	public function set_viterations(i:Int):Void; | ||
|  | 	public function set_piterations(i:Int):Void; | ||
|  | 	public function set_collisions(i:Int):Void; | ||
|  | 	public function set_kDF(f:Float):Void; | ||
|  | 	public function set_kDP(f:Float):Void; | ||
|  | 	public function set_kPR(f:Float):Void; | ||
|  | 	public function set_kVC(f:Float):Void; | ||
|  | 	public function set_kAHR(f:Float):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.tNodeArray') | ||
|  | extern class TNodeArray { | ||
|  | 	public function at(i:Int):Node; | ||
|  | 	public function size():Int; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.tMaterialArray') | ||
|  | extern class TMaterialArray { | ||
|  | 	public function at(i:Int):Material; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.tAnchorArray') | ||
|  | extern class TAnchorArray { | ||
|  | 	public function new(); | ||
|  | 	public function at(i:Int):Anchor; | ||
|  | 	public function clear():Void; | ||
|  | 	public function size():Int; | ||
|  | 	public function push_back(anc:Anchor):Void; | ||
|  | 	public function pop_back():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.Node') | ||
|  | extern class Node { | ||
|  | 	public function get_m_x():Vector3; | ||
|  | 	public function get_m_n():Vector3; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.Material') | ||
|  | extern class Material { | ||
|  | 	public function new(); | ||
|  | 	public function set_m_kLST(kAST:Float):Void; | ||
|  | 	public function get_m_kLST():Void; | ||
|  | 	public function set_m_kAST(kAST:Float):Void; | ||
|  | 	public function get_m_kAST():Void; | ||
|  | 	public function set_m_kVST(kVST:Float):Void; | ||
|  | 	public function get_m_kVST():Float; | ||
|  | 	public function set_m_flags(flags:Int):Void; | ||
|  | 	public function get_m_flags():Int; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.Anchor') | ||
|  | extern class Anchor { | ||
|  | 	public function set_m_node(node:Node):Void; | ||
|  | 	public function get_m_node():Node; | ||
|  | 	public function set_m_local(local:Vector3):Void; | ||
|  | 	public function get_m_local():Vector3; | ||
|  | 	public function set_m_body(body:RigidBody):Void; | ||
|  | 	public function get_m_body():RigidBody; | ||
|  | 	public function set_m_influence(influence:Float):Void; | ||
|  | 	public function get_m_influence():Float; | ||
|  | 	//public function set_m_c0(c0:Matrix3x3):Void; | ||
|  | 	//public function get_m_c0():Matrix3x3; | ||
|  | 	public function set_m_c1(c1:Vector3):Void; | ||
|  | 	public function get_m_c1():Vector3; | ||
|  | 	public function set_m_c2(c2:Float):Void; | ||
|  | 	public function get_m_c2():Float; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btSoftBody') | ||
|  | extern class SoftBody extends CollisionObject { | ||
|  | 	public function get_m_nodes():TNodeArray; | ||
|  | 	public function get_m_cfg():Config; | ||
|  | 	public function get_m_materials():TMaterialArray; | ||
|  | 	public function get_m_anchors():TAnchorArray; | ||
|  | 	public function appendMaterial(): Material; | ||
|  | 	public function updateBounds(): Void; | ||
|  | 	public function setTotalMass(mass:Float, fromfaces:Bool = false):Void; | ||
|  | 	public function generateClusters(k:Int, maxiterations:Int = 8192):Void; | ||
|  | 	public function generateBendingConstraints(distance:Int, mat:Dynamic = 0):Void; | ||
|  | 	public function appendNode(x:Vector3, m:Float):Void; | ||
|  | 	public function appendAnchor(node:Int, body:RigidBody, disableCollisionBetweenLinkedBodies:Bool, influence:Float):Void; | ||
|  | 	public function appendLink(node:Int, node1:Int, mat:Material, bcheckexist:Bool=false):Void; | ||
|  | 	public function appendFace(node:Int, node1:Int, node3:Int, mat:Material):Void; | ||
|  | 	public function addForce(f:Vector3, node:Int):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btSoftBodyHelpers') | ||
|  | extern class SoftBodyHelpers { | ||
|  | 	public function new():Void; | ||
|  | 	function CreateFromTriMesh(worldInfo:SoftBodyWorldInfo, vertices:haxe.ds.Vector<Float>, triangles:haxe.ds.Vector<Int>, ntriangles:Int, randomizeConstraints:Bool = true):SoftBody; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btOverlappingPairCallback') | ||
|  | extern class OverlappingPairCallback { | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btGhostPairCallback') | ||
|  | extern class GhostPairCallback extends OverlappingPairCallback { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btOverlappingPairCache') | ||
|  | extern class OverlappingPairCache { | ||
|  | 	public function setInternalGhostPairCallback(ghostPairCallback:OverlappingPairCallback):Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btGhostObject') | ||
|  | extern class GhostObject extends CollisionObject { | ||
|  | 	public function new():Void; | ||
|  | 	public function getNumOverlappingObjects():Int; | ||
|  | 	public function getOverlappingObject(index:Int):CollisionObject; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btPairCachingGhostObject') | ||
|  | extern class PairCachingGhostObject extends GhostObject { | ||
|  | 	public function new():Void; | ||
|  | } | ||
|  | 
 | ||
|  | @:native('Ammo.btKinematicCharacterController') | ||
|  | extern class KinematicCharacterController extends ActionInterface { | ||
|  | 	public function new(ghostObject:PairCachingGhostObject, convexShape:ConvexShape, stepHeight:Float, upAxis:Int = 1):Void; | ||
|  | 	public function setUpAxis(axis:Int):Void; // setUp in cpp | ||
|  | 	public function jump():Void; | ||
|  | 	public function setGravity(gravity:Float):Void; | ||
|  | 	public function getGravity():Float; | ||
|  | 	public function canJump():Bool; | ||
|  | 	public function onGround():Bool; | ||
|  | 	public function setWalkDirection(walkDirection:Vector3):Void; | ||
|  | 	public function setVelocityForTimeInterval(velocity:Vector3, timeInterval:Float):Void; | ||
|  | 	public function warp(origin:Vector3):Void; | ||
|  | 	public function preStep(collisionWorld:CollisionWorld):Void; | ||
|  | 	public function playerStep(collisionWorld:CollisionWorld, dt:Float):Void; | ||
|  | 	public function setFallSpeed(fallSpeed:Float):Void; | ||
|  | 	public function setJumpSpeed(jumpSpeed:Float):Void; | ||
|  | 	public function setMaxJumpHeight(maxJumpHeight:Float):Void; | ||
|  | 	public function setMaxSlope(slopeRadians:Float):Void; | ||
|  | 	public function getMaxSlope():Float; | ||
|  | 	public function getGhostObject():PairCachingGhostObject; | ||
|  | 	public function setUseGhostSweepTest(useGhostObjectSweepTest:Bool):Void; | ||
|  | 	public function setUpInterpolate(value:Bool):Void; | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | @:native('Ammo') | ||
|  | extern class Ammo { | ||
|  | 	public static function destroy(obj:Dynamic):Void; | ||
|  | 	public static function castObject(obj:Dynamic, to:Class<Dynamic>):Dynamic; | ||
|  | 	public static function _malloc(byteSize:Int):Int; | ||
|  | 	public static var HEAPU8:Dynamic; | ||
|  | 	public static var HEAPF32:Dynamic; | ||
|  | } | ||
|  | 
 | ||
|  | #end |