internal List <IDependency> GetPortalDependencies(IEdgePortalModel parent) { if (!m_PortalDependenciesByNode.TryGetValue(parent.Guid, out var link)) { return(null); } return(link.Values.ToList()); }
/// <inheritdoc /> public virtual IEnumerable <IEdgePortalModel> GetLinkedPortals(IEdgePortalModel portalModel) { if (portalModel != null) { return(portalModel.GraphModel.FindReferencesInGraph <IEdgePortalModel>(portalModel.DeclarationModel)); } return(Enumerable.Empty <IEdgePortalModel>()); }
/// <inheritdoc /> public virtual IEnumerable <IEdgePortalModel> GetPortalDependencies(IEdgePortalModel portalModel) { if (portalModel is IEdgePortalEntryModel edgePortalModel) { return(edgePortalModel.GraphModel.FindReferencesInGraph <IEdgePortalExitModel>(edgePortalModel.DeclarationModel)); } return(Enumerable.Empty <IEdgePortalModel>()); }
public void AddPortalDependency(IEdgePortalModel model) { var stencil = model.GraphModel.Stencil; // Update all portals linked to this portal definition. foreach (var portalModel in stencil.GetLinkedPortals(model)) { m_PortalDependenciesByNode[portalModel.Guid] = stencil.GetPortalDependencies(portalModel) .ToDictionary(p => p.Guid, p => (IDependency) new PortalNodesDependency { DependentNode = p }); } LogDependencies(); }
public static IEdgePortalModel CreateOppositePortal(this IGraphModel self, IEdgePortalModel edgePortalModel, SpawnFlags spawnFlags = SpawnFlags.Default) { var offset = Vector2.zero; switch (edgePortalModel) { case IEdgePortalEntryModel _: offset = k_PortalOffset; break; case IEdgePortalExitModel _: offset = -k_PortalOffset; break; } var currentPos = edgePortalModel.Position; return(self.CreateOppositePortal(edgePortalModel, currentPos + offset, spawnFlags)); }
public static IGraphElement CreateEdgePortal(this ElementBuilder elementBuilder, IStore store, IEdgePortalModel model) { var ui = new Token(); ui.Setup(model, store, elementBuilder.GraphView); return(ui); }
public static IModelUI CreateEdgePortal(this ElementBuilder elementBuilder, CommandDispatcher commandDispatcher, IEdgePortalModel model) { var ui = new TokenNode(); ui.SetupBuildAndUpdate(model, commandDispatcher, elementBuilder.View, elementBuilder.Context); return(ui); }
public static GraphElement CreateEdgePortal(this INodeBuilder builder, Store store, IEdgePortalModel model) { GetTokenPorts(store, model, out var input, out var output, Orientation.Horizontal); return(new Token(model, store, input, output, builder.GraphView)); }