maint: added livewatch asset

This commit is contained in:
Chris
2025-08-31 18:14:07 -04:00
parent 7f5d95787b
commit ae2371a6fa
385 changed files with 150792 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
using UnityEngine;
namespace Ingvar.LiveWatch
{
public class WatchVariableSortUpdater
{
public const float InitialOrderStep = 0.0001f;
public void TrySortByVariable(WatchVariable variable)
{
if (!variable.RuntimeMeta.IsSortingRequired)
return;
SortWatches(variable.Parent == null ? Watch.Watches : variable.Parent.Childs);
}
public void SortWatches(WatchStorage storage)
{
if (storage.SortedNames.Count <= 1)
return;
storage.IsSortable = true;
var previousDefaultOrder = 0f;
for (var i = 0; i < storage.SortedNames.Count - 1; i++)
{
for (var j = i + 1; j < storage.SortedNames.Count; j++)
{
if (GetSortOrder(i) > GetSortOrder(j))
ReplaceVariables(i, j);
}
}
float GetSortOrder(int index)
{
var runtimeMeta = storage.Get(storage.SortedNames[index]).RuntimeMeta;
runtimeMeta.IsSortingRequired = false;
if (!runtimeMeta.IsOrderSet && Mathf.Abs(runtimeMeta.SortOrder) < InitialOrderStep / 2f)
{
runtimeMeta.SortOrder = previousDefaultOrder + InitialOrderStep;
previousDefaultOrder = runtimeMeta.SortOrder;
}
return runtimeMeta.SortOrder;
}
void ReplaceVariables(int index1, int index2)
{
var tempStr = storage.SortedNames[index1];
storage.SortedNames[index1] = storage.SortedNames[index2];
storage.SortedNames[index2] = tempStr;
}
}
}
}