#3249 Refactoring: Remove the old extractintersectionData.

Replace it with a separate find method.
Use RiuPickItemInfo in the RicViewerEventObject
This commit is contained in:
Jacob Støren
2018-08-27 14:27:33 +02:00
parent 714ba1e605
commit ad9864240c
8 changed files with 169 additions and 69 deletions

View File

@@ -24,6 +24,7 @@
#include "cvfBase.h"
#include "cvfObject.h"
#include "cvfVector3.h"
#include "RiuPickItemInfo.h"
namespace cvf {
class Part;
@@ -37,18 +38,15 @@ class Rim3dView;
class RicViewerEventObject
{
public:
RicViewerEventObject(cvf::Vec3d globalIntersectionPoint,
const std::vector<std::pair<const cvf::Part*,
cvf::uint>>& partAndTriangleIndexPairs, Rim3dView* view)
: m_globalIntersectionPoint(globalIntersectionPoint)
, m_partAndTriangleIndexPairs(partAndTriangleIndexPairs)
RicViewerEventObject(const std::vector<RiuPickItemInfo>& partAndTriangleIndexPairs,
Rim3dView* view)
: m_partAndTriangleIndexPairs(partAndTriangleIndexPairs)
, m_view(view)
{
}
cvf::Vec3d m_globalIntersectionPoint;
std::vector<std::pair<const cvf::Part*, cvf::uint>> m_partAndTriangleIndexPairs;
Rim3dView* m_view;
std::vector<RiuPickItemInfo> m_partAndTriangleIndexPairs;
Rim3dView* m_view;
};

View File

@@ -46,7 +46,7 @@ bool Ric3dWellLogCurveViewerEventHandler::handleEvent(const RicViewerEventObject
cvf::uint triangleIndex = cvf::UNDEFINED_UINT;
const auto& partAndTriangleIndexPair = eventObject.m_partAndTriangleIndexPairs.front();
const cvf::Part* part = partAndTriangleIndexPair.first;
const cvf::Part* part = partAndTriangleIndexPair.pickedPart();
const RivObjectSourceInfo* sourceInfo = dynamic_cast<const RivObjectSourceInfo*>(part->sourceInfo());
if (sourceInfo)
@@ -60,8 +60,10 @@ bool Ric3dWellLogCurveViewerEventHandler::handleEvent(const RicViewerEventObject
cvf::Vec3d closestPoint;
double measuredDepthAtPoint;
double valueAtPoint;
Rim3dWellLogCurve* curve = curveCollection->checkForCurveIntersection(
eventObject.m_globalIntersectionPoint, &closestPoint, &measuredDepthAtPoint, &valueAtPoint);
Rim3dWellLogCurve* curve = curveCollection->checkForCurveIntersection( eventObject.m_partAndTriangleIndexPairs.front().globalPickedPoint(),
&closestPoint,
&measuredDepthAtPoint,
&valueAtPoint);
if (curve)
{
RiuMainWindow::instance()->selectAsCurrentItem(curve);

View File

@@ -52,7 +52,7 @@ bool RicIntersectionViewerEventHandler::handleEvent(const RicViewerEventObject&
CVF_ASSERT(rimView);
cvf::ref<caf::DisplayCoordTransform> transForm = rimView->displayCoordTransform();
cvf::Vec3d domainCoord = transForm->transformToDomainCoord(eventObject.m_globalIntersectionPoint);
cvf::Vec3d domainCoord = transForm->transformToDomainCoord(eventObject.m_partAndTriangleIndexPairs.front().globalPickedPoint());
if (intersection->inputPolyLineFromViewerEnabled())
{

View File

@@ -62,7 +62,7 @@ bool RicWellPathViewerEventHandler::handleEvent(const RicViewerEventObject& even
if(!eventObject.m_partAndTriangleIndexPairs.empty())
{
const auto & partAndTriangleIndexPair = eventObject.m_partAndTriangleIndexPairs.front();
const cvf::Part* part = partAndTriangleIndexPair.first;
const cvf::Part* part = partAndTriangleIndexPair.pickedPart();
if (part)
{
@@ -76,7 +76,7 @@ bool RicWellPathViewerEventHandler::handleEvent(const RicViewerEventObject& even
if (eventObject.m_partAndTriangleIndexPairs.size() > 1)
{
const auto& secondPair = eventObject.m_partAndTriangleIndexPairs[1];
const cvf::Part* secondPickedPart = secondPair.first;
const cvf::Part* secondPickedPart = secondPair.pickedPart();
if (secondPickedPart)
{
auto wellPathSourceCandidate =
@@ -89,7 +89,7 @@ bool RicWellPathViewerEventHandler::handleEvent(const RicViewerEventObject& even
{
wellPathSourceInfo =
dynamic_cast<const RivWellPathSourceInfo*>(secondPickedPart->sourceInfo());
wellPathTriangleIndex = secondPair.second;
wellPathTriangleIndex = secondPair.faceIdx();
}
}
}
@@ -100,7 +100,7 @@ bool RicWellPathViewerEventHandler::handleEvent(const RicViewerEventObject& even
if (dynamic_cast<const RivWellPathSourceInfo*>(part->sourceInfo()))
{
wellPathSourceInfo = dynamic_cast<const RivWellPathSourceInfo*>(part->sourceInfo());
wellPathTriangleIndex = partAndTriangleIndexPair.second;
wellPathTriangleIndex = partAndTriangleIndexPair.faceIdx();
}
}
}
@@ -111,7 +111,7 @@ bool RicWellPathViewerEventHandler::handleEvent(const RicViewerEventObject& even
if (!rimView) return false;
cvf::ref<caf::DisplayCoordTransform> transForm = rimView->displayCoordTransform();
cvf::Vec3d pickedPositionInUTM = transForm->transformToDomainCoord(eventObject.m_globalIntersectionPoint);
cvf::Vec3d pickedPositionInUTM = transForm->transformToDomainCoord(eventObject.m_partAndTriangleIndexPairs.front().globalPickedPoint());
if (auto intersectionView = dynamic_cast<Rim2dIntersectionView*>(rimView))
{