示例#1
0
void Source::GetStreamInfo( QString &aInfo )
{
	int lFrameRate = 0;
	if ( mDisplayThread->IsRunning() )
	{
		lFrameRate = mDisplayThread->GetFPS();
	}

	PvStreamInfo lInfo( mStream );
	QString lStatistics = lInfo.GetStatistics( lFrameRate ).GetAscii();
	QString lErrors = lInfo.GetErrors().GetAscii();
	QString lWarnings = lInfo.GetWarnings( mBuffersReallocated ).GetAscii();

	aInfo = lStatistics + "\r\n" + lErrors + "\r\n" + lWarnings;
}
btRigidBody* cPhysics::GetNewBody( btCollisionShape* lpShape, float lfMass, const cVec3& lPosition ){
	/// Create Dynamic Objects
	btTransform lStartTransform;
	lStartTransform.setIdentity();

	//rigidbody is dynamic if and only if mass is non zero, otherwise 
	static bool lbIsDynamic = (lfMass != 0.f);
	btVector3 lLocalInertia( 0, 0, 0);

	if ( lbIsDynamic ){
		lpShape->calculateLocalInertia(lfMass,lLocalInertia);
	}
	lStartTransform.setOrigin( Local2Bullet( lPosition ) );

	//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
	btDefaultMotionState* lpMotionState = new btDefaultMotionState( lStartTransform );
	btRigidBody::btRigidBodyConstructionInfo lInfo( lfMass, lpMotionState, lpShape, lLocalInertia);
	btRigidBody* lpBody = new btRigidBody( lInfo );
	mpWorld->addRigidBody(lpBody);

	return lpBody;
}