当前位置: 首页>>代码示例>>C++>>正文


C++ WorldState::getPhysicsManager方法代码示例

本文整理汇总了C++中WorldState::getPhysicsManager方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldState::getPhysicsManager方法的具体用法?C++ WorldState::getPhysicsManager怎么用?C++ WorldState::getPhysicsManager使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WorldState的用法示例。


在下文中一共展示了WorldState::getPhysicsManager方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: createPlayerBody

void BulletManager::createPlayerBody()
{
	btCollisionShape* bodyShape = new btCapsuleShape(.3f,2.0f);
	WorldState *worldState = (WorldState *) GameState::GAMESTATE;
	Camera *camera = worldState->getPhysicsManager()->getWorldCameras()->getPlayerCamera();
	btTransform bodyTransform;
	bodyTransform.setIdentity();
	float *translate = camera->getEye();
	bodyTransform.setOrigin(btVector3(translate[0],translate[1]-0.79f,translate[2]));
	btScalar mass(10.);
	btVector3 localInertia(0,0,0);
	bodyShape->calculateLocalInertia(mass,localInertia);
	btDefaultMotionState* myMotionState = new btDefaultMotionState(bodyTransform);
	btRigidBody::btRigidBodyConstructionInfo rbInfo(mass,myMotionState,bodyShape,localInertia);
	m_playerBody = new btRigidBody(rbInfo);
	m_playerBody->setAngularFactor(0);
	m_dynamicsWorld->addRigidBody(m_playerBody);
}
开发者ID:Argo15,项目名称:ArgoVox,代码行数:18,代码来源:BulletManager.cpp

示例2: updateDynamicsWorld

void BulletManager::updateDynamicsWorld(float nSpeed)
{
	Profiler::getInstance()->startProfile("Update Dynamics World");
	// move camera
	WorldState *worldState = (WorldState *) GameState::GAMESTATE;
	WorldCamera *camera = worldState->getPhysicsManager()->getWorldCameras()->getPlayerCamera();
	float nOldEye[3];
	nOldEye[0] = camera->getEyeX();
	nOldEye[1] = camera->getEyeY();
	nOldEye[2] = camera->getEyeZ();
	if (InputManager::getInstance()->isKeyDown('w'))
	{
		camera->moveForward(nSpeed*0.1f);
	}
	if (InputManager::getInstance()->isKeyDown('s'))
	{
		camera->moveBackward(nSpeed*0.1f);
	}
	if (InputManager::getInstance()->isKeyDown('a'))
	{
		camera->moveLeft(nSpeed*0.1f);
	}
	if (InputManager::getInstance()->isKeyDown('d'))
	{
		camera->moveRight(nSpeed*0.1f);
	}
	float *nNewEye = camera->getEye();
	m_playerBody->activate(true);
	m_playerBody->setLinearVelocity(100.0f*btVector3(nNewEye[0]-nOldEye[0],-0.04f,nNewEye[2]-nOldEye[2]));

	// check physics
	m_dynamicsWorld->stepSimulation(1.f/60.f,10);

	// update camera
	btVector3 camPos = m_playerBody->getWorldTransform().getOrigin();
	camera->setPosition(camPos[0],camPos[1]+0.8,camPos[2]);
	Profiler::getInstance()->endProfile();
}
开发者ID:Argo15,项目名称:ArgoVox,代码行数:38,代码来源:BulletManager.cpp


注:本文中的WorldState::getPhysicsManager方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。