llhudeffectlookat.h

Go to the documentation of this file.
00001 
00032 #ifndef LL_LLHUDEFFECTLOOKAT_H
00033 #define LL_LLHUDEFFECTLOOKAT_H
00034 
00035 #include "llhudeffect.h"
00036 
00037 class LLViewerObject;
00038 class LLVOAvatar;
00039 class LLAttentionSet;
00040 
00041 typedef enum e_lookat_type
00042 {
00043         LOOKAT_TARGET_NONE,
00044         LOOKAT_TARGET_IDLE,
00045         LOOKAT_TARGET_AUTO_LISTEN,
00046         LOOKAT_TARGET_FREELOOK,
00047         LOOKAT_TARGET_RESPOND,
00048         LOOKAT_TARGET_HOVER,
00049         LOOKAT_TARGET_CONVERSATION,
00050         LOOKAT_TARGET_SELECT,
00051         LOOKAT_TARGET_FOCUS,
00052         LOOKAT_TARGET_MOUSELOOK,
00053         LOOKAT_TARGET_CLEAR,
00054         LOOKAT_NUM_TARGETS
00055 } ELookAtType;
00056 
00057 class LLHUDEffectLookAt : public LLHUDEffect
00058 {
00059 public:
00060         friend class LLHUDObject;
00061 
00062         /*virtual*/ void markDead();
00063         /*virtual*/ void setSourceObject(LLViewerObject* objectp);
00064 
00065         BOOL setLookAt(ELookAtType target_type, LLViewerObject *object, LLVector3 position);
00066         void clearLookAtTarget();
00067 
00068         ELookAtType getLookAtType() { return mTargetType; }
00069         const LLVector3& getTargetPos() { return mTargetPos; }
00070         const LLVector3d& getTargetOffset() { return mTargetOffsetGlobal; }
00071         bool calcTargetPosition();
00072 
00073 protected:
00074         LLHUDEffectLookAt(const U8 type);
00075         ~LLHUDEffectLookAt();
00076 
00077         /*virtual*/ void update();
00078         /*virtual*/ void render();
00079         /*virtual*/ void packData(LLMessageSystem *mesgsys);
00080         /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum);
00081         
00082         // lookat behavior has either target position or target object with offset
00083         void setTargetObjectAndOffset(LLViewerObject *objp, LLVector3d offset);
00084         void setTargetPosGlobal(const LLVector3d &target_pos_global);
00085 
00086 public:
00087         static BOOL sDebugLookAt;
00088 
00089 private:
00090         ELookAtType                                     mTargetType;
00091         LLVector3d                                      mTargetOffsetGlobal;
00092         LLVector3                                       mLastSentOffsetGlobal;
00093         F32                                                     mKillTime;
00094         LLFrameTimer                            mTimer;
00095         LLVector3                                       mTargetPos;
00096         F32                                                     mLastSendTime;
00097         LLAttentionSet*                         mAttentions;
00098 };
00099 
00100 #endif // LL_LLHUDEFFECTLOOKAT_H

Generated on Fri May 16 08:33:38 2008 for SecondLife by  doxygen 1.5.5