Added ability to set the keyboard bindings in the RecordaAnimationPathHandler
This commit is contained in:
@@ -147,18 +147,18 @@ public:
|
||||
virtual void getUsage(osg::ApplicationUsage &usage) const;
|
||||
|
||||
void setKeyEventToggleFullscreen(int key) { _keyEventToggleFullscreen = key; }
|
||||
int getKeyEventToggleFullscreen() const { return (_keyEventToggleFullscreen); }
|
||||
int getKeyEventToggleFullscreen() const { return _keyEventToggleFullscreen; }
|
||||
|
||||
void setToggleFullscreen(bool flag) { _toggleFullscreen = flag; }
|
||||
bool getToggleFullscreen() const { return (_toggleFullscreen); }
|
||||
bool getToggleFullscreen() const { return _toggleFullscreen; }
|
||||
|
||||
void setKeyEventWindowedResolutionUp(int key) { _keyEventWindowedResolutionUp = key; }
|
||||
int getKeyEventWindowedResolutionUp() const { return (_keyEventWindowedResolutionUp); }
|
||||
int getKeyEventWindowedResolutionUp() const { return _keyEventWindowedResolutionUp; }
|
||||
void setKeyEventWindowedResolutionDown(int key) { _keyEventWindowedResolutionDown = key; }
|
||||
int getKeyEventWindowedResolutionDown() const { return (_keyEventWindowedResolutionUp); }
|
||||
int getKeyEventWindowedResolutionDown() const { return _keyEventWindowedResolutionUp; }
|
||||
|
||||
void setChangeWindowedResolution(bool flag) { _changeWindowedResolution = flag; }
|
||||
bool getChangeWindowedResolution() const { return (_changeWindowedResolution); }
|
||||
bool getChangeWindowedResolution() const { return _changeWindowedResolution; }
|
||||
|
||||
virtual bool handle(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &aa);
|
||||
|
||||
@@ -190,16 +190,16 @@ public:
|
||||
virtual void getUsage(osg::ApplicationUsage &usage) const;
|
||||
|
||||
void setKeyEventChangeThreadingModel(int key) { _keyEventChangeThreadingModel = key; }
|
||||
int getKeyEventChangeThreadingModel() const { return (_keyEventChangeThreadingModel); }
|
||||
int getKeyEventChangeThreadingModel() const { return _keyEventChangeThreadingModel; }
|
||||
|
||||
void setChangeThreadingModel(bool flag) { _changeThreadingModel = flag; }
|
||||
bool getChangeThreadingModel() const { return (_changeThreadingModel); }
|
||||
bool getChangeThreadingModel() const { return _changeThreadingModel; }
|
||||
|
||||
void setKeyEventChangeEndBarrierPosition(int key) { _keyEventChangeEndBarrierPosition = key; }
|
||||
int getKeyEventChangeEndBarrierPosition() const { return (_keyEventChangeEndBarrierPosition); }
|
||||
int getKeyEventChangeEndBarrierPosition() const { return _keyEventChangeEndBarrierPosition; }
|
||||
|
||||
void setChangeEndBarrierPosition(bool flag) { _changeEndBarrierPosition = flag; }
|
||||
bool getChangeEndBarrierPosition() const { return (_changeEndBarrierPosition); }
|
||||
bool getChangeEndBarrierPosition() const { return _changeEndBarrierPosition; }
|
||||
|
||||
bool handle(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &aa);
|
||||
|
||||
@@ -228,22 +228,33 @@ public:
|
||||
|
||||
RecordCameraPathHandler(const std::string &filename = "saved_animation.path");
|
||||
|
||||
void setKeyEventToggleRecord(int key) { _keyEventToggleRecord = key; }
|
||||
int getKeyEventToggleRecord() const { return _keyEventToggleRecord; }
|
||||
|
||||
void setKeyEventTogglePlayback(int key) { _keyEventTogglePlayback = key; }
|
||||
int getKeyEventTogglePlayback() const { return _keyEventTogglePlayback; }
|
||||
|
||||
virtual void getUsage(osg::ApplicationUsage &usage) const;
|
||||
|
||||
bool handle(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &aa);
|
||||
|
||||
protected:
|
||||
|
||||
std::string _filename;
|
||||
bool _currentlyRecording;
|
||||
bool _currentlyPlaying;
|
||||
double _interval;
|
||||
double _delta;
|
||||
osg::Timer_t _animStartTime;
|
||||
osg::Timer_t _lastFrameTime;
|
||||
osg::ref_ptr<osg::AnimationPath> _animPath;
|
||||
osg::ref_ptr<osgGA::AnimationPathManipulator> _animPathManipulator;
|
||||
osg::ref_ptr<osgGA::MatrixManipulator> _oldManipulator;
|
||||
std::string _filename;
|
||||
|
||||
int _keyEventToggleRecord;
|
||||
int _keyEventTogglePlayback;
|
||||
|
||||
|
||||
bool _currentlyRecording;
|
||||
bool _currentlyPlaying;
|
||||
double _interval;
|
||||
double _delta;
|
||||
osg::Timer_t _animStartTime;
|
||||
osg::Timer_t _lastFrameTime;
|
||||
osg::ref_ptr<osg::AnimationPath> _animPath;
|
||||
osg::ref_ptr<osgGA::AnimationPathManipulator> _animPathManipulator;
|
||||
osg::ref_ptr<osgGA::MatrixManipulator> _oldManipulator;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -53,9 +53,9 @@ WindowSizeHandler::WindowSizeHandler() :
|
||||
|
||||
void WindowSizeHandler::getUsage(osg::ApplicationUsage &usage) const
|
||||
{
|
||||
usage.addKeyboardMouseBinding("f", "Toggle full screen.");
|
||||
usage.addKeyboardMouseBinding(">", "Increase the screen resolution (in windowed mode).");
|
||||
usage.addKeyboardMouseBinding("<", "Decrease the screen resolution (in windowed mode).");
|
||||
usage.addKeyboardMouseBinding(reinterpret_cast<const char*>(&_keyEventToggleFullscreen), "Toggle full screen.");
|
||||
usage.addKeyboardMouseBinding(reinterpret_cast<const char*>(&_keyEventWindowedResolutionUp), "Increase the screen resolution (in windowed mode).");
|
||||
usage.addKeyboardMouseBinding(reinterpret_cast<const char*>(&_keyEventWindowedResolutionDown), "Decrease the screen resolution (in windowed mode).");
|
||||
}
|
||||
|
||||
bool WindowSizeHandler::handle(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &aa)
|
||||
@@ -272,8 +272,8 @@ ThreadingHandler::ThreadingHandler() :
|
||||
|
||||
void ThreadingHandler::getUsage(osg::ApplicationUsage &usage) const
|
||||
{
|
||||
usage.addKeyboardMouseBinding("m", "Toggle threading model.");
|
||||
usage.addKeyboardMouseBinding("e", "Toggle the placement of the end of frame barrier.");
|
||||
usage.addKeyboardMouseBinding(reinterpret_cast<const char*>(&_keyEventChangeThreadingModel), "Toggle threading model.");
|
||||
usage.addKeyboardMouseBinding(reinterpret_cast<const char*>(&_keyEventChangeEndBarrierPosition), "Toggle the placement of the end of frame barrier.");
|
||||
}
|
||||
|
||||
bool ThreadingHandler::handle(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &aa)
|
||||
@@ -345,6 +345,8 @@ bool ThreadingHandler::handle(const osgGA::GUIEventAdapter &ea, osgGA::GUIAction
|
||||
|
||||
RecordCameraPathHandler::RecordCameraPathHandler(const std::string& filename):
|
||||
_filename(filename),
|
||||
_keyEventToggleRecord('z'),
|
||||
_keyEventTogglePlayback('Z'),
|
||||
_currentlyRecording(false),
|
||||
_currentlyPlaying(false),
|
||||
_delta(0.0f),
|
||||
@@ -362,8 +364,8 @@ RecordCameraPathHandler::RecordCameraPathHandler(const std::string& filename):
|
||||
|
||||
void RecordCameraPathHandler::getUsage(osg::ApplicationUsage &usage) const
|
||||
{
|
||||
usage.addKeyboardMouseBinding("z", "Toggle camera path recording.");
|
||||
usage.addKeyboardMouseBinding("Z", "Load local camera path recording.");
|
||||
usage.addKeyboardMouseBinding(reinterpret_cast<const char*>(&_keyEventToggleRecord), "Toggle camera path recording.");
|
||||
usage.addKeyboardMouseBinding(reinterpret_cast<const char*>(&_keyEventTogglePlayback), "Toggle camera path playback.");
|
||||
}
|
||||
|
||||
bool RecordCameraPathHandler::handle(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &aa)
|
||||
@@ -380,7 +382,7 @@ bool RecordCameraPathHandler::handle(const osgGA::GUIEventAdapter &ea, osgGA::GU
|
||||
case(osgGA::GUIEventAdapter::KEYUP):
|
||||
{
|
||||
// The user has requested to toggle recording.
|
||||
if (ea.getKey() == 'z')
|
||||
if (ea.getKey() ==_keyEventToggleRecord)
|
||||
{
|
||||
// The user has requested to BEGIN recording.
|
||||
if (!_currentlyRecording)
|
||||
@@ -416,7 +418,7 @@ bool RecordCameraPathHandler::handle(const osgGA::GUIEventAdapter &ea, osgGA::GU
|
||||
// EXTREMELY dirty, so I opted for a simpler solution. At a later date, someone may
|
||||
// want to implement the original recomendation (which is in a mailing list reply
|
||||
// from June 1st by Robert in a thread called "osgviewer Camera Animation (preliminary)".
|
||||
else if (ea.getKey() == 'Z')
|
||||
else if (ea.getKey() == _keyEventTogglePlayback)
|
||||
{
|
||||
if (_currentlyRecording)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user