History

Switching nudge to cut/paste implementation. Preliminary.

LionTurtle committed 13 years ago

Commit d9657891 parent 59943dc5 files · +58 −39Browse files

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

Unified · Split

interface/src/Application.cpp+44−14
@@ -1287,22 +1287,52 @@ void Application::pasteVoxels() { · 1286 unmodified lines
12871287
12881288 void Application::nudgeVoxels() {
12891289 if (Menu::getInstance()->isOptionChecked(MenuOption::VoxelNudgeMode)) {
1290+ cutVoxels();
1291+ unsigned char* calculatedOctCode = NULL;
12901292 VoxelNode* selectedNode = _voxels.getVoxelAt(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s);
12911293
1294+ // Recurse the clipboard tree, where everything is root relative, and send all the colored voxels to
1295+ // the server as an set voxel message, this will also rebase the voxels to the new location
1296+ SendVoxelsOperationArgs args;
1297+
1298+ // we only need the selected voxel to get the newBaseOctCode, which we can actually calculate from the
1299+ // voxel size/position details. If we don't have an actual selectedNode then use the mouseVoxel to create a
1300+ // target octalCode for where the user is pointing.
12921301 if (selectedNode) {
1293− // glPushMatrix();
1294− // glScalef(TREE_SCALE, TREE_SCALE, TREE_SCALE);
1295− // renderNudgeGrid(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s);
1296− // glPopMatrix();
1297− qDebug("UnNudged xyz: %f, %f, %f\n", _mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z);
1302+ args.newBaseOctCode = selectedNode->getOctalCode();
1303+ } else {
1304+ args.newBaseOctCode = calculatedOctCode = pointToVoxel(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s);
1305+ }
1306+
1307+ _sharedVoxelSystem.getTree()->recurseTreeWithOperation(sendVoxelsOperation, &args);
1308+ glm::vec3 nudgeVec(0.25 * _mouseVoxel.s, 0.25 * _mouseVoxel.s, 0.25 * _mouseVoxel.s);
1309+ _voxels.getVoxelTree()->nudgeSubTree(selectedNode, nudgeVec, _voxelEditSender);
12981310
1299− // nudge the node
1300− // glm::vec3 nudgeVec(_mouseVoxel.s, _mouseVoxel.s, _mouseVoxel.s);
1301− // glm::vec3 nudgeVec(0.5 * _mouseVoxel.s, 0.5 * _mouseVoxel.s, 0.5 * _mouseVoxel.s);
1302− glm::vec3 nudgeVec(0.25 * _mouseVoxel.s, 0.25 * _mouseVoxel.s, 0.25 * _mouseVoxel.s);
1303− _voxels.getVoxelTree()->nudgeSubTree(selectedNode, nudgeVec, _voxelEditSender);
1311+ if (_sharedVoxelSystem.getTree() != &_clipboard) {
1312+ _sharedVoxelSystem.killLocalVoxels();
1313+ _sharedVoxelSystem.changeTree(&_clipboard);
1314+ }
1315+
1316+ _voxelEditSender.flushQueue();
1317+
1318+ if (calculatedOctCode) {
1319+ delete[] calculatedOctCode;
13041320 }
13051321 }
1322+
1323+
1324+
1325+ // VoxelNode* selectedNode = _voxels.getVoxelAt(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s);
1326+
1327+ // if (selectedNode) {
1328+ // qDebug("UnNudged xyz: %f, %f, %f\n", _mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z);
1329+
1330+ // // nudge the node
1331+ // // glm::vec3 nudgeVec(_mouseVoxel.s, _mouseVoxel.s, _mouseVoxel.s);
1332+ // // glm::vec3 nudgeVec(0.5 * _mouseVoxel.s, 0.5 * _mouseVoxel.s, 0.5 * _mouseVoxel.s);
1333+ // glm::vec3 nudgeVec(0.25 * _mouseVoxel.s, 0.25 * _mouseVoxel.s, 0.25 * _mouseVoxel.s);
1334+ // _voxels.getVoxelTree()->nudgeSubTree(selectedNode, nudgeVec, _voxelEditSender);
1335+ // }
13061336 }
13071337
13081338 void Application::setListenModeNormal() {
@@ -2278,10 +2308,10 @@ void Application::displaySide(Camera& whichCamera) { · 969 unmodified lines
22782308 glPushMatrix();
22792309 glScalef(TREE_SCALE, TREE_SCALE, TREE_SCALE);
22802310 if (Menu::getInstance()->isOptionChecked(MenuOption::VoxelNudgeMode)) {
2281− VoxelNode* selectedNode = _voxels.getVoxelAt(_nudgeVoxel.x, _nudgeVoxel.y, _nudgeVoxel.z, _nudgeVoxel.s);
2282− if (selectedNode) {
2283− renderNudgeGrid(_nudgeVoxel.x, _nudgeVoxel.y, _nudgeVoxel.z, _nudgeVoxel.s);
2284− }
2311+ // VoxelNode* selectedNode = _voxels.getVoxelAt(_nudgeVoxel.x, _nudgeVoxel.y, _nudgeVoxel.z, _nudgeVoxel.s);
2312+ // if (selectedNode) {
2313+ renderNudgeGrid(_nudgeVoxel.x, _nudgeVoxel.y, _nudgeVoxel.z, _nudgeVoxel.s);
2314+ // }
22852315 } else {
22862316 renderMouseVoxelGrid(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s);
22872317 }