diff --git a/ArrayEditing/ArrayEditing.csproj b/ArrayEditing/ArrayEditing.csproj index 737d5dc..2cedb9d 100644 --- a/ArrayEditing/ArrayEditing.csproj +++ b/ArrayEditing/ArrayEditing.csproj @@ -9,7 +9,7 @@ ArrayEditing Array Editing Banane9, Nytra - 1.0.0 + 1.0.1 Adds proxy list UI for editing arrays in inspectors. Also improves the look of list UI a bit. LGPL-3.0-or-later https://github.com/ResoniteModdingGroup/ArrayEditing @@ -36,18 +36,18 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/ArrayEditing/ArrayEditor.cs b/ArrayEditing/ArrayEditor.cs index a424623..329e89b 100644 --- a/ArrayEditing/ArrayEditor.cs +++ b/ArrayEditing/ArrayEditor.cs @@ -21,7 +21,6 @@ internal sealed class ArrayEditor : ResoniteCancelableEventHandlerMonkey(SyncArray array, SyncElementList< }; } - private static void AddParticleBurstListProxying(SyncArray> array, SyncElementList.Point> list) - { - foreach (var burst in array) - { - var point = list.Add(); - point.Position.Value = burst.time; - point.Value.Value = new int2(burst.value.minCount, burst.value.maxCount); - } - - AddUpdateProxies(array, list, list.Elements); - - list.ElementsAdded += (list, startIndex, count) => - { - var addedElements = list.Elements.Skip(startIndex).Take(count).ToArray(); - var buffer = addedElements.Select(point => new LinearKey(point.Position, new ParticleBurst() { minCount = point.Value.Value.x, maxCount = point.Value.Value.y })).ToArray(); - - if (!_skipListChanges) - { - array.Changed -= ArrayChanged; - array.Insert(buffer, startIndex); - array.Changed += ArrayChanged; - } - AddUpdateProxies(array, list, addedElements); - }; - - list.ElementsRemoved += (list, startIndex, count) => - { - if (_skipListChanges) return; - if (array.Count < startIndex + count) return; - array.Changed -= ArrayChanged; - array.Remove(startIndex, count); - array.Changed += ArrayChanged; - }; - } - private static void AddTubePointProxying(SyncArray array, SyncElementList.Point> list) { foreach (var tubePoint in array) @@ -271,23 +235,6 @@ private static void AddUpdateProxies(SyncArray> array, } } - private static void AddUpdateProxies(SyncArray> array, - SyncElementList.Point> list, IEnumerable.Point> elements) - { - foreach (var point in elements) - { - point.Changed += field => - { - if (_skipListChanges) return; - var index = list.IndexOfElement(point); - var key = new LinearKey(point.Position, new ParticleBurst() { minCount = point.Value.Value.x, maxCount = point.Value.Value.y }); - array.Changed -= ArrayChanged; - array[index] = key; - array.Changed += ArrayChanged; - }; - } - } - private static void AddUpdateProxies(SyncArray array, SyncElementList> list, IEnumerable> elements) where T : IEquatable { @@ -366,11 +313,6 @@ private static bool BuildArray(ISyncArray array, string name, FieldInfo fieldInf var syncLinearType = syncLinearGenericParameters?.First(); var syncCurveType = syncCurveGenericParameters?.First(); - var isParticleBurst = syncLinearType == _particleBurstType; - - if (isSyncLinear && isParticleBurst) - syncLinearType = typeof(int2); - var proxySlotName = $"{name}-{array.ReferenceID}-Proxy"; var proxiesSlot = ui.World.AssetsSlot; var newProxy = false; @@ -395,10 +337,7 @@ private static bool BuildArray(ISyncArray array, string name, FieldInfo fieldInf if (attachedNew) { - if (isParticleBurst) - AddParticleBurstListProxying((SyncArray>)array, (SyncElementList.Point>)list); - else - _addLinearValueProxying.MakeGenericMethod(syncLinearType).Invoke(null, [array, list]); + _addLinearValueProxying.MakeGenericMethod(syncLinearType).Invoke(null, [array, list]); } } else if (isSyncCurve && SupportsLerp(syncCurveType!)) @@ -494,13 +433,6 @@ void ArrayDriveCheck(IChangeable changeable) return true; } - // doesn't work? - static void SetParticlePoint(ValueGradientDriver.Point point, LinearKey arrayElem) - { - point.Position.Value = arrayElem.time; - point.Value.Value = new int2(arrayElem.value.minCount, arrayElem.value.maxCount); - } - static void SetLinearPoint(ValueGradientDriver.Point point, LinearKey arrayElem) where T : IEquatable { point.Position.Value = arrayElem.time; @@ -569,7 +501,6 @@ static void ArrayChanged(IChangeable changeable) var isSyncCurve = TryGetGenericParameters(typeof(SyncCurve<>), array.GetType(), out var syncCurveGenericParameters); var syncLinearType = syncLinearGenericParameters?.First(); var syncCurveType = syncCurveGenericParameters?.First(); - var isParticleBurst = syncLinearType == _particleBurstType; if (!TryGetGenericParameters(typeof(SyncArray<>), array.GetType(), out var genericParameters)) return; @@ -582,10 +513,7 @@ static void ArrayChanged(IChangeable changeable) if (isSyncLinear && SupportsLerp(syncLinearType!)) { - if (isParticleBurst) - SetParticlePoint((ValueGradientDriver.Point)elem!, (LinearKey)array.GetElement(i)); - else - _setLinearPoint.MakeGenericMethod(syncLinearType).Invoke(null, [elem, array.GetElement(i)]); + _setLinearPoint.MakeGenericMethod(syncLinearType).Invoke(null, [elem, array.GetElement(i)]); } else if (isSyncCurve && SupportsLerp(syncCurveType!)) {