00001
00032 #ifndef LL_LLHUDOBJECT_H
00033 #define LL_LLHUDOBJECT_H
00034
00039 #include "llmemory.h"
00040
00041 #include "v4color.h"
00042 #include "v3math.h"
00043 #include "v3dmath.h"
00044 #include "lldrawpool.h"
00045 #include <list>
00046
00047 class LLViewerCamera;
00048 class LLFontGL;
00049 class LLFace;
00050 class LLViewerObject;
00051 class LLHUDEffect;
00052
00053 class LLHUDObject : public LLRefCount
00054 {
00055 public:
00056 virtual void markDead();
00057 virtual F32 getDistance() const;
00058 virtual void setSourceObject(LLViewerObject* objectp);
00059 virtual void setTargetObject(LLViewerObject* objectp);
00060 virtual LLViewerObject* getSourceObject() { return mSourceObject; }
00061 virtual LLViewerObject* getTargetObject() { return mTargetObject; }
00062
00063 void setPositionGlobal(const LLVector3d &position_global);
00064 void setPositionAgent(const LLVector3 &position_agent);
00065
00066 BOOL isVisible() const { return mVisible; }
00067
00068 U8 getType() const { return mType; }
00069
00070 static LLHUDObject *addHUDObject(const U8 type);
00071 static LLHUDEffect *addHUDEffect(const U8 type);
00072 static void updateAll();
00073 static void renderAll();
00074 static void renderAllForSelect();
00075
00076 static void cleanupHUDObjects();
00077
00078 enum
00079 {
00080 LL_HUD_TEXT,
00081 LL_HUD_ICON,
00082 LL_HUD_CONNECTOR,
00083 LL_HUD_FLEXIBLE_OBJECT,
00084 LL_HUD_ANIMAL_CONTROLS,
00085 LL_HUD_LOCAL_ANIMATION_OBJECT,
00086 LL_HUD_CLOTH,
00087 LL_HUD_EFFECT_BEAM,
00088 LL_HUD_EFFECT_GLOW,
00089 LL_HUD_EFFECT_POINT,
00090 LL_HUD_EFFECT_TRAIL,
00091 LL_HUD_EFFECT_SPHERE,
00092 LL_HUD_EFFECT_SPIRAL,
00093 LL_HUD_EFFECT_EDIT,
00094 LL_HUD_EFFECT_LOOKAT,
00095 LL_HUD_EFFECT_POINTAT,
00096 LL_HUD_EFFECT_VOICE_VISUALIZER
00097 };
00098 protected:
00099 static void sortObjects();
00100
00101 LLHUDObject(const U8 type);
00102 ~LLHUDObject();
00103
00104 virtual void render() = 0;
00105 virtual void renderForSelect() {};
00106
00107 protected:
00108 U8 mType;
00109 BOOL mDead;
00110 BOOL mVisible;
00111 LLVector3d mPositionGlobal;
00112 BOOL mOnHUDAttachment;
00113 LLPointer<LLViewerObject> mSourceObject;
00114 LLPointer<LLViewerObject> mTargetObject;
00115
00116 private:
00117 typedef std::list<LLPointer<LLHUDObject> > hud_object_list_t;
00118 static hud_object_list_t sHUDObjects;
00119 };
00120
00121 #endif // LL_LLHUDOBJECT_H