summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerjointattachment.h
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/llviewerjointattachment.h
Print done when done.
Diffstat (limited to 'indra/newview/llviewerjointattachment.h')
-rw-r--r--indra/newview/llviewerjointattachment.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h
new file mode 100644
index 0000000000..b3a6ccb89c
--- /dev/null
+++ b/indra/newview/llviewerjointattachment.h
@@ -0,0 +1,92 @@
+/**
+ * @file llviewerjointattachment.h
+ * @brief Implementation of LLViewerJointAttachment class
+ *
+ * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#ifndef LL_LLVIEWERJOINTATTACHMENT_H
+#define LL_LLVIEWERJOINTATTACHMENT_H
+
+//-----------------------------------------------------------------------------
+// Header Files
+//-----------------------------------------------------------------------------
+#include "llviewerjoint.h"
+#include "llstring.h"
+#include "lluuid.h"
+
+class LLDrawable;
+class LLViewerObject;
+
+//-----------------------------------------------------------------------------
+// class LLViewerJointAttachment
+//-----------------------------------------------------------------------------
+class LLViewerJointAttachment :
+ public LLViewerJoint
+{
+public:
+ LLViewerJointAttachment();
+ virtual ~LLViewerJointAttachment();
+
+ //virtual U32 render( F32 pixelArea ); // Returns triangle count
+
+ // Returns true if this object is transparent.
+ // This is used to determine in which order to draw objects.
+ /*virtual*/ BOOL isTransparent();
+
+ // Draws the shape attached to a joint.
+ // Called by render().
+ /*virtual*/ U32 drawShape( F32 pixelArea );
+
+ /*virtual*/ BOOL updateLOD(F32 pixel_area, BOOL activate);
+
+ //
+ // accessors
+ //
+
+ void setJoint (LLJoint* joint) { mJoint = joint; }
+ void setPieSlice(S32 pie_slice) { mPieSlice = pie_slice; }
+ void setVisibleInFirstPerson(BOOL visibility) { mVisibleInFirst = visibility; }
+ BOOL getVisibleInFirstPerson() { return mVisibleInFirst; }
+ void setGroup(S32 group) { mGroup = group; }
+ void setOriginalPosition(LLVector3 &position);
+ void setAttachmentVisibility(BOOL visible);
+ void setIsHUDAttachment(BOOL is_hud) { mIsHUDAttachment = is_hud; }
+ BOOL getIsHUDAttachment() { return mIsHUDAttachment; }
+
+ BOOL isAnimatable() { return FALSE; }
+
+ S32 getGroup() { return mGroup; }
+ S32 getPieSlice() { return mPieSlice; }
+ BOOL getAttachmentDirty() { return mAttachmentDirty && mAttachedObject; }
+ LLViewerObject *getObject(S32 i) { return mAttachedObject; }
+ S32 getNumObjects() { return (mAttachedObject ? 1 : 0); }
+ const LLUUID& getItemID() { return mItemID; }
+
+ //
+ // unique methods
+ //
+ BOOL addObject(LLViewerObject* object);
+ void removeObject(LLViewerObject *object);
+
+ void lazyAttach();
+ void setupDrawable(LLDrawable* drawable);
+ void clampObjectPosition();
+
+protected:
+ void calcLOD();
+
+protected:
+ LLJoint* mJoint;
+ LLViewerObject* mAttachedObject;
+ BOOL mAttachmentDirty; // does attachment drawable need to be fixed up?
+ BOOL mVisibleInFirst;
+ LLVector3 mOriginalPos;
+ S32 mGroup;
+ BOOL mIsHUDAttachment;
+ S32 mPieSlice;
+ LLUUID mItemID; // Inventory item id of the attached item (null if not in inventory)
+};
+
+#endif // LL_LLVIEWERJOINTATTACHMENT_H