Browse Source

Added max message count to Activity Messages

James Peret 2 years ago
parent
commit
b860effd2b

+ 19 - 0
Runtime/ActivityMessages/ActivityMessageController.cs

@@ -25,6 +25,7 @@ namespace KairoEngine.UI.ActivityMessages
         [BoxGroup("Settings")] public bool startVisible = false;
         [BoxGroup("Settings")] public int defaultGroupIndex = 0;
         [BoxGroup("Settings")] public int defaultPrefabIndex = 0;
+        [BoxGroup("Settings")] public bool removeOldMessages = true;
 
         [PropertySpace(4,4)]
         public List<ActivityMessageGroup> groups = new List<ActivityMessageGroup>();
@@ -155,6 +156,7 @@ namespace KairoEngine.UI.ActivityMessages
             GameObject obj = Instantiate(prefabs[prefabIndex].prefab, groups[groupIndex].container);
             ActivityMessageUi msgUi = obj.GetComponent<ActivityMessageUi>();
             activeMessages.Add(msgUi);
+            if(removeOldMessages) RemoveOldMessages(groupIndex);
             return msgUi;
         }
 
@@ -193,5 +195,22 @@ namespace KairoEngine.UI.ActivityMessages
             }
             return defaultPrefabIndex;
         }
+
+        public void RemoveOldMessages(int groupIndex)
+        {
+            if(groups[groupIndex].container.childCount > groups[groupIndex].maxVisibleMessages)
+            {
+                int n = groups[groupIndex].container.childCount - groups[groupIndex].maxVisibleMessages;
+                for (int i = 0; i < n; i++)
+                {
+                    Destroy(groups[groupIndex].container.GetChild(0).gameObject);
+                }
+            }
+            if(groups[groupIndex].messages.Count > groups[groupIndex].maxHistoryMessages)
+            {
+                int n = groups[groupIndex].messages.Count - groups[groupIndex].maxHistoryMessages;
+                groups[groupIndex].messages.RemoveRange(0, n);
+            }
+        }
     }
 }

+ 4 - 0
Runtime/ActivityMessages/ActivityMessageGroup.cs

@@ -13,6 +13,10 @@ namespace KairoEngine.UI.ActivityMessages
 
         [FoldoutGroup("@title"), Tooltip("The container that will hold the activity message GameObjects in this group.")]
         public Transform container;
+
+        [FoldoutGroup("@title"), LabelText("Max Visible")] public int maxVisibleMessages = 100;
+        [FoldoutGroup("@title"), LabelText("Max History")] public int maxHistoryMessages = 250;
+
         [FoldoutGroup("@title"), PropertySpace(4,0)] public List<ActivityMessage> messages;
     }
 }