Nodes - Support dynamic children in data model node

This commit is contained in:
Robert committed 2021-08-25 20:40:24 +02:00
1 parent bd3bf20d92
commit 4fbd229846
9 files changed
+165 -76

No files matched your search

@@ -60,7 +60,7 @@ namespace Artemis.Core
if (!IsEnabled)
return;
// TODO: Update the base node
// TODO: Update the 'base value' node
Script.Run();
}
@@ -77,7 +77,7 @@ namespace Artemis.Core
if (_disposed)
throw new ObjectDisposedException("DataBinding");
if (Properties.Any(d => d.DisplayName == displayName))
throw new ArtemisCoreException($"A databinding property named '{displayName}' is already registered.");
throw new ArtemisCoreException($"A data binding property named '{displayName}' is already registered.");
DataBindingProperty<TProperty> property = new(getter, setter, displayName);
_properties.Add(property);
@@ -110,6 +110,8 @@ namespace Artemis.Core
if (disposing)
{
_disposed = true;
_isEnabled = false;
Script.Dispose();
}
}
@@ -365,6 +365,31 @@ namespace Artemis.Core
Entity.DataModelId = DataModelId;
}
#region Equality members
/// <inheritdoc cref="Equals(object)"/>>
protected bool Equals(DataModelPath other)
{
return ReferenceEquals(Target, other.Target) && Path == other.Path;
}
/// <inheritdoc />
public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((DataModelPath) obj);
}
/// <inheritdoc />
public override int GetHashCode()
{
return HashCode.Combine(Target, Path);
}
#endregion
#endregion
}
}
@@ -295,7 +295,10 @@ namespace Artemis.Core
private void DynamicChildOnDynamicChildAdded(object? sender, DynamicDataModelChildEventArgs e)
{
if (e.Key == Identifier)
{
DataModelPath.Invalidate();
DataModelPath.Initialize();
}
}
private void DynamicChildOnDynamicChildRemoved(object? sender, DynamicDataModelChildEventArgs e)