void GameWorld::checkForCollisions() { Player* player = m_gameObjectManager->getPlayer(); // check enemies against player shots and against player. checkCollisionWithEnemies(player); // Player against special objects checkCollionPlayerVsSpecialObjects(player); // Enemy shots against player checkCollisionVsEnemyShots(player); // Check if player collide with the terrain checkTerrainCollision(player); }
void Viewer::move(float dx, float dy, float dz){ glm::vec3 old_position = _position; _position.x = _position.x + dz * -sin(_current_angle) + dx * -sin(_current_angle + (PI /2)); _position.y = _position.y + dy; _position.z = _position.z + dz * -cos(_current_angle) + dx * -cos(_current_angle + (PI/2)); if (checkTerrainCollision()){ //ROLLBACK _position = old_position; setVelocity(0,0,0); } if (checkObjectCollisions()){ _position.x = _position.x - dz * -sin(_current_angle); _position.z = _position.z - dz * -cos(_current_angle); setForwardVelocity(0); } }