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();
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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));
        }