mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0026641: Visualization, TKOpenGl - handle correctly transformation persistence within perspective projection.
Add a new method AIS_InteractiveContext::SetTransformPersistence, which sets transform persistence to object and selection. Add a new method SelectMgr_SelectionManager::UpdateSelection, which re-adds selectable object in BVHs in all viewer selectors. Add a new method SelectMgr_ViewerSelector::MoveSelectableObject, which moves object from set of not transform persistence objects to set of transform persistence objects (or vice versa). Add a new method Graphic3d_TransformUtils::Convert, which converts gp_Trsf to Graphic3d_Mat4. Remove the method PrsMgr_PresentableObject::SetTransformPersistence(flag, point).
This commit is contained in:
@@ -2989,3 +2989,29 @@ void AIS_InteractiveContext::FitSelected (const Handle(V3d_View)& theView,
|
||||
|
||||
theView->FitAll (aBndSelected, theMargin, theToUpdate);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SetTransformPersistence
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void AIS_InteractiveContext::SetTransformPersistence (const Handle(AIS_InteractiveObject)& theObject,
|
||||
const Graphic3d_TransModeFlags& theFlag,
|
||||
const gp_Pnt& thePoint)
|
||||
{
|
||||
theObject->SetTransformPersistence (theFlag, thePoint);
|
||||
|
||||
if (!myObjects.IsBound (theObject))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
mgrSelector->UpdateSelection (theObject);
|
||||
|
||||
const Standard_Integer aLayerId = myObjects.Find (theObject)->GetLayerIndex();
|
||||
const Handle(V3d_Viewer)& aCurViewer = CurrentViewer();
|
||||
for (aCurViewer->InitActiveViews(); aCurViewer->MoreActiveViews(); aCurViewer->NextActiveViews())
|
||||
{
|
||||
aCurViewer->ActiveView()->View()->InvalidateBVHData (aLayerId);
|
||||
aCurViewer->ActiveView()->View()->InvalidateZLayerBoundingBox (aLayerId);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user