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 | void Application::nudgeVoxels() { | 1288 | void Application::nudgeVoxels() { |
| 1289 | if (Menu::getInstance()->isOptionChecked(MenuOption::VoxelNudgeMode)) { | 1289 | if (Menu::getInstance()->isOptionChecked(MenuOption::VoxelNudgeMode)) { |
| 1290 | cutVoxels(); | ||
| 1291 | unsigned char* calculatedOctCode = NULL; | ||
| 1290 | VoxelNode* selectedNode = _voxels.getVoxelAt(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s); | 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 | if (selectedNode) { | 1301 | if (selectedNode) { |
| 1293 | // glPushMatrix(); | 1302 | args.newBaseOctCode = selectedNode->getOctalCode(); |
| 1294 | // glScalef(TREE_SCALE, TREE_SCALE, TREE_SCALE); | 1303 | } else { |
| 1295 | // renderNudgeGrid(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s); | 1304 | args.newBaseOctCode = calculatedOctCode = pointToVoxel(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s); |
| 1296 | // glPopMatrix(); | 1305 | } |
| 1297 | qDebug("UnNudged xyz: %f, %f, %f\n", _mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z); | 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 | 1311 | if (_sharedVoxelSystem.getTree() != &_clipboard) { |
| 1300 | // glm::vec3 nudgeVec(_mouseVoxel.s, _mouseVoxel.s, _mouseVoxel.s); | 1312 | _sharedVoxelSystem.killLocalVoxels(); |
| 1301 | // glm::vec3 nudgeVec(0.5 * _mouseVoxel.s, 0.5 * _mouseVoxel.s, 0.5 * _mouseVoxel.s); | 1313 | _sharedVoxelSystem.changeTree(&_clipboard); |
| 1302 | glm::vec3 nudgeVec(0.25 * _mouseVoxel.s, 0.25 * _mouseVoxel.s, 0.25 * _mouseVoxel.s); | 1314 | } |
| 1303 | _voxels.getVoxelTree()->nudgeSubTree(selectedNode, nudgeVec, _voxelEditSender); | 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 | void Application::setListenModeNormal() { | 1338 | void Application::setListenModeNormal() { |
| @@ -2278,10 +2308,10 @@ void Application::displaySide(Camera& whichCamera) { · 969 unmodified lines | |||
| 2278 | glPushMatrix(); | 2308 | glPushMatrix(); |
| 2279 | glScalef(TREE_SCALE, TREE_SCALE, TREE_SCALE); | 2309 | glScalef(TREE_SCALE, TREE_SCALE, TREE_SCALE); |
| 2280 | if (Menu::getInstance()->isOptionChecked(MenuOption::VoxelNudgeMode)) { | 2310 | if (Menu::getInstance()->isOptionChecked(MenuOption::VoxelNudgeMode)) { |
| 2281 | VoxelNode* selectedNode = _voxels.getVoxelAt(_nudgeVoxel.x, _nudgeVoxel.y, _nudgeVoxel.z, _nudgeVoxel.s); | 2311 | // VoxelNode* selectedNode = _voxels.getVoxelAt(_nudgeVoxel.x, _nudgeVoxel.y, _nudgeVoxel.z, _nudgeVoxel.s); |
| 2282 | if (selectedNode) { | 2312 | // if (selectedNode) { |
| 2283 | renderNudgeGrid(_nudgeVoxel.x, _nudgeVoxel.y, _nudgeVoxel.z, _nudgeVoxel.s); | 2313 | renderNudgeGrid(_nudgeVoxel.x, _nudgeVoxel.y, _nudgeVoxel.z, _nudgeVoxel.s); |
| 2284 | } | 2314 | // } |
| 2285 | } else { | 2315 | } else { |
| 2286 | renderMouseVoxelGrid(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s); | 2316 | renderMouseVoxelGrid(_mouseVoxel.x, _mouseVoxel.y, _mouseVoxel.z, _mouseVoxel.s); |
| 2287 | } | 2317 | } |