summaryrefslogtreecommitdiff
path: root/indra/newview/llavatarrendernotifier.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llavatarrendernotifier.h')
-rw-r--r--indra/newview/llavatarrendernotifier.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/indra/newview/llavatarrendernotifier.h b/indra/newview/llavatarrendernotifier.h
new file mode 100644
index 0000000000..2a2704de28
--- /dev/null
+++ b/indra/newview/llavatarrendernotifier.h
@@ -0,0 +1,84 @@
+/**
+ * @file llavatarrendernotifier.h
+ * @author andreykproductengine
+ * @date 2015-08-05
+ * @brief
+ *
+ * $LicenseInfo:firstyear=2013&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2013, 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$
+ */
+
+#if ! defined(LL_llavatarrendernotifier_H)
+#define LL_llavatarrendernotifier_H
+
+#include "llnotificationptr.h"
+
+class LLViewerRegion;
+
+// Class to notify user about drastic changes in agent's render weights or if other agents
+// reported that user's agent is too 'heavy' for their settings
+class LLAvatarRenderNotifier : public LLSingleton<LLAvatarRenderNotifier>
+{
+public:
+ LLAvatarRenderNotifier();
+
+ void displayNotification(bool show_over_limit);
+ bool isNotificationVisible();
+
+ void updateNotificationRegion(U32 agentcount, U32 overLimit);
+ void updateNotificationState();
+ void updateNotificationAgent(U32 agentComplexity);
+
+private:
+
+ LLNotificationPtr mNotificationPtr;
+
+ // to prevent notification from popping up too often, show it only
+ // if certain amount of time passed since previous notification
+ LLFrameTimer mPopUpDelayTimer;
+
+ // values since last notification for comparison purposes
+ U32 mAgentsCount;
+ U32 mOverLimitAgents;
+ U32 mAgentComplexity;
+ F32 mOverLimitPct;
+
+ // last reported values
+ U32 mLatestAgentsCount;
+ U32 mLatestOverLimitAgents;
+ U32 mLatestAgentComplexity;
+ F32 mLatestOverLimitPct;
+
+ bool mShowOverLimitAgents;
+ std::string overLimitMessage();
+
+ // initial outfit related variables (state control)
+ bool mNotifyOutfitLoading;
+
+ // COF (inventory folder) and Skeleton (voavatar) are used to spot changes in outfit.
+ S32 mLastCofVersion;
+ S32 mLastSkeletonSerialNum;
+ // Used to detect changes in voavatar's rezzed status.
+ // If value decreases - there were changes in outfit.
+ S32 mLastOutfitRezStatus;
+};
+
+#endif /* ! defined(LL_llavatarrendernotifier_H) */