#define SG_SCENE_PICK_ANIMATION_HXX
#include <simgear/scene/model/animation.hxx>
+#include <simgear/misc/strutils.hxx>
// forward decls
class SGPickCallback;
+class SGSceneUserData;
//////////////////////////////////////////////////////////////////////
// Pick animation
public:
SGPickAnimation(const SGPropertyNode* configNode,
SGPropertyNode* modelRoot);
- virtual osg::Group* createAnimationGroup(osg::Group& parent);
+ // override so we can treat object-name specially
+ virtual void apply(osg::Group& group);
+ void apply(osg::Node* node);
protected:
- void innerSetupPickGroup(osg::Group* commonGroup, osg::Group& parent);
-
+
+
+ virtual osg::Group* createMainGroup(osg::Group* pr);
+
+ virtual void setupCallbacks(SGSceneUserData* ud, osg::Group* parent);
private:
class PickCallback;
class VncCallback;
+
+ string_list _proxyNames;
};
public:
SGKnobAnimation(const SGPropertyNode* configNode,
SGPropertyNode* modelRoot);
- virtual osg::Group* createAnimationGroup(osg::Group& parent);
/**
* by default mouse wheel up corresponds to increment (CW)
* Since no one can agree on that, make it a global toggle.
*/
static void setAlternateMouseWheelDirection(bool aToggle);
+
+ /**
+ * by default mouse is dragged left-right to change knobs.
+ * set this to true to default to up-down. Individual knobs
+ * can overrider this,
+ */
+ static void setAlternateDragAxis(bool aToggle);
+
+
+ /**
+ * Scale the drag sensitivity. This provides a global hook for
+ * the user to scale the senstivity of dragging according to
+ * personal preference.
+ */
+ static void setDragSensitivity(double aFactor);
+
+
+protected:
+ virtual osg::Group* createMainGroup(osg::Group* pr);
+
+ virtual void setupCallbacks(SGSceneUserData* ud, osg::Group* parent);
+
private:
- class KnobPickCallback;
class UpdateCallback;
SGVec3d _axis;
SGSharedPtr<SGExpressiond const> _animationValue;
};
+class SGSliderAnimation : public SGPickAnimation
+{
+public:
+ SGSliderAnimation(const SGPropertyNode* configNode,
+ SGPropertyNode* modelRoot);
+
+
+protected:
+ virtual osg::Group* createMainGroup(osg::Group* pr);
+
+ virtual void setupCallbacks(SGSceneUserData* ud, osg::Group* parent);
+
+private:
+ class UpdateCallback;
+
+ SGVec3d _axis;
+ SGSharedPtr<SGExpressiond const> _animationValue;
+};
+
#endif // of SG_SCENE_PICK_ANIMATION_HXX