iMSTK
Interactive Medical Simulation Toolkit
Public Types | Public Member Functions | Protected Attributes | List of all members
imstk::MouseSceneControl Class Reference

Controls the camera using trackball controls Left click rotate, middle click pan. More...

#include <imstkMouseSceneControl.h>

Inheritance diagram for imstk::MouseSceneControl:
Inheritance graph
[legend]
Collaboration diagram for imstk::MouseSceneControl:
Collaboration graph
[legend]

Public Types

enum  Mode { None, Pan, Rotate }
 
- Public Types inherited from imstk::EventObject
using Observer = std::tuple< bool, std::weak_ptr< EventObject >, std::function< void(Event *)> >
 

Public Member Functions

 MouseSceneControl (const std::string &name="MouseSceneControl")
 
void setZoomSpeed (const double zoomSpeed)
 Set the scroll controlled zoom speed.
 
void setRotateSpeed (const double rotateSpeed)
 Set the mouse controlled rotate speed.
 
void setPanSpeed (const double panSpeed)
 Set the pan speed.
 
void setSceneManager (std::shared_ptr< SceneManager > manager)
 Set the scene manager to be controlled The active scene's camera will be controllable depending on SceneManager's mode, or the.
 
void setEnabled (bool enable)
 Enable the mouse control, independent of the debug mode.
 
bool getEnabled () const
 
void printControls () override
 Prints the controls.
 
void OnButtonPress (const int key) override
 On the mouse scene control button press.
 
void OnButtonRelease (const int key) override
 
void OnScroll (const double dx) override
 
void OnMouseMove (const Vec2d &pos) override
 
- Public Member Functions inherited from imstk::MouseControl
 MouseControl (const std::string &name="MouseControl")
 
void setDevice (std::shared_ptr< DeviceClient > device) override
 
virtual void OnButtonPress (const int imstkNotUsed(key))
 
virtual void OnButtonRelease (const int imstkNotUsed(key))
 
virtual void OnScroll (const double imstkNotUsed(dx))
 
virtual void OnMouseMove (const Vec2d &imstkNotUsed(pos))
 
- Public Member Functions inherited from imstk::DeviceControl
 SIGNAL (DeviceControl, modified)
 
std::shared_ptr< DeviceClientgetDevice () const
 Set/Get the device client used in the control.
 
- Public Member Functions inherited from imstk::Behaviour< UpdateInfo >
virtual void update (const UpdateInfo &imstkNotUsed(updateData))
 
virtual void visualUpdate (const UpdateInfo &imstkNotUsed(updateData))
 
void initTaskGraphEdges ()
 Setup the edges/connections of the TaskGraph.
 
std::shared_ptr< TaskGraphgetTaskGraph () const
 
- Public Member Functions inherited from imstk::Component
const std::string & getName () const
 
void setName (const std::string &name)
 
std::weak_ptr< EntitygetEntity () const
 Get parent entity.
 
void initialize ()
 Initialize the component, called at a later time after all component construction is complete.
 
- Public Member Functions inherited from imstk::EventObject
template<typename T >
void postEvent (const T &e)
 Emits the event Direct observers will be immediately called, in sync Queued observers will receive the Command in their queue for later execution, reciever must implement doEvent.
 
template<typename T >
void queueEvent (const T &e)
 Queues event directly to this.
 
void doEvent ()
 Do an event, if none exists return.
 
void doAllEvents ()
 Do all the events in the event queue.
 
void foreachEvent (std::function< void(Command cmd)> func)
 Thread safe loop over all event commands, one can implement a custom handler.
 
void rforeachEvent (std::function< void(Command cmd)> func)
 thread safe reverse loop over all event commands, one can implement a custom handler
 
void clearEvents ()
 Removes all events from queue cleans up copies of the event.
 

Protected Attributes

std::shared_ptr< SceneManagerm_sceneManager
 
Mode m_mode = Mode::None
 
Vec2d m_prevPos
 
Vec2d m_pos
 
double m_zoomSpeed = 1.0
 
double m_rotateSpeed = 1.0
 
double m_panSpeed = 1.0
 
double m_zoomFactor = 1.0
 
double m_rotateFactor = 5.0
 
double m_panFactor = 1.0
 
bool m_enabled = false
 
- Protected Attributes inherited from imstk::MouseControl
std::shared_ptr< MouseDeviceClientm_mouseDevice = nullptr
 
- Protected Attributes inherited from imstk::DeviceControl
std::shared_ptr< DeviceClientm_deviceClient
 
- Protected Attributes inherited from imstk::Behaviour< UpdateInfo >
std::shared_ptr< TaskGraphm_taskGraph = nullptr
 
- Protected Attributes inherited from imstk::Component
std::string m_name
 
std::weak_ptr< Entitym_entity
 Parent entity this component exists on.
 
- Protected Attributes inherited from imstk::EventObject
ParallelUtils::SpinLock eventQueueLock
 
std::deque< CommandeventQueue
 
std::vector< std::pair< std::string, std::vector< Observer > > > queuedObservers
 
std::vector< std::pair< std::string, std::vector< Observer > > > directObservers
 

Additional Inherited Members

- Protected Member Functions inherited from imstk::DeviceControl
 DeviceControl (const std::string &name="DeviceControl")
 
- Protected Member Functions inherited from imstk::Behaviour< UpdateInfo >
 Behaviour (const std::string &name="Behaviour")
 
 Behaviour (const bool useTaskGraph, const std::string &name="Behaviour")
 
virtual void initGraphEdges (std::shared_ptr< TaskNode > imstkNotUsed(source), std::shared_ptr< TaskNode > imstkNotUsed(sink))
 Setup the edges/connections of the TaskGraph. More...
 
- Protected Member Functions inherited from imstk::Component
 Component (const std::string &name="Component")
 
virtual void init ()
 Initialize the component, called at a later time after all component construction is complete.
 

Detailed Description

Controls the camera using trackball controls Left click rotate, middle click pan.

Todo:
: Make base class to control just a scene, subclass for debug toggle or remove debug completely

Definition at line 24 of file imstkMouseSceneControl.h.

Member Function Documentation

◆ getEnabled()

bool imstk::MouseSceneControl::getEnabled ( ) const
Returns
true if the controls are enabled, either explicitly or debug is on in the scenecontrol

Definition at line 152 of file imstkMouseSceneControl.cpp.

Here is the caller graph for this function:

The documentation for this class was generated from the following files: