From 3329d690ac8eecee731961fb0f275241314fb189 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 29 Oct 2013 10:53:33 -0700 Subject: [PATCH 1/9] flip mirror tools --- interface/src/ui/RearMirrorTools.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/src/ui/RearMirrorTools.cpp b/interface/src/ui/RearMirrorTools.cpp index 302c58d8a3..046d497a02 100644 --- a/interface/src/ui/RearMirrorTools.cpp +++ b/interface/src/ui/RearMirrorTools.cpp @@ -84,16 +84,16 @@ void RearMirrorTools::displayIcon(QRect bounds, int left, int top, GLuint textur glBindTexture(GL_TEXTURE_2D, textureId); glBegin(GL_QUADS); { - glTexCoord2f(0, 0); + glTexCoord2f(0, 1); glVertex2f(left, top); - glTexCoord2f(1, 0); + glTexCoord2f(1, 1); glVertex2f(ICON_SIZE + left, top); - glTexCoord2f(1, 1); + glTexCoord2f(1, 0); glVertex2f(ICON_SIZE + left, twp); - glTexCoord2f(0, 1); + glTexCoord2f(0, 0); glVertex2f(left, twp); } glEnd(); From 94728d0afba3594c385534271fee906974a4365e Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 29 Oct 2013 15:12:23 -0700 Subject: [PATCH 2/9] fix packetData memory leak in AvatarMixer --- assignment-client/src/avatars/AvatarMixer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 4e58f0b014..30e1cf2fcf 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -106,7 +106,7 @@ void AvatarMixer::run() { sockaddr nodeAddress = {}; ssize_t receivedBytes = 0; - unsigned char* packetData = new unsigned char[MAX_PACKET_SIZE]; + unsigned char packetData[MAX_PACKET_SIZE]; QUuid nodeUUID; Node* avatarNode = NULL; From 08a368a9fd0b9c1ed999609b169139e6f0eaa7a1 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 29 Oct 2013 15:21:55 -0700 Subject: [PATCH 3/9] add debug to catch AvatarMixer ghosting --- libraries/shared/src/NodeList.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index fcd55116ad..db03de68bf 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -772,14 +772,19 @@ void* removeSilentNodes(void *args) { checkTimeUsecs = usecTimestampNow(); for(NodeList::iterator node = nodeList->begin(); node != nodeList->end(); ++node) { + qDebug() << "Locking node" << node->getUUID() << "\n"; node->lock(); + qDebug() << "N:" << usecTimestampNow() << "LH:" << node->getLastHeardMicrostamp() << "\n"; + qDebug() << "Diff:" << usecTimestampNow() - node->getLastHeardMicrostamp() << "\n"; + if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > NODE_SILENCE_THRESHOLD_USECS) { // kill this node, don't lock - we already did it nodeList->killNode(&(*node), false); } node->unlock(); + qDebug() << "Unlocking node" << node->getUUID() << "\n"; } sleepTime = NODE_SILENCE_THRESHOLD_USECS - (usecTimestampNow() - checkTimeUsecs); From f6c265dcf3fb5297b10f4f21fec7475036da9d3f Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 29 Oct 2013 15:22:04 -0700 Subject: [PATCH 4/9] remove the ground plane --- interface/src/Application.cpp | 26 -------------------------- interface/src/Menu.cpp | 1 - interface/src/Menu.h | 1 - interface/src/Util.cpp | 33 --------------------------------- interface/src/Util.h | 2 -- 5 files changed, 63 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index c05ebaa56e..6f1b8ae8e8 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2736,32 +2736,6 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { // disable specular lighting for ground and voxels glMaterialfv(GL_FRONT, GL_SPECULAR, NO_SPECULAR_COLOR); - //draw a grid ground plane.... - if (Menu::getInstance()->isOptionChecked(MenuOption::GroundPlane)) { - PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings), - "Application::displaySide() ... ground plane..."); - - // draw grass plane with fog - glEnable(GL_FOG); - glEnable(GL_NORMALIZE); - const float FOG_COLOR[] = { 1.0f, 1.0f, 1.0f, 1.0f }; - glFogfv(GL_FOG_COLOR, FOG_COLOR); - glFogi(GL_FOG_MODE, GL_EXP2); - glFogf(GL_FOG_DENSITY, 0.025f); - glPushMatrix(); - const float GRASS_PLANE_SIZE = 256.0f; - glTranslatef(-GRASS_PLANE_SIZE * 0.5f, -0.01f, GRASS_PLANE_SIZE * 0.5f); - glScalef(GRASS_PLANE_SIZE, 1.0f, GRASS_PLANE_SIZE); - glRotatef(-90.0f, 1.0f, 0.0f, 0.0f); - glColor3ub(70, 134, 74); - const int GRASS_DIVISIONS = 40; - _geometryCache.renderSquare(GRASS_DIVISIONS, GRASS_DIVISIONS); - glPopMatrix(); - glDisable(GL_FOG); - glDisable(GL_NORMALIZE); - - //renderGroundPlaneGrid(EDGE_SIZE_GROUND_PLANE, _audio.getCollisionSoundMagnitude()); - } // Draw Cloud Particles if (Menu::getInstance()->isOptionChecked(MenuOption::ParticleCloud)) { _cloud.render(); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index a31ff61ae8..a431b4b457 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -249,7 +249,6 @@ Menu::Menu() : addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Stars, Qt::Key_Asterisk, true); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Atmosphere, Qt::SHIFT | Qt::Key_A, true); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::GroundPlane, 0, true); addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::GlowMode, 0, diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 0b5f6fcdce..9ba234fcb3 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -177,7 +177,6 @@ namespace MenuOption { const QString KillLocalVoxels = "Kill Local Voxels"; const QString GoHome = "Go Home"; const QString Gravity = "Use Gravity"; - const QString GroundPlane = "Ground Plane"; const QString ParticleCloud = "Particle Cloud"; const QString Log = "Log"; const QString Login = "Login"; diff --git a/interface/src/Util.cpp b/interface/src/Util.cpp index 2057198daf..447e1e6ccc 100644 --- a/interface/src/Util.cpp +++ b/interface/src/Util.cpp @@ -413,39 +413,6 @@ void renderCollisionOverlay(int width, int height, float magnitude) { } } -void renderGroundPlaneGrid(float size, float impact) { - float IMPACT_SOUND_MAGNITUDE_FOR_RECOLOR = 1.f; - glLineWidth(2.0); - glm::vec4 impactColor(1, 0, 0, 1); - glm::vec3 lineColor(0.4, 0.5, 0.3); - glm::vec4 surfaceColor(0.5, 0.5, 0.5, 0.4); - - glColor3fv(&lineColor.x); - for (float x = 0; x <= size; x++) { - glBegin(GL_LINES); - glVertex3f(x, 0, 0); - glVertex3f(x, 0, size); - glVertex3f(0, 0, x); - glVertex3f(size, 0, x); - glEnd(); - } - - // Draw the floor, colored for recent impact - glm::vec4 floorColor; - if (impact > IMPACT_SOUND_MAGNITUDE_FOR_RECOLOR) { - floorColor = impact * impactColor + (1.f - impact) * surfaceColor; - } else { - floorColor = surfaceColor; - } - glColor4fv(&floorColor.x); - glBegin(GL_QUADS); - glVertex3f(0, 0, 0); - glVertex3f(size, 0, 0); - glVertex3f(size, 0, size); - glVertex3f(0, 0, size); - glEnd(); -} - void renderMouseVoxelGrid(const float& mouseVoxelX, const float& mouseVoxelY, const float& mouseVoxelZ, const float& mouseVoxelS) { glm::vec3 origin = glm::vec3(mouseVoxelX, mouseVoxelY, mouseVoxelZ); diff --git a/interface/src/Util.h b/interface/src/Util.h index f304535d70..c208b67bef 100644 --- a/interface/src/Util.h +++ b/interface/src/Util.h @@ -61,8 +61,6 @@ glm::quat extractRotation(const glm::mat4& matrix, bool assumeOrthogonal = false double diffclock(timeval *clock1,timeval *clock2); -void renderGroundPlaneGrid(float size, float impact); - void renderMouseVoxelGrid(const float& mouseVoxelX, const float& mouseVoxelY, const float& mouseVoxelZ, const float& mouseVoxelS); void renderNudgeGrid(float voxelX, float voxelY, float voxelZ, float voxelS, float voxelPrecision); From 6e9ee93ed6edede4451ea29da19c83de1495a133 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 29 Oct 2013 15:28:10 -0700 Subject: [PATCH 5/9] add debug for sleep amount to AvatarMixer --- libraries/shared/src/NodeList.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index db03de68bf..d5984c5bbc 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -796,6 +796,7 @@ void* removeSilentNodes(void *args) { #else if (sleepTime > 0) { + qDebug() << "Sleeping for" << sleepTime << "\n"; usleep(sleepTime); } From 3b04eabe8aeb38f18bb0f68e5647b5787000ae47 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 29 Oct 2013 15:46:23 -0700 Subject: [PATCH 6/9] made sending environments off by default --- libraries/voxel-server-library/src/VoxelServer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/voxel-server-library/src/VoxelServer.cpp b/libraries/voxel-server-library/src/VoxelServer.cpp index d5667d6249..cf0eeb4de9 100644 --- a/libraries/voxel-server-library/src/VoxelServer.cpp +++ b/libraries/voxel-server-library/src/VoxelServer.cpp @@ -315,14 +315,14 @@ void VoxelServer::run() { qDebug("dumpVoxelsOnMove=%s\n", debug::valueOf(_dumpVoxelsOnMove)); // should we send environments? Default is yes, but this command line suppresses sending - const char* DONT_SEND_ENVIRONMENTS = "--dontSendEnvironments"; - bool dontSendEnvironments = getCmdOption(_argc, _argv, DONT_SEND_ENVIRONMENTS); + const char* SEND_ENVIRONMENTS = "--sendEnvironments"; + bool dontSendEnvironments = !getCmdOption(_argc, _argv, SEND_ENVIRONMENTS); if (dontSendEnvironments) { qDebug("Sending environments suppressed...\n"); _sendEnvironments = false; } else { // should we send environments? Default is yes, but this command line suppresses sending - const char* MINIMAL_ENVIRONMENT = "--MinimalEnvironment"; + const char* MINIMAL_ENVIRONMENT = "--minimalEnvironment"; _sendMinimalEnvironment = getCmdOption(_argc, _argv, MINIMAL_ENVIRONMENT); qDebug("Using Minimal Environment=%s\n", debug::valueOf(_sendMinimalEnvironment)); } From 66b27fa60776b2a8bbceef971073315a628a9ab1 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 29 Oct 2013 15:59:09 -0700 Subject: [PATCH 7/9] have silent node removal flag reset on join --- libraries/shared/src/NodeList.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index d5984c5bbc..3657830201 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -772,19 +772,14 @@ void* removeSilentNodes(void *args) { checkTimeUsecs = usecTimestampNow(); for(NodeList::iterator node = nodeList->begin(); node != nodeList->end(); ++node) { - qDebug() << "Locking node" << node->getUUID() << "\n"; node->lock(); - qDebug() << "N:" << usecTimestampNow() << "LH:" << node->getLastHeardMicrostamp() << "\n"; - qDebug() << "Diff:" << usecTimestampNow() - node->getLastHeardMicrostamp() << "\n"; - if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > NODE_SILENCE_THRESHOLD_USECS) { // kill this node, don't lock - we already did it nodeList->killNode(&(*node), false); } node->unlock(); - qDebug() << "Unlocking node" << node->getUUID() << "\n"; } sleepTime = NODE_SILENCE_THRESHOLD_USECS - (usecTimestampNow() - checkTimeUsecs); @@ -796,7 +791,6 @@ void* removeSilentNodes(void *args) { #else if (sleepTime > 0) { - qDebug() << "Sleeping for" << sleepTime << "\n"; usleep(sleepTime); } @@ -808,13 +802,23 @@ void* removeSilentNodes(void *args) { } void NodeList::startSilentNodeRemovalThread() { - pthread_create(&removeSilentNodesThread, NULL, removeSilentNodes, (void*) this); + if (!silentNodeThreadStopFlag) { + pthread_create(&removeSilentNodesThread, NULL, removeSilentNodes, (void*) this); + } else { + qDebug("Refusing to start silent node removal thread from previously failed join.\n"); + } + } void NodeList::stopSilentNodeRemovalThread() { silentNodeThreadStopFlag = true; - pthread_join(removeSilentNodesThread, NULL); + int joinResult = pthread_join(removeSilentNodesThread, NULL); + if (joinResult == 0) { + silentNodeThreadStopFlag = false; + } else { + qDebug("Silent node removal thread join failed with %d. Will not restart.\n", joinResult); + } } const QString QSETTINGS_GROUP_NAME = "NodeList"; From 03b23b504f32cf233d94baad243da62dd385a8af Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 29 Oct 2013 16:05:23 -0700 Subject: [PATCH 8/9] reference global with colon --- libraries/shared/src/NodeList.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 3657830201..3bf6813465 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -767,7 +767,7 @@ void* removeSilentNodes(void *args) { uint64_t checkTimeUsecs = 0; int sleepTime = 0; - while (!silentNodeThreadStopFlag) { + while (!::silentNodeThreadStopFlag) { checkTimeUsecs = usecTimestampNow(); @@ -802,7 +802,7 @@ void* removeSilentNodes(void *args) { } void NodeList::startSilentNodeRemovalThread() { - if (!silentNodeThreadStopFlag) { + if (!::silentNodeThreadStopFlag) { pthread_create(&removeSilentNodesThread, NULL, removeSilentNodes, (void*) this); } else { qDebug("Refusing to start silent node removal thread from previously failed join.\n"); @@ -811,11 +811,11 @@ void NodeList::startSilentNodeRemovalThread() { } void NodeList::stopSilentNodeRemovalThread() { - silentNodeThreadStopFlag = true; + ::silentNodeThreadStopFlag = true; int joinResult = pthread_join(removeSilentNodesThread, NULL); if (joinResult == 0) { - silentNodeThreadStopFlag = false; + ::silentNodeThreadStopFlag = false; } else { qDebug("Silent node removal thread join failed with %d. Will not restart.\n", joinResult); } From c123e045ad22a5823d808ceb3dd252e47a492c16 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 29 Oct 2013 16:42:41 -0700 Subject: [PATCH 9/9] added --getOctalCode to voxel edit --- voxel-edit/src/main.cpp | 45 ++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/voxel-edit/src/main.cpp b/voxel-edit/src/main.cpp index 244db390df..5787caabac 100644 --- a/voxel-edit/src/main.cpp +++ b/voxel-edit/src/main.cpp @@ -10,6 +10,8 @@ #include #include #include +#include +#include VoxelTree myTree; @@ -233,9 +235,44 @@ void processFillSVOFile(const char* fillSVOFile) { } -int old_main(int argc, const char * argv[]) +int main(int argc, const char * argv[]) { qInstallMessageHandler(sharedMessageHandler); + + + const char* GET_OCTCODE = "--getOctCode"; + const char* octcodeParams = getCmdOption(argc, argv, GET_OCTCODE); + if (octcodeParams) { + + QString octcodeParamsString(octcodeParams); + QStringList octcodeParamsList = octcodeParamsString.split(QString(",")); + + enum { X_AT, Y_AT, Z_AT, S_AT, EXPECTED_PARAMS }; + if (octcodeParamsList.size() == EXPECTED_PARAMS) { + QString xStr = octcodeParamsList.at(X_AT); + QString yStr = octcodeParamsList.at(Y_AT); + QString zStr = octcodeParamsList.at(Z_AT); + QString sStr = octcodeParamsList.at(S_AT); + + float x = xStr.toFloat()/TREE_SCALE; // 0.14745788574219; + float y = yStr.toFloat()/TREE_SCALE; // 0.01502178955078; + float z = zStr.toFloat()/TREE_SCALE; // 0.56540045166016; + float s = sStr.toFloat()/TREE_SCALE; // 0.015625; + + qDebug() << "Get Octal Code for:\n"; + qDebug() << " x:" << xStr << " [" << x << "] \n"; + qDebug() << " y:" << yStr << " [" << y << "] \n"; + qDebug() << " z:" << zStr << " [" << z << "] \n"; + qDebug() << " s:" << sStr << " [" << s << "] \n"; + + unsigned char* octalCode = pointToVoxel(x, y, z, s); + QString octalCodeStr = octalCodeToHexString(octalCode); + qDebug() << "octal code: " << octalCodeStr << "\n"; + + } else { + qDebug() << "Unexpected number of parameters for getOctCode\n"; + } + } // Handles taking and SVO and splitting it into multiple SVOs based on // jurisdiction details @@ -361,9 +398,3 @@ void unitTest(VoxelTree * tree) { } } - - -int main(int argc, const char * argv[]) { - unitTest(&myTree); - return 0; -} \ No newline at end of file