summaryrefslogtreecommitdiff
path: root/indra/newview/llhudeffectpointat.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llhudeffectpointat.h')
-rw-r--r--indra/newview/llhudeffectpointat.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/indra/newview/llhudeffectpointat.h b/indra/newview/llhudeffectpointat.h
new file mode 100644
index 0000000000..a4254501eb
--- /dev/null
+++ b/indra/newview/llhudeffectpointat.h
@@ -0,0 +1,65 @@
+/**
+ * @file llhudeffectpointat.h
+ * @brief LLHUDEffectPointAt class definition
+ *
+ * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#ifndef LL_LLHUDEFFECTPOINTAT_H
+#define LL_LLHUDEFFECTPOINTAT_H
+
+#include "llhudeffect.h"
+
+class LLViewerObject;
+class LLVOAvatar;
+
+typedef enum e_pointat_type
+{
+ POINTAT_TARGET_NONE,
+ POINTAT_TARGET_SELECT,
+ POINTAT_TARGET_GRAB,
+ POINTAT_TARGET_CLEAR,
+ POINTAT_NUM_TARGETS
+} EPointAtType;
+
+class LLHUDEffectPointAt : public LLHUDEffect
+{
+public:
+ friend class LLHUDObject;
+
+ /*virtual*/ void markDead();
+ /*virtual*/ void setSourceObject(LLViewerObject* objectp);
+
+ BOOL setPointAt(EPointAtType target_type, LLViewerObject *object, LLVector3 position);
+ void clearPointAtTarget();
+
+ EPointAtType getPointAtType() { return mTargetType; }
+ const LLVector3& getPointAtPosAgent() { return mTargetPos; }
+ const LLVector3d getPointAtPosGlobal();
+protected:
+ LLHUDEffectPointAt(const U8 type);
+ ~LLHUDEffectPointAt();
+
+ /*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);
+ void calcTargetPosition();
+ void update();
+public:
+ static BOOL sDebugPointAt;
+private:
+ EPointAtType mTargetType;
+ LLVector3d mTargetOffsetGlobal;
+ LLVector3 mLastSentOffsetGlobal;
+ F32 mKillTime;
+ LLFrameTimer mTimer;
+ LLVector3 mTargetPos;
+ F32 mLastSendTime;
+};
+
+#endif // LL_LLHUDEFFECTPOINTAT_H