18
23
#include <boost/bind.hpp>
21
25
#include "Decorator.hh"
22
#include "../IDTranslationTable.hh"
23
26
#include "UserInterfaceUtilities.hh"
24
#include "../renderer/Renderer.hh"
25
27
#include "Manipulator.hh"
28
#include "../actions/SetSelected.hh"
29
#include "../RendererRelay.hh"
30
#include "../renderer/api/Renderer.hh"
28
33
using namespace peekabot;
29
34
using namespace peekabot::gui;
30
using peekabot::renderer::TheRenderer;
33
37
Decorator::Decorator(UserInterfaceUtilities &uiu)
60
64
boost::bind(&Decorator::selection_changed, this, _1, true));
61
65
m_uiu.on_object_deselected().disconnect(
62
66
boost::bind(&Decorator::selection_changed, this, _1, false));
64
68
if(m_uiu.get_manipulator() != 0)
66
70
m_uiu.get_manipulator()->get_mode_signal().disconnect(
77
81
void Decorator::selection_changed(ObjectID id, bool selected) throw()
79
NodeID node_id = TheIDTranslationTable::instance().get_node_id(id);
82
TheRenderer::instance().select_node(node_id);
84
TheRenderer::instance().deselect_node(node_id);
83
m_uiu.post_action(new SetSelected(id, selected));
87
86
void Decorator::mode_changed(ManipulatorMode mode) throw()
89
//std::cout << "mode=" << mode << std::endl;
88
renderer::api::Renderer &r = TheRendererRelay::instance().get_renderer();
91
90
if( mode == MOVE_MODE )
93
TheRenderer::instance().set_transformation_guides_mode(
92
r.set_transformation_guides_mode(
94
93
renderer::MOVE_TRANSFORMATION_GUIDES);
95
TheRenderer::instance().set_transformation_guides_coord_sys(
94
r.set_transformation_guides_coord_sys(
96
95
m_uiu.get_manipulator()->get_system());
97
TheRenderer::instance().set_transformation_guides_axes(
96
r.set_transformation_guides_axes(
98
97
m_uiu.get_manipulator()->get_axes());
100
99
else if( mode == ROTATE_MODE )
102
TheRenderer::instance().set_transformation_guides_mode(
101
r.set_transformation_guides_mode(
103
102
renderer::ROTATE_TRANSFORMATION_GUIDES);
104
TheRenderer::instance().set_transformation_guides_coord_sys(
103
r.set_transformation_guides_coord_sys(
105
104
m_uiu.get_manipulator()->get_system());
106
TheRenderer::instance().set_transformation_guides_axes(
105
r.set_transformation_guides_axes(
107
106
m_uiu.get_manipulator()->get_axes());
108
TheRenderer::instance().set_transformation_guides_pivot(
107
r.set_transformation_guides_pivot(
109
108
m_uiu.get_manipulator()->get_pivot());
113
TheRenderer::instance().set_transformation_guides_mode(
112
r.set_transformation_guides_mode(
114
113
renderer::NO_TRANSFORMATION_GUIDES);
118
117
void Decorator::coordinate_system_changed(CoordinateSystem coord_sys) throw()
120
//std::cout << "coord_sys=" << coord_sys << std::endl;
122
TheRenderer::instance().set_transformation_guides_coord_sys(coord_sys);
119
renderer::api::Renderer &r = TheRendererRelay::instance().get_renderer();
120
r.set_transformation_guides_coord_sys(coord_sys);
126
124
void Decorator::pivot_changed(RotationCenterpoint pivot) throw()
128
TheRenderer::instance().set_transformation_guides_pivot(pivot);
126
renderer::api::Renderer &r = TheRendererRelay::instance().get_renderer();
127
r.set_transformation_guides_pivot(pivot);
132
131
void Decorator::axes_changed(Axis axes) throw()
134
TheRenderer::instance().set_transformation_guides_axes(axes);
133
renderer::api::Renderer &r = TheRendererRelay::instance().get_renderer();
134
r.set_transformation_guides_axes(axes);