diff options
Diffstat (limited to 'indra/newview/llhudeffectlookat.h')
-rw-r--r-- | indra/newview/llhudeffectlookat.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/indra/newview/llhudeffectlookat.h b/indra/newview/llhudeffectlookat.h new file mode 100644 index 0000000000..1b50b7d566 --- /dev/null +++ b/indra/newview/llhudeffectlookat.h @@ -0,0 +1,76 @@ +/** + * @file llhudeffectlookat.h + * @brief LLHUDEffectLookAt class definition + * + * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#ifndef LL_LLHUDEFFECTLOOKAT_H +#define LL_LLHUDEFFECTLOOKAT_H + +#include "llhudeffect.h" +#include "llskiplist.h" + +class LLViewerObject; +class LLVOAvatar; + +typedef enum e_lookat_type +{ + LOOKAT_TARGET_NONE, + LOOKAT_TARGET_IDLE, + LOOKAT_TARGET_AUTO_LISTEN, + LOOKAT_TARGET_FREELOOK, + LOOKAT_TARGET_RESPOND, + LOOKAT_TARGET_HOVER, + LOOKAT_TARGET_CONVERSATION, // conversation mode deprecated + LOOKAT_TARGET_SELECT, + LOOKAT_TARGET_FOCUS, + LOOKAT_TARGET_MOUSELOOK, + LOOKAT_TARGET_CLEAR, + LOOKAT_NUM_TARGETS +} ELookAtType; + +class LLHUDEffectLookAt : public LLHUDEffect +{ +public: + friend class LLHUDObject; + + /*virtual*/ void markDead(); + /*virtual*/ void setSourceObject(LLViewerObject* objectp); + + BOOL setLookAt(ELookAtType target_type, LLViewerObject *object, LLVector3 position); + void clearLookAtTarget(); + + ELookAtType getLookAtType() { return mTargetType; } + const LLVector3& getTargetPos() { return mTargetPos; } + const LLVector3d& getTargetOffset() { return mTargetOffsetGlobal; } + void calcTargetPosition(); + +protected: + LLHUDEffectLookAt(const U8 type); + ~LLHUDEffectLookAt(); + + /*virtual*/ void update(); + /*virtual*/ void render(); + /*virtual*/ void packData(LLMessageSystem *mesgsys); + /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum); + + // lookat behavior has either target position or target object with offset + void setTargetObjectAndOffset(LLViewerObject *objp, LLVector3d offset); + void setTargetPosGlobal(const LLVector3d &target_pos_global); + +public: + static BOOL sDebugLookAt; + +private: + ELookAtType mTargetType; + LLVector3d mTargetOffsetGlobal; + LLVector3 mLastSentOffsetGlobal; + F32 mKillTime; + LLFrameTimer mTimer; + LLVector3 mTargetPos; + F32 mLastSendTime; +}; + +#endif // LL_LLHUDEFFECTLOOKAT_H |