/indra/newview/llviewerjointattachment.h
https://bitbucket.org/lindenlab/viewer-beta/ · C++ Header · 112 lines · 47 code · 19 blank · 46 comment · 0 complexity · d1e07d191cbeefc4c4dea8cde630cdc0 MD5 · raw file
- /**
- * @file llviewerjointattachment.h
- * @brief Implementation of LLViewerJointAttachment class
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
- #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, BOOL first_pass, BOOL is_dummy );
-
- /*virtual*/ BOOL updateLOD(F32 pixel_area, BOOL activate);
- //
- // accessors
- //
- void setPieSlice(S32 pie_slice) { mPieSlice = pie_slice; }
- void setVisibleInFirstPerson(BOOL visibility) { mVisibleInFirst = visibility; }
- BOOL getVisibleInFirstPerson() const { 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() const { return mIsHUDAttachment; }
- BOOL isAnimatable() const { return FALSE; }
- S32 getGroup() const { return mGroup; }
- S32 getPieSlice() const { return mPieSlice; }
- S32 getNumObjects() const { return mAttachedObjects.size(); }
- void clampObjectPosition();
- //
- // unique methods
- //
- BOOL addObject(LLViewerObject* object);
- void removeObject(LLViewerObject *object);
- //
- // attachments operations
- //
- BOOL isObjectAttached(const LLViewerObject *viewer_object) const;
- const LLViewerObject *getAttachedObject(const LLUUID &object_id) const;
- LLViewerObject *getAttachedObject(const LLUUID &object_id);
- // list of attachments for this joint
- typedef std::vector<LLViewerObject *> attachedobjs_vec_t;
- attachedobjs_vec_t mAttachedObjects;
- protected:
- void calcLOD();
- void setupDrawable(LLViewerObject *object);
- private:
- BOOL mVisibleInFirst;
- LLVector3 mOriginalPos;
- S32 mGroup;
- BOOL mIsHUDAttachment;
- S32 mPieSlice;
- };
- #endif // LL_LLVIEWERJOINTATTACHMENT_H