void btAABB_get_center_extend(btAABB* obj, btVector3* center, btVector3* extend)
{
	BTVECTOR3_DEF(center);
	BTVECTOR3_DEF(extend);
	obj->get_center_extend(BTVECTOR3_USE(center), BTVECTOR3_USE(extend));
	BTVECTOR3_DEF_OUT(center);
	BTVECTOR3_DEF_OUT(extend);
}
void btPolyhedralConvexShape_getPlane(btPolyhedralConvexShape* obj, btVector3* planeNormal,
	btVector3* planeSupport, int i)
{
	BTVECTOR3_DEF(planeNormal);
	BTVECTOR3_DEF(planeSupport);
	obj->getPlane(BTVECTOR3_USE(planeNormal), BTVECTOR3_USE(planeSupport), i);
	BTVECTOR3_DEF_OUT(planeNormal);
	BTVECTOR3_DEF_OUT(planeSupport);
}
void btPolyhedralConvexShape_getEdge(btPolyhedralConvexShape* obj, int i, btVector3* pa,
	btVector3* pb)
{
	BTVECTOR3_DEF(pa);
	BTVECTOR3_DEF(pb);
	obj->getEdge(i, BTVECTOR3_USE(pa), BTVECTOR3_USE(pb));
	BTVECTOR3_DEF_OUT(pa);
	BTVECTOR3_DEF_OUT(pb);
}
void btCollisionShape_getAabb(btCollisionShape* obj, const btTransform* t, btVector3* aabbMin,
	btVector3* aabbMax)
{
	BTTRANSFORM_IN(t);
	BTVECTOR3_DEF(aabbMin);
	BTVECTOR3_DEF(aabbMax);
	obj->getAabb(BTTRANSFORM_USE(t), BTVECTOR3_USE(aabbMin), BTVECTOR3_USE(aabbMax));
	BTVECTOR3_DEF_OUT(aabbMin);
	BTVECTOR3_DEF_OUT(aabbMax);
}
void btPolyhedralConvexAabbCachingShape_getNonvirtualAabb(btPolyhedralConvexAabbCachingShape* obj,
	const btTransform* trans, btVector3* aabbMin, btVector3* aabbMax, btScalar margin)
{
	BTTRANSFORM_IN(trans);
	BTVECTOR3_DEF(aabbMin);
	BTVECTOR3_DEF(aabbMax);
	obj->getNonvirtualAabb(BTTRANSFORM_USE(trans), BTVECTOR3_USE(aabbMin), BTVECTOR3_USE(aabbMax),
		margin);
	BTVECTOR3_DEF_OUT(aabbMin);
	BTVECTOR3_DEF_OUT(aabbMax);
}
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);
}
void btCollisionShape_calculateLocalInertia(btCollisionShape* obj, btScalar mass,
	btVector3* inertia)
{
	BTVECTOR3_DEF(inertia);
	obj->calculateLocalInertia(mass, BTVECTOR3_USE(inertia));
	BTVECTOR3_DEF_OUT(inertia);
}
void btCollisionShape_getBoundingSphere(btCollisionShape* obj, btVector3* center,
	btScalar* radius)
{
	BTVECTOR3_DEF(center);
	obj->getBoundingSphere(BTVECTOR3_USE(center), *radius);
	BTVECTOR3_DEF_OUT(center);
}
void btPolyhedralConvexShape_getVertex(btPolyhedralConvexShape* obj, int i, btVector3* vtx)
{
	BTVECTOR3_DEF(vtx);
	obj->getVertex(i, BTVECTOR3_USE(vtx));
	BTVECTOR3_DEF_OUT(vtx);
}