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

Generated on Thu Jul 1 06:08:42 2010 for Second Life Viewer by  doxygen 1.4.7