diff options
author | Ansariel <ansariel.hiller@phoenixviewer.com> | 2024-05-22 19:04:52 +0200 |
---|---|---|
committer | Ansariel <ansariel.hiller@phoenixviewer.com> | 2024-05-22 19:04:52 +0200 |
commit | 1b67dd855c41f5a0cda7ec2a68d98071986ca703 (patch) | |
tree | ab243607f74f78200787bba5b9b88f07ef1b966f /indra/llcharacter/llvisualparam.h | |
parent | 6d6eabca44d08d5b97bfe3e941d2b9687c2246ea (diff) | |
parent | e1623bb276f83a43ce7a197e388720c05bdefe61 (diff) |
Merge remote-tracking branch 'origin/main' into DRTVWR-600-maint-A
# Conflicts:
# autobuild.xml
# indra/cmake/CMakeLists.txt
# indra/cmake/GoogleMock.cmake
# indra/llaudio/llaudioengine_fmodstudio.cpp
# indra/llaudio/llaudioengine_fmodstudio.h
# indra/llaudio/lllistener_fmodstudio.cpp
# indra/llaudio/lllistener_fmodstudio.h
# indra/llaudio/llstreamingaudio_fmodstudio.cpp
# indra/llaudio/llstreamingaudio_fmodstudio.h
# indra/llcharacter/llmultigesture.cpp
# indra/llcharacter/llmultigesture.h
# indra/llimage/llimage.cpp
# indra/llimage/llimagepng.cpp
# indra/llimage/llimageworker.cpp
# indra/llimage/tests/llimageworker_test.cpp
# indra/llmessage/tests/llmockhttpclient.h
# indra/llprimitive/llgltfmaterial.h
# indra/llrender/llfontfreetype.cpp
# indra/llui/llcombobox.cpp
# indra/llui/llfolderview.cpp
# indra/llui/llfolderviewmodel.h
# indra/llui/lllineeditor.cpp
# indra/llui/lllineeditor.h
# indra/llui/lltextbase.cpp
# indra/llui/lltextbase.h
# indra/llui/lltexteditor.cpp
# indra/llui/lltextvalidate.cpp
# indra/llui/lltextvalidate.h
# indra/llui/lluictrl.h
# indra/llui/llview.cpp
# indra/llwindow/llwindowmacosx.cpp
# indra/newview/app_settings/settings.xml
# indra/newview/llappearancemgr.cpp
# indra/newview/llappearancemgr.h
# indra/newview/llavatarpropertiesprocessor.cpp
# indra/newview/llavatarpropertiesprocessor.h
# indra/newview/llbreadcrumbview.cpp
# indra/newview/llbreadcrumbview.h
# indra/newview/llbreastmotion.cpp
# indra/newview/llbreastmotion.h
# indra/newview/llconversationmodel.h
# indra/newview/lldensityctrl.cpp
# indra/newview/lldensityctrl.h
# indra/newview/llface.inl
# indra/newview/llfloatereditsky.cpp
# indra/newview/llfloatereditwater.cpp
# indra/newview/llfloateremojipicker.h
# indra/newview/llfloaterimsessiontab.cpp
# indra/newview/llfloaterprofiletexture.cpp
# indra/newview/llfloaterprofiletexture.h
# indra/newview/llgesturemgr.cpp
# indra/newview/llgesturemgr.h
# indra/newview/llimpanel.cpp
# indra/newview/llimpanel.h
# indra/newview/llinventorybridge.cpp
# indra/newview/llinventorybridge.h
# indra/newview/llinventoryclipboard.cpp
# indra/newview/llinventoryclipboard.h
# indra/newview/llinventoryfunctions.cpp
# indra/newview/llinventoryfunctions.h
# indra/newview/llinventorygallery.cpp
# indra/newview/lllistbrowser.cpp
# indra/newview/lllistbrowser.h
# indra/newview/llpanelobjectinventory.cpp
# indra/newview/llpanelprofile.cpp
# indra/newview/llpanelprofile.h
# indra/newview/llpreviewgesture.cpp
# indra/newview/llsavedsettingsglue.cpp
# indra/newview/llsavedsettingsglue.h
# indra/newview/lltooldraganddrop.cpp
# indra/newview/llurllineeditorctrl.cpp
# indra/newview/llvectorperfoptions.cpp
# indra/newview/llvectorperfoptions.h
# indra/newview/llviewerparceloverlay.cpp
# indra/newview/llviewertexlayer.cpp
# indra/newview/llviewertexturelist.cpp
# indra/newview/macmain.h
# indra/test/test.cpp
Diffstat (limited to 'indra/llcharacter/llvisualparam.h')
-rw-r--r-- | indra/llcharacter/llvisualparam.h | 370 |
1 files changed, 185 insertions, 185 deletions
diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index 9cbb3962f4..83f2269ea1 100644 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h @@ -1,185 +1,185 @@ -/** - * @file llvisualparam.h - * @brief Implementation of LLPolyMesh class. - * - * $LicenseInfo:firstyear=2001&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_LLVisualParam_H -#define LL_LLVisualParam_H - -#include "v3math.h" -#include "llstring.h" -#include "llxmltree.h" -#include <boost/function.hpp> - -class LLPolyMesh; -class LLXmlTreeNode; - -enum ESex -{ - SEX_FEMALE = 0x01, - SEX_MALE = 0x02, - SEX_BOTH = 0x03 // values chosen to allow use as a bit field. -}; - -enum EVisualParamGroup -{ - VISUAL_PARAM_GROUP_TWEAKABLE, - VISUAL_PARAM_GROUP_ANIMATABLE, - VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT, - VISUAL_PARAM_GROUP_TRANSMIT_NOT_TWEAKABLE, // deprecated params that used to be tweakable. - NUM_VISUAL_PARAM_GROUPS -}; - -enum EParamLocation -{ - LOC_UNKNOWN, - LOC_AV_SELF, - LOC_AV_OTHER, - LOC_WEARABLE -}; - -const std::string param_location_name(const EParamLocation& loc); - -const S32 MAX_TRANSMITTED_VISUAL_PARAMS = 255; - -//----------------------------------------------------------------------------- -// LLVisualParamInfo -// Contains shared data for VisualParams -//----------------------------------------------------------------------------- -class LLVisualParamInfo -{ - friend class LLVisualParam; -public: - LLVisualParamInfo(); - virtual ~LLVisualParamInfo() {}; - - virtual bool parseXml(LLXmlTreeNode *node); - - S32 getID() const { return mID; } - - virtual void toStream(std::ostream &out); - -protected: - S32 mID; // ID associated with VisualParam - - std::string mName; // name (for internal purposes) - std::string mDisplayName; // name displayed to the user - std::string mMinName; // name associated with minimum value - std::string mMaxName; // name associated with maximum value - EVisualParamGroup mGroup; // morph group for separating UI controls - F32 mMinWeight; // minimum weight that can be assigned to this morph target - F32 mMaxWeight; // maximum weight that can be assigned to this morph target - F32 mDefaultWeight; - ESex mSex; // Which gender(s) this param applies to. -}; - -//----------------------------------------------------------------------------- -// LLVisualParam -// VIRTUAL CLASS -// An interface class for a generalized parametric modification of the avatar mesh -// Contains data that is specific to each Avatar -//----------------------------------------------------------------------------- -LL_ALIGN_PREFIX(16) -class LLVisualParam -{ -public: - typedef boost::function<LLVisualParam*(S32)> visual_param_mapper; - - LLVisualParam(); - virtual ~LLVisualParam(); - - // Special: These functions are overridden by child classes - // (They can not be virtual because they use specific derived Info classes) - LLVisualParamInfo* getInfo() const { return mInfo; } - // This sets mInfo and calls initialization functions - bool setInfo(LLVisualParamInfo *info); - - // Virtual functions - // Pure virtuals - //virtual bool parseData( LLXmlTreeNode *node ) = 0; - virtual void apply( ESex avatar_sex ) = 0; - // Default functions - virtual void setWeight(F32 weight); - virtual void setAnimationTarget( F32 target_value); - virtual void animate(F32 delta); - virtual void stopAnimating(); - - virtual bool linkDrivenParams(visual_param_mapper mapper, bool only_cross_params); - virtual void resetDrivenParams(); - - // Interface methods - S32 getID() const { return mID; } - void setID(S32 id) { llassert(!mInfo); mID = id; } - - const std::string& getName() const { return mInfo->mName; } - const std::string& getDisplayName() const { return mInfo->mDisplayName; } - const std::string& getMaxDisplayName() const { return mInfo->mMaxName; } - const std::string& getMinDisplayName() const { return mInfo->mMinName; } - - void setDisplayName(const std::string& s) { mInfo->mDisplayName = s; } - void setMaxDisplayName(const std::string& s) { mInfo->mMaxName = s; } - void setMinDisplayName(const std::string& s) { mInfo->mMinName = s; } - - EVisualParamGroup getGroup() const { return mInfo->mGroup; } - F32 getMinWeight() const { return mInfo->mMinWeight; } - F32 getMaxWeight() const { return mInfo->mMaxWeight; } - F32 getDefaultWeight() const { return mInfo->mDefaultWeight; } - ESex getSex() const { return mInfo->mSex; } - - F32 getWeight() const { return mIsAnimating ? mTargetWeight : mCurWeight; } - F32 getCurrentWeight() const { return mCurWeight; } - F32 getLastWeight() const { return mLastWeight; } - void setLastWeight(F32 val) { mLastWeight = val; } - bool isAnimating() const { return mIsAnimating; } - bool isTweakable() const { return (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) || (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT); } - - LLVisualParam* getNextParam() { return mNext; } - void setNextParam( LLVisualParam *next ); - void clearNextParam(); - - virtual void setAnimating(bool is_animating) { mIsAnimating = is_animating && !mIsDummy; } - bool getAnimating() const { return mIsAnimating; } - - void setIsDummy(bool is_dummy) { mIsDummy = is_dummy; } - - void setParamLocation(EParamLocation loc); - EParamLocation getParamLocation() const { return mParamLocation; } - -protected: - LLVisualParam(const LLVisualParam& pOther); - - F32 mCurWeight; // current weight - F32 mLastWeight; // last weight - LLVisualParam* mNext; // next param in a shared chain - F32 mTargetWeight; // interpolation target - bool mIsAnimating; // this value has been given an interpolation target - bool mIsDummy; // this is used to prevent dummy visual params from animating - - - S32 mID; // id for storing weight/morphtarget compares compactly - LLVisualParamInfo *mInfo; - EParamLocation mParamLocation; // where does this visual param live? -} LL_ALIGN_POSTFIX(16); - -#endif // LL_LLVisualParam_H +/**
+ * @file llvisualparam.h
+ * @brief Implementation of LLPolyMesh class.
+ *
+ * $LicenseInfo:firstyear=2001&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_LLVisualParam_H
+#define LL_LLVisualParam_H
+
+#include "v3math.h"
+#include "llstring.h"
+#include "llxmltree.h"
+#include <boost/function.hpp>
+
+class LLPolyMesh;
+class LLXmlTreeNode;
+
+enum ESex
+{
+ SEX_FEMALE = 0x01,
+ SEX_MALE = 0x02,
+ SEX_BOTH = 0x03 // values chosen to allow use as a bit field.
+};
+
+enum EVisualParamGroup
+{
+ VISUAL_PARAM_GROUP_TWEAKABLE,
+ VISUAL_PARAM_GROUP_ANIMATABLE,
+ VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT,
+ VISUAL_PARAM_GROUP_TRANSMIT_NOT_TWEAKABLE, // deprecated params that used to be tweakable.
+ NUM_VISUAL_PARAM_GROUPS
+};
+
+enum EParamLocation
+{
+ LOC_UNKNOWN,
+ LOC_AV_SELF,
+ LOC_AV_OTHER,
+ LOC_WEARABLE
+};
+
+const std::string param_location_name(const EParamLocation& loc);
+
+const S32 MAX_TRANSMITTED_VISUAL_PARAMS = 255;
+
+//-----------------------------------------------------------------------------
+// LLVisualParamInfo
+// Contains shared data for VisualParams
+//-----------------------------------------------------------------------------
+class LLVisualParamInfo
+{
+ friend class LLVisualParam;
+public:
+ LLVisualParamInfo();
+ virtual ~LLVisualParamInfo() {};
+
+ virtual bool parseXml(LLXmlTreeNode *node);
+
+ S32 getID() const { return mID; }
+
+ virtual void toStream(std::ostream &out);
+
+protected:
+ S32 mID; // ID associated with VisualParam
+
+ std::string mName; // name (for internal purposes)
+ std::string mDisplayName; // name displayed to the user
+ std::string mMinName; // name associated with minimum value
+ std::string mMaxName; // name associated with maximum value
+ EVisualParamGroup mGroup; // morph group for separating UI controls
+ F32 mMinWeight; // minimum weight that can be assigned to this morph target
+ F32 mMaxWeight; // maximum weight that can be assigned to this morph target
+ F32 mDefaultWeight;
+ ESex mSex; // Which gender(s) this param applies to.
+};
+
+//-----------------------------------------------------------------------------
+// LLVisualParam
+// VIRTUAL CLASS
+// An interface class for a generalized parametric modification of the avatar mesh
+// Contains data that is specific to each Avatar
+//-----------------------------------------------------------------------------
+LL_ALIGN_PREFIX(16)
+class LLVisualParam
+{
+public:
+ typedef boost::function<LLVisualParam*(S32)> visual_param_mapper;
+
+ LLVisualParam();
+ virtual ~LLVisualParam();
+
+ // Special: These functions are overridden by child classes
+ // (They can not be virtual because they use specific derived Info classes)
+ LLVisualParamInfo* getInfo() const { return mInfo; }
+ // This sets mInfo and calls initialization functions
+ bool setInfo(LLVisualParamInfo *info);
+
+ // Virtual functions
+ // Pure virtuals
+ //virtual bool parseData( LLXmlTreeNode *node ) = 0;
+ virtual void apply( ESex avatar_sex ) = 0;
+ // Default functions
+ virtual void setWeight(F32 weight);
+ virtual void setAnimationTarget( F32 target_value);
+ virtual void animate(F32 delta);
+ virtual void stopAnimating();
+
+ virtual bool linkDrivenParams(visual_param_mapper mapper, bool only_cross_params);
+ virtual void resetDrivenParams();
+
+ // Interface methods
+ S32 getID() const { return mID; }
+ void setID(S32 id) { llassert(!mInfo); mID = id; }
+
+ const std::string& getName() const { return mInfo->mName; }
+ const std::string& getDisplayName() const { return mInfo->mDisplayName; }
+ const std::string& getMaxDisplayName() const { return mInfo->mMaxName; }
+ const std::string& getMinDisplayName() const { return mInfo->mMinName; }
+
+ void setDisplayName(const std::string& s) { mInfo->mDisplayName = s; }
+ void setMaxDisplayName(const std::string& s) { mInfo->mMaxName = s; }
+ void setMinDisplayName(const std::string& s) { mInfo->mMinName = s; }
+
+ EVisualParamGroup getGroup() const { return mInfo->mGroup; }
+ F32 getMinWeight() const { return mInfo->mMinWeight; }
+ F32 getMaxWeight() const { return mInfo->mMaxWeight; }
+ F32 getDefaultWeight() const { return mInfo->mDefaultWeight; }
+ ESex getSex() const { return mInfo->mSex; }
+
+ F32 getWeight() const { return mIsAnimating ? mTargetWeight : mCurWeight; }
+ F32 getCurrentWeight() const { return mCurWeight; }
+ F32 getLastWeight() const { return mLastWeight; }
+ void setLastWeight(F32 val) { mLastWeight = val; }
+ bool isAnimating() const { return mIsAnimating; }
+ bool isTweakable() const { return (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) || (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT); }
+
+ LLVisualParam* getNextParam() { return mNext; }
+ void setNextParam( LLVisualParam *next );
+ void clearNextParam();
+
+ virtual void setAnimating(bool is_animating) { mIsAnimating = is_animating && !mIsDummy; }
+ bool getAnimating() const { return mIsAnimating; }
+
+ void setIsDummy(bool is_dummy) { mIsDummy = is_dummy; }
+
+ void setParamLocation(EParamLocation loc);
+ EParamLocation getParamLocation() const { return mParamLocation; }
+
+protected:
+ LLVisualParam(const LLVisualParam& pOther);
+
+ F32 mCurWeight; // current weight
+ F32 mLastWeight; // last weight
+ LLVisualParam* mNext; // next param in a shared chain
+ F32 mTargetWeight; // interpolation target
+ bool mIsAnimating; // this value has been given an interpolation target
+ bool mIsDummy; // this is used to prevent dummy visual params from animating
+
+
+ S32 mID; // id for storing weight/morphtarget compares compactly
+ LLVisualParamInfo *mInfo;
+ EParamLocation mParamLocation; // where does this visual param live?
+} LL_ALIGN_POSTFIX(16);
+
+#endif // LL_LLVisualParam_H
|