28 #include <osgGA/TerrainManipulator> 29 #include <osgViewer/Viewer> 30 #include <osg/PositionAttitudeTransform> 31 #include <osg/ShapeDrawable> 50 class CameraManipulator;
51 class NodeTrackerManipulator;
79 Command_TLSChange(
const MSLink*
const link, osg::Switch* switchNode);
83 virtual ~Command_TLSChange();
97 const MSLink*
const myLink;
100 osg::ref_ptr<osg::Switch> mySwitch;
108 Command_TLSChange(
const Command_TLSChange&);
111 Command_TLSChange& operator=(
const Command_TLSChange&);
117 osg::ref_ptr<osg::PositionAttitudeTransform> pos;
118 osg::ref_ptr<osg::ShapeDrawable> geom;
119 osg::ref_ptr<osg::Switch> lights;
129 virtual ~GUIOSGView();
143 void centerTo(
GUIGlID id,
bool applyZoom,
double zoomDist = 20);
145 void showViewportEditor();
148 void setViewportFromToRot(
const Position& lookFrom,
const Position& lookAt,
double rotation);
156 void startTrack(
int id);
169 bool setColorScheme(
const std::string& name);
175 SUMOTime getCurrentTimeStep()
const;
181 long onConfigure(FXObject*, FXSelector,
void*);
182 long onKeyPress(FXObject*, FXSelector,
void*);
183 long onKeyRelease(FXObject*, FXSelector,
void*);
184 long onLeftBtnPress(FXObject*, FXSelector,
void*);
185 long onLeftBtnRelease(FXObject*, FXSelector,
void*);
186 long onMiddleBtnPress(FXObject*, FXSelector,
void*);
187 long onMiddleBtnRelease(FXObject*, FXSelector,
void*);
188 long onRightBtnPress(FXObject*, FXSelector,
void*);
189 long onRightBtnRelease(FXObject*, FXSelector,
void*);
191 long onMouseMove(FXObject*, FXSelector,
void*);
192 long onPaint(FXObject*, FXSelector,
void*);
193 long OnIdle(FXObject* sender, FXSelector sel,
void* ptr);
196 class SUMOTerrainManipulator :
public osgGA::TerrainManipulator {
198 SUMOTerrainManipulator() {
199 setAllowThrow(
false);
201 bool performMovementLeftMouseButton(
const double eventTimeDelta,
const double dx,
const double dy) {
202 return osgGA::TerrainManipulator::performMovementMiddleMouseButton(eventTimeDelta, dx, dy);
204 bool performMovementMiddleMouseButton(
const double eventTimeDelta,
const double dx,
const double dy) {
205 return osgGA::TerrainManipulator::performMovementLeftMouseButton(eventTimeDelta, dx, dy);
207 bool performMovementRightMouseButton(
const double eventTimeDelta,
const double dx,
const double dy) {
208 return osgGA::TerrainManipulator::performMovementRightMouseButton(eventTimeDelta, dx, -dy);
212 class FXOSGAdapter :
public osgViewer::GraphicsWindow {
216 void grabFocusIfPointerInWindow() {}
217 void useCursor(
bool cursorOn);
219 bool makeCurrentImplementation();
220 bool releaseContext();
221 void swapBuffersImplementation();
227 bool realizeImplementation() {
230 bool isRealizedImplementation()
const {
233 void closeImplementation() {}
234 bool releaseContextImplementation() {
242 FXCursor*
const myOldCursor;
247 osg::ref_ptr<FXOSGAdapter> myAdapter;
248 osg::ref_ptr<osgViewer::Viewer> myViewer;
249 osg::ref_ptr<osg::Group> myRoot;
253 osg::ref_ptr<osgGA::CameraManipulator> myCameraManipulator;
257 std::map<MSVehicle*, OSGMovable > myVehicles;
258 std::map<MSTransportable*, OSGMovable > myPersons;
260 osg::ref_ptr<osg::Node> myGreenLight;
261 osg::ref_ptr<osg::Node> myYellowLight;
262 osg::ref_ptr<osg::Node> myRedLight;
263 osg::ref_ptr<osg::Node> myRedYellowLight;
Representation of a vehicle in the micro simulation.
Base class for things to execute if a tls switches to a new phase.
A point in 2D or 3D with translation and scaling methods.
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic, in MSLink and GNEInternalLane.
A single child window which contains a view of the simulation area.
A MSNet extended by some values for usage within the gui.
A MSVehicle extended by some values for usage within the gui.