示例#1
0
void Scene::reset() {
	if (player) {
		resetObject(*player);
	}
	
	for(auto &object : m_objects) resetObject(object);
}
StatsProcessNode::~StatsProcessNode(void)
{
    resetObject();
    // Setting next as 0 , if caller tries to access the next node after
    // deletion it will be caught immediately.
    next = 0;
}
示例#3
0
void Physics::step(void) {
  dynamicWorld->stepSimulation(1.f/60.f);
  graphics->animate();
  int numManifolds = dynamicWorld->getDispatcher()->getNumManifolds();
  for (int i = 0; i < numManifolds; i++) {
    btPersistentManifold* contactManifold =  dynamicWorld->getDispatcher()->getManifoldByIndexInternal(i);
    btCollisionObject* obA = static_cast<btCollisionObject*>(contactManifold->getBody0());
    btCollisionObject* obB = static_cast<btCollisionObject*>(contactManifold->getBody1());
    btBroadphaseProxy* obA_proxy = obA->getBroadphaseHandle();
    btBroadphaseProxy* obB_proxy = obB->getBroadphaseHandle();
    if (obA_proxy->m_collisionFilterGroup & obB_proxy->m_collisionFilterMask) {
      if (obA_proxy->m_collisionFilterGroup == COL_PENGUIN && obB_proxy->m_collisionFilterGroup == COL_KILLBOX) {
        PhysicsBody* object = reinterpret_cast<PhysicsBody*>(obA->getUserPointer());
        resetObject(object);
      } else if (obA_proxy->m_collisionFilterGroup == COL_PENGUIN && obB_proxy->m_collisionFilterGroup == COL_GOAL) {
        nextStage();
        graphics->playSound(2);
      } else if (obA_proxy->m_collisionFilterGroup == COL_PENGUIN && obB_proxy->m_collisionFilterGroup == COL_CHECKPOINT) {
        btVector3 checkpoint2 = obB->getWorldTransform().getOrigin();
        btBoxShape* shape = reinterpret_cast<btBoxShape*>(obB->getCollisionShape());
        checkpoint2 += btVector3(0, shape->getHalfExtentsWithoutMargin().y(), 0);
        checkpoint2 += btVector3(0, 25, 0);
        PhysicsBody* object = reinterpret_cast<PhysicsBody*>(obA->getUserPointer());
        btRigidBody* body = object->getBody();
        btVector3 translate = body->getCenterOfMassPosition();
        if (checkpoint2 != checkpoint && translate.y() >= checkpoint2.y()) {
          graphics->playSound(1);
          checkpoint = checkpoint2;
        }
      }
    }
  }
}