26 #include "../controller/RotateTranslateOperation.h"
27 #include <Inventor/manips/SoTransformerManip.h>
32 if (
ScenePtr scene = this->scene.lock())
34 this->manipulatorMode = mode;
36 for (
SceneObjectPtr object : scene->getSelectionManager()->getAllSelected())
38 object->applyManipulator();
45 scene3D::SceneManipulatorManager::manipulatorStartCallback(
void* userdata, SoDragger* dragger)
47 std::pair<SceneObject*, Scene*>*
data = (std::pair<SceneObject*, Scene*>*)userdata;
51 for (
SceneObjectPtr sceneobject : scene->sceneSelectionManager->getAllSelected())
53 sceneobject->pushHistory();
55 if (sceneobject !=
object)
57 sceneobject->trackThisTransformation(object->manipNode);
60 sceneobject->isManipulated =
true;
65 scene3D::SceneManipulatorManager::manipulatorValueChangedCallback(
void* userdata,
68 std::pair<SceneObject*, Scene*>*
data = (std::pair<SceneObject*, Scene*>*)userdata;
69 SceneObject*
object =
data->first;
70 Scene* scene =
data->second;
74 std::vector<std::string> changed;
75 changed.push_back(object->getObjectId());
81 scene3D::SceneManipulatorManager::manipulatorFinishCallback(
void* userdata, SoDragger* dragger)
83 Scene* scene = (Scene*)userdata;
87 std::shared_ptr<std::vector<controller::OperationPtr>> operations(
88 new std::vector<controller::OperationPtr>());
90 for (
SceneObjectPtr sceneobject : scene->sceneSelectionManager->getAllSelected())
96 sceneobject->getObjectId(),
97 sceneobject->getHistoryRotation(),
98 sceneobject->getRotation(),
99 sceneobject->getHistoryTranslation(),
100 sceneobject->getTranslation()));
102 operations->push_back(operation);
104 sceneobject->untrackTransformations();
105 sceneobject->isManipulated =
false;
125 SoTransformerManip* manip =
new SoTransformerManip;
126 SoSeparator* nullSep =
new SoSeparator;
129 manip->getDragger()->setPart(
"scale1", nullSep);
130 manip->getDragger()->setPart(
"scale2", nullSep);
131 manip->getDragger()->setPart(
"scale3", nullSep);
132 manip->getDragger()->setPart(
"scale4", nullSep);
133 manip->getDragger()->setPart(
"scale5", nullSep);
134 manip->getDragger()->setPart(
"scale6", nullSep);
135 manip->getDragger()->setPart(
"scale7", nullSep);
136 manip->getDragger()->setPart(
"scale8", nullSep);
145 manip->getDragger()->setPart(
"translator1", nullSep);
146 manip->getDragger()->setPart(
"translator2", nullSep);
147 manip->getDragger()->setPart(
"translator3", nullSep);
148 manip->getDragger()->setPart(
"translator4", nullSep);
149 manip->getDragger()->setPart(
"translator5", nullSep);
150 manip->getDragger()->setPart(
"translator6", nullSep);
157 manip->getDragger()->setPart(
"rotator1", nullSep);
158 manip->getDragger()->setPart(
"rotator2", nullSep);
159 manip->getDragger()->setPart(
"rotator3", nullSep);
160 manip->getDragger()->setPart(
"rotator4", nullSep);
161 manip->getDragger()->setPart(
"rotator5", nullSep);
162 manip->getDragger()->setPart(
"rotator6", nullSep);
166 if (
ScenePtr scene = this->scene.lock())
168 manip->getDragger()->addStartCallback(
169 manipulatorStartCallback,
170 new std::pair<SceneObject*, Scene*>(
object.get(), scene.get()));
171 manip->getDragger()->addValueChangedCallback(
172 manipulatorValueChangedCallback,
173 new std::pair<SceneObject*, Scene*>(
object.get(), scene.get()));
174 manip->getDragger()->addFinishCallback(manipulatorFinishCallback, scene.get());
177 object->addManipulator(manip);
183 object->applyManipulator();
189 return this->manipulatorMode;