Gui: refactor gizmo attachment code

This commit is contained in:
captain0xff
2025-09-16 03:01:34 +05:30
committed by Kacper Donat
parent e21f616974
commit 6282b7c08d
14 changed files with 56 additions and 44 deletions

View File

@@ -39,6 +39,7 @@
#include "Control.h"
#include "Document.h"
#include "Inventor/Draggers/SoTransformDragger.h"
#include "Inventor/Draggers/Gizmo.h"
#include "Inventor/SoFCPlacementIndicatorKit.h"
#include "SoFCUnifiedSelection.h"
#include "TaskTransform.h"
@@ -94,6 +95,12 @@ void ViewProviderDragger::resetTransformOrigin()
setTransformOrigin({});
}
void ViewProviderDragger::setGizmoContainer(Gui::GizmoContainer* gizmoContainer)
{
this->gizmoContainer = gizmoContainer;
}
void ViewProviderDragger::onChanged(const App::Property* property)
{
if (property == &TransformOrigin) {
@@ -221,7 +228,11 @@ void ViewProviderDragger::setEditViewer(Gui::View3DInventorViewer* viewer, int M
{
Q_UNUSED(ModNum);
if (transformDragger && viewer) {
if (!viewer) {
return;
}
if (transformDragger) {
transformDragger->setUpAutoScale(viewer->getSoRenderManager()->getCamera());
auto originPlacement = App::GeoFeature::getGlobalPlacement(getObject()) * getObjectPlacement().inverse();
@@ -230,6 +241,12 @@ void ViewProviderDragger::setEditViewer(Gui::View3DInventorViewer* viewer, int M
viewer->getDocument()->setEditingTransform(mat);
viewer->setupEditingRoot(transformDragger, &mat);
}
if (gizmoContainer) {
auto originPlacement = App::GeoFeature::getGlobalPlacement(getObject())
* getObjectPlacement().inverse();
gizmoContainer->attachViewer(viewer, originPlacement);
}
}
void ViewProviderDragger::unsetEditViewer([[maybe_unused]] Gui::View3DInventorViewer* viewer)