Showing the changes to interface/src/Application.cpp (1 of 5 files). Show all
Unified · Split
| @@ -1287,22 +1287,52 @@ void Application::pasteVoxels() { · 1286 unmodified lines | ||
| 1287 | 1287 | |
| 1288 | 1288 | void Application::nudgeVoxels() { |
| 1289 | 1289 | if (Menu::getInstance()->isOptionChecked(MenuOption::VoxelNudgeMode)) { |
| 1290 | + cutVoxels(); | |
| 1291 | + unsigned char* calculatedOctCode = NULL; | |
| 1290 | 1292 | VoxelNode* selectedNode = _voxels.getVoxelAt(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s); |
| 1291 | 1293 | |
| 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. | |
| 1292 | 1301 | 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); | |
| 1298 | 1310 | |
| 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; | |
| 1304 | 1320 | } |
| 1305 | 1321 | } |
| 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 | + // } | |
| 1306 | 1336 | } |
| 1307 | 1337 | |
| 1308 | 1338 | void Application::setListenModeNormal() { |
| @@ -2278,10 +2308,10 @@ void Application::displaySide(Camera& whichCamera) { · 969 unmodified lines | ||
| 2278 | 2308 | glPushMatrix(); |
| 2279 | 2309 | glScalef(TREE_SCALE, TREE_SCALE, TREE_SCALE); |
| 2280 | 2310 | 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 | + // } | |
| 2285 | 2315 | } else { |
| 2286 | 2316 | renderMouseVoxelGrid(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s); |
| 2287 | 2317 | } |