History

Merge branch 'master' of github.com:highfidelity/hifi into 19935

Ryan Huffman committed 12 years ago

Commit d54dc5f2 parents e38d8f7 e6ba730245 files · +16913 −7768Browse files

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

Unified · Split

interface/src/Application.cpp+94−93
@@ -52,9 +52,9 @@ · 51 unmodified lines
5252
5353 #include <AccountManager.h>
5454 #include <AudioInjector.h>
55+#include <EntityScriptingInterface.h>
5556 #include <LocalVoxelsList.h>
5657 #include <Logging.h>
57−#include <ModelsScriptingInterface.h>
5858 #include <NetworkAccessManager.h>
5959 #include <OctalCode.h>
6060 #include <OctreeSceneStats.h>
@@ -141,8 +141,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 80 unmodified lines
141141 _voxelImporter(),
142142 _importSucceded(false),
143143 _sharedVoxelSystem(TREE_SCALE, DEFAULT_MAX_VOXELS_PER_SYSTEM, &_clipboard),
144− _modelClipboardRenderer(),
145− _modelClipboard(),
144+ _entityClipboardRenderer(),
145+ _entityClipboard(),
146146 _wantToKillLocalVoxels(false),
147147 _viewFrustum(),
148148 _lastQueriedViewFrustum(),
@@ -246,7 +246,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 97 unmodified lines
246246 connect(&domainHandler, SIGNAL(connectedToDomain(const QString&)), SLOT(updateWindowTitle()));
247247 connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(updateWindowTitle()));
248248 connect(&domainHandler, &DomainHandler::settingsReceived, this, &Application::domainSettingsReceived);
249−
249+ connect(&domainHandler, &DomainHandler::hostnameChanged, Menu::getInstance(), &Menu::clearLoginDialogDisplayedFlag);
250+
250251 // hookup VoxelEditSender to PaymentManager so we can pay for octree edits
251252 const PaymentManager& paymentManager = PaymentManager::getInstance();
252253 connect(&_voxelEditSender, &VoxelEditPacketSender::octreePaymentRequired,
@@ -302,13 +303,13 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 49 unmodified lines
302303
303304 // tell the NodeList instance who to tell the domain server we care about
304305 nodeList->addSetOfNodeTypesToNodeInterestSet(NodeSet() << NodeType::AudioMixer << NodeType::AvatarMixer
305− << NodeType::VoxelServer << NodeType::ParticleServer << NodeType::ModelServer
306+ << NodeType::VoxelServer << NodeType::ParticleServer << NodeType::EntityServer
306307 << NodeType::MetavoxelServer);
307308
308309 // connect to the packet sent signal of the _voxelEditSender and the _particleEditSender
309310 connect(&_voxelEditSender, &VoxelEditPacketSender::packetSent, this, &Application::packetSent);
310311 connect(&_particleEditSender, &ParticleEditPacketSender::packetSent, this, &Application::packetSent);
311− connect(&_modelEditSender, &ModelEditPacketSender::packetSent, this, &Application::packetSent);
312+ connect(&_entityEditSender, &EntityEditPacketSender::packetSent, this, &Application::packetSent);
312313
313314 // move the silentNodeTimer to the _nodeThread
314315 QTimer* silentNodeTimer = new QTimer();
@@ -351,7 +352,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 36 unmodified lines
351352 // Tell our voxel edit sender about our known jurisdictions
352353 _voxelEditSender.setVoxelServerJurisdictions(&_voxelServerJurisdictions);
353354 _particleEditSender.setServerJurisdictions(&_particleServerJurisdictions);
354− _modelEditSender.setServerJurisdictions(&_modelServerJurisdictions);
355+ _entityEditSender.setServerJurisdictions(&_entityServerJurisdictions);
355356
356357 Particle::setVoxelEditPacketSender(&_voxelEditSender);
357358 Particle::setParticleEditPacketSender(&_particleEditSender);
@@ -363,7 +364,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 5 unmodified lines
363364 // probably not the right long term solution. But for now, we're going to do this to
364365 // allow you to move a particle around in your hand
365366 _particleEditSender.setPacketsPerSecond(3000); // super high!!
366− _modelEditSender.setPacketsPerSecond(3000); // super high!!
367+ _entityEditSender.setPacketsPerSecond(3000); // super high!!
367368
368369 // Set the sixense filtering
369370 _sixenseManager.setFilter(Menu::getInstance()->isOptionChecked(MenuOption::FilterSixense));
@@ -453,7 +454,7 @@ Application::~Application() { · 83 unmodified lines
453454 _voxelHideShowThread.terminate();
454455 _voxelEditSender.terminate();
455456 _particleEditSender.terminate();
456− _modelEditSender.terminate();
457+ _entityEditSender.terminate();
457458
458459
459460 VoxelTreeElement::removeDeleteHook(&_voxels); // we don't need to do this processing on shutdown
@@ -548,7 +549,7 @@ void Application::initializeGL() { · 88 unmodified lines
548549 _voxelEditSender.initialize(_enableProcessVoxelsThread);
549550 _voxelHideShowThread.initialize(_enableProcessVoxelsThread);
550551 _particleEditSender.initialize(_enableProcessVoxelsThread);
551− _modelEditSender.initialize(_enableProcessVoxelsThread);
552+ _entityEditSender.initialize(_enableProcessVoxelsThread);
552553
553554 if (_enableProcessVoxelsThread) {
554555 qDebug("Voxel parsing thread created.");
@@ -800,7 +801,7 @@ void Application::controlledBroadcastToNodes(const QByteArray& packet, const Nod · 245 unmodified lines
800801 break;
801802 case NodeType::VoxelServer:
802803 case NodeType::ParticleServer:
803− case NodeType::ModelServer:
804+ case NodeType::EntityServer:
804805 channel = BandwidthMeter::VOXELS;
805806 break;
806807 default:
@@ -1314,7 +1315,7 @@ void Application::dropEvent(QDropEvent *event) { · 507 unmodified lines
13141315 const QMimeData *mimeData = event->mimeData();
13151316 foreach (QUrl url, mimeData->urls()) {
13161317 if (url.url().toLower().endsWith(SNAPSHOT_EXTENSION)) {
1317− snapshotPath = url.url().remove("file://");
1318+ snapshotPath = url.toLocalFile();
13181319 break;
13191320 }
13201321 }
@@ -1338,7 +1339,7 @@ void Application::dropEvent(QDropEvent *event) { · 17 unmodified lines
13381339 void Application::sendPingPackets() {
13391340 QByteArray pingPacket = NodeList::getInstance()->constructPingPacket();
13401341 controlledBroadcastToNodes(pingPacket, NodeSet()
1341− << NodeType::VoxelServer << NodeType::ParticleServer << NodeType::ModelServer
1342+ << NodeType::VoxelServer << NodeType::ParticleServer << NodeType::EntityServer
13421343 << NodeType::AudioMixer << NodeType::AvatarMixer
13431344 << NodeType::MetavoxelServer);
13441345 }
@@ -1522,22 +1523,21 @@ struct SendVoxelsOperationArgs { · 177 unmodified lines
15221523 const unsigned char* newBaseOctCode;
15231524 };
15241525
1525−bool Application::exportModels(const QString& filename, float x, float y, float z, float scale) {
1526− QVector<ModelItem*> models;
1527− _models.getTree()->findModelsInCube(AACube(glm::vec3(x / (float)TREE_SCALE, y / (float)TREE_SCALE, z / (float)TREE_SCALE), scale / (float)TREE_SCALE), models);
1528− if (models.size() > 0) {
1526+bool Application::exportEntities(const QString& filename, float x, float y, float z, float scale) {
1527+ QVector<EntityItem*> entities;
1528+ _entities.getTree()->findEntities(AACube(glm::vec3(x / (float)TREE_SCALE,
1529+ y / (float)TREE_SCALE, z / (float)TREE_SCALE), scale / (float)TREE_SCALE), entities);
1530+
1531+ if (entities.size() > 0) {
15291532 glm::vec3 root(x, y, z);
1530− ModelTree exportTree;
1533+ EntityTree exportTree;
15311534
1532− for (int i = 0; i < models.size(); i++) {
1533− ModelItemProperties properties;
1534− ModelItemID id = models.at(i)->getModelItemID();
1535− id.isKnownID = false;
1536− properties.copyFromNewModelItem(*models.at(i));
1535+ for (int i = 0; i < entities.size(); i++) {
1536+ EntityItemProperties properties = entities.at(i)->getProperties();
1537+ EntityItemID id = entities.at(i)->getEntityItemID();
15371538 properties.setPosition(properties.getPosition() - root);
1538− exportTree.addModel(id, properties);
1539+ exportTree.addEntity(id, properties);
15391540 }
1540−
15411541 exportTree.writeToSVOFile(filename.toLocal8Bit().constData());
15421542 } else {
15431543 qDebug() << "No models were selected";
@@ -1630,17 +1630,17 @@ void Application::importVoxels() { · 86 unmodified lines
16301630 emit importDone();
16311631 }
16321632
1633−bool Application::importModels(const QString& filename) {
1634− _modelClipboard.eraseAllOctreeElements();
1635− bool success = _modelClipboard.readFromSVOFile(filename.toLocal8Bit().constData());
1633+bool Application::importEntities(const QString& filename) {
1634+ _entityClipboard.eraseAllOctreeElements();
1635+ bool success = _entityClipboard.readFromSVOFile(filename.toLocal8Bit().constData());
16361636 if (success) {
1637− _modelClipboard.reaverageOctreeElements();
1637+ _entityClipboard.reaverageOctreeElements();
16381638 }
16391639 return success;
16401640 }
16411641
1642−void Application::pasteModels(float x, float y, float z) {
1643− _modelClipboard.sendModels(&_modelEditSender, x, y, z);
1642+void Application::pasteEntities(float x, float y, float z) {
1643+ _entityClipboard.sendEntities(&_entityEditSender, _entities.getTree(), x, y, z);
16441644 }
16451645
16461646 void Application::cutVoxels(const VoxelDetail& sourceVoxel) {
@@ -1772,14 +1772,7 @@ void Application::init() { · 125 unmodified lines
17721772 _lastTimeUpdated.start();
17731773
17741774 Menu::getInstance()->loadSettings();
1775− if (Menu::getInstance()->getAudioJitterBufferFrames() != 0) {
1776− _audio.setDynamicJitterBuffers(false);
1777− _audio.setStaticDesiredJitterBufferFrames(Menu::getInstance()->getAudioJitterBufferFrames());
1778− } else {
1779− _audio.setDynamicJitterBuffers(true);
1780− }
1781−
1782− _audio.setMaxFramesOverDesired(Menu::getInstance()->getMaxFramesOverDesired());
1775+ _audio.setReceivedAudioStreamSettings(Menu::getInstance()->getReceivedAudioStreamSettings());
17831776
17841777 qDebug("Loaded settings");
17851778
@@ -1803,12 +1796,12 @@ void Application::init() { · 17 unmodified lines
18031796 _particles.init();
18041797 _particles.setViewFrustum(getViewFrustum());
18051798
1806− _models.init();
1807− _models.setViewFrustum(getViewFrustum());
1799+ _entities.init();
1800+ _entities.setViewFrustum(getViewFrustum());
18081801
1809− _modelClipboardRenderer.init();
1810− _modelClipboardRenderer.setViewFrustum(getViewFrustum());
1811− _modelClipboardRenderer.setTree(&_modelClipboard);
1802+ _entityClipboardRenderer.init();
1803+ _entityClipboardRenderer.setViewFrustum(getViewFrustum());
1804+ _entityClipboardRenderer.setTree(&_entityClipboard);
18121805
18131806 _metavoxels.init();
18141807
@@ -2038,7 +2031,7 @@ void Application::updateThreads(float deltaTime) { · 223 unmodified lines
20382031 _voxelHideShowThread.threadRoutine();
20392032 _voxelEditSender.threadRoutine();
20402033 _particleEditSender.threadRoutine();
2041− _modelEditSender.threadRoutine();
2034+ _entityEditSender.threadRoutine();
20422035 }
20432036 }
20442037
@@ -2171,8 +2164,8 @@ void Application::update(float deltaTime) { · 126 unmodified lines
21712164 }
21722165
21732166 {
2174− PerformanceTimer perfTimer("models");
2175− _models.update(); // update the models...
2167+ PerformanceTimer perfTimer("entities");
2168+ _entities.update(); // update the models...
21762169 }
21772170
21782171 {
@@ -2216,9 +2209,16 @@ void Application::update(float deltaTime) { · 37 unmodified lines
22162209 // if it's been a while since our last query or the view has significantly changed then send a query, otherwise suppress it
22172210 if (queryIsDue || viewIsDifferentEnough) {
22182211 _lastQueriedTime = now;
2219− queryOctree(NodeType::VoxelServer, PacketTypeVoxelQuery, _voxelServerJurisdictions);
2220− queryOctree(NodeType::ParticleServer, PacketTypeParticleQuery, _particleServerJurisdictions);
2221− queryOctree(NodeType::ModelServer, PacketTypeModelQuery, _modelServerJurisdictions);
2212+
2213+ if (Menu::getInstance()->isOptionChecked(MenuOption::Voxels)) {
2214+ queryOctree(NodeType::VoxelServer, PacketTypeVoxelQuery, _voxelServerJurisdictions);
2215+ }
2216+ if (Menu::getInstance()->isOptionChecked(MenuOption::Particles)) {
2217+ queryOctree(NodeType::ParticleServer, PacketTypeParticleQuery, _particleServerJurisdictions);
2218+ }
2219+ if (Menu::getInstance()->isOptionChecked(MenuOption::Models)) {
2220+ queryOctree(NodeType::EntityServer, PacketTypeEntityQuery, _entityServerJurisdictions);
2221+ }
22222222 _lastQueriedViewFrustum = _viewFrustum;
22232223 }
22242224 }
@@ -2274,7 +2274,7 @@ int Application::sendNackPackets() { · 49 unmodified lines
22742274 if (node->getActiveSocket() &&
22752275 ( node->getType() == NodeType::VoxelServer
22762276 || node->getType() == NodeType::ParticleServer
2277− || node->getType() == NodeType::ModelServer)
2277+ || node->getType() == NodeType::EntityServer)
22782278 ) {
22792279
22802280 QUuid nodeUUID = node->getUUID();
@@ -2341,13 +2341,7 @@ int Application::sendNackPackets() { · 60 unmodified lines
23412341
23422342 void Application::queryOctree(NodeType_t serverType, PacketType packetType, NodeToJurisdictionMap& jurisdictions) {
23432343
2344− // if voxels are disabled, then don't send this at all...
2345− if (!Menu::getInstance()->isOptionChecked(MenuOption::Voxels)) {
2346− return;
2347− }
2348−
23492344 //qDebug() << ">>> inside... queryOctree()... _viewFrustum.getFieldOfView()=" << _viewFrustum.getFieldOfView();
2350−
23512345 bool wantExtraDebugging = getLogger()->extraDebugging();
23522346
23532347 // These will be the same for all servers, so we can set them up once and then reuse for each server we send to.
@@ -2665,9 +2659,20 @@ void Application::updateShadowMap() { · 311 unmodified lines
26652659 glEnable(GL_POLYGON_OFFSET_FILL);
26662660 glPolygonOffset(1.1f, 4.0f); // magic numbers courtesy http://www.eecs.berkeley.edu/~ravir/6160/papers/shadowmaps.ppt
26672661
2668− _avatarManager.renderAvatars(Avatar::SHADOW_RENDER_MODE);
2669− _particles.render(OctreeRenderer::SHADOW_RENDER_MODE);
2670− _models.render(OctreeRenderer::SHADOW_RENDER_MODE);
2662+ {
2663+ PerformanceTimer perfTimer("avatarManager");
2664+ _avatarManager.renderAvatars(Avatar::SHADOW_RENDER_MODE);
2665+ }
2666+
2667+ {
2668+ PerformanceTimer perfTimer("particles");
2669+ _particles.render(OctreeRenderer::SHADOW_RENDER_MODE);
2670+ }
2671+
2672+ {
2673+ PerformanceTimer perfTimer("entities");
2674+ _entities.render(OctreeRenderer::SHADOW_RENDER_MODE);
2675+ }
26712676
26722677 glDisable(GL_POLYGON_OFFSET_FILL);
26732678
@@ -2864,10 +2869,10 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { · 190 unmodified lines
28642869
28652870 // render models...
28662871 if (Menu::getInstance()->isOptionChecked(MenuOption::Models)) {
2867− PerformanceTimer perfTimer("models");
2872+ PerformanceTimer perfTimer("entities");
28682873 PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings),
2869− "Application::displaySide() ... models...");
2870− _models.render();
2874+ "Application::displaySide() ... entities...");
2875+ _entities.render();
28712876 }
28722877
28732878 // render the ambient occlusion effect if enabled
@@ -3355,8 +3360,6 @@ void Application::updateLocationInServer() { · 481 unmodified lines
33553360
33563361 if (accountManager.isLoggedIn()) {
33573362
3358− static QJsonObject lastLocationObject;
3359−
33603363 // construct a QJsonObject given the user's current address information
33613364 QJsonObject updatedLocationObject;
33623365
@@ -3367,14 +3370,9 @@ void Application::updateLocationInServer() { · 4 unmodified lines
33673370
33683371 updatedLocationObject.insert("address", addressObject);
33693372
3370− if (updatedLocationObject != lastLocationObject) {
3371−
3372− accountManager.authenticatedRequest("/api/v1/users/address", QNetworkAccessManager::PutOperation,
3373− JSONCallbackParameters(), QJsonDocument(updatedLocationObject).toJson());
3374−
3375− lastLocationObject = updatedLocationObject;
3376− }
3377− }
3373+ accountManager.authenticatedRequest("/api/v1/users/address", QNetworkAccessManager::PutOperation,
3374+ JSONCallbackParameters(), QJsonDocument(updatedLocationObject).toJson());
3375+ }
33783376 }
33793377
33803378 void Application::domainChanged(const QString& domainHostname) {
@@ -3398,7 +3396,7 @@ void Application::domainChanged(const QString& domainHostname) { · 17 unmodified lines
33983396 _particles.clear();
33993397
34003398 // reset the model renderer
3401− _models.clear();
3399+ _entities.clear();
34023400
34033401 // reset the voxels renderer
34043402 _voxels.killLocalVoxels();
@@ -3437,7 +3435,7 @@ void Application::nodeKilled(SharedNodePointer node) { · 32 unmodified lines
34373435
34383436 _voxelEditSender.nodeKilled(node);
34393437 _particleEditSender.nodeKilled(node);
3440− _modelEditSender.nodeKilled(node);
3438+ _entityEditSender.nodeKilled(node);
34413439
34423440 if (node->getType() == NodeType::AudioMixer) {
34433441 QMetaObject::invokeMethod(&_audio, "audioMixerKilled");
@@ -3517,16 +3515,16 @@ void Application::nodeKilled(SharedNodePointer node) { · 73 unmodified lines
35173515 }
35183516 _octreeSceneStatsLock.unlock();
35193517
3520− } else if (node->getType() == NodeType::ModelServer) {
3518+ } else if (node->getType() == NodeType::EntityServer) {
35213519
35223520 QUuid nodeUUID = node->getUUID();
35233521 // see if this is the first we've heard of this node...
3524− _modelServerJurisdictions.lockForRead();
3525− if (_modelServerJurisdictions.find(nodeUUID) != _modelServerJurisdictions.end()) {
3526− unsigned char* rootCode = _modelServerJurisdictions[nodeUUID].getRootOctalCode();
3522+ _entityServerJurisdictions.lockForRead();
3523+ if (_entityServerJurisdictions.find(nodeUUID) != _entityServerJurisdictions.end()) {
3524+ unsigned char* rootCode = _entityServerJurisdictions[nodeUUID].getRootOctalCode();
35273525 VoxelPositionSize rootDetails;
35283526 voxelDetailsForCode(rootCode, rootDetails);
3529− _modelServerJurisdictions.unlock();
3527+ _entityServerJurisdictions.unlock();
35303528
35313529 qDebug("model server going away...... v[%f, %f, %f, %f]",
35323530 rootDetails.x, rootDetails.y, rootDetails.z, rootDetails.s);
@@ -3543,10 +3541,10 @@ void Application::nodeKilled(SharedNodePointer node) { · 10 unmodified lines
35433541 }
35443542
35453543 // If the model server is going away, remove it from our jurisdiction map so we don't send voxels to a dead server
3546− _modelServerJurisdictions.lockForWrite();
3547− _modelServerJurisdictions.erase(_modelServerJurisdictions.find(nodeUUID));
3544+ _entityServerJurisdictions.lockForWrite();
3545+ _entityServerJurisdictions.erase(_entityServerJurisdictions.find(nodeUUID));
35483546 }
3549− _modelServerJurisdictions.unlock();
3547+ _entityServerJurisdictions.unlock();
35503548
35513549 // also clean up scene stats for that server
35523550 _octreeSceneStatsLock.lockForWrite();
@@ -3612,8 +3610,8 @@ int Application::parseOctreeStats(const QByteArray& packet, const SharedNodePoin · 59 unmodified lines
36123610 jurisdiction = &_particleServerJurisdictions;
36133611 serverType = "Particle";
36143612 } else {
3615− jurisdiction = &_modelServerJurisdictions;
3616− serverType = "Model";
3613+ jurisdiction = &_entityServerJurisdictions;
3614+ serverType = "Entity";
36173615 }
36183616
36193617 jurisdiction->lockForRead();
@@ -3722,8 +3720,8 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript · 102 unmodified lines
37223720 scriptEngine->getParticlesScriptingInterface()->setPacketSender(&_particleEditSender);
37233721 scriptEngine->getParticlesScriptingInterface()->setParticleTree(_particles.getTree());
37243722
3725− scriptEngine->getModelsScriptingInterface()->setPacketSender(&_modelEditSender);
3726− scriptEngine->getModelsScriptingInterface()->setModelTree(_models.getTree());
3723+ scriptEngine->getEntityScriptingInterface()->setPacketSender(&_entityEditSender);
3724+ scriptEngine->getEntityScriptingInterface()->setEntityTree(_entities.getTree());
37273725
37283726 // model has some custom types
37293727 Model::registerMetaTypes(scriptEngine);
@@ -3858,14 +3856,17 @@ void Application::manageRunningScriptsWidgetVisibility(bool shown) { · 128 unmodified lines
38583856 }
38593857
38603858 void Application::toggleRunningScriptsWidget() {
3861− if (_runningScriptsWidgetWasVisible) {
3862− _runningScriptsWidget->hide();
3863− _runningScriptsWidgetWasVisible = false;
3859+ if (_runningScriptsWidget->isVisible()) {
3860+ if (_runningScriptsWidget->hasFocus()) {
3861+ _runningScriptsWidget->hide();
3862+ } else {
3863+ _runningScriptsWidget->raise();
3864+ setActiveWindow(_runningScriptsWidget);
3865+ _runningScriptsWidget->setFocus();
3866+ }
38643867 } else {
3865− _runningScriptsWidget->setBoundary(QRect(_window->geometry().topLeft(),
3866− _window->size()));
38673868 _runningScriptsWidget->show();
3868− _runningScriptsWidgetWasVisible = true;
3869+ _runningScriptsWidget->setFocus();
38693870 }
38703871 }
38713872

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t