mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 15:20:08 +02:00
removed VoxelSystem::findRayIntersection() use tree directly
This commit is contained in:
parent
9bd29bdd92
commit
f0e73d2f98
5 changed files with 29 additions and 29 deletions
|
@ -1740,7 +1740,7 @@ void Application::updateHoverVoxels(float deltaTime, float& distance, BoxFace& f
|
||||||
|
|
||||||
if (!_mousePressed) {
|
if (!_mousePressed) {
|
||||||
PerformanceWarning warn(showWarnings, "Application::updateHoverVoxels() _voxels.findRayIntersection()");
|
PerformanceWarning warn(showWarnings, "Application::updateHoverVoxels() _voxels.findRayIntersection()");
|
||||||
_isHoverVoxel = _voxels.findRayIntersection(_mouseRayOrigin, _mouseRayDirection, _hoverVoxel, distance, face);
|
_isHoverVoxel = getVoxelTree()->findRayIntersectionDetail(_mouseRayOrigin, _mouseRayDirection, _hoverVoxel, distance, face);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2256,30 +2256,6 @@ bool VoxelSystem::hideOutOfViewOperation(OctreeElement* element, void* extraData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool VoxelSystem::findRayIntersection(const glm::vec3& origin, const glm::vec3& direction,
|
|
||||||
VoxelDetail& detail, float& distance, BoxFace& face) {
|
|
||||||
|
|
||||||
PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings),
|
|
||||||
"VoxelSystem::findRayIntersection()");
|
|
||||||
bool result = false; // assume no intersection
|
|
||||||
if (_tree->tryLockForRead()) {
|
|
||||||
OctreeElement* element;
|
|
||||||
result = _tree->findRayIntersection(origin, direction, element, distance, face);
|
|
||||||
if (result) {
|
|
||||||
VoxelTreeElement* voxel = (VoxelTreeElement*)element;
|
|
||||||
detail.x = voxel->getCorner().x;
|
|
||||||
detail.y = voxel->getCorner().y;
|
|
||||||
detail.z = voxel->getCorner().z;
|
|
||||||
detail.s = voxel->getScale();
|
|
||||||
detail.red = voxel->getColor()[0];
|
|
||||||
detail.green = voxel->getColor()[1];
|
|
||||||
detail.blue = voxel->getColor()[2];
|
|
||||||
}
|
|
||||||
_tree->unlock();
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void VoxelSystem::copySubTreeIntoNewTree(VoxelTreeElement* startNode, VoxelSystem* destination, bool rebaseToRoot) {
|
void VoxelSystem::copySubTreeIntoNewTree(VoxelTreeElement* startNode, VoxelSystem* destination, bool rebaseToRoot) {
|
||||||
_tree->copySubTreeIntoNewTree(startNode, destination->_tree, rebaseToRoot);
|
_tree->copySubTreeIntoNewTree(startNode, destination->_tree, rebaseToRoot);
|
||||||
destination->setupNewVoxelsForDrawing();
|
destination->setupNewVoxelsForDrawing();
|
||||||
|
|
|
@ -87,9 +87,6 @@ public:
|
||||||
bool hasViewChanged();
|
bool hasViewChanged();
|
||||||
bool isViewChanging();
|
bool isViewChanging();
|
||||||
|
|
||||||
bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction,
|
|
||||||
VoxelDetail& detail, float& distance, BoxFace& face);
|
|
||||||
|
|
||||||
void copySubTreeIntoNewTree(VoxelTreeElement* startNode, VoxelSystem* destinationTree, bool rebaseToRoot);
|
void copySubTreeIntoNewTree(VoxelTreeElement* startNode, VoxelSystem* destinationTree, bool rebaseToRoot);
|
||||||
void copySubTreeIntoNewTree(VoxelTreeElement* startNode, VoxelTree* destinationTree, bool rebaseToRoot);
|
void copySubTreeIntoNewTree(VoxelTreeElement* startNode, VoxelTree* destinationTree, bool rebaseToRoot);
|
||||||
void copyFromTreeIntoSubTree(VoxelTree* sourceTree, VoxelTreeElement* destinationNode);
|
void copyFromTreeIntoSubTree(VoxelTree* sourceTree, VoxelTreeElement* destinationNode);
|
||||||
|
|
|
@ -562,3 +562,28 @@ int VoxelTree::processEditPacketData(PacketType packetType, const unsigned char*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool VoxelTree::findRayIntersectionDetail(const glm::vec3& origin, const glm::vec3& direction,
|
||||||
|
VoxelDetail& detail, float& distance, BoxFace& face) {
|
||||||
|
|
||||||
|
bool result = false; // assume no intersection
|
||||||
|
if (tryLockForRead()) {
|
||||||
|
OctreeElement* element;
|
||||||
|
result = findRayIntersection(origin, direction, element, distance, face);
|
||||||
|
if (result) {
|
||||||
|
VoxelTreeElement* voxel = (VoxelTreeElement*)element;
|
||||||
|
detail.x = voxel->getCorner().x;
|
||||||
|
detail.y = voxel->getCorner().y;
|
||||||
|
detail.z = voxel->getCorner().z;
|
||||||
|
detail.s = voxel->getScale();
|
||||||
|
detail.red = voxel->getColor()[0];
|
||||||
|
detail.green = voxel->getColor()[1];
|
||||||
|
detail.blue = voxel->getColor()[2];
|
||||||
|
}
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,9 @@ public:
|
||||||
virtual bool handlesEditPacketType(PacketType packetType) const;
|
virtual bool handlesEditPacketType(PacketType packetType) const;
|
||||||
virtual int processEditPacketData(PacketType packetType, const unsigned char* packetData, int packetLength,
|
virtual int processEditPacketData(PacketType packetType, const unsigned char* packetData, int packetLength,
|
||||||
const unsigned char* editData, int maxLength, const SharedNodePointer& node);
|
const unsigned char* editData, int maxLength, const SharedNodePointer& node);
|
||||||
void processSetVoxelsBitstream(const unsigned char* bitstream, int bufferSizeBytes);
|
|
||||||
|
bool findRayIntersectionDetail(const glm::vec3& origin, const glm::vec3& direction,
|
||||||
|
VoxelDetail& detail, float& distance, BoxFace& face);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// helper functions for nudgeSubTree
|
// helper functions for nudgeSubTree
|
||||||
|
|
Loading…
Reference in a new issue