1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-10-04 16:17:17 +02:00

Added Benchmark mode (--benchmark file)

This commit is contained in:
Daniel Evans 2016-04-18 02:31:52 +01:00
parent aecc43c75b
commit 74f0e7f67c
4 changed files with 34 additions and 4 deletions

View File

@ -10,6 +10,7 @@ add_executable(rwgame
pausestate.cpp
menustate.cpp
debugstate.cpp
benchmarkstate.cpp
DrawUI.cpp

View File

@ -4,6 +4,7 @@
#include "DrawUI.hpp"
#include "ingamestate.hpp"
#include "menustate.hpp"
#include "benchmarkstate.hpp"
#include "debug/HttpServer.hpp"
#include <objects/GameObject.hpp>
@ -38,6 +39,7 @@ RWGame::RWGame(const std::string& gamepath, int argc, char* argv[])
bool newgame = false;
bool test = false;
std::string startSave;
std::string benchFile;
for( int i = 1; i < argc; ++i )
{
@ -69,6 +71,10 @@ RWGame::RWGame(const std::string& gamepath, int argc, char* argv[])
{
startSave = argv[i+1];
}
if( strcmp( "--benchmark", argv[i]) == 0 && i+1 < argc )
{
benchFile = argv[i+1];
}
}
@ -81,7 +87,6 @@ RWGame::RWGame(const std::string& gamepath, int argc, char* argv[])
sf::ContextSettings cs;
cs.depthBits = 32;
window.create(sf::VideoMode(w, h), "", style, cs);
window.setVerticalSyncEnabled(true);
window.setMouseCursorVisible(false);
log.addReciever(&logPrinter);
@ -130,7 +135,11 @@ RWGame::RWGame(const std::string& gamepath, int argc, char* argv[])
}
auto loading = new LoadingState(this);
if( newgame )
if (! benchFile.empty())
{
loading->setNextState(new BenchmarkState(this, benchFile));
}
else if( newgame )
{
if( test )
{
@ -171,7 +180,7 @@ void RWGame::newGame()
return;
}
state = new GameState;
state = new GameState();
world = new GameWorld(&log, &work, data);
world->dynamicsWorld->setDebugDrawer(debug);
@ -317,6 +326,9 @@ int RWGame::run()
while ( accum >= GAME_TIMESTEP ) {
StateManager::get().tick(GAME_TIMESTEP);
if (StateManager::get().states.size() == 0) {
break;
}
tick(GAME_TIMESTEP);
@ -337,7 +349,9 @@ int RWGame::run()
render(alpha, timer);
StateManager::get().draw(renderer);
if (StateManager::get().states.size() > 0) {
StateManager::get().draw(renderer);
}
window.display();
}

View File

@ -112,6 +112,9 @@ DebugState::DebugState(RWGame* game, const glm::vec3& vp, const glm::quat& vd)
m->addEntry(Menu::lambda("Full Armour", [=] {
game->getPlayer()->getCharacter()->getCurrentState().armour = 100.f;
}, entryHeight));
m->addEntry(Menu::lambda("Cull Here", [=] {
game->getRenderer()->setCullOverride(true, _debugCam);
}, entryHeight));
this->enterMenu(m);
@ -224,6 +227,9 @@ void DebugState::handleEvent(const sf::Event &e)
case sf::Keyboard::LShift:
_sonicMode = true;
break;
case sf::Keyboard::P:
printCameraDetails();
break;
}
break;
case sf::Event::KeyReleased:
@ -246,6 +252,13 @@ void DebugState::handleEvent(const sf::Event &e)
State::handleEvent(e);
}
void DebugState::printCameraDetails()
{
std::cout << " " << _debugCam.position.x << " " << _debugCam.position.y << " " << _debugCam.position.z
<< " " << _debugCam.rotation.x << " " << _debugCam.rotation.y << " " << _debugCam.rotation.z
<< " " << _debugCam.rotation.w << std::endl;
}
void DebugState::spawnVehicle(unsigned int id)
{
auto ch = game->getPlayer()->getCharacter();

View File

@ -21,6 +21,8 @@ public:
virtual void handleEvent(const sf::Event& event);
void printCameraDetails();
void spawnVehicle(unsigned int id);
const ViewCamera& getCamera();