Klamp't  0.9.0
WorldGUI.h
1 #ifndef INTERFACE_WORLD_VIEW_GUI_H
2 #define INTERFACE_WORLD_VIEW_GUI_H
3 
5 #include "NavigationGUI.h"
6 #include <KrisLibrary/math3d/Ray3D.h>
7 
8 namespace Klampt {
9  using namespace Math3D;
10 
24 {
25 public:
27  virtual ~WorldGUIBackend();
28 
29  bool LoadCommandLine(int argc,const char** argv);
30  bool LoadFile(const char* fn);
31  bool ReloadFile(const char* fn);
32  bool SaveWorld(const char* fn,const char* elementPath=NULL);
33  //backend overloads
34  virtual void Start();
35  virtual bool OnIdle();
36  virtual bool OnCommand(const string& cmd,const string& args);
37  //GLNavigationBackend overloads
38  virtual void SetWorldLights() { world->SetGLLights(); }
39  RobotModel* ClickRobot(int x,int y,int& body,Vector3& localpt) const;
40  RobotModel* ClickRobot(const Ray3D& r,int& body,Vector3& localpt) const;
41  RigidObjectModel* ClickObject(int x,int y,Vector3& localpt) const;
42  RigidObjectModel* ClickObject(const Ray3D& r,Vector3& localpt) const;
43  virtual void RefreshIdle() { SendPauseIdle(0); }
44  virtual void RenderWorld();
45 
46  virtual void DoFreeDrag(int dx,int dy,int button)
47  {
48  if(button == 0) DragRotate(dx,dy);
49  }
50 
51  virtual void DoCtrlDrag(int dx,int dy,int button)
52  {
53  if(button == 0) DragPan(dx,dy);
54  }
55 
56  virtual void DoAltDrag(int dx,int dy,int button)
57  {
58  if(button == 0) DragZoom(dx,dy);
59  }
60 
61  virtual void DoShiftDrag(int dx,int dy,int button)
62  {
63  if(button == 0) { camera.dist *= (1 + 0.01*Real(dy)); SendRefresh(); }
64  }
65 
66  virtual bool OnMouseWheel(int dwheel);
67 
68  WorldModel* world;
69 };
70 
71 } // namespace Klampt
72 
73 #endif
virtual void DoAltDrag(int dx, int dy, int button)
Overload this for alt-dragging.
Definition: WorldGUI.h:56
virtual void DoFreeDrag(int dx, int dy, int button)
Overload this for regular (non-modified) dragging.
Definition: WorldGUI.h:46
A (static) rigid object that may be manipulated.
Definition: RigidObject.h:15
Defines the WorldModel class.
The main robot type used in RobotSim.
Definition: Robot.h:83
virtual void DoShiftDrag(int dx, int dy, int button)
Overload this for shift-dragging.
Definition: WorldGUI.h:61
virtual void DoCtrlDrag(int dx, int dy, int button)
Overload this for control-dragging.
Definition: WorldGUI.h:51
A generic gui with a WorldModel which allows clicking on entities and loading files.
Definition: WorldGUI.h:23
A backend that manages a camera and performs OpenGL scene management.
Definition: NavigationGUI.h:51
Definition: ContactDistance.h:6
The main world class containing multiple robots, objects, and static geometries (terrains). Lights and other viewport information may also be stored here.
Definition: World.h:24