/// <inheritdoc/> protected override void VisitObjectNode([NotNull] IAssetObjectNode objectNode, int inNonIdentifiableType) { foreach (var index in objectNode.GetOverriddenItemIndices()) { var id = objectNode.IndexToId(index); var itemPath = ConvertPath(CurrentPath, inNonIdentifiableType); itemPath.PushItemId(id); Result.Set(itemPath, ((IAssetObjectNodeInternal)objectNode).GetItemOverride(index)); } foreach (var index in objectNode.GetOverriddenKeyIndices()) { var id = objectNode.IndexToId(index); var itemPath = ConvertPath(CurrentPath, inNonIdentifiableType); itemPath.PushIndex(id); Result.Set(itemPath, ((IAssetObjectNodeInternal)objectNode).GetKeyOverride(index)); } }
/// <inheritdoc/> protected override void VisitObjectNode([NotNull] IAssetObjectNode objectNode, int inNonIdentifiableType) { if (!objectNode.IsReference) { return; } foreach (var index in ((IAssetObjectNodeInternal)objectNode).Indices) { if (!propertyGraphDefinition.IsTargetItemObjectReference(objectNode, index, objectNode.Retrieve(index))) { continue; } var itemPath = ConvertPath(CurrentPath, inNonIdentifiableType); if (CollectionItemIdHelper.HasCollectionItemIds(objectNode.Retrieve())) { var itemId = objectNode.IndexToId(index); itemPath.PushItemId(itemId); } else { itemPath.PushIndex(index.Value); } var value = objectNode.Retrieve(index) as IIdentifiable; if (value == null) { throw new InvalidOperationException("IsObjectReference returned true for an object that is not IIdentifiable"); } var id = value.Id; if (ShouldOutputReference?.Invoke(id) ?? true) { Result.Set(itemPath, id); } } }
public AssetRootNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] IAssetObjectNode rootNode) : base(factory, propertyProvider, rootNode) { }
public NodesToOwnerPartVisitor([NotNull] AssetPropertyGraphDefinition propertyGraphDefinition, [NotNull] INodeContainer nodeContainer, object ownerPart) : base(propertyGraphDefinition) { ownerPartNode = (IAssetObjectNode)nodeContainer.GetOrCreateNode(ownerPart); }
/// <summary> /// Visits a node that is an <see cref="IAssetObjectNode"/>. /// </summary> /// <param name="objectNode">The node to visit.</param> /// <param name="inNonIdentifiableType"></param> protected abstract void VisitObjectNode(IAssetObjectNode objectNode, int inNonIdentifiableType);
public AssetItemNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] INodePresenter parent, [NotNull] IAssetObjectNode container, Index index) : base(factory, propertyProvider, parent, container, index) { }