History

Merge pull request #9190 from jherico/test_mode

Add test mode to interface

samcake committed 9 years ago

Commit 9155f112 parents 4ce1bb3 2a43f5f6 files · +183 −67Browse files

Showing the changes to interface/src/Application.cpp (1 of 6 files). Show all

Unified · Split

interface/src/Application.cpp+93−67
@@ -131,6 +131,7 @@ · 130 unmodified lines
131#include "LODManager.h"131#include "LODManager.h"
132#include "ModelPackager.h"132#include "ModelPackager.h"
133#include "networking/HFWebEngineProfile.h"133#include "networking/HFWebEngineProfile.h"
134#include "scripting/TestScriptingInterface.h"
134#include "scripting/AccountScriptingInterface.h"135#include "scripting/AccountScriptingInterface.h"
135#include "scripting/AssetMappingsScriptingInterface.h"136#include "scripting/AssetMappingsScriptingInterface.h"
136#include "scripting/AudioDeviceScriptingInterface.h"137#include "scripting/AudioDeviceScriptingInterface.h"
@@ -553,6 +554,20 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo · 416 unmodified lines
553 setProperty(hifi::properties::STEAM, SteamClient::isRunning());554 setProperty(hifi::properties::STEAM, SteamClient::isRunning());
554 setProperty(hifi::properties::CRASHED, _previousSessionCrashed);555 setProperty(hifi::properties::CRASHED, _previousSessionCrashed);
555 556
557 {
558 const QString TEST_SCRIPT = "--testScript";
559 const QStringList args = arguments();
560 for (int i = 0; i < args.size() - 1; ++i) {
561 if (args.at(i) == TEST_SCRIPT) {
562 QString testScriptPath = args.at(i + 1);
563 if (QFileInfo(testScriptPath).exists()) {
564 setProperty(hifi::properties::TEST, QUrl::fromLocalFile(testScriptPath));
565 }
566 }
567 }
568 }
569
570
556 _runningMarker.startRunningMarker();571 _runningMarker.startRunningMarker();
557 572
558 PluginContainer* pluginContainer = dynamic_cast<PluginContainer*>(this); // set the container for any plugins that care573 PluginContainer* pluginContainer = dynamic_cast<PluginContainer*>(this); // set the container for any plugins that care
@@ -1341,90 +1356,96 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo · 782 unmodified lines
1341 return entityServerNode && !isPhysicsEnabled();1356 return entityServerNode && !isPhysicsEnabled();
1342 });1357 });
1343 1358
1359 QVariant testProperty = property(hifi::properties::TEST);
1360 qDebug() << testProperty;
1361 if (testProperty.isValid()) {
1362 auto scriptEngines = DependencyManager::get<ScriptEngines>();
1363 const auto testScript = property(hifi::properties::TEST).toUrl();
1364 scriptEngines->loadScript(testScript, false);
1365 } else {
1366 // Get sandbox content set version, if available
1367 auto acDirPath = PathUtils::getRootDataDirectory() + BuildInfo::MODIFIED_ORGANIZATION + "/assignment-client/";
1368 auto contentVersionPath = acDirPath + "content-version.txt";
1369 qCDebug(interfaceapp) << "Checking " << contentVersionPath << " for content version";
1370 auto contentVersion = 0;
1371 QFile contentVersionFile(contentVersionPath);
1372 if (contentVersionFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
1373 QString line = contentVersionFile.readAll();
1374 // toInt() returns 0 if the conversion fails, so we don't need to specifically check for failure
1375 contentVersion = line.toInt();
1376 }
1377 qCDebug(interfaceapp) << "Server content version: " << contentVersion;
1344 1378
1379 bool hasTutorialContent = contentVersion >= 1;
1345 1380
1346 // Get sandbox content set version, if available1381 Setting::Handle<bool> firstRun { Settings::firstRun, true };
1347 auto acDirPath = PathUtils::getRootDataDirectory() + BuildInfo::MODIFIED_ORGANIZATION + "/assignment-client/";1382 bool hasHMDAndHandControllers = PluginUtils::isHMDAvailable("OpenVR (Vive)") && PluginUtils::isHandControllerAvailable();
1348 auto contentVersionPath = acDirPath + "content-version.txt";1383 Setting::Handle<bool> tutorialComplete { "tutorialComplete", false };
1349 qCDebug(interfaceapp) << "Checking " << contentVersionPath << " for content version";1384
1350 auto contentVersion = 0;1385 bool shouldGoToTutorial = hasHMDAndHandControllers && hasTutorialContent && !tutorialComplete.get();
1351 QFile contentVersionFile(contentVersionPath);1386
1352 if (contentVersionFile.open(QIODevice::ReadOnly | QIODevice::Text)) {1387 qCDebug(interfaceapp) << "Has HMD + Hand Controllers: " << hasHMDAndHandControllers << ", current plugin: " << _displayPlugin->getName();
1353 QString line = contentVersionFile.readAll();1388 qCDebug(interfaceapp) << "Has tutorial content: " << hasTutorialContent;
1354 // toInt() returns 0 if the conversion fails, so we don't need to specifically check for failure1389 qCDebug(interfaceapp) << "Tutorial complete: " << tutorialComplete.get();
1355 contentVersion = line.toInt();1390 qCDebug(interfaceapp) << "Should go to tutorial: " << shouldGoToTutorial;
1356 }1391
1357 qCDebug(interfaceapp) << "Server content version: " << contentVersion;1392 // when --url in command line, teleport to location
1358 1393 const QString HIFI_URL_COMMAND_LINE_KEY = "--url";
1359 bool hasTutorialContent = contentVersion >= 1;1394 int urlIndex = arguments().indexOf(HIFI_URL_COMMAND_LINE_KEY);
1360 1395 QString addressLookupString;
1361 Setting::Handle<bool> firstRun { Settings::firstRun, true };1396 if (urlIndex != -1) {
1362 bool hasHMDAndHandControllers = PluginUtils::isHMDAvailable("OpenVR (Vive)") && PluginUtils::isHandControllerAvailable();1397 addressLookupString = arguments().value(urlIndex + 1);
1363 Setting::Handle<bool> tutorialComplete { "tutorialComplete", false };1398 }
1364
1365 bool shouldGoToTutorial = hasHMDAndHandControllers && hasTutorialContent && !tutorialComplete.get();
1366
1367 qCDebug(interfaceapp) << "Has HMD + Hand Controllers: " << hasHMDAndHandControllers << ", current plugin: " << _displayPlugin->getName();
1368 qCDebug(interfaceapp) << "Has tutorial content: " << hasTutorialContent;
1369 qCDebug(interfaceapp) << "Tutorial complete: " << tutorialComplete.get();
1370 qCDebug(interfaceapp) << "Should go to tutorial: " << shouldGoToTutorial;
1371
1372 // when --url in command line, teleport to location
1373 const QString HIFI_URL_COMMAND_LINE_KEY = "--url";
1374 int urlIndex = arguments().indexOf(HIFI_URL_COMMAND_LINE_KEY);
1375 QString addressLookupString;
1376 if (urlIndex != -1) {
1377 addressLookupString = arguments().value(urlIndex + 1);
1378 }
1379 1399
1380 const QString TUTORIAL_PATH = "/tutorial_begin";1400 const QString TUTORIAL_PATH = "/tutorial_begin";
1381 1401
1382 if (shouldGoToTutorial) {1402 if (shouldGoToTutorial) {
1383 if(sandboxIsRunning) {1403 if (sandboxIsRunning) {
1384 qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home.";1404 qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home.";
1385 DependencyManager::get<AddressManager>()->goToLocalSandbox(TUTORIAL_PATH);1405 DependencyManager::get<AddressManager>()->goToLocalSandbox(TUTORIAL_PATH);
1386 } else {
1387 qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry.";
1388 if (firstRun.get()) {
1389 showHelp();
1390 }
1391 if (addressLookupString.isEmpty()) {
1392 DependencyManager::get<AddressManager>()->goToEntry();
1393 } else {1406 } else {
1394 DependencyManager::get<AddressManager>()->loadSettings(addressLookupString);1407 qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry.";
1408 if (firstRun.get()) {
1409 showHelp();
1410 }
1411 if (addressLookupString.isEmpty()) {
1412 DependencyManager::get<AddressManager>()->goToEntry();
1413 } else {
1414 DependencyManager::get<AddressManager>()->loadSettings(addressLookupString);
1415 }
1395 }1416 }
1396 }1417 } else {
1397 } else {
1398 1418
1399 bool isFirstRun = firstRun.get();1419 bool isFirstRun = firstRun.get();
1400 1420
1401 if (isFirstRun) {1421 if (isFirstRun) {
1402 showHelp();1422 showHelp();
1403 }1423 }
1404 1424
1405 // If this is a first run we short-circuit the address passed in1425 // If this is a first run we short-circuit the address passed in
1406 if (isFirstRun) {1426 if (isFirstRun) {
1407 if (hasHMDAndHandControllers) {1427 if (hasHMDAndHandControllers) {
1408 if(sandboxIsRunning) {1428 if (sandboxIsRunning) {
1409 qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home.";1429 qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home.";
1410 DependencyManager::get<AddressManager>()->goToLocalSandbox();1430 DependencyManager::get<AddressManager>()->goToLocalSandbox();
1431 } else {
1432 qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry.";
1433 DependencyManager::get<AddressManager>()->goToEntry();
1434 }
1411 } else {1435 } else {
1412 qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry.";
1413 DependencyManager::get<AddressManager>()->goToEntry();1436 DependencyManager::get<AddressManager>()->goToEntry();
1414 }1437 }
1415 } else {1438 } else {
1416 DependencyManager::get<AddressManager>()->goToEntry();1439 qCDebug(interfaceapp) << "Not first run... going to" << qPrintable(addressLookupString.isEmpty() ? QString("previous location") : addressLookupString);
1440 DependencyManager::get<AddressManager>()->loadSettings(addressLookupString);
1417 }1441 }
1418 } else {
1419 qCDebug(interfaceapp) << "Not first run... going to" << qPrintable(addressLookupString.isEmpty() ? QString("previous location") : addressLookupString);
1420 DependencyManager::get<AddressManager>()->loadSettings(addressLookupString);
1421 }1442 }
1422 }
1423 1443
1424 _connectionMonitor.init();1444 _connectionMonitor.init();
1425 1445
1426 // After all of the constructor is completed, then set firstRun to false.1446 // After all of the constructor is completed, then set firstRun to false.
1427 firstRun.set(false);1447 firstRun.set(false);
1448 }
1428}1449}
1429 1450
1430void Application::domainConnectionRefused(const QString& reasonMessage, int reasonCodeInt, const QString& extraInfo) {1451void Application::domainConnectionRefused(const QString& reasonMessage, int reasonCodeInt, const QString& extraInfo) {
@@ -5074,6 +5095,11 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri · 3643 unmodified lines
5074 // AvatarManager has some custom types5095 // AvatarManager has some custom types
5075 AvatarManager::registerMetaTypes(scriptEngine);5096 AvatarManager::registerMetaTypes(scriptEngine);
5076 5097
5098 if (property(hifi::properties::TEST).isValid()) {
5099 scriptEngine->registerGlobalObject("Test", TestScriptingInterface::getInstance());
5100 }
5101
5102 scriptEngine->registerGlobalObject("Overlays", &_overlays);
5077 scriptEngine->registerGlobalObject("Rates", new RatesScriptingInterface(this));5103 scriptEngine->registerGlobalObject("Rates", new RatesScriptingInterface(this));
5078 5104
5079 // hook our avatar and avatar hash map object into this script engine5105 // hook our avatar and avatar hash map object into this script engine