private VisualizationNodeData AddNodeCacheForNode(string id, string type)
        {
            string key = NodeDependencyLookupUtility.GetNodeKey(id, type);

            if (!_cachedVisualizationNodeDatas.ContainsKey(key))
            {
                INodeHandler nodeHandler = GetNodeHandlerForType(type);
                ITypeHandler typeHandler = GetTypeHandlerForType(type);

                VisualizationNodeData data = typeHandler.CreateNodeCachedData(id);
                _nodeDependencyLookupContext.NodeHandlerLookup = GetNodeHandlerLookup();

                if (_showThumbnails || DisplayData.ShowAdditionalInformation)
                {
                    data.OwnSize       = NodeDependencyLookupUtility.GetNodeSize(true, false, id, type, new HashSet <string>(), _nodeDependencyLookupContext, _cachedSizes);
                    data.HierarchySize = NodeDependencyLookupUtility.GetNodeSize(true, true, id, type, new HashSet <string>(), _nodeDependencyLookupContext, _cachedSizes);
                }

                data.Id   = id;
                data.Type = type;

                data.NodeHandler = nodeHandler;
                data.TypeHandler = typeHandler;

                data.Name          = typeHandler.GetName(id);
                data.IsEditorAsset = nodeHandler.IsNodeEditorOnly(id, type);
                data.IsPackedToApp = NodeDependencyLookupUtility.IsNodePackedToApp(id, type, _nodeDependencyLookupContext, new HashSet <string>());

                _cachedVisualizationNodeDatas.Add(key, data);
            }

            return(_cachedVisualizationNodeDatas[key]);
        }
Beispiel #2
0
        public Pathfinder(INodeHandler nodeHandler)
        {
            this.nodeHandler = nodeHandler;

            this.g        = new Dictionary <INode, double>();
            this.f        = new Dictionary <INode, double>();
            this.cameFrom = new Dictionary <INode, INode>();
            this.open     = new PriorityQueue <INode>();
        }
Beispiel #3
0
 public WorkFlowNodeRequire Load(INodeHandler handler)
 {
     this.Handler     = handler;
     this.Key         = this.Handler.GetType().GetCustomAttribute <KeyAttribute>()?.KeyValue;
     this.RequrieName = this.Handler.GetType().GetCustomAttribute <NodeRequireAttribute>()?.Names;
     if (string.IsNullOrEmpty(Key) || this.RequrieName == null || !this.RequrieName.Any())
     {
         return(null);
     }
     return(this);
 }
        private void CreateNodeHandlers()
        {
            _nodeHandlerStates.Clear();

            List <Type> types = NodeDependencyLookupUtility.GetTypesForBaseType(typeof(INodeHandler));

            foreach (Type type in types)
            {
                INodeHandler nodeHandler = NodeDependencyLookupUtility.InstantiateClass <INodeHandler>(type);
                _nodeHandlerStates.Add(new NodeHandlerState(nodeHandler));
            }
        }
Beispiel #5
0
        public static int GetNodeSize(bool own, bool tree, string id, string type, HashSet <string> traversedNodes,
                                      NodeDependencyLookupContext stateContext, Dictionary <string, int> ownSizeCache = null)
        {
            if (ownSizeCache == null)
            {
                ownSizeCache = new Dictionary <string, int>();
            }

            string key = GetNodeKey(id, type);

            if (traversedNodes.Contains(key) || !stateContext.NodeHandlerLookup.ContainsKey(type))
            {
                return(0);
            }

            traversedNodes.Add(key);

            int size = 0;

            INodeHandler nodeHandler = stateContext.NodeHandlerLookup[type];

            if (own && (!tree || nodeHandler.ContributesToTreeSize()))
            {
                if (!ownSizeCache.ContainsKey(key))
                {
                    ownSizeCache[key] = nodeHandler.GetOwnFileSize(id, type, stateContext);
                }

                size += ownSizeCache[key];
            }

            if (tree)
            {
                Node node = stateContext.RelationsLookup.GetNode(id, type);

                if (node != null)
                {
                    foreach (Connection connection in node.GetRelations(RelationType.DEPENDENCY))
                    {
                        if (stateContext.ConnectionTypeLookup.GetDependencyType(connection.Type).IsHard)
                        {
                            Node childNode = connection.Node;
                            size += GetNodeSize(true, true, childNode.Id, childNode.Type, traversedNodes, stateContext, ownSizeCache);
                        }
                    }
                }
            }

            return(size);
        }
Beispiel #6
0
        public void SetHandler(string nodeType, INodeHandler nodeHandler)
        {
            if (nodeHandlers == null)
            {
                nodeHandlers = new Dictionary <string, INodeHandler>();
            }

            if (nodeHandlers.ContainsKey(nodeType))
            {
                nodeHandlers[nodeType] = nodeHandler;
            }
            else
            {
                nodeHandlers.Add(nodeType, nodeHandler);
            }
        }
Beispiel #7
0
        /// <summary>
        /// Right now this only works if the asset or one of its parents (referencers) are in a packaged scene or in a resources folder.
        /// If the asset is just in a bundle this is currently not tracked. Trying to find a solution for this.
        /// </summary>
        public static bool IsNodePackedToApp(string id, string type, NodeDependencyLookupContext stateContext,
                                             HashSet <string> visitedKeys)
        {
            if (visitedKeys.Contains(id))
            {
                return(false);
            }

            visitedKeys.Add(id);

            Node node = stateContext.RelationsLookup.GetNode(id, type);

            if (node == null)
            {
                return(false);
            }

            foreach (KeyValuePair <string, INodeHandler> pair in stateContext.NodeHandlerLookup)
            {
                INodeHandler nodeHandler = pair.Value;

                if (nodeHandler.GetHandledNodeTypes().Contains(type) && nodeHandler.IsNodePackedToApp(id, type))
                {
                    return(true);
                }
            }

            foreach (Connection connection in node.Referencers)
            {
                Node refNode = connection.Node;

                if (!stateContext.ConnectionTypeLookup.GetDependencyType(connection.Type).IsIndirect&&
                    IsNodePackedToApp(refNode.Id, refNode.Type, stateContext, visitedKeys))
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #8
0
 public RegexReplaceHandler(INodeHandler NodeHandler)
 {
     this.nodeHandler = NodeHandler;
 }
Beispiel #9
0
 public ProcessNode(INodeHandler nodeHandler)
 {
     NodeHandler = nodeHandler;
 }
Beispiel #10
0
        private void tvProjects_AfterSelect(object sender, TreeViewEventArgs e)
        {
            INodeHandler handler = e.Node.Tag as INodeHandler;

            if (handler != null)
            {
                if (handler.IsFirstClick)
                {
                    handler.OnFirstClick();
                }
                else
                {
                    handler.OnClick();
                }
            }
            splitContainer1.Panel2.Controls.Clear();

            IDeleteable del = handler as IDeleteable;

            tsbtnDelete.Enabled = false;
            if (del != null)
            {
                tsbtnDelete.Enabled     = true;
                tsbtnDelete.ToolTipText = del.TitleOfDelete;
                menuProject.Items.Add(del.TitleOfDelete, actImgs.Images["delete"], cmDelete_Click);
            }

            IAddable add = handler as IAddable;

            tsbtnAdd.Enabled = false;
            if (add != null)
            {
                tsbtnAdd.Enabled     = true;
                tsbtnAdd.ToolTipText = add.TitleOfAdd;
                menuProject.Items.Add(add.TitleOfAdd, actImgs.Images["add"], cmAdd_Click);
            }

            IReloadable reload = handler as IReloadable;

            tsbtnReload.Enabled = false;
            if (reload != null)
            {
                tsbtnReload.Enabled = true;
            }

            ITestable test = handler as ITestable;

            tsbtnTest.Enabled = false;
            if (test != null)
            {
                tsbtnTest.Image   = actImgs.Images[test.TestImageKey];
                tsbtnTest.Enabled = true;
            }

            IRenameable rename = handler as IRenameable;

            tsbtnRename.Enabled = false;
            if (rename != null)
            {
                tsbtnRename.Enabled = true;
            }

            IExportable export = handler as IExportable;

            tsbtnExport.Enabled = false;
            if (export != null)
            {
                tsbtnExport.Enabled = true;
            }

            ISetupable setup = handler as ISetupable;

            cmSetup.Enabled = false;
            if (setup != null)
            {
                cmSetup.Enabled = true;
            }

            IDeployable deploy = handler as IDeployable;

            cmDeploy.Enabled = false;
            if (deploy != null)
            {
                cmDeploy.Enabled = true;
            }

            IDeployToPhysical phyDeploy = handler as IDeployToPhysical;

            tsbtnDeployToPhysical.Enabled = false;
            if (phyDeploy != null)
            {
                tsbtnDeployToPhysical.Enabled = true;
            }

            IImportFromPhysical phyImport = handler as IImportFromPhysical;

            tsbtnImportFromPhysical.Enabled = false;
            if (phyImport != null)
            {
                tsbtnImportFromPhysical.Enabled = true;
            }

            IImportable import = handler as IImportable;

            tsbtnImport.Enabled = false;
            if (import != null)
            {
                tsbtnImport.Enabled = true;
            }

            IJoinProject joinProject = handler as IJoinProject;

            tsbtnJoinProject.Enabled = false;
            if (joinProject != null)
            {
                tsbtnJoinProject.Enabled = true;
            }

            ILeaveProject leaveProject = handler as ILeaveProject;

            tsbtnLeaveProject.Enabled = false;
            if (leaveProject != null)
            {
                tsbtnLeaveProject.Enabled = true;
            }

            ISyncUpload syncUplaod = handler as ISyncUpload;

            cmUpload.Enabled = false;
            if (syncUplaod != null)
            {
                cmUpload.Enabled = true;
            }

            ISyncUpload syncDownload = handler as ISyncUpload;

            cmDownload.Enabled = false;
            if (syncDownload != null)
            {
                cmDownload.Enabled = true;
            }

            tsEditMode.Items.Clear();
            rsbtnSave.Enabled = false;
            IEditorManager manager = handler as IEditorManager;

            if (manager != null)
            {
                rsbtnSave.Enabled = false;
                foreach (IEditable editable in manager.Editors)
                {
                    ToolStripItem item = tsEditMode.Items.Add(editable.ModeTitle, actImgs.Images[editable.ImageKey], cmEdit_Click);
                    item.ToolTipText = editable.ModeTitle;
                    item.Text        = string.Empty;
                    item.Tag         = editable;
                }
            }
        }
Beispiel #11
0
 public NodeDragService(INodeHandler nodeHandler, IJSRuntime jsRuntime)
 {
     this.nodeHandler = nodeHandler;
     this.jsRuntime   = jsRuntime;
     jsRuntime.InvokeVoidAsync("addDotNetSingletonService", "DotNetNodeDragService", DotNetObjectReference.Create(this));
 }
Beispiel #12
0
 public NodeDragService(INodeHandler nodeHandler, IJSRuntime jsRuntime)
 {
     this.nodeHandler = nodeHandler;
     this.jsRuntime   = jsRuntime;
     //jsRuntime.InvokeAsync<object>("initNodeDropHandler", DotNetObjectRef.Create(this));
 }
Beispiel #13
0
 public NodeDragService(INodeHandler nodeHandler, IJSRuntime jsRuntime)
 {
     this.nodeHandler = nodeHandler;
     this.jsRuntime   = jsRuntime;
 }
 public NodeHandlerState(INodeHandler nodeHandler)
 {
     NodeHandler = nodeHandler;
 }