本文整理汇总了C++中PxPhysics::getFoundation方法的典型用法代码示例。如果您正苦于以下问题:C++ PxPhysics::getFoundation方法的具体用法?C++ PxPhysics::getFoundation怎么用?C++ PxPhysics::getFoundation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PxPhysics
的用法示例。
在下文中一共展示了PxPhysics::getFoundation方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PxInitVehicleSDK
bool PxInitVehicleSDK(PxPhysics& physics)
{
PX_ASSERT(static_cast<Ps::Foundation*>(&physics.getFoundation()) == &Ps::Foundation::getInstance());
Ps::Foundation::incRefCount();
setVehicleToleranceScale(physics.getTolerancesScale());
return true;
}
示例2: GenerateConvexFromDXMesh
//=============================================================================
// PRIVATE FUNCTIONS
//=============================================================================
static physx::unique_ptr<PxConvexMesh> GenerateConvexFromDXMesh(PxPhysics &iPhysics, ID3DXMesh *iMesh)
{
//Used to retrieve information from X file
struct Mesh_FVF {
D3DXVECTOR3 VertexPos;
D3DXVECTOR3 Normal;
D3DXVECTOR2 TexCoord;
};
int aNumVerticies = iMesh->GetNumVertices();
DWORD FVFSize = D3DXGetFVFVertexSize(iMesh->GetFVF());
//Create pointer for vertices
PxVec3* verts = new PxVec3[aNumVerticies];
char *DXMeshPtr;
iMesh->LockVertexBuffer(D3DLOCK_READONLY, (void**)&DXMeshPtr);
for(int i = 0; i < aNumVerticies; i++)
{
Mesh_FVF *DXMeshFVF = (Mesh_FVF*)DXMeshPtr;
verts[i] = PxVec3(DXMeshFVF->VertexPos.x, DXMeshFVF->VertexPos.y, DXMeshFVF->VertexPos.z);
DXMeshPtr += FVFSize;
}
iMesh->UnlockVertexBuffer();
// Create descriptor for convex mesh
PxConvexMeshDesc convexDesc;
convexDesc.points.count = aNumVerticies;
convexDesc.points.stride = sizeof(PxVec3);
convexDesc.points.data = verts;
convexDesc.flags = PxConvexFlag::eCOMPUTE_CONVEX;
PxTolerancesScale toleranceScale;
toleranceScale.length = 1.0f;
toleranceScale.mass = 1000.0f;
toleranceScale.speed = 9.8f;
assert(toleranceScale.isValid());
physx::unique_ptr<PxCooking> cooker = physx::unique_ptr<PxCooking>(
PxCreateCooking(PX_PHYSICS_VERSION, iPhysics.getFoundation(), PxCookingParams(toleranceScale))
);
// Cooking from memory
MemoryStream buf;
physx::unique_ptr<PxConvexMesh> convexMesh;
if(cooker->cookConvexMesh(convexDesc, buf))
{
convexMesh = physx::unique_ptr<PxConvexMesh>(iPhysics.createConvexMesh(buf));
}
delete[] verts;
return convexMesh;
}
示例3: PxInitExtensions
bool PxInitExtensions(PxPhysics& physics)
{
PX_ASSERT(static_cast<Ps::Foundation*>(&physics.getFoundation()) == &Ps::Foundation::getInstance());
Ps::Foundation::incRefCount();
physics.registerClass(PxConcreteType::eUSER_SPHERICAL_JOINT, Ext::SphericalJoint::createInstance);
physics.registerClass(PxConcreteType::eUSER_REVOLUTE_JOINT, Ext::RevoluteJoint::createInstance);
physics.registerClass(PxConcreteType::eUSER_DISTANCE_JOINT, Ext::DistanceJoint::createInstance);
physics.registerClass(PxConcreteType::eUSER_D6_JOINT, Ext::D6Joint::createInstance);
physics.registerClass(PxConcreteType::eUSER_PRISMATIC_JOINT, Ext::PrismaticJoint::createInstance);
physics.registerClass(PxConcreteType::eUSER_FIXED_JOINT, Ext::FixedJoint::createInstance);
#if PX_SUPPORT_VISUAL_DEBUGGER
if ( physics.getPvdConnectionManager() != NULL )
physics.getPvdConnectionManager()->addHandler( gPvdHandler );
#endif
return true;
}
示例4: PxInitExtensions
bool PxInitExtensions(PxPhysics& physics, PxPvd* pvd)
{
PX_ASSERT(static_cast<Ps::Foundation*>(&physics.getFoundation()) == &Ps::Foundation::getInstance());
PX_UNUSED(physics);
PX_UNUSED(pvd);
Ps::Foundation::incRefCount();
#if PX_SUPPORT_PVD
if(pvd)
{
gPvdHandler.mPvd = static_cast<PsPvd*>(pvd);
gPvdHandler.mPvd->addClient(&gPvdHandler);
}
#endif
return true;
}