00001
00014 #ifndef DEFAULT3DMENU_H
00015 #define DEFAULT3DMENU_H
00016
00017 #include "IS3DCommon.H"
00018 #include "DrawObj.H"
00019 #include "Fsa.H"
00020
00021 namespace IS3D {
00022
00023 typedef ReferenceCountedPointer<class Default3DMenu> Default3DMenuRef;
00024
00025 class Default3DMenu : public DrawObj
00026 {
00027 public:
00028
00029 enum ItemState {ENABLED, DISABLED, HIGHLIGHTED, ACTIVATED};
00030
00031 Default3DMenu(const std::string &configName);
00032
00033 Default3DMenu(const std::string &configName,
00034 Array<std::string> disableTriggers,
00035 Array<std::string> enableTriggers);
00036
00037 virtual ~Default3DMenu();
00038
00039 void trackerMove(EventRef e);
00040 void trackerMoveInMenu(EventRef e);
00041 void trackerMoveBtnDown(EventRef e);
00042
00043 void menuBtnOn(EventRef e);
00044 void menuBtnOff(EventRef e);
00045
00046 ItemState getItemState(const int i) { return _states[i]; }
00047 void setItemState(const int i, ItemState s) { _states[i] = s; }
00048
00049 void menuEnable();
00050 void menuDisable();
00051
00052 void chooseItem(const int i);
00053
00054 void draw();
00055
00056 protected:
00057
00058 void init(const std::string &configName,
00059 Array<std::string> disableTriggers,
00060 Array<std::string> enableTriggers);
00061
00062 void drawTextOnBox(const std::string &str, AABox box,
00063 Color4 color, Color4 outline);
00064
00065 std::string _title;
00066 Array<std::string> _items;
00067 Array<ItemState> _states;
00068 CoordinateFrame _initialFrame;
00069 Array<AABox> _boxes;
00070 GFontRef _font;
00071 double _textHeight;
00072 double _padding;
00073 Color4 _outlineCol;
00074 Color4 _titleFG, _titleBG;
00075 Color4 _itemFG, _itemBG;
00076 Color4 _disabledFG, _disabledBG;
00077 Color4 _highltFG, _highltBG;
00078 Color4 _activatedFG, _activatedBG;
00079 FsaRef _fsa;
00080 CoordinateFrame _dragOffset;
00081 bool _firstDrag;
00082 };
00083
00084 }
00085
00086 #endif