Exemple #1
0
void VisualDebugger::sendEntireSDK()
{
	NpPhysics& npPhysics = NpPhysics::getInstance();
	mPvdConnection->createInstance( (PxPhysics*)&npPhysics );
	npPhysics.getPvdConnectionManager()->setIsTopLevelUIElement( &npPhysics, true );
	mMetaDataBinding.sendAllProperties( *mPvdConnection, npPhysics );

#define SEND_BUFFER_GROUP( type, name ) {					\
		Ps::Array<type*> buffers;							\
		PxU32 numBuffers = npPhysics.getNb##name();			\
		buffers.resize(numBuffers);							\
		npPhysics.get##name(buffers.begin(), numBuffers);	\
		for(PxU32 i = 0; i < numBuffers; i++)				\
			increaseReference(buffers[i]);					\
	}

	SEND_BUFFER_GROUP( PxMaterial, Materials );
	SEND_BUFFER_GROUP( PxTriangleMesh, TriangleMeshes );
	SEND_BUFFER_GROUP( PxConvexMesh, ConvexMeshes );
	SEND_BUFFER_GROUP( PxHeightField, HeightFields );

#if PX_USE_CLOTH_API
	SEND_BUFFER_GROUP( PxClothFabric, ClothFabrics );
#endif

	mPvdConnection->flush();
	PxU32 numScenes = npPhysics.getNbScenes();
	for(PxU32 i = 0; i < numScenes; i++)
	{
		NpScene* npScene = npPhysics.getScene(i);
		Scb::Scene& scbScene = npScene->getScene();

		scbScene.getSceneVisualDebugger().sendEntireScene();
	}
}
void VisualDebugger::sendEntireSDK()
{
	PVD::PvdCommLayerError error;
	error = mPvdConnection->beginFrame();
	
	NpPhysics& npPhysics = NpPhysics::getInstance();
	error = mPvdConnection->createInstance(PvdClassKeys::PhysicsSDK+1, PX_PROFILE_POINTER_TO_U64(&npPhysics), PVD::EInstanceUIFlags::TopLevel);
	mMetaDataBinding.sendAllProperties( mPvdConnection, &npPhysics );
	createGroups();

#define SEND_BUFFER_GROUP( type, name ) {					\
		Ps::Array<type*> buffers;							\
		PxU32 numBuffers = npPhysics.getNb##name();			\
		buffers.resize(numBuffers);							\
		npPhysics.get##name(buffers.begin(), numBuffers);	\
		for(PxU32 i = 0; i < numBuffers; i++)				\
			increaseReference(buffers[i]);					\
	}
	SEND_BUFFER_GROUP( PxTriangleMesh, TriangleMeshes );
	SEND_BUFFER_GROUP( PxConvexMesh, ConvexMeshes );
	SEND_BUFFER_GROUP( PxHeightField, HeightFields );
	SEND_BUFFER_GROUP( PxHeightField, HeightFields );


	
	//Ensure that all the instances and class descriptions created so far
	//are available to the rest of the system.
	error = mPvdConnection->flush();

	PxU32 numScenes = npPhysics.getNbScenes();
	for(PxU32 i = 0; i < numScenes; i++)
	{
		NpScene* npScene = npPhysics.getScene(i);
		Scb::Scene& scbScene = npScene->getScene();

		scbScene.getSceneVisualDebugger().sendEntireScene();
	}

	error = mPvdConnection->endFrame();
	error = mPvdConnection->flush();
}