Timeout 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
  2. *
  3. * This library is open source and may be redistributed and/or modified under
  4. * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
  5. * (at your option) any later version. The full license is in LICENSE file
  6. * included with this distribution, and on the openscenegraph.org website.
  7. *
  8. * This library is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * OpenSceneGraph Public License for more details.
  12. */
  13. #ifndef OSGPRESENTATION_TIMOUTOUT
  14. #define OSGPRESENTATION_TIMOUTOUT 1
  15. #include <osg/Transform>
  16. #include <osgPresentation/SlideEventHandler>
  17. namespace osgPresentation {
  18. class OSGPRESENTATION_EXPORT HUDSettings : public osg::Referenced
  19. {
  20. public:
  21. HUDSettings(double slideDistance, float eyeOffset, unsigned int leftMask, unsigned int rightMask);
  22. virtual bool getModelViewMatrix(osg::Matrix& matrix, osg::NodeVisitor* nv) const;
  23. virtual bool getInverseModelViewMatrix(osg::Matrix& matrix, osg::NodeVisitor* nv) const;
  24. double _slideDistance;
  25. double _eyeOffset;
  26. unsigned int _leftMask;
  27. unsigned int _rightMask;
  28. protected:
  29. virtual ~HUDSettings();
  30. };
  31. class OSGPRESENTATION_EXPORT Timeout : public osg::Transform
  32. {
  33. public:
  34. Timeout(HUDSettings* hudSettings=0);
  35. /** Copy constructor using CopyOp to manage deep vs shallow copy.*/
  36. Timeout(const Timeout& timeout,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
  37. META_Node(osgPresentation, Timeout);
  38. void setIdleDurationBeforeTimeoutDisplay(double t) { _idleDurationBeforeTimeoutDisplay = t; }
  39. double getIdleDurationBeforeTimeoutDisplay() const { return _idleDurationBeforeTimeoutDisplay; }
  40. void setIdleDurationBeforeTimeoutAction(double t) { _idleDurationBeforeTimeoutAction = t; }
  41. double getIdleDurationBeforeTimeoutAction() const { return _idleDurationBeforeTimeoutAction; }
  42. void setKeyStartsTimoutDisplay(int key) { _keyStartsTimoutDisplay = key; }
  43. int getKeyStartsTimoutDisplay() const { return _keyStartsTimoutDisplay; }
  44. void setKeyDismissTimoutDisplay(int key) { _keyDismissTimoutDisplay = key; }
  45. int getKeyDismissTimoutDisplay() const { return _keyDismissTimoutDisplay; }
  46. void setKeyRunTimoutAction(int key) { _keyRunTimeoutAction = key; }
  47. int getKeyRunTimoutAction() const { return _keyRunTimeoutAction; }
  48. void setDisplayBroadcastKeyPosition(const osgPresentation::KeyPosition& keyPos) { _displayBroadcastKeyPos = keyPos; }
  49. const osgPresentation::KeyPosition& getDisplayBroadcastKeyPosition() const { return _displayBroadcastKeyPos; }
  50. void setDismissBroadcastKeyPosition(const osgPresentation::KeyPosition& keyPos) { _dismissBroadcastKeyPos = keyPos; }
  51. const osgPresentation::KeyPosition& getDismissBroadcastKeyPosition() const { return _dismissBroadcastKeyPos; }
  52. void setActionKeyPosition(const osgPresentation::KeyPosition& keyPos) { _actionKeyPos = keyPos; }
  53. const osgPresentation::KeyPosition& getActionKeyPosition() const { return _actionKeyPos; }
  54. void setActionBroadcastKeyPosition(const osgPresentation::KeyPosition& keyPos) { _actionBroadcastKeyPos = keyPos; }
  55. const osgPresentation::KeyPosition& getActionBroadcastKeyPosition() const { return _actionBroadcastKeyPos; }
  56. void setActionJumpData(const JumpData& jumpData) { _actionJumpData = jumpData; }
  57. const JumpData& getActionJumpData() const { return _actionJumpData; }
  58. virtual bool computeLocalToWorldMatrix(osg::Matrix& matrix,osg::NodeVisitor* nv) const;
  59. virtual bool computeWorldToLocalMatrix(osg::Matrix& matrix,osg::NodeVisitor*) const;
  60. virtual void traverse(osg::NodeVisitor& nv);
  61. protected:
  62. virtual ~Timeout();
  63. void broadcastEvent(osgViewer::Viewer* viewer, const osgPresentation::KeyPosition& keyPos);
  64. osg::ref_ptr<HUDSettings> _hudSettings;
  65. int _previousFrameNumber;
  66. double _timeOfLastEvent;
  67. bool _displayTimeout;
  68. double _idleDurationBeforeTimeoutDisplay;
  69. double _idleDurationBeforeTimeoutAction;
  70. int _keyStartsTimoutDisplay;
  71. int _keyDismissTimoutDisplay;
  72. int _keyRunTimeoutAction;
  73. osgPresentation::KeyPosition _displayBroadcastKeyPos;
  74. osgPresentation::KeyPosition _dismissBroadcastKeyPos;
  75. osgPresentation::KeyPosition _actionKeyPos;
  76. osgPresentation::KeyPosition _actionBroadcastKeyPos;
  77. JumpData _actionJumpData;
  78. };
  79. }
  80. #endif