void btMultiBody_setupFixed2(btMultiBody* obj, int linkIndex, btScalar mass, const btVector3* inertia,
	int parent, const btQuaternion* rotParentToThis, const btVector3* parentComToThisPivotOffset,
	const btVector3* thisPivotToThisComOffset, bool deprecatedDisableParentCollision)
{
	BTVECTOR3_IN(inertia);
	BTQUATERNION_IN(rotParentToThis);
	BTVECTOR3_IN(parentComToThisPivotOffset);
	BTVECTOR3_IN(thisPivotToThisComOffset);
	obj->setupFixed(linkIndex, mass, BTVECTOR3_USE(inertia), parent, BTQUATERNION_USE(rotParentToThis),
		BTVECTOR3_USE(parentComToThisPivotOffset), BTVECTOR3_USE(thisPivotToThisComOffset),
		deprecatedDisableParentCollision);
}
void btMultiBody_setupRevolute(btMultiBody* obj, int linkIndex, btScalar mass, const btVector3* inertia,
	int parentIndex, const btQuaternion* rotParentToThis, const btVector3* jointAxis,
	const btVector3* parentComToThisPivotOffset, const btVector3* thisPivotToThisComOffset)
{
	BTVECTOR3_IN(inertia);
	BTQUATERNION_IN(rotParentToThis);
	BTVECTOR3_IN(jointAxis);
	BTVECTOR3_IN(parentComToThisPivotOffset);
	BTVECTOR3_IN(thisPivotToThisComOffset);
	obj->setupRevolute(linkIndex, mass, BTVECTOR3_USE(inertia), parentIndex, BTQUATERNION_USE(rotParentToThis),
		BTVECTOR3_USE(jointAxis), BTVECTOR3_USE(parentComToThisPivotOffset), BTVECTOR3_USE(thisPivotToThisComOffset));
}
btScalar btTranslationalLimitMotor_solveLinearAxis(btTranslationalLimitMotor* obj,
	btScalar timeStep, btScalar jacDiagABInv, btRigidBody* body1, const btVector3* pointInA,
	btRigidBody* body2, const btVector3* pointInB, int limit_index, const btVector3* axis_normal_on_a,
	const btVector3* anchorPos)
{
	BTVECTOR3_IN(pointInA);
	BTVECTOR3_IN(pointInB);
	BTVECTOR3_IN(axis_normal_on_a);
	BTVECTOR3_IN(anchorPos);
	return obj->solveLinearAxis(timeStep, jacDiagABInv, *body1, BTVECTOR3_USE(pointInA),
		*body2, BTVECTOR3_USE(pointInB), limit_index, BTVECTOR3_USE(axis_normal_on_a),
		BTVECTOR3_USE(anchorPos));
}
void btGeneric6DofConstraint_getInfo2NonVirtual(btGeneric6DofConstraint* obj, btTypedConstraint_btConstraintInfo2* info,
	const btTransform* transA, const btTransform* transB, const btVector3* linVelA,
	const btVector3* linVelB, const btVector3* angVelA, const btVector3* angVelB)
{
	BTTRANSFORM_IN(transA);
	BTTRANSFORM_IN(transB);
	BTVECTOR3_IN(linVelA);
	BTVECTOR3_IN(linVelB);
	BTVECTOR3_IN(angVelA);
	BTVECTOR3_IN(angVelB);
	obj->getInfo2NonVirtual(info, BTTRANSFORM_USE(transA), BTTRANSFORM_USE(transB),
		BTVECTOR3_USE(linVelA), BTVECTOR3_USE(linVelB), BTVECTOR3_USE(angVelA), BTVECTOR3_USE(angVelB));
}
void btMultiBody_setupPrismatic(btMultiBody* obj, int i, btScalar mass, const btVector3* inertia,
	int parent, const btQuaternion* rotParentToThis, const btVector3* jointAxis, const btVector3* parentComToThisPivotOffset,
	const btVector3* thisPivotToThisComOffset, bool disableParentCollision)
{
	BTVECTOR3_IN(inertia);
	BTQUATERNION_IN(rotParentToThis);
	BTVECTOR3_IN(jointAxis);
	BTVECTOR3_IN(parentComToThisPivotOffset);
	BTVECTOR3_IN(thisPivotToThisComOffset);
	obj->setupPrismatic(i, mass, BTVECTOR3_USE(inertia), parent, BTQUATERNION_USE(rotParentToThis),
		BTVECTOR3_USE(jointAxis), BTVECTOR3_USE(parentComToThisPivotOffset), BTVECTOR3_USE(thisPivotToThisComOffset),
		disableParentCollision);
}
void btCollisionShape_calculateTemporalAabb(btCollisionShape* obj, const btTransform* curTrans,
	const btVector3* linvel, const btVector3* angvel, btScalar timeStep, btVector3* temporalAabbMin,
	btVector3* temporalAabbMax)
{
	BTTRANSFORM_IN(curTrans);
	BTVECTOR3_IN(linvel);
	BTVECTOR3_IN(angvel);
	BTVECTOR3_DEF(temporalAabbMin);
	BTVECTOR3_DEF(temporalAabbMax);
	obj->calculateTemporalAabb(BTTRANSFORM_USE(curTrans), BTVECTOR3_USE(linvel),
		BTVECTOR3_USE(angvel), timeStep, BTVECTOR3_USE(temporalAabbMin), BTVECTOR3_USE(temporalAabbMax));
	BTVECTOR3_DEF_OUT(temporalAabbMin);
	BTVECTOR3_DEF_OUT(temporalAabbMax);
}
btKinematicCharacterController* btKinematicCharacterController_new2(btPairCachingGhostObject* ghostObject,
	btConvexShape* convexShape, btScalar stepHeight, const btVector3* up)
{
	BTVECTOR3_IN(up);
	return new btKinematicCharacterController(ghostObject, convexShape, stepHeight,
		BTVECTOR3_USE(up));
}
btDbvtAabbMm* btDbvtAabbMm_FromCR(const btVector3* c, btScalar r)
{
	btDbvtAabbMm* ret = new btDbvtAabbMm;
	BTVECTOR3_IN(c);
	*ret = btDbvtAabbMm::FromCR(BTVECTOR3_USE(c), r);
	return ret;
}
btMultiBody* btMultiBody_new2(int n_links, btScalar mass, const btVector3* inertia,
	bool fixedBase, bool canSleep, bool deprecatedMultiDof)
{
	BTVECTOR3_IN(inertia);
	return new btMultiBody(n_links, mass, BTVECTOR3_USE(inertia), fixedBase, canSleep,
		deprecatedMultiDof);
}
btScalar btRotationalLimitMotor_solveAngularLimits(btRotationalLimitMotor* obj, btScalar timeStep,
	btVector3* axis, btScalar jacDiagABInv, btRigidBody* body0, btRigidBody* body1)
{
	BTVECTOR3_IN(axis);
	return obj->solveAngularLimits(timeStep, BTVECTOR3_USE(axis), jacDiagABInv, body0,
		body1);
}
int btGeneric6DofConstraint_get_limit_motor_info2(btGeneric6DofConstraint* obj, btRotationalLimitMotor* limot,
	const btTransform* transA, const btTransform* transB, const btVector3* linVelA,
	const btVector3* linVelB, const btVector3* angVelA, const btVector3* angVelB, btTypedConstraint_btConstraintInfo2* info,
	int row, btVector3* ax1, int rotational)
{
	BTTRANSFORM_IN(transA);
	BTTRANSFORM_IN(transB);
	BTVECTOR3_IN(linVelA);
	BTVECTOR3_IN(linVelB);
	BTVECTOR3_IN(angVelA);
	BTVECTOR3_IN(angVelB);
	BTVECTOR3_IN(ax1);
	int ret = obj->get_limit_motor_info2(limot, BTTRANSFORM_USE(transA), BTTRANSFORM_USE(transB),
		BTVECTOR3_USE(linVelA), BTVECTOR3_USE(linVelB), BTVECTOR3_USE(angVelA), BTVECTOR3_USE(angVelB),
		info, row, BTVECTOR3_USE(ax1), rotational);
	BTVECTOR3_DEF_OUT(ax1);
	return ret;
}
void btKinematicCharacterController_applyImpulse(btKinematicCharacterController* obj,
	const btVector3* v)
{
	BTVECTOR3_IN(v);
	obj->applyImpulse(BTVECTOR3_USE(v));
}
void btMultiBody_setBaseVel(btMultiBody* obj, const btVector3* vel)
{
	BTVECTOR3_IN(vel);
	obj->setBaseVel(BTVECTOR3_USE(vel));
}
void btMultiBody_setBaseOmega(btMultiBody* obj, const btVector3* omega)
{
	BTVECTOR3_IN(omega);
	obj->setBaseOmega(BTVECTOR3_USE(omega));
}
void btMultiBody_setBasePos(btMultiBody* obj, const btVector3* pos)
{
	BTVECTOR3_IN(pos);
	obj->setBasePos(BTVECTOR3_USE(pos));
}
void btMultiBody_addBaseTorque(btMultiBody* obj, const btVector3* t)
{
	BTVECTOR3_IN(t);
	obj->addBaseTorque(BTVECTOR3_USE(t));
}
void btMultiBody_setBaseInertia(btMultiBody* obj, const btVector3* inertia)
{
	BTVECTOR3_IN(inertia);
	obj->setBaseInertia(BTVECTOR3_USE(inertia));
}
void btKinematicCharacterController_setAngularVelocity(btKinematicCharacterController* obj,
	const btVector3* velocity)
{
	BTVECTOR3_IN(velocity);
	obj->setAngularVelocity(BTVECTOR3_USE(velocity));
}
void btMultiBody_addBaseForce(btMultiBody* obj, const btVector3* f)
{
	BTVECTOR3_IN(f);
	obj->addBaseForce(BTVECTOR3_USE(f));
}
void btKinematicCharacterController_setGravity(btKinematicCharacterController* obj,
	const btVector3* gravity)
{
	BTVECTOR3_IN(gravity);
	obj->setGravity(BTVECTOR3_USE(gravity));
}
btScalar btDbvtAabbMm_ProjectMinimum(btDbvtAabbMm* obj, const btVector3* v, unsigned int signs)
{
	BTVECTOR3_IN(v);
	return obj->ProjectMinimum(BTVECTOR3_USE(v), signs);
}
void btMultiBody_worldPosToLocal(btMultiBody* obj, int i, const btVector3* vec, btVector3* value)
{
	BTVECTOR3_IN(vec);
	ATTRIBUTE_ALIGNED16(btVector3) temp = obj->worldPosToLocal(i, BTVECTOR3_USE(vec));
	BTVECTOR3_SET(value, temp);
}
void btKinematicCharacterController_setUp(btKinematicCharacterController* obj, const btVector3* up)
{
	BTVECTOR3_IN(up);
	obj->setUp(BTVECTOR3_USE(up));
}
void btDbvtAabbMm_Expand(btDbvtAabbMm* obj, const btVector3* e)
{
	BTVECTOR3_IN(e);
	obj->Expand(BTVECTOR3_USE(e));
}
int btDbvtAabbMm_Classify(btDbvtAabbMm* obj, const btVector3* n, btScalar o, int s)
{
	BTVECTOR3_IN(n);
	return obj->Classify(BTVECTOR3_USE(n), o, s);
}
bool btPolyhedralConvexShape_isInside(btPolyhedralConvexShape* obj, const btVector3* pt,
	btScalar tolerance)
{
	BTVECTOR3_IN(pt);
	return obj->isInside(BTVECTOR3_USE(pt), tolerance);
}
void btMultiBody_addLinkForce(btMultiBody* obj, int i, const btVector3* f)
{
	BTVECTOR3_IN(f);
	obj->addLinkForce(i, BTVECTOR3_USE(f));
}
bool btDbvt_update5(btDbvt* obj, btDbvtNode* leaf, btDbvtVolume* volume, const btVector3* velocity)
{
	BTVECTOR3_IN(velocity);
	return obj->update(leaf, *volume, BTVECTOR3_USE(velocity));
}
void btMultiBody_addLinkTorque(btMultiBody* obj, int i, const btVector3* t)
{
	BTVECTOR3_IN(t);
	obj->addLinkTorque(i, BTVECTOR3_USE(t));
}
bool btDbvt_update6(btDbvt* obj, btDbvtNode* leaf, btDbvtVolume* volume, const btVector3* velocity,
	btScalar margin)
{
	BTVECTOR3_IN(velocity);
	return obj->update(leaf, *volume, BTVECTOR3_USE(velocity), margin);
}