diff --git a/src/Gui/Inventor/SoAutoZoomTranslation.cpp b/src/Gui/Inventor/SoAutoZoomTranslation.cpp index 09887bb32..5137d7f74 100644 --- a/src/Gui/Inventor/SoAutoZoomTranslation.cpp +++ b/src/Gui/Inventor/SoAutoZoomTranslation.cpp @@ -60,6 +60,23 @@ SO_NODE_SOURCE(SoAutoZoomTranslation); void SoAutoZoomTranslation::initClass() { SO_NODE_INIT_CLASS(SoAutoZoomTranslation, SoTransformation, "AutoZoom"); + + // Enable elements for SoGetMatrixAction (#0002268) + // SoCamera::initClass() enables the SoViewVolumeElement for + // * SoGLRenderAction + // * SoGetBoundingBoxAction + // * SoRayPickAction + // * SoCallbackAction + // * SoGetPrimitiveCountAction + // The element SoViewportRegionElement is enabled by the + // above listed actions. + // Addionally, SoViewVolumeElement is enabled for + // * SoAudioRenderAction + // * SoHandleEventAction + // And SoViewportRegionElement is enabled for + // * SoHandleEventAction + // * SoGetMatrixAction + SO_ENABLE(SoGetMatrixAction, SoViewVolumeElement); } float SoAutoZoomTranslation::getScaleFactor(SoAction* action) const @@ -142,4 +159,4 @@ void SoAutoZoomTranslation::getPrimitiveCount(SoGetPrimitiveCountAction * action { //Base::Console().Log("getPrimitiveCount\n"); SoAutoZoomTranslation::doAction((SoAction*)action); -} \ No newline at end of file +} diff --git a/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp b/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp index aa918c3fa..aa5ef7b9a 100644 --- a/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp +++ b/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp @@ -58,6 +58,23 @@ SO_NODE_SOURCE(SoZoomTranslation); void SoZoomTranslation::initClass() { SO_NODE_INIT_CLASS(SoZoomTranslation, SoTranslation, "Translation"); + + // Enable elements for SoGetMatrixAction (#0002268) + // SoCamera::initClass() enables the SoViewVolumeElement for + // * SoGLRenderAction + // * SoGetBoundingBoxAction + // * SoRayPickAction + // * SoCallbackAction + // * SoGetPrimitiveCountAction + // The element SoViewportRegionElement is enabled by the + // above listed actions. + // Addionally, SoViewVolumeElement is enabled for + // * SoAudioRenderAction + // * SoHandleEventAction + // And SoViewportRegionElement is enabled for + // * SoHandleEventAction + // * SoGetMatrixAction + SO_ENABLE(SoGetMatrixAction, SoViewVolumeElement); } float SoZoomTranslation::getScaleFactor(SoAction* action) const @@ -76,7 +93,7 @@ SoZoomTranslation::SoZoomTranslation() } void SoZoomTranslation::GLRender(SoGLRenderAction * action) -{ +{ SoZoomTranslation::doAction((SoAction *)action); } @@ -84,7 +101,7 @@ void SoZoomTranslation::GLRender(SoGLRenderAction * action) void SoZoomTranslation::doAction(SoAction * action) { SbVec3f v; - if(this->translation.getValue() == SbVec3f(0.0f, 0.0f, 0.0f) && this->abPos.getValue() == SbVec3f(0.0f, 0.0f, 0.0f)) { + if (this->translation.getValue() == SbVec3f(0.0f, 0.0f, 0.0f) && this->abPos.getValue() == SbVec3f(0.0f, 0.0f, 0.0f)) { return; } else { SbVec3f absVtr = this->abPos.getValue(); @@ -97,14 +114,14 @@ void SoZoomTranslation::doAction(SoAction * action) v = absVtr + relVtr; } - + SoModelMatrixElement::translateBy(action->getState(), this, v); } void SoZoomTranslation::getMatrix(SoGetMatrixAction * action) { SbVec3f v; - if(this->translation.getValue() == SbVec3f(0.0f, 0.0f, 0.0f) && this->abPos.getValue() == SbVec3f(0.0f, 0.0f, 0.0f)) { + if (this->translation.getValue() == SbVec3f(0.0f, 0.0f, 0.0f) && this->abPos.getValue() == SbVec3f(0.0f, 0.0f, 0.0f)) { return; } else { SbVec3f absVtr = this->abPos.getValue(); @@ -117,32 +134,31 @@ void SoZoomTranslation::getMatrix(SoGetMatrixAction * action) v = absVtr + relVtr; } - + SbMatrix m; m.setTranslate(v); action->getMatrix().multLeft(m); m.setTranslate(-v); action->getInverse().multRight(m); - } void SoZoomTranslation::callback(SoCallbackAction * action) { - SoZoomTranslation::doAction((SoAction *)action); + SoZoomTranslation::doAction((SoAction *)action); } void SoZoomTranslation::getBoundingBox(SoGetBoundingBoxAction * action) { - SoZoomTranslation::doAction((SoAction *)action); + SoZoomTranslation::doAction((SoAction *)action); } void SoZoomTranslation::pick(SoPickAction * action) { - SoZoomTranslation::doAction((SoAction *)action); + SoZoomTranslation::doAction((SoAction *)action); } // Doc in superclass. void SoZoomTranslation::getPrimitiveCount(SoGetPrimitiveCountAction * action) { - SoZoomTranslation::doAction((SoAction *)action); -} \ No newline at end of file + SoZoomTranslation::doAction((SoAction *)action); +}