virtual Standard_Boolean IsOverlapAllowed() const = 0;
+ //! Stores plane equations to the given vector
+ virtual void GetPlanes (NCollection_Vector<NCollection_Vec4<Standard_Real> >& thePlaneEquations) const = 0;
+
protected:
SelectionType myActiveSelectionType; //!< Active selection type: point, box or polyline
};
//! Computes depth range for global (defined for the whole view) clipping planes.
Standard_EXPORT virtual void SetViewClipping (const Graphic3d_SequenceOfHClipPlane& /*thePlanes*/) {};
+ //! Stores plane equations to the given vector
+ Standard_EXPORT virtual void GetPlanes (NCollection_Vector<SelectMgr_Vec4>& thePlaneEquations) const = 0;
+
DEFINE_STANDARD_RTTIEXT(SelectMgr_BaseFrustum,Standard_Transient)
protected:
return myViewClipRange.MaxDepth() > theDepth
&& myViewClipRange.MinDepth() < theDepth;
}
+
+// =======================================================================
+// function : GetPlanes
+// purpose :
+// =======================================================================
+void SelectMgr_RectangularFrustum::GetPlanes (NCollection_Vector<SelectMgr_Vec4>& thePlaneEquations) const
+{
+ thePlaneEquations.Clear();
+
+ SelectMgr_Vec4 anEquation;
+ for (Standard_Integer aPlaneIdx = 0; aPlaneIdx < 6; ++aPlaneIdx)
+ {
+ const gp_Vec& aPlaneNorm = myIsOrthographic && aPlaneIdx % 2 == 1 ?
+ myPlanes[aPlaneIdx - 1].Reversed() : myPlanes[aPlaneIdx];
+ anEquation.x() = aPlaneNorm.X();
+ anEquation.y() = aPlaneNorm.Y();
+ anEquation.z() = aPlaneNorm.Z();
+ anEquation.w() = - (aPlaneNorm.XYZ().Dot (myVertices[aPlaneIdx % 2 == 0 ? aPlaneIdx : aPlaneIdx + 2].XYZ()));
+ thePlaneEquations.Append (anEquation);
+ }
+}
inline gp_Pnt GetNearPnt() const { return myNearPickedPnt; }
inline gp_Pnt GetFarPnt() const { return myFarPickedPnt; }
+
+ //! Stores plane equations to the given vector
+ Standard_EXPORT virtual void GetPlanes (NCollection_Vector<SelectMgr_Vec4>& thePlaneEquations) const Standard_OVERRIDE;
+
protected:
Standard_EXPORT void segmentSegmentDistance (const gp_Pnt& theSegPnt1,
return mySelectingVolumes[myActiveSelectionType];
}
+ //! Stores plane equations to the given vector
+ virtual void GetPlanes (NCollection_Vector<SelectMgr_Vec4>& thePlaneEquations) const Standard_OVERRIDE
+ {
+ if (myActiveSelectionType == Unknown)
+ {
+ thePlaneEquations.Clear();
+ return;
+ }
+
+ return mySelectingVolumes[myActiveSelectionType]->GetPlanes (thePlaneEquations);
+ }
+
private:
enum { Frustum, FrustumSet, VolumeTypesNb }; //!< Defines the amount of available selecting volumes
{
myBuilder.Nullify();
}
+
+// =======================================================================
+// function : GetPlanes
+// purpose :
+// =======================================================================
+void SelectMgr_TriangularFrustum::GetPlanes (NCollection_Vector<SelectMgr_Vec4>& thePlaneEquations) const
+{
+ SelectMgr_Vec4 aPlaneEquation;
+ for (Standard_Integer aPlaneIdx = 0; aPlaneIdx < 5; ++aPlaneIdx)
+ {
+ const gp_Vec& aNorm = myPlanes[aPlaneIdx];
+ aPlaneEquation.x() = aNorm.X();
+ aPlaneEquation.y() = aNorm.Y();
+ aPlaneEquation.z() = aNorm.Z();
+ aPlaneEquation.w() = - (aNorm.XYZ().Dot (myVertices[aPlaneIdx % 2 == 0 ? aPlaneIdx : 1].XYZ()));
+ thePlaneEquations.Append (aPlaneEquation);
+ }
+}
//! Nullifies the handle to corresponding builder instance to prevent memory leaks
Standard_EXPORT void Clear();
+ //! Stores plane equations to the given vector
+ Standard_EXPORT virtual void GetPlanes (NCollection_Vector<SelectMgr_Vec4>& thePlaneEquations) const Standard_OVERRIDE;
+
private:
void cacheVertexProjections (SelectMgr_TriangularFrustum* theFrustum);
return Standard_False;
}
+// =======================================================================
+// function : GetPlanes
+// purpose :
+// =======================================================================
+void SelectMgr_TriangularFrustumSet::GetPlanes (NCollection_Vector<SelectMgr_Vec4>& thePlaneEquations) const
+{
+ thePlaneEquations.Clear();
+
+ for (SelectMgr_TriangFrustumsIter anIter (myFrustums); anIter.More(); anIter.Next())
+ {
+ anIter.Value()->GetPlanes (thePlaneEquations);
+ }
+}
+
#undef MEMORY_BLOCK_SIZE
Select3D_TypeOfSensitivity theSensType,
Standard_Real& theDepth) Standard_OVERRIDE;
+ //! Stores plane equations to the given vector
+ Standard_EXPORT virtual void GetPlanes (NCollection_Vector<SelectMgr_Vec4>& thePlaneEquations) const Standard_OVERRIDE;
+
private:
SelectMgr_TriangFrustums myFrustums;