diff --git a/interface/src/Avatar.cpp b/interface/src/Avatar.cpp index a54ee12ba7..1bda97b94f 100644 --- a/interface/src/Avatar.cpp +++ b/interface/src/Avatar.cpp @@ -22,7 +22,7 @@ using namespace std; const bool BALLS_ON = false; const bool USING_AVATAR_GRAVITY = true; -const float GRAVITY_SCALE = 6.0f; +const float GRAVITY_SCALE = 10.0f; const float BOUNCE = 0.3f; const float DECAY = 0.1; const float THRUST_MAG = 1200.0; @@ -36,13 +36,18 @@ const float MY_HAND_HOLDING_PULL = 0.2; const float YOUR_HAND_HOLDING_PULL = 1.0; const float BODY_SPRING_DEFAULT_TIGHTNESS = 1500.0f; const float BODY_SPRING_FORCE = 300.0f; - const float BODY_SPRING_DECAY = 16.0f; const float COLLISION_RADIUS_SCALAR = 1.8; const float COLLISION_BALL_FORCE = 1.0; const float COLLISION_BODY_FORCE = 6.0; const float COLLISION_BALL_FRICTION = 60.0; const float COLLISION_BODY_FRICTION = 0.5; +const float HEAD_ROTATION_SCALE = 0.70; +const float HEAD_ROLL_SCALE = 0.40; +const float HEAD_MAX_PITCH = 45; +const float HEAD_MIN_PITCH = -45; +const float HEAD_MAX_YAW = 85; +const float HEAD_MIN_YAW = -85; float skinColor [] = {1.0, 0.84, 0.66}; float lightBlue [] = {0.7, 0.8, 1.0}; @@ -136,7 +141,6 @@ Avatar::Avatar(bool isMine) { _head.noise = 0; _head.returnSpringScale = 1.0; _movedHandOffset = glm::vec3(0.0f, 0.0f, 0.0f); - _usingBodySprings = true; _renderYaw = 0.0; _renderPitch = 0.0; _sphere = NULL; @@ -186,7 +190,6 @@ Avatar::Avatar(const Avatar &otherAvatar) { _TEST_bigSphereRadius = otherAvatar._TEST_bigSphereRadius; _TEST_bigSpherePosition = otherAvatar._TEST_bigSpherePosition; _movedHandOffset = otherAvatar._movedHandOffset; - _usingBodySprings = otherAvatar._usingBodySprings; _orientation.set(otherAvatar._orientation); @@ -260,38 +263,38 @@ void Avatar::reset() { _head.leanForward = _head.leanSideways = 0; } -// this pertains to moving the head with the glasses -// Using serial data, update avatar/render position and angles + +// Update avatar head rotation with sensor data void Avatar::UpdateGyros(float frametime, SerialInterface* serialInterface, glm::vec3* gravity) { - float measured_pitch_rate = 0.0f; - float measured_roll_rate = 0.0f; + float measuredPitchRate = 0.0f; + float measuredRollRate = 0.0f; + float measuredYawRate = 0.0f; + if (serialInterface->active && USING_INVENSENSE_MPU9150) { - measured_pitch_rate = serialInterface->getLastPitch(); - _head.yawRate = serialInterface->getLastYaw(); - measured_roll_rate = -1 * serialInterface->getLastRoll(); + measuredPitchRate = serialInterface->getLastPitchRate(); + measuredYawRate = serialInterface->getLastYawRate(); + measuredRollRate = serialInterface->getLastRollRate(); } else { - measured_pitch_rate = serialInterface->getRelativeValue(HEAD_PITCH_RATE); - _head.yawRate = serialInterface->getRelativeValue(HEAD_YAW_RATE); - measured_roll_rate = serialInterface->getRelativeValue(HEAD_ROLL_RATE); + measuredPitchRate = serialInterface->getRelativeValue(HEAD_PITCH_RATE); + measuredYawRate = serialInterface->getRelativeValue(HEAD_YAW_RATE); + measuredRollRate = serialInterface->getRelativeValue(HEAD_ROLL_RATE); } // Update avatar head position based on measured gyro rates - const float HEAD_ROTATION_SCALE = 0.70; - const float HEAD_ROLL_SCALE = 0.40; const float MAX_PITCH = 45; const float MIN_PITCH = -45; const float MAX_YAW = 85; const float MIN_YAW = -85; + const float MAX_ROLL = 50; + const float MIN_ROLL = -50; - if ((_headPitch < MAX_PITCH) && (_headPitch > MIN_PITCH)) { - addHeadPitch(measured_pitch_rate * -HEAD_ROTATION_SCALE * frametime); - } - - addHeadRoll(measured_roll_rate * HEAD_ROLL_SCALE * frametime); + addHeadPitch(measuredPitchRate * frametime); + addHeadYaw(measuredYawRate * frametime); + addHeadRoll(measuredRollRate * frametime); - if ((_headYaw < MAX_YAW) && (_headYaw > MIN_YAW)) { - addHeadYaw(_head.yawRate * HEAD_ROTATION_SCALE * frametime); - } + setHeadPitch(glm::clamp(getHeadPitch(), MIN_PITCH, MAX_PITCH)); + setHeadYaw(glm::clamp(getHeadYaw(), MIN_YAW, MAX_YAW)); + setHeadRoll(glm::clamp(getHeadRoll(), MIN_ROLL, MAX_ROLL)); } float Avatar::getAbsoluteHeadYaw() const { @@ -299,7 +302,7 @@ float Avatar::getAbsoluteHeadYaw() const { } void Avatar::addLean(float x, float z) { - // Add Body lean as impulse + //Add lean as impulse _head.leanSideways += x; _head.leanForward += z; } @@ -518,6 +521,16 @@ void Avatar::updateHead(float deltaTime) { _headRoll *= (1.0f - DECAY * _head.returnSpringScale * 2 * deltaTime); } + // For invensense gyro, decay only slightly when roughly centered + if (USING_INVENSENSE_MPU9150) { + const float RETURN_RANGE = 5.0; + const float RETURN_STRENGTH = 1.0; + if (fabs(_headPitch) < RETURN_RANGE) { _headPitch *= (1.0f - RETURN_STRENGTH * deltaTime); } + if (fabs(_headYaw) < RETURN_RANGE) { _headYaw *= (1.0f - RETURN_STRENGTH * deltaTime); } + if (fabs(_headRoll) < RETURN_RANGE) { _headRoll *= (1.0f - RETURN_STRENGTH * deltaTime); } + + } + if (_head.noise) { // Move toward new target _headPitch += (_head.pitchTarget - _headPitch) * 10 * deltaTime; // (1.f - DECAY*deltaTime)*Pitch + ; @@ -641,12 +654,14 @@ void Avatar::updateCollisionWithSphere(glm::vec3 position, float radius, float d } } + /* if (jointCollision) { if (!_usingBodySprings) { _usingBodySprings = true; initializeBodySprings(); } } + */ } } @@ -747,18 +762,15 @@ void Avatar::setDisplayingHead(bool displayingHead) { _displayingHead = displayingHead; } - static TextRenderer* textRenderer() { static TextRenderer* renderer = new TextRenderer(SANS_FONT_FAMILY, 24); return renderer; } - void Avatar::setGravity(glm::vec3 gravity) { _gravity = gravity; } - void Avatar::render(bool lookingInMirror, glm::vec3 cameraPosition) { // render a simple round on the ground projected down from the avatar's position @@ -858,16 +870,9 @@ void Avatar::renderHead(bool lookingInMirror) { glPushMatrix(); - if (_usingBodySprings) { glTranslatef(_joint[ AVATAR_JOINT_HEAD_BASE ].springyPosition.x, _joint[ AVATAR_JOINT_HEAD_BASE ].springyPosition.y, _joint[ AVATAR_JOINT_HEAD_BASE ].springyPosition.z); - } - else { - glTranslatef(_joint[ AVATAR_JOINT_HEAD_BASE ].position.x, - _joint[ AVATAR_JOINT_HEAD_BASE ].position.y, - _joint[ AVATAR_JOINT_HEAD_BASE ].position.z); - } glScalef ( @@ -1032,7 +1037,7 @@ void Avatar::initializeSkeleton() { for (int b=0; b 0.0f) { + if (length > 0.0f) { // to avoid divide by zero glm::vec3 springDirection = springVector / length; float force = (length - _joint[b].length) * BODY_SPRING_FORCE * deltaTime; @@ -1342,56 +1340,30 @@ void Avatar::renderBody() { if (b != AVATAR_JOINT_HEAD_BASE) { // the head is rendered as a special case in "renderHead" - //render bone orientation + //show direction vectors of the bone orientation //renderOrientationDirections(_joint[b].springyPosition, _joint[b].orientation, _joint[b].radius * 2.0); - if (_usingBodySprings) { - glColor3fv(skinColor); - glPushMatrix(); - glTranslatef(_joint[b].springyPosition.x, _joint[b].springyPosition.y, _joint[b].springyPosition.z); - glutSolidSphere(_joint[b].radius, 20.0f, 20.0f); - glPopMatrix(); - } - else { - glColor3fv(skinColor); - glPushMatrix(); - glTranslatef(_joint[b].position.x, _joint[b].position.y, _joint[b].position.z); - glutSolidSphere(_joint[b].radius, 20.0f, 20.0f); - glPopMatrix(); - } + glColor3fv(skinColor); + glPushMatrix(); + glTranslatef(_joint[b].springyPosition.x, _joint[b].springyPosition.y, _joint[b].springyPosition.z); + glutSolidSphere(_joint[b].radius, 20.0f, 20.0f); + glPopMatrix(); } } // Render lines connecting the joint positions - if (_usingBodySprings) { - glColor3f(0.4f, 0.5f, 0.6f); - glLineWidth(3.0); - - for (int b = 1; b < NUM_AVATAR_JOINTS; b++) { - if (_joint[b].parent != AVATAR_JOINT_NULL) - if (b != AVATAR_JOINT_HEAD_TOP) { - glBegin(GL_LINE_STRIP); - glVertex3fv(&_joint[ _joint[ b ].parent ].springyPosition.x); - glVertex3fv(&_joint[ b ].springyPosition.x); - glEnd(); - } + glColor3f(0.4f, 0.5f, 0.6f); + glLineWidth(3.0); + + for (int b = 1; b < NUM_AVATAR_JOINTS; b++) { + if (_joint[b].parent != AVATAR_JOINT_NULL) + if (b != AVATAR_JOINT_HEAD_TOP) { + glBegin(GL_LINE_STRIP); + glVertex3fv(&_joint[ _joint[ b ].parent ].springyPosition.x); + glVertex3fv(&_joint[ b ].springyPosition.x); + glEnd(); } } - /* - else { - glColor3fv(skinColor); - glLineWidth(3.0); - - for (int b = 1; b < NUM_AVATAR_JOINTS; b++) { - if (_joint[b].parent != AVATAR_JOINT_NULL) { - glBegin(GL_LINE_STRIP); - glVertex3fv(&_joint[ _joint[ b ].parent ].position.x); - glVertex3fv(&_joint[ b ].position.x); - glEnd(); - } - } - } - */ } void Avatar::SetNewHeadTarget(float pitch, float yaw) { diff --git a/interface/src/Avatar.h b/interface/src/Avatar.h index 8f5c603b96..744de2abef 100644 --- a/interface/src/Avatar.h +++ b/interface/src/Avatar.h @@ -143,10 +143,6 @@ public: private: - // Do you want head to try to return to center (depends on interface detected) - void setHeadReturnToCenter(bool r) { _returnHeadToCenter = r; }; - const bool getHeadReturnToCenter() const { return _returnHeadToCenter; }; - struct AvatarJoint { AvatarJointID parent; // which joint is this joint connected to? @@ -214,7 +210,6 @@ private: float _bodyPitchDelta; float _bodyYawDelta; float _bodyRollDelta; - bool _usingBodySprings; glm::vec3 _movedHandOffset; glm::quat _rotation; // the rotation of the avatar body as a whole expressed as a quaternion AvatarJoint _joint[ NUM_AVATAR_JOINTS ]; @@ -241,7 +236,7 @@ private: AvatarTouch _avatarTouch; bool _displayingHead; // should be false if in first-person view bool _returnHeadToCenter; - float _distanceToNearestAvatar; // How close is the nearest avatar? + float _distanceToNearestAvatar; // How close is the nearest avatar? glm::vec3 _gravity; // private methods... @@ -258,6 +253,10 @@ private: void applyCollisionWithOtherAvatar( Avatar * other, float deltaTime ); void setHeadFromGyros(glm::vec3 * eulerAngles, glm::vec3 * angularVelocity, float deltaTime, float smoothingTime); void setHeadSpringScale(float s) { _head.returnSpringScale = s; } + + // Do you want head to try to return to center (depends on interface detected) + void setHeadReturnToCenter(bool r) { _returnHeadToCenter = r; }; + const bool getHeadReturnToCenter() const { return _returnHeadToCenter; }; }; #endif diff --git a/interface/src/SerialInterface.cpp b/interface/src/SerialInterface.cpp index 8929dbb2f5..692069e4be 100644 --- a/interface/src/SerialInterface.cpp +++ b/interface/src/SerialInterface.cpp @@ -173,12 +173,12 @@ void SerialInterface::renderLevels(int width, int height) { const int LEVEL_CORNER_X = 10; const int LEVEL_CORNER_Y = 200; - // Draw the text values - sprintf(val, "Yaw %d", _lastYaw); + // Draw the numeric degree/sec values from the gyros + sprintf(val, "Yaw %4.1f", _lastYawRate); drawtext(LEVEL_CORNER_X, LEVEL_CORNER_Y, 0.10, 0, 1.0, 1, val, 0, 1, 0); - sprintf(val, "Pitch %d", _lastPitch); + sprintf(val, "Pitch %4.1f", _lastPitchRate); drawtext(LEVEL_CORNER_X, LEVEL_CORNER_Y + 15, 0.10, 0, 1.0, 1, val, 0, 1, 0); - sprintf(val, "Roll %d", _lastRoll); + sprintf(val, "Roll %4.1f", _lastRollRate); drawtext(LEVEL_CORNER_X, LEVEL_CORNER_Y + 30, 0.10, 0, 1.0, 1, val, 0, 1, 0); // Draw the levels as horizontal lines @@ -187,11 +187,11 @@ void SerialInterface::renderLevels(int width, int height) { glColor4f(1, 1, 1, 1); glBegin(GL_LINES); glVertex2f(LEVEL_CORNER_X + LEVEL_CENTER, LEVEL_CORNER_Y - 3); - glVertex2f(LEVEL_CORNER_X + LEVEL_CENTER + _lastYaw, LEVEL_CORNER_Y - 3); + glVertex2f(LEVEL_CORNER_X + LEVEL_CENTER + _lastYawRate, LEVEL_CORNER_Y - 3); glVertex2f(LEVEL_CORNER_X + LEVEL_CENTER, LEVEL_CORNER_Y + 12); - glVertex2f(LEVEL_CORNER_X + LEVEL_CENTER + _lastPitch, LEVEL_CORNER_Y + 12); + glVertex2f(LEVEL_CORNER_X + LEVEL_CENTER + _lastPitchRate, LEVEL_CORNER_Y + 12); glVertex2f(LEVEL_CORNER_X + LEVEL_CENTER, LEVEL_CORNER_Y + 27); - glVertex2f(LEVEL_CORNER_X + LEVEL_CENTER + _lastRoll, LEVEL_CORNER_Y + 27); + glVertex2f(LEVEL_CORNER_X + LEVEL_CENTER + _lastRollRate, LEVEL_CORNER_Y + 27); glEnd(); // Draw green vertical centerline glColor4f(0, 1, 0, 0.5); @@ -238,9 +238,20 @@ void SerialInterface::readData() { write(_serialDescriptor, "RD684306\n", 9); read(_serialDescriptor, gyroBuffer, 20); - convertHexToInt(gyroBuffer + 6, _lastYaw); - convertHexToInt(gyroBuffer + 10, _lastRoll); - convertHexToInt(gyroBuffer + 14, _lastPitch); + int rollRate, yawRate, pitchRate; + + convertHexToInt(gyroBuffer + 6, rollRate); + convertHexToInt(gyroBuffer + 10, yawRate); + convertHexToInt(gyroBuffer + 14, pitchRate); + + // Convert the integer rates to floats + const float LSB_TO_DEGREES_PER_SECOND = 1.f / 16.4f; // From MPU-9150 register map, 2000 deg/sec. + const float PITCH_BIAS = 2.0; // Strangely, there is a small DC bias in the + // invensense pitch reading. Gravity? + + _lastRollRate = (float) rollRate * LSB_TO_DEGREES_PER_SECOND; + _lastYawRate = (float) yawRate * LSB_TO_DEGREES_PER_SECOND; + _lastPitchRate = (float) -pitchRate * LSB_TO_DEGREES_PER_SECOND + PITCH_BIAS; totalSamples++; } else { diff --git a/interface/src/SerialInterface.h b/interface/src/SerialInterface.h index e84fa2ddde..3817ad5cd2 100644 --- a/interface/src/SerialInterface.h +++ b/interface/src/SerialInterface.h @@ -42,9 +42,9 @@ public: void pair(); void readData(); - int getLastYaw() const { return _lastYaw; } - int getLastPitch() const { return _lastPitch; } - int getLastRoll() const { return _lastRoll; } + float getLastYawRate() const { return _lastYawRate; } + float getLastPitchRate() const { return _lastPitchRate; } + float getLastRollRate() const { return _lastRollRate; } int getLED() {return LED;}; int getNumSamples() {return samplesAveraged;}; @@ -69,9 +69,9 @@ private: int totalSamples; timeval lastGoodRead; glm::vec3 gravity; - int _lastYaw; - int _lastPitch; - int _lastRoll; + float _lastYawRate; // Rates are in degrees per second. + float _lastPitchRate; + float _lastRollRate; int _failedOpenAttempts; }; diff --git a/interface/src/VoxelSystem.cpp b/interface/src/VoxelSystem.cpp index 3920522503..3d5880c305 100644 --- a/interface/src/VoxelSystem.cpp +++ b/interface/src/VoxelSystem.cpp @@ -503,6 +503,7 @@ bool VoxelSystem::trueColorizeOperation(VoxelNode* node, void* extraData) { } void VoxelSystem::trueColorize() { + PerformanceWarning warn(true, "trueColorize()",true); _nodeCount = 0; _tree->recurseTreeWithOperation(trueColorizeOperation); printLog("setting true color for %d nodes\n", _nodeCount); diff --git a/libraries/avatars/src/Orientation.cpp b/libraries/shared/src/Orientation.cpp similarity index 97% rename from libraries/avatars/src/Orientation.cpp rename to libraries/shared/src/Orientation.cpp index ac47dd3f6e..447739c32c 100755 --- a/libraries/avatars/src/Orientation.cpp +++ b/libraries/shared/src/Orientation.cpp @@ -6,10 +6,10 @@ //----------------------------------------------------------- #include "Orientation.h" -#include -#include "avatars_Log.h" +#include "SharedUtil.h" +//#include "avatars_Log.h" -using avatars_lib::printLog; +//using avatars_lib::printLog; static const bool USING_QUATERNIONS = true; diff --git a/libraries/avatars/src/Orientation.h b/libraries/shared/src/Orientation.h similarity index 100% rename from libraries/avatars/src/Orientation.h rename to libraries/shared/src/Orientation.h diff --git a/libraries/shared/src/PerfStat.cpp b/libraries/shared/src/PerfStat.cpp index 5b4d1cc591..87998599aa 100644 --- a/libraries/shared/src/PerfStat.cpp +++ b/libraries/shared/src/PerfStat.cpp @@ -108,15 +108,16 @@ int PerfStat::DumpStats(char** array) { PerformanceWarning::~PerformanceWarning() { double end = usecTimestampNow(); double elapsedmsec = (end - _start) / 1000.0; - if (_renderWarningsOn && elapsedmsec > 1) { + if ((_alwaysDisplay || _renderWarningsOn) && elapsedmsec > 1) { if (elapsedmsec > 1000) { double elapsedsec = (end - _start) / 1000000.0; printLog("WARNING! %s took %lf seconds\n", _message, elapsedsec); } else { printLog("WARNING! %s took %lf milliseconds\n", _message, elapsedmsec); } + } else if (_alwaysDisplay) { + printLog("WARNING! %s took %lf milliseconds\n", _message, elapsedmsec); } - }; diff --git a/libraries/shared/src/PerfStat.h b/libraries/shared/src/PerfStat.h index 09d351a11b..8898899960 100644 --- a/libraries/shared/src/PerfStat.h +++ b/libraries/shared/src/PerfStat.h @@ -87,11 +87,13 @@ private: double _start; const char* _message; bool _renderWarningsOn; + bool _alwaysDisplay; public: - PerformanceWarning(bool renderWarnings, const char* message) : + PerformanceWarning(bool renderWarnings, const char* message, bool alwaysDisplay = false) : _start(usecTimestampNow()), _message(message), - _renderWarningsOn(renderWarnings) { }; + _renderWarningsOn(renderWarnings), + _alwaysDisplay(alwaysDisplay) { }; ~PerformanceWarning(); }; diff --git a/libraries/voxels/src/VoxelTree.cpp b/libraries/voxels/src/VoxelTree.cpp index 0c605aee62..daf2e01a72 100644 --- a/libraries/voxels/src/VoxelTree.cpp +++ b/libraries/voxels/src/VoxelTree.cpp @@ -933,7 +933,7 @@ int VoxelTree::encodeTreeBitstreamRecursion(int maxEncodeLevel, int& currentEnco bool VoxelTree::readFromFileV2(const char* fileName) { std::ifstream file(fileName, std::ios::in|std::ios::binary|std::ios::ate); if(file.is_open()) { - printLog("loading file...\n"); + printLog("loading file %s...\n", fileName); // get file length.... unsigned long fileLength = file.tellg(); @@ -956,6 +956,8 @@ void VoxelTree::writeToFileV2(const char* fileName) const { std::ofstream file(fileName, std::ios::out|std::ios::binary); if(file.is_open()) { + printLog("saving to file %s...\n", fileName); + VoxelNodeBag nodeBag; nodeBag.insert(rootNode); diff --git a/voxel-server/src/main.cpp b/voxel-server/src/main.cpp index f7d4567711..54daccf5c0 100644 --- a/voxel-server/src/main.cpp +++ b/voxel-server/src/main.cpp @@ -28,7 +28,8 @@ #include #endif -const char* VOXELS_PERSIST_FILE = "resources/voxels.hio2"; +const char* LOCAL_VOXELS_PERSIST_FILE = "resources/voxels.hio2"; +const char* VOXELS_PERSIST_FILE = "/etc/highfidelity/voxel-server/resources/voxels.hio2"; const int VOXEL_LISTEN_PORT = 40106; @@ -47,6 +48,8 @@ const int MAX_VOXEL_TREE_DEPTH_LEVELS = 4; VoxelTree randomTree; bool wantVoxelPersist = true; +bool wantLocalDomain = false; + bool wantColorRandomizer = false; bool debugVoxelSending = false; @@ -207,7 +210,7 @@ void persistVoxelsWhenDirty() { // check the dirty bit and persist here... if (::wantVoxelPersist && ::randomTree.isDirty()) { printf("saving voxels to file...\n"); - randomTree.writeToFileV2(VOXELS_PERSIST_FILE); + randomTree.writeToFileV2(::wantLocalDomain ? LOCAL_VOXELS_PERSIST_FILE : VOXELS_PERSIST_FILE); randomTree.clearDirtyBit(); // tree is clean after saving printf("DONE saving voxels to file...\n"); } @@ -270,8 +273,8 @@ int main(int argc, const char * argv[]) // Handle Local Domain testing with the --local command line const char* local = "--local"; - bool wantLocalDomain = cmdOptionExists(argc, argv,local); - if (wantLocalDomain) { + ::wantLocalDomain = cmdOptionExists(argc, argv,local); + if (::wantLocalDomain) { printf("Local Domain MODE!\n"); int ip = getLocalAddress(); sprintf(DOMAIN_IP,"%d.%d.%d.%d", (ip & 0xFF), ((ip >> 8) & 0xFF),((ip >> 16) & 0xFF), ((ip >> 24) & 0xFF)); @@ -302,9 +305,9 @@ int main(int argc, const char * argv[]) bool persistantFileRead = false; if (::wantVoxelPersist) { printf("loading voxels from file...\n"); - persistantFileRead = ::randomTree.readFromFileV2(VOXELS_PERSIST_FILE); + persistantFileRead = ::randomTree.readFromFileV2(::wantLocalDomain ? LOCAL_VOXELS_PERSIST_FILE : VOXELS_PERSIST_FILE); ::randomTree.clearDirtyBit(); // the tree is clean since we just loaded it - printf("DONE loading voxels from file...\n"); + printf("DONE loading voxels from file... fileRead=%s\n", persistantFileRead ? "yes" : "no" ); unsigned long nodeCount = ::randomTree.getVoxelCount(); printf("Nodes after loading scene %ld nodes\n", nodeCount); } @@ -347,7 +350,9 @@ int main(int argc, const char * argv[]) // 1) we attempted to load a persistant file and it wasn't there // 2) you asked us to add a scene // HOWEVER -- we will NEVER add a scene if you explicitly tell us not to! - bool actuallyAddScene = !noAddScene && (addScene || (::wantVoxelPersist && !persistantFileRead)); + // + // TEMPORARILY DISABLED!!! + bool actuallyAddScene = false; // !noAddScene && (addScene || (::wantVoxelPersist && !persistantFileRead)); if (actuallyAddScene) { addSphereScene(&randomTree); }