void btAxisSweep3_unQuantize(btAxisSweep3* obj, btBroadphaseProxy* proxy, btScalar* aabbMin, btScalar* aabbMax)
{
	VECTOR3_DEF(aabbMin);
	VECTOR3_DEF(aabbMax);
	obj->unQuantize(proxy, VECTOR3_USE(aabbMin), VECTOR3_USE(aabbMax));
	VECTOR3_DEF_OUT(aabbMin);
	VECTOR3_DEF_OUT(aabbMax);
}
void btTriangleShape_getPlaneEquation(btTriangleShape* obj, int i, btScalar* planeNormal, btScalar* planeSupport)
{
	VECTOR3_DEF(planeNormal);
	VECTOR3_DEF(planeSupport);
	obj->getPlaneEquation(i, VECTOR3_USE(planeNormal), VECTOR3_USE(planeSupport));
	VECTOR3_DEF_OUT(planeNormal);
	VECTOR3_DEF_OUT(planeSupport);
}
void btBroadphaseInterface_getBroadphaseAabb(btBroadphaseInterface* obj, btScalar* aabbMin, btScalar* aabbMax)
{
	VECTOR3_DEF(aabbMin);
	VECTOR3_DEF(aabbMax);
	obj->getBroadphaseAabb(VECTOR3_USE(aabbMin), VECTOR3_USE(aabbMax));
	VECTOR3_DEF_OUT(aabbMin);
	VECTOR3_DEF_OUT(aabbMax);
}
void btPolyhedralConvexShape_getPlane(btPolyhedralConvexShape* obj, btScalar* planeNormal, btScalar* planeSupport, int i)
{
	VECTOR3_DEF(planeNormal);
	VECTOR3_DEF(planeSupport);
	obj->getPlane(VECTOR3_USE(planeNormal), VECTOR3_USE(planeSupport), i);
	VECTOR3_DEF_OUT(planeNormal);
	VECTOR3_DEF_OUT(planeSupport);
}
void btPolyhedralConvexShape_getEdge(btPolyhedralConvexShape* obj, int i, btScalar* pa, btScalar* pb)
{
	VECTOR3_DEF(pa);
	VECTOR3_DEF(pb);
	obj->getEdge(i, VECTOR3_USE(pa), VECTOR3_USE(pb));
	VECTOR3_DEF_OUT(pa);
	VECTOR3_DEF_OUT(pb);
}
void btAABB_get_center_extend(btAABB* obj, btScalar* center, btScalar* extend)
{
	VECTOR3_CONV(center);
	VECTOR3_CONV(extend);
	obj->get_center_extend(VECTOR3_USE(center), VECTOR3_USE(extend));
	VECTOR3_DEF_OUT(center);
	VECTOR3_DEF_OUT(extend);
}
void btPolyhedralConvexAabbCachingShape_getNonvirtualAabb(btPolyhedralConvexAabbCachingShape* obj, const btScalar* trans, btScalar* aabbMin, btScalar* aabbMax, btScalar margin)
{
	TRANSFORM_CONV(trans);
	VECTOR3_DEF(aabbMin);
	VECTOR3_DEF(aabbMax);
	obj->getNonvirtualAabb(TRANSFORM_USE(trans), VECTOR3_USE(aabbMin), VECTOR3_USE(aabbMax), margin);
	VECTOR3_DEF_OUT(aabbMin);
	VECTOR3_DEF_OUT(aabbMax);
}
void btTransformUtil_calculateVelocity(btScalar* transform0, btScalar* transform1, btScalar timeStep, btScalar* linVel, btScalar* angVel)
{
	TRANSFORM_CONV(transform0);
	TRANSFORM_CONV(transform1);
	VECTOR3_DEF(linVel);
	VECTOR3_DEF(angVel);
	btTransformUtil::calculateVelocity(TRANSFORM_USE(transform0), TRANSFORM_USE(transform1), timeStep, VECTOR3_USE(linVel), VECTOR3_USE(angVel));
	VECTOR3_DEF_OUT(linVel);
	VECTOR3_DEF_OUT(angVel);
}
void btConvexPolyhedron_project(btConvexPolyhedron* obj, const btScalar* trans, const btScalar* dir, btScalar* minProj, btScalar* maxProj, btScalar* witnesPtMin, btScalar* witnesPtMax)
{
	TRANSFORM_CONV(trans);
	VECTOR3_CONV(dir);
	VECTOR3_DEF(witnesPtMin);
	VECTOR3_DEF(witnesPtMax);
	obj->project(TRANSFORM_USE(trans), VECTOR3_USE(dir), *minProj, *maxProj, VECTOR3_USE(witnesPtMin), VECTOR3_USE(witnesPtMax));
	VECTOR3_DEF_OUT(witnesPtMin);
	VECTOR3_DEF_OUT(witnesPtMax);
}
bool btSphereBoxCollisionAlgorithm_getSphereDistance(btSphereBoxCollisionAlgorithm* obj, const btCollisionObjectWrapper* boxObjWrap, btScalar* v3PointOnBox, btScalar* normal, btScalar* penetrationDepth, const btScalar* v3SphereCenter, btScalar fRadius, btScalar maxContactDistance)
{
	VECTOR3_CONV(v3PointOnBox);
	VECTOR3_DEF(normal);
	VECTOR3_DEF(v3SphereCenter);
	bool ret = obj->getSphereDistance(boxObjWrap, VECTOR3_USE(v3PointOnBox), VECTOR3_USE(normal), *penetrationDepth, VECTOR3_USE(v3SphereCenter), fRadius, maxContactDistance);
	VECTOR3_DEF_OUT(v3PointOnBox);
	VECTOR3_DEF_OUT(normal);
	return ret;
}
btScalar btSphereBoxCollisionAlgorithm_getSpherePenetration(btSphereBoxCollisionAlgorithm* obj, const btScalar* boxHalfExtent, const btScalar* sphereRelPos, btScalar* closestPoint, btScalar* normal)
{
	VECTOR3_CONV(boxHalfExtent);
	VECTOR3_CONV(sphereRelPos);
	VECTOR3_DEF(closestPoint);
	VECTOR3_DEF(normal);
	btScalar ret = obj->getSpherePenetration(VECTOR3_USE(boxHalfExtent), VECTOR3_USE(sphereRelPos), VECTOR3_USE(closestPoint), VECTOR3_USE(normal));
	VECTOR3_DEF_OUT(closestPoint);
	VECTOR3_DEF_OUT(normal);
	return ret;
}
void btTransformUtil_calculateVelocityQuaternion(btScalar* pos0, btScalar* pos1, btScalar* orn0, btScalar* orn1, btScalar timeStep, btScalar* linVel, btScalar* angVel)
{
	VECTOR3_CONV(pos0);
	VECTOR3_CONV(pos1);
	QUATERNION_CONV(orn0);
	QUATERNION_CONV(orn1);
	VECTOR3_DEF(linVel);
	VECTOR3_DEF(angVel);
	btTransformUtil::calculateVelocityQuaternion(VECTOR3_USE(pos0), VECTOR3_USE(pos1), QUATERNION_USE(orn0), QUATERNION_USE(orn1), timeStep, VECTOR3_USE(linVel), VECTOR3_USE(angVel));
	VECTOR3_DEF_OUT(linVel);
	VECTOR3_DEF_OUT(angVel);
}
void btTransformUtil_calculateDiffAxisAngleQuaternion(btScalar* orn0, btScalar* orn1a, btScalar* axis, btScalar* angle)
{
	QUATERNION_CONV(orn0);
	QUATERNION_CONV(orn1a);
	VECTOR3_DEF(axis);
	btTransformUtil::calculateDiffAxisAngleQuaternion(QUATERNION_USE(orn0), QUATERNION_USE(orn1a), VECTOR3_USE(axis), *angle);
	VECTOR3_DEF_OUT(axis);
}
void btTransformUtil_calculateDiffAxisAngle(btScalar* transform0, btScalar* transform1, btScalar* axis, btScalar* angle)
{
	TRANSFORM_CONV(transform0);
	TRANSFORM_CONV(transform1);
	VECTOR3_DEF(axis);
	btTransformUtil::calculateDiffAxisAngle(TRANSFORM_USE(transform0), TRANSFORM_USE(transform1), VECTOR3_USE(axis), *angle);
	VECTOR3_DEF_OUT(axis);
}
int btGeneric6DofConstraint_get_limit_motor_info22(btGeneric6DofConstraint* obj, btRotationalLimitMotor* limot, const btScalar* transA, const btScalar* transB, const btScalar* linVelA, const btScalar* linVelB, const btScalar* angVelA, const btScalar* angVelB, btTypedConstraint::btConstraintInfo2* info, int row, btScalar* ax1, int rotational, int rotAllowed)
{
	TRANSFORM_CONV(transA);
	TRANSFORM_CONV(transB);
	VECTOR3_CONV(linVelA);
	VECTOR3_CONV(linVelB);
	VECTOR3_CONV(angVelA);
	VECTOR3_CONV(angVelB);
	VECTOR3_CONV(ax1);
	int ret = obj->get_limit_motor_info2(limot, TRANSFORM_USE(transA), TRANSFORM_USE(transB), VECTOR3_USE(linVelA), VECTOR3_USE(linVelB), VECTOR3_USE(angVelA), VECTOR3_USE(angVelB), info, row, VECTOR3_USE(ax1), rotational, rotAllowed);
	VECTOR3_DEF_OUT(ax1);
	return ret;
}
void btTriangleShape_calcNormal(btTriangleShape* obj, btScalar* normal)
{
	VECTOR3_DEF(normal);
	obj->calcNormal(VECTOR3_USE(normal));
	VECTOR3_DEF_OUT(normal);
}
void btPolyhedralConvexShape_getVertex(btPolyhedralConvexShape* obj, int i, btScalar* vtx)
{
	VECTOR3_DEF(vtx);
	obj->getVertex(i, VECTOR3_USE(vtx));
	VECTOR3_DEF_OUT(vtx);
}
void btGeneric6DofSpring2Constraint_getLinearUpperLimit(btGeneric6DofSpring2Constraint* obj, btScalar* linearUpper)
{
	VECTOR3_CONV(linearUpper);
	obj->getLinearUpperLimit(VECTOR3_USE(linearUpper));
	VECTOR3_DEF_OUT(linearUpper);
}
void btGeneric6DofSpring2Constraint_getAngularUpperLimitReversed(btGeneric6DofSpring2Constraint* obj, btScalar* angularUpper)
{
	VECTOR3_CONV(angularUpper);
	obj->getAngularUpperLimitReversed(VECTOR3_USE(angularUpper));
	VECTOR3_DEF_OUT(angularUpper);
}
void btGeneric6DofConstraint_getAngularUpperLimit(btGeneric6DofConstraint* obj, btScalar* angularUpper)
{
	VECTOR3_DEF(angularUpper);
	obj->getAngularUpperLimit(VECTOR3_USE(angularUpper));
	VECTOR3_DEF_OUT(angularUpper);
}
void btGeneric6DofConstraint_getLinearLowerLimit(btGeneric6DofConstraint* obj, btScalar* linearLower)
{
	VECTOR3_DEF(linearLower);
	obj->getLinearLowerLimit(VECTOR3_USE(linearLower));
	VECTOR3_DEF_OUT(linearLower);
}