Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions ArrayEditing/ArrayEditing.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ internal sealed class ArrayEditor {

private static bool _skipListChanges = false;

private static void AddCurveValueProxying<T>(SyncArray<CurveKey<T>> array, SyncElementList<ValueGradientDriver<T>.Point> list)
private static void AddCurveValueProxying<T>(SyncArrayBase<CurveKey<T>> array, SyncElementList<ValueGradientDriver<T>.Point> list)
where T : IEquatable<T> {
foreach (var key in array) {
var point = list.Add();
Expand All @@ -62,7 +62,8 @@ private static void AddCurveValueProxying<T>(SyncArray<CurveKey<T>> array, SyncE

if (!_skipListChanges) {
array.Changed -= ArrayChanged;
array.Insert(buffer, startIndex);
array.CheckWriteIndex(startIndex);
array.InternalWrite(buffer, startIndex, 0, buffer.Length, true);
array.Changed += ArrayChanged;
}

Expand All @@ -78,7 +79,7 @@ private static void AddCurveValueProxying<T>(SyncArray<CurveKey<T>> array, SyncE
};
}

private static void AddLinearValueProxying<T>(SyncArray<LinearKey<T>> array, SyncElementList<ValueGradientDriver<T>.Point> list)
private static void AddLinearValueProxying<T>(SyncArrayBase<LinearKey<T>> array, SyncElementList<ValueGradientDriver<T>.Point> list)
where T : IEquatable<T> {
foreach (var key in array) {
var point = list.Add();
Expand All @@ -94,7 +95,8 @@ private static void AddLinearValueProxying<T>(SyncArray<LinearKey<T>> array, Syn

if (!_skipListChanges) {
array.Changed -= ArrayChanged;
array.Insert(buffer, startIndex);
array.CheckWriteIndex(startIndex);
array.InternalWrite(buffer, startIndex, 0, buffer.Length, true);
array.Changed += ArrayChanged;
}
AddUpdateProxies(array, list, addedElements);
Expand Down Expand Up @@ -199,15 +201,15 @@ private static void AddTubePointProxying(SyncArray<TubePoint> array, SyncElement
};
}

private static void AddUpdateProxies<T>(SyncArray<LinearKey<T>> array,
private static void AddUpdateProxies<T>(SyncArrayBase<LinearKey<T>> array,
SyncElementList<ValueGradientDriver<T>.Point> list, IEnumerable<ValueGradientDriver<T>.Point> elements)
where T : IEquatable<T> {
foreach (var point in elements) {
point.Changed += syncObject => {
if (_skipListChanges) return;
var index = list.IndexOfElement(point);
array.Changed -= ArrayChanged;
array[index] = new LinearKey<T>(point.Position, point.Value);
array.SetElement(index, new LinearKey<T>(point.Position, point.Value));
array.Changed += ArrayChanged;
};
}
Expand Down Expand Up @@ -252,15 +254,15 @@ private static void AddUpdateProxies(SyncArray<TubePoint> array, SyncElementList
}
}

private static void AddUpdateProxies<T>(SyncArray<CurveKey<T>> array,
private static void AddUpdateProxies<T>(SyncArrayBase<CurveKey<T>> array,
SyncElementList<ValueGradientDriver<T>.Point> list, IEnumerable<ValueGradientDriver<T>.Point> elements)
where T : IEquatable<T> {
foreach (var point in elements) {
point.Changed += syncObject => {
if (_skipListChanges) return;
var index = list.IndexOfElement(point);
array.Changed -= ArrayChanged;
array[index] = new CurveKey<T>(point.Position, point.Value, array[index].leftTangent, array[index].rightTangent);
array.SetElement(index, new CurveKey<T>(point.Position, point.Value, array.GetElement(index).leftTangent, array.GetElement(index).rightTangent));
array.Changed += ArrayChanged;
};
}
Expand All @@ -270,7 +272,7 @@ private static bool Prefix(ISyncArray array, string name, FieldInfo fieldInfo, U
if (!Config.GetValue(Enabled)) {
return true; //Run original when disabled
}
if (!TryGetGenericParameter(typeof(SyncArray<>), array.GetType(), out var arrayType))
if (!TryGetGenericParameter(typeof(SyncArrayBase<>), array.GetType(), out var arrayType))
return false;

ui.Panel().Slot.GetComponent<LayoutElement>();
Expand Down