From 38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:44:46 -0500 Subject: Second Life viewer sources 1.13.2.12 --- linden/indra/newview/llviewerjointattachment.h | 111 +++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 linden/indra/newview/llviewerjointattachment.h (limited to 'linden/indra/newview/llviewerjointattachment.h') diff --git a/linden/indra/newview/llviewerjointattachment.h b/linden/indra/newview/llviewerjointattachment.h new file mode 100644 index 0000000..3d5f914 --- /dev/null +++ b/linden/indra/newview/llviewerjointattachment.h @@ -0,0 +1,111 @@ +/** + * @file llviewerjointattachment.h + * @brief Implementation of LLViewerJointAttachment class + * + * Copyright (c) 2002-2007, Linden Research, Inc. + * + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + */ + +#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 -- cgit v1.1