Beispiel #1
0
        private void OnGUI()
        {
            // Initiation
            NodeEditor.checkInit(true);
            if (NodeEditor.InitiationError)
            {
                GUILayout.Label("Node Editor Initiation failed! Check console for more information!");
                return;
            }
            AssureEditor();
            AssureCanvas();

            // Specify the Canvas rect in the EditorState
            mainEditorState.canvasRect = canvasWindowRect;
            // If you want to use GetRect:
//			Rect canvasRect = GUILayoutUtility.GetRect (600, 600);
//			if (Event.current.type != EventType.Layout)
//				mainEditorState.canvasRect = canvasRect;
            NodeEditorGUI.StartNodeGUI();

            // Perform drawing with error-handling
            try
            {
                NodeEditor.DrawCanvas(mainNodeCanvas, mainEditorState);
            }
            catch (UnityException e)
            {             // on exceptions in drawing flush the canvas to avoid locking the ui.
                NewNodeCanvas();
                NodeEditor.ReInit(true);
                Debug.LogError("Unloaded Canvas due to an exception during the drawing phase!");
                Debug.LogException(e);
            }

            // Draw Side Window
            sideWindowWidth = Math.Min(600, Math.Max(200, (int)(position.width / 5)));
            GUILayout.BeginArea(sideWindowRect, GUI.skin.box);
            DrawSideWindow();
            GUILayout.EndArea();

            NodeEditorGUI.EndNodeGUI();
        }
Beispiel #2
0
        private void OnGUI()
        {
            // Initiation
            NodeEditor.checkInit(true);
            if (NodeEditor.InitiationError)
            {
                GUILayout.Label("Node Editor Initiation failed! Check console for more information!");
                return;
            }
            AssureEditor();
            AssureSetup();

            // ROOT: Start Overlay GUI for popups
            OverlayGUI.StartOverlayGUI("NodeEditorWindow");

            // Begin Node Editor GUI and set canvas rect
            NodeEditorGUI.StartNodeGUI(true);
            canvasCache.editorState.canvasRect = canvasWindowRect;

            try
            {             // Perform drawing with error-handling
                NodeEditor.DrawCanvas(canvasCache.nodeCanvas, canvasCache.editorState);
            }
            catch (UnityException e)
            {             // On exceptions in drawing flush the canvas to avoid locking the UI
                canvasCache.NewNodeCanvas();
                NodeEditor.ReInit(true);
                Debug.LogError("Unloaded Canvas due to an exception during the drawing phase!");
                Debug.LogException(e);
            }

            // Draw Interface
            editorInterface.DrawToolbarGUI(new Rect(0, 0, Screen.width, 0));
            editorInterface.DrawModalPanel();

            // End Node Editor GUI
            NodeEditorGUI.EndNodeGUI();

            // END ROOT: End Overlay GUI and draw popups
            OverlayGUI.EndOverlayGUI();
        }
Beispiel #3
0
        private void OnGUI()
        {
            // Initiation
            NodeEditor.checkInit(true);
            if (NodeEditor.InitiationError)
            {
                GUILayout.Label("Node Editor Initiation failed! Check console for more information!");
                return;
            }
            AssureSetup();

            // Set various nested groups
            GUI.BeginGroup(rootRect, GUI.skin.box);

            // Begin Node Editor GUI and set canvas rect
            NodeEditorGUI.StartNodeGUI(false);
            canvasCache.editorState.canvasRect = new Rect(canvasRect.x, canvasRect.y + NodeEditorInterface.toolbarHeight, canvasRect.width, canvasRect.height - NodeEditorInterface.toolbarHeight);

            try
            {             // Perform drawing with error-handling
                NodeEditor.DrawCanvas(canvasCache.nodeCanvas, canvasCache.editorState);
            }
            catch (UnityException e)
            {             // On exceptions in drawing flush the canvas to avoid locking the UI
                canvasCache.NewNodeCanvas();
                NodeEditor.ReInit(true);
                Debug.LogError("Unloaded Canvas due to exception in Draw!");
                Debug.LogException(e);
            }

            // Draw Interface
            editorInterface.DrawToolbarGUI(canvasRect);

            // End Node Editor GUI
            NodeEditorGUI.EndNodeGUI();

            // End various nested groups
            GUI.EndGroup();
        }
        private void OnGUI()
        {
/*
 *          if (NodeEditor.curEditorState == null)
 *          {
 *              Debug.Log("OnGUI::TWWindow has no editor state " + NodeEditor.curEditorState+"actual editor state "+ canvasCache.editorState);
 *          }
 *          else if (NodeEditor.curEditorState.selectedNode == null)
 *          {
 *              Debug.Log("OnGUI::TWWindow has no Selected Node " + NodeEditor.curEditorState);
 *          }
 *          else
 *          {
 *              Debug.Log("OnGUI:: Selected Node " + NodeEditor.curEditorState.selectedNode);
 *          }
 */
            // Initiation
            NodeEditor.checkInit(true);
            if (NodeEditor.InitiationError)
            {
                GUILayout.Label("Node Editor Initiation failed! Check console for more information!");
                return;
            }
            AssureEditor();
            canvasCache.AssureCanvas();

            // Specify the Canvas rect in the EditorState
            canvasCache.editorState.canvasRect = canvasWindowRect;
            // If you want to use GetRect:
            //			Rect canvasRect = GUILayoutUtility.GetRect (600, 600);
            //			if (Event.current.type != EventType.Layout)
            //				mainEditorState.canvasRect = canvasRect;
            NodeEditorGUI.StartNodeGUI();

            // Perform drawing with error-handling
            try
            {
                NodeEditor.DrawCanvas(canvasCache.nodeCanvas, canvasCache.editorState);
            }
            catch (UnityException e)
            { // on exceptions in drawing flush the canvas to avoid locking the ui.
                canvasCache.NewNodeCanvas();
                NodeEditor.ReInit(true);
                Debug.LogError("Unloaded Canvas due to an exception during the drawing phase!");
                Debug.LogException(e);
            }



            // Draw Side Window
            //sideWindowWidth = Math.Min(600, Math.Max(200, (int)(position.width / 5)));
            //GUILayout.BeginArea(sideWindowRect, GUI.skin.box);
            //DrawSideWindow();
            //GUILayout.EndArea();


            NodeEditorGUI.EndNodeGUI();
//            if (Event.current.type == EventType.Repaint)
//                m_InspectorWindow.Repaint();

/*
 *          //if (Event.current.type == EventType.Repaint)
 *          {
 *              if (mainEditorState.selectedNode != mainEditorState.wantselectedNode)
 *              {
 *                  mainEditorState.selectedNode = mainEditorState.wantselectedNode;
 *                  NodeEditor.RepaintClients();
 *                  Repaint();
 *              }
 *
 *          }
 */
            if (!m_Docked)
            {
                Docker.Dock(this, m_InspectorWindow, Docker.DockPosition.Right);
                Docker.Dock(this, m_NodeSelectionWindow, Docker.DockPosition.Left);
                m_Docked = true;
            }
        }
        /// <summary>
        /// Called only if RequiresLocationGUI is true.
        /// Displays GUI filling in locationArgs with the information necessary to locate the import operation.
        /// Override along with RequiresLocationGUI for custom database access.
        /// Return true or false to perform or cancel the import operation.
        /// </summary>
        public virtual bool?ImportLocationArgsGUI(ref object[] locationArgs)
        {
            GUILayout.Label("Import canvas " + FormatIdentifier);
            GUILayout.BeginHorizontal();
            //GUILayout.Label(RuntimeIOPath, GUILayout.ExpandWidth(true));
            if (GUILayout.Button(string.IsNullOrEmpty(fileSelection)? "Select..." : fileSelection, GUILayout.ExpandWidth(true)))
            {
                // Find save files
                if (RuntimeIOPath == null)
                {
                    return(false);
                }

                Debug.Log(RuntimeIOPath);
                DirectoryInfo dir          = Directory.CreateDirectory(RuntimeIOPath);
                FileInfo[]    taskdata     = dir.GetFiles("*.taskdata");
                FileInfo[]    dialoguedata = dir.GetFiles("*.dialoguedata");
                FileInfo[]    sectordata   = dir.GetFiles("*.sectordata");
                currentMin = 0;
                files      = new List <FileInfo>();
                files.AddRange(taskdata);
                files.AddRange(dialoguedata);
                files.AddRange(sectordata);
                // Fill save file selection menu
                GenericMenu fileSelectionMenu = new GenericMenu(false);
                for (int i = currentMin; i < Mathf.Min(currentMin + limit, files.Count); i++)
                {
                    int x = i;
                    fileSelectionMenu.AddItem(new GUIContent(files[i].Name), false, () =>
                    {
                        if (files[x].Name.Contains("taskdata"))
                        {
                            NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Mission;
                        }
                        if (files[x].Name.Contains("dialoguedata"))
                        {
                            NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Dialogue;
                        }
                        if (files[x].Name.Contains("sectordata"))
                        {
                            NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Sector;
                        }
                        fileSelection = Path.GetFileName(files[x].Name);
                        NodeEditorGUI.Init();
                    });
                }
                fileSelectionMenu.DropDown(fileSelectionMenuRect);
                fileSelectionMenuRect.height = 500;
                width = fileSelectionMenuRect.width;
            }
            if (Event.current.type == EventType.Repaint)
            {
                Rect popupPos = GUILayoutUtility.GetLastRect();
                fileSelectionMenuRect = new Rect(popupPos.x + 2, popupPos.yMax + 2, popupPos.width - 4, 500);
            }
            else if (files != null && Event.current.delta != Vector2.zero && Event.current.isScrollWheel)
            {
                if (Event.current.delta.y > 0)
                {
                    currentMin = Mathf.Min(currentMin + 3, files.Count - (Mathf.Min(files.Count, limit)));
                }
                else
                {
                    currentMin = Mathf.Max(0, currentMin - 3);
                }
                GenericMenu fileSelectionMenu = new GenericMenu(false);
                for (int i = currentMin; i < Mathf.Min(currentMin + limit, files.Count); i++)
                {
                    int x = i;
                    fileSelectionMenu.AddItem(new GUIContent(files[i].Name), false, () =>
                    {
                        if (files[x].Name.Contains("taskdata"))
                        {
                            NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Mission;
                        }
                        if (files[x].Name.Contains("dialoguedata"))
                        {
                            NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Dialogue;
                        }
                        if (files[x].Name.Contains("sectordata"))
                        {
                            NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Sector;
                        }
                        fileSelection = Path.GetFileName(files[x].Name);
                        NodeEditorGUI.Init();
                    });
                }
                fileSelectionMenu.DropDown(fileSelectionMenuRect, width);
                fileSelectionMenuRect.height = 500;
                width = fileSelectionMenuRect.width;
            }

            // Finish operation buttons
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Cancel"))
            {
                return(false);
            }
            if (GUILayout.Button("Import"))
            {
                if (string.IsNullOrEmpty(fileSelection) || !File.Exists(RuntimeIOPath + "\\" + fileSelection))
                {
                    Debug.Log(RuntimeIOPath + "\\" + fileSelection);
                    return(false);
                }
                fileSelection = Path.GetFileName(fileSelection);
                locationArgs  = new object[] { RuntimeIOPath + "\\" + fileSelection };
                return(true);
            }
            GUILayout.EndHorizontal();

            return(null);
        }
                private void RenderLinks(float scale, NodeEditorField highlightedField)
                {
                    Vector2 mousePosition = Event.current.mousePosition;

                    foreach (NodeEditorGUI node in _editableObjects)
                    {
                        if (node.HasOutput())
                        {
                            bool highlighted = false;

                            if (_dragMode == eDragType.NotDragging)
                            {
                                Vector2 toField = mousePosition - node.GetOutputField()._position;
                                highlighted = toField.magnitude < kLinkIconWidth;
                                SetNeedsRepaint();
                            }

                            RenderLinkIcon(node.GetOutputField()._position, kOutputLinkIconColor, scale, highlighted);
                        }

                        foreach (NodeEditorField nodeInputField in node.GetInputFields())
                        {
                            Color color;

                            if (_dragMode == eDragType.Custom &&
                                (nodeInputField._type != _draggingNodeFieldFrom._type && !_draggingNodeFieldFrom._type.IsAssignableFrom(nodeInputField._type)))
                            {
                                color = kUnusableLinkIconColor;
                            }
                            else
                            {
                                color = kInputLinkIconColor;
                            }

                            bool highlighted = nodeInputField == highlightedField;

                            if (_dragMode == eDragType.NotDragging)
                            {
                                Vector2 toField = mousePosition - nodeInputField._position;
                                highlighted = toField.magnitude < kLinkIconWidth;
                                SetNeedsRepaint();
                            }

                            RenderStaticValueBox(nodeInputField, nodeInputField._position, kUnusableLinkIconColor, scale);
                            RenderLinkIcon(nodeInputField._position, color, scale, highlighted);
                        }
                    }

                    foreach (NodeEditorGUI node in _editableObjects)
                    {
                        foreach (NodeEditorField nodeInputField in node.GetInputFields())
                        {
                            if (_dragMode != eDragType.Custom || _draggingNodeFieldTo != nodeInputField)
                            {
                                int linkedOutputNodeId = GetNodeInputFieldLinkNodeId(nodeInputField);

                                if (linkedOutputNodeId != -1)
                                {
                                    NodeEditorGUI outputNode = GetEditableObject(linkedOutputNodeId);

                                    if (outputNode != null && outputNode.HasOutput())
                                    {
                                        RenderLink(outputNode.GetOutputField()._position, nodeInputField._position, _dragMode == eDragType.Custom ? Color.Lerp(kLinkLineColor, Color.black, 0.3f) : kLinkLineColor, scale);
                                    }
                                }
                            }
                        }
                    }

                    if (_dragMode == eDragType.Custom)
                    {
                        //Instead of rendering current dragging link, render it to mouse position
                        RenderLink(_draggingNodeFieldFrom._position, Event.current.mousePosition, kLinkLineColor, scale, true);
                    }
                }
                protected override void OnLeftMouseDown(Event inputEvent)
                {
                    //Check for clicking on a link
                    NodeEditorField clickedOnNodeFromField = null;
                    NodeEditorField clickedOnNodeToField   = null;

                    for (int i = 0; i < _editableObjects.Count && clickedOnNodeFromField == null; i++)
                    {
                        NodeEditorGUI node = (NodeEditorGUI)_editableObjects[i];

                        if (node.GetOutputField() != null)
                        {
                            Vector2 toField = inputEvent.mousePosition - node.GetOutputField()._position;

                            if (toField.magnitude < kLinkIconWidth * 0.5f)
                            {
                                clickedOnNodeFromField = node.GetOutputField();
                                break;
                            }
                        }

                        foreach (NodeEditorField nodeInputField in node.GetInputFields())
                        {
                            //If has an link going into it we can drag it away
                            int linkNodeId = GetNodeInputFieldLinkNodeId(nodeInputField);

                            if (linkNodeId != -1)
                            {
                                NodeEditorGUI linkedNode = GetEditableObject(linkNodeId);

                                if (linkedNode != null)
                                {
                                    Vector2 toField = inputEvent.mousePosition - nodeInputField._position;

                                    if (toField.magnitude < kLinkIconWidth)
                                    {
                                        clickedOnNodeFromField = linkedNode.GetOutputField();
                                        clickedOnNodeToField   = nodeInputField;
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    if (clickedOnNodeFromField != null)
                    {
                        _draggingNodeFieldFrom = clickedOnNodeFromField;
                        _draggingNodeFieldTo   = clickedOnNodeToField;
                        _dragMode     = eDragType.Custom;
                        _dragPos      = inputEvent.mousePosition;
                        _dragAreaRect = new Rect(-1.0f, -1.0f, 0.0f, 0.0f);
                    }
                    //Normal object clicking
                    else
                    {
                        _dragMode = eDragType.LeftClick;

                        base.OnLeftMouseDown(inputEvent);
                    }
                }
        private void OnGUI()
        {
            if (wwwShader1 != null)
            {
                if (wwwShader1.isDone)
                {
                    string pathShader = "Assets/TextureWang/Shaders/TextureOps.shader";
                    pathShader = pathShader.Replace("/", "" + Path.DirectorySeparatorChar);

                    File.WriteAllBytes(pathShader, wwwShader1.bytes);
                    AssetDatabase.ImportAsset(pathShader, ImportAssetOptions.ForceSynchronousImport);
                    wwwShader1 = null;
                }
                Repaint();
                Debug.Log("repaint 2");
            }

            if (canvasCache.nodeCanvas.m_PreviewAnimation)
            {
                if (m_SW == null)
                {
                    m_SW = Stopwatch.StartNew();
                }
                m_AnimValue += (m_SW.ElapsedMilliseconds - m_LastTime) / 3000.0f;
                if (m_AnimValue < 0)
                {
                    m_AnimValue = 0;
                }
                m_LastTime = m_SW.ElapsedMilliseconds;
                if (m_AnimValue > 1.0f)
                {
                    m_AnimValue = 0.0f;
                }
                foreach (var x in canvasCache.nodeCanvas.nodes)
                {
                    if (x is InputNodeAnimated)
                    {
                        var ina = x as InputNodeAnimated;
                        ina.m_Value.Set(m_AnimValue);
                    }
                }
                NodeEditor.RecalculateAll(canvasCache.nodeCanvas);
                Repaint();
                Debug.Log("repaint 3");
            }
            else
            {
                m_AnimValue = 0;
            }

            if (m_ReplaceNode != null && !OverlayGUI.HasPopupControl() && ms_InputInfo != null)
            {
                NodeEditorInputSystem.ShowContextMenu(ms_InputInfo);
                ms_InputInfo = null;
            }

/*
 *          if (NodeEditor.curEditorState == null)
 *          {
 *              Debug.Log("OnGUI::TWWindow has no editor state " + NodeEditor.curEditorState+"actual editor state "+ canvasCache.editorState);
 *          }
 *          else if (NodeEditor.curEditorState.selectedNode == null)
 *          {
 *              Debug.Log("OnGUI::TWWindow has no Selected Node " + NodeEditor.curEditorState);
 *          }
 *          else
 *          {
 *              Debug.Log("OnGUI:: Selected Node " + NodeEditor.curEditorState.selectedNode);
 *          }
 */
            // Initiation
            NodeEditor.checkInit(true);
            if (NodeEditor.InitiationError)
            {
                GUILayout.Label("Node Editor Initiation failed! Check console for more information!");
                return;
            }
            AssureEditor();
            canvasCache.AssureCanvas();

            // Specify the Canvas rect in the EditorState
            canvasCache.editorState.canvasRect = canvasWindowRect;
            // If you want to use GetRect:
            //			Rect canvasRect = GUILayoutUtility.GetRect (600, 600);
            //			if (Event.current.type != EventType.Layout)
            //				mainEditorState.canvasRect = canvasRect;
            NodeEditorGUI.StartNodeGUI();

            // Perform drawing with error-handling
            try
            {
                if ((Event.current.keyCode >= KeyCode.A && Event.current.keyCode <= KeyCode.Z) || Event.current.keyCode == KeyCode.Escape)
                {
                    if (Event.current.keyCode == KeyCode.Escape)
                    {
                        PopupMenu.m_NameFilter = "";
                    }
                    else
                    {
                        int    ascii = ((int)Event.current.keyCode - (int)KeyCode.A) + 65;
                        string c     = Char.ConvertFromUtf32(ascii);
                        PopupMenu.m_NameFilter = c;
                    }

                    Debug.Log("m_NameFilter " + PopupMenu.m_NameFilter);
                    OverlayGUI.currentPopup = null;
                    NodeEditorInputInfo inputInfo = new NodeEditorInputInfo(canvasCache.editorState);

                    NodeEditorInputSystem.ShowContextMenu(inputInfo);
                }
                NodeEditor.DrawCanvas(canvasCache.nodeCanvas, canvasCache.editorState);


                if (canvasCache.editorState.selectedNode != null)
                {
                    if (canvasCache.editorState.selectedNode is TextureNode)
                    {
                        var tn = canvasCache.editorState.selectedNode as TextureNode;
                        if (tn.m_RequestRepaint)
                        {
                            tn.m_RequestRepaint = false;
                            Debug.Log("repaint 1");
                            Repaint();
                            m_InspectorWindow.Repaint();
                        }
                    }
                }


                if (wwwShader1 != null)
                {
                    GUI.Label(new Rect(100, 100, 500, 200), "One Time Shader Download in progress...");
                }
            }
            catch (UnityException e)
            { // on exceptions in drawing flush the canvas to avoid locking the ui.
                canvasCache.NewNodeCanvas();
                NodeEditor.ReInit(true);
                Debug.LogError("Unloaded Canvas due to an exception during the drawing phase!");
                Debug.LogException(e);
            }
            if (m_PostOnLoadCanvasFixup != null)
            {
//                m_PostOnLoadCanvasFixup.PostOnLoadCanvasFixup();
                m_PostOnLoadCanvasFixup = null;
            }


            // Draw Side Window
            //sideWindowWidth = Math.Min(600, Math.Max(200, (int)(position.width / 5)));
            //GUILayout.BeginArea(sideWindowRect, GUI.skin.box);
            //DrawSideWindow();
            //GUILayout.EndArea();


            NodeEditorGUI.EndNodeGUI();
//            if (Event.current.type == EventType.Repaint)
//                m_InspectorWindow.Repaint();

/*
 *          //if (Event.current.type == EventType.Repaint)
 *          {
 *              if (mainEditorState.selectedNode != mainEditorState.wantselectedNode)
 *              {
 *                  mainEditorState.selectedNode = mainEditorState.wantselectedNode;
 *                  NodeEditor.RepaintClients();
 *                  Repaint();
 *              }
 *
 *          }
 */

            if (!m_Docked && m_DockedRetry++ < 100 && m_InspectorWindow != null && m_NodeSelectionWindow != null)
            {
                try
                {
                    m_DockedRetry++;
                    Docker.Dock(this, m_InspectorWindow, Docker.DockPosition.Right);
                    Docker.Dock(this, m_NodeSelectionWindow, Docker.DockPosition.Left);
                }
                catch (Exception ex)
                {
                    Debug.LogError(" Dock failed " + ex);
                }
                m_Docked = true;
            }
        }
Beispiel #9
0
        protected internal override void DrawConnections()
        {
            CheckNodeKnobMigration();
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }
            foreach (NodeOutput output in Outputs)
            {
                if (output == null)
                {
                    continue;
                }
                Vector2 startPos = output.GetGUIKnob().center;
                Vector2 startDir = output.GetDirection();

                foreach (NodeInput input in output.connections)
                {
                    if (input != null)
                    {
                        if (input.typeID == "Float")
                        {
                            NodeEditorGUI.DrawConnection(startPos,
                                                         startDir,
                                                         input.GetGUIKnob().center,
                                                         input.GetDirection(),
                                                         Color.cyan);
                        }
                        else
                        if (m_TexMode == TexMode.Greyscale)
                        {
                            NodeEditorGUI.DrawConnection(startPos,
                                                         startDir,
                                                         input.GetGUIKnob().center,
                                                         input.GetDirection(),
                                                         Color.red);
                        }
                        else
                        if (m_TexMode != TexMode.Greyscale)
                        {
                            NodeEditorGUI.DrawConnection(startPos + new Vector2(0, -3),
                                                         startDir,
                                                         input.GetGUIKnob().center + new Vector2(0, -3),
                                                         input.GetDirection(),
                                                         Color.red);

                            NodeEditorGUI.DrawConnection(startPos + new Vector2(0, 0),
                                                         startDir,
                                                         input.GetGUIKnob().center + new Vector2(0, 0),
                                                         input.GetDirection(),
                                                         Color.green);
                            NodeEditorGUI.DrawConnection(startPos + new Vector2(0, 3),
                                                         startDir,
                                                         input.GetGUIKnob().center + new Vector2(0, 3),
                                                         input.GetDirection(),
                                                         Color.blue);
                        }


                        //                        EditorGUI.LabelField(new Rect(input.GetGUIKnob().center-new Vector2(50,20), new Vector2(200, 50)), input.name);
                    }
                }
            }
            foreach (var input in Inputs)
            {
                if (input != null)
                {
                    EditorGUI.LabelField(new Rect(input.GetGUIKnob().center - new Vector2(50, 20), new Vector2(200, 50)), input.name);
                }
            }
        }
        private void OnGUI()
        {
            if (wwwShader1 != null)
            {
                if (wwwShader1.isDone)
                {
                    string pathShader = "Assets/TextureWang/Shaders/TextureOps.shader";
                    pathShader = pathShader.Replace("/", "" + Path.DirectorySeparatorChar);

                    File.WriteAllBytes(pathShader, wwwShader1.bytes);
                    AssetDatabase.ImportAsset(pathShader, ImportAssetOptions.ForceSynchronousImport);
                    wwwShader1 = null;
                }
                Repaint();
            }


            if (m_ReplaceNode != null && !OverlayGUI.HasPopupControl() && ms_InputInfo != null)
            {
                NodeEditorInputSystem.ShowContextMenu(ms_InputInfo);
                ms_InputInfo = null;
            }

/*
 *          if (NodeEditor.curEditorState == null)
 *          {
 *              Debug.Log("OnGUI::TWWindow has no editor state " + NodeEditor.curEditorState+"actual editor state "+ canvasCache.editorState);
 *          }
 *          else if (NodeEditor.curEditorState.selectedNode == null)
 *          {
 *              Debug.Log("OnGUI::TWWindow has no Selected Node " + NodeEditor.curEditorState);
 *          }
 *          else
 *          {
 *              Debug.Log("OnGUI:: Selected Node " + NodeEditor.curEditorState.selectedNode);
 *          }
 */
            // Initiation
            NodeEditor.checkInit(true);
            if (NodeEditor.InitiationError)
            {
                GUILayout.Label("Node Editor Initiation failed! Check console for more information!");
                return;
            }
            AssureEditor();
            canvasCache.AssureCanvas();

            // Specify the Canvas rect in the EditorState
            canvasCache.editorState.canvasRect = canvasWindowRect;
            // If you want to use GetRect:
            //			Rect canvasRect = GUILayoutUtility.GetRect (600, 600);
            //			if (Event.current.type != EventType.Layout)
            //				mainEditorState.canvasRect = canvasRect;
            NodeEditorGUI.StartNodeGUI();

            // Perform drawing with error-handling
            try
            {
                NodeEditor.DrawCanvas(canvasCache.nodeCanvas, canvasCache.editorState);


                if (canvasCache.editorState.selectedNode != null)
                {
                    if (canvasCache.editorState.selectedNode is TextureNode)
                    {
                        var tn = canvasCache.editorState.selectedNode as TextureNode;
                        if (tn.m_RequestRepaint)
                        {
                            tn.m_RequestRepaint = false;
                            Repaint();
                            m_InspectorWindow.Repaint();
                        }
                    }
                }
                if (wwwShader1 != null)
                {
                    GUI.Label(new Rect(100, 100, 500, 200), "One Time Shader Download in progress...");
                }
            }
            catch (UnityException e)
            { // on exceptions in drawing flush the canvas to avoid locking the ui.
                canvasCache.NewNodeCanvas();
                NodeEditor.ReInit(true);
                Debug.LogError("Unloaded Canvas due to an exception during the drawing phase!");
                Debug.LogException(e);
            }
            if (m_PostOnLoadCanvasFixup != null)
            {
//                m_PostOnLoadCanvasFixup.PostOnLoadCanvasFixup();
                m_PostOnLoadCanvasFixup = null;
            }


            // Draw Side Window
            //sideWindowWidth = Math.Min(600, Math.Max(200, (int)(position.width / 5)));
            //GUILayout.BeginArea(sideWindowRect, GUI.skin.box);
            //DrawSideWindow();
            //GUILayout.EndArea();


            NodeEditorGUI.EndNodeGUI();
//            if (Event.current.type == EventType.Repaint)
//                m_InspectorWindow.Repaint();

/*
 *          //if (Event.current.type == EventType.Repaint)
 *          {
 *              if (mainEditorState.selectedNode != mainEditorState.wantselectedNode)
 *              {
 *                  mainEditorState.selectedNode = mainEditorState.wantselectedNode;
 *                  NodeEditor.RepaintClients();
 *                  Repaint();
 *              }
 *
 *          }
 */

            if (!m_Docked && m_DockedRetry++ < 100 && m_InspectorWindow != null && m_NodeSelectionWindow != null)
            {
                try
                {
                    m_DockedRetry++;
                    Docker.Dock(this, m_InspectorWindow, Docker.DockPosition.Right);
                    Docker.Dock(this, m_NodeSelectionWindow, Docker.DockPosition.Left);
                }
                catch (Exception ex)
                {
                    Debug.LogError(" Dock failed " + ex);
                }
                m_Docked = true;
            }
        }
        private void OnGUI()
        {
            GUI.enabled = !ShowTutorial;
            NodeEditor.NoBuildShader = false;

            if (Event.current.type == EventType.MouseUp && Event.current.button == 0)
            {
                if (NodeEditor.AutoUpdate)
                {
                    NodeEditor.RecalculateFlag = true;
                }
            }

            NodeEditor.checkInit(true);
            if (NodeEditor.InitiationError)
            {
                GUILayout.Label("Shadero Sprite Shader Editor Initiation failed! Check console for more information!");
                return;
            }
            AssureEditor();
            canvasCache.AssureCanvas();

            canvasCache.editorState.canvasRect = canvasWindowRect;

            NodeEditorGUI.StartNodeGUI();

            try
            {
                NodeEditor.DrawCanvas(canvasCache.nodeCanvas, canvasCache.editorState);
            }
            catch (UnityException e)
            { canvasCache.NewNodeCanvas();
              NodeEditor.ReInit(true);
              Debug.LogError("Unloaded Canvas due to an exception during the drawing phase!");
              Debug.LogException(e); }



            if (NodeEditor.NoBuildShader)
            {
                if (!NodeEditor.FlagIsSaved)
                {
                    float x = canvasCache.editorState.panOffset.x + NodeEditor.BuildShaderPosX;
                    float y = canvasCache.editorState.panOffset.y + NodeEditor.BuildShaderPosY;

                    x /= canvasCache.editorState.zoom;
                    y /= canvasCache.editorState.zoom;
                    x -= 110;
                    y -= 20;
                    x += position.width * 0.4f;
                    y += position.height * 0.4f;
                    y += (90 / canvasCache.editorState.zoom);

                    Texture2D preview = ResourceManager.LoadTexture("Help/arrow.png");
                    GUI.DrawTexture(new Rect(x, y, 128, 100), preview);

                    bframecount += Time.fixedDeltaTime * 0.25f;
                    if (bframecount > 1)
                    {
                        bframe++; bframecount = 0;
                    }
                    if (bframe >= 16)
                    {
                        bframe = 0;
                    }


                    preview = ResourceManager.LoadTexture("Help/help_light.png");

                    x -= 420;
                    y -= 100;

                    GUI.DrawTexture(new Rect(x - 24, y - 24, 410 + 48, 363 + 48), preview);


                    if (bframe == 0)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_1.jpg");
                    }
                    if (bframe == 1)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_2.jpg");
                    }
                    if (bframe == 2)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_3.jpg");
                    }
                    if (bframe == 3)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_4.jpg");
                    }
                    if (bframe == 4)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_5.jpg");
                    }
                    if (bframe == 5)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_6.jpg");
                    }
                    if (bframe == 6)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_7.jpg");
                    }
                    if (bframe == 7)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_8.jpg");
                    }
                    if (bframe == 8)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_9.jpg");
                    }
                    if (bframe == 9)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_10.jpg");
                    }
                    if (bframe == 10)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_11.jpg");
                    }
                    if (bframe == 11)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_12.jpg");
                    }
                    if (bframe == 12)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_13.jpg");
                    }
                    if (bframe >= 13)
                    {
                        preview = ResourceManager.LoadTexture("Help/Init_build_anm_14.jpg");
                    }



                    GUI.DrawTexture(new Rect(x, y, 410, 363), preview);
                }
            }

            sideWindowWidth = Math.Min(205, Math.Max(205, (int)(position.width / 5)));
            GUILayout.BeginArea(sideWindowRect, GUI.skin.box);
            DrawSideWindow();
            GUILayout.EndArea();



            if (GUI.Button(new Rect(10, 75, 200, 20), new GUIContent("Help Tutorial")))
            {
                ShowTutorial = !ShowTutorial;
            }

            if (ShowTutorial)
            {
                GUI.enabled = ShowTutorial;
                Texture2D preview = ResourceManager.LoadTexture("Help/tut_back.png");
                float     x       = position.width;
                float     y       = position.height;
                float     sx      = 926;
                float     sy      = 490;
                Rect      r       = new Rect(x / 2 - sx / 2, y / 2 - sy / 2, sx, sy);
                GUI.DrawTexture(r, preview);
                float Bsize   = 127;
                float Bpos    = 60;
                float Bheight = 35;
                if (GUI.Button(new Rect((x / 2 - sx / 2) + 22, (y / 2 + sy / 2) - Bpos, Bsize - 5, Bheight), new GUIContent("1. Basic part 1")))
                {
                    ShowTutorialCurrent = 0;
                }
                if (GUI.Button(new Rect((x / 2 - sx / 2) + 22 + Bsize, (y / 2 + sy / 2) - Bpos, Bsize - 5, Bheight), new GUIContent("2. Basic part 2")))
                {
                    ShowTutorialCurrent = 1;
                }
                if (GUI.Button(new Rect((x / 2 - sx / 2) + 22 + Bsize * 2, (y / 2 + sy / 2) - Bpos, Bsize - 5, Bheight), new GUIContent("3. The UV")))
                {
                    ShowTutorialCurrent = 2;
                }
                if (GUI.Button(new Rect((x / 2 - sx / 2) + 22 + Bsize * 3, (y / 2 + sy / 2) - Bpos, Bsize - 5, Bheight), new GUIContent("4. Use Shader")))
                {
                    ShowTutorialCurrent = 3;
                }
                if (GUI.Button(new Rect((x / 2 - sx / 2) + 22 + Bsize * 4, (y / 2 + sy / 2) - Bpos, Bsize - 5, Bheight), new GUIContent("5. Parameters")))
                {
                    ShowTutorialCurrent = 4;
                }
                if (GUI.Button(new Rect((x / 2 - sx / 2) + 22 + Bsize * 5, (y / 2 + sy / 2) - Bpos, Bsize - 5, Bheight), new GUIContent("6. HDR")))
                {
                    ShowTutorialCurrent = 5;
                }
                if (GUI.Button(new Rect((x / 2 - sx / 2) + 22 + Bsize * 6, (y / 2 + sy / 2) - Bpos, Bsize - 5, Bheight), new GUIContent("OK")))
                {
                    ShowTutorial = !ShowTutorial;
                }
                if (GUI.Button(new Rect(10, 75, 200, 20), new GUIContent("Help Tutorial")))
                {
                    ShowTutorial = !ShowTutorial;
                }

                if (ShowTutorialCurrent == 0)
                {
                    preview = ResourceManager.LoadTexture("Help/tut_img1.jpg");
                }
                if (ShowTutorialCurrent == 1)
                {
                    preview = ResourceManager.LoadTexture("Help/tut_img2.jpg");
                }
                if (ShowTutorialCurrent == 2)
                {
                    preview = ResourceManager.LoadTexture("Help/tut_img3.jpg");
                }
                if (ShowTutorialCurrent == 3)
                {
                    preview = ResourceManager.LoadTexture("Help/tut_img4.jpg");
                }
                if (ShowTutorialCurrent == 4)
                {
                    preview = ResourceManager.LoadTexture("Help/tut_img5.jpg");
                }
                if (ShowTutorialCurrent == 5)
                {
                    preview = ResourceManager.LoadTexture("Help/tut_img6.jpg");
                }
                r.x     += 23;
                r.y     += 53;
                r.width  = 875;
                r.height = 372;
                GUI.DrawTexture(r, preview);
            }

            NodeEditorGUI.EndNodeGUI();
            NodeEditor.NoBuildShaderContext = NodeEditor.NoBuildShader;
        }
        public void DrawToolbarGUI(Rect rect)
        {
            rect.height = toolbarHeight;
            rect.width  = 280f;
            if (!showModalPanel)
            {
                GUILayout.BeginArea(rect, NodeEditorGUI.toolbar);
                GUILayout.BeginHorizontal();
                //float curToolbarHeight = 0;
                if (GUILayout.Button("New", NodeEditorGUI.toolbarButton, GUILayout.Width(50)))
                {
                    AutoSave();
                    switch (NodeEditorGUI.state)
                    {
                    case NodeEditorGUI.NodeEditorState.Mission:
                        NewNodeCanvas(typeof(QuestCanvas));
                        break;

                    case NodeEditorGUI.NodeEditorState.Dialogue:
                        NewNodeCanvas(typeof(DialogueCanvas));
                        break;

                    case NodeEditorGUI.NodeEditorState.Sector:
                        NewNodeCanvas(typeof(SectorCanvas));
                        break;
                    }
                    IOLocationArgs = null;
                }
                if (GUILayout.Button("Import", NodeEditorGUI.toolbarButton, GUILayout.Width(50)))
                {
                    IOFormat = ImportExportManager.ParseFormat("XML");
                    if (IOFormat.RequiresLocationGUI)
                    {
                        // Try to auto save
                        AutoSave();

                        ImportLocationGUI = IOFormat.ImportLocationArgsGUI;
                        modalPanelContent = ImportCanvasGUI;
                        showModalPanel    = true;
                    }
                    else if (IOFormat.ImportLocationArgsSelection(out IOLocationArgs))
                    {
                        canvasCache.SetCanvas(ImportExportManager.ImportCanvas(IOFormat, IOLocationArgs));
                    }
                }
                if (GUILayout.Button("Export", NodeEditorGUI.toolbarButton, GUILayout.Width(50)))
                {
                    IOFormat = ImportExportManager.ParseFormat("XML");
                    if (IOFormat.RequiresLocationGUI)
                    {
                        ExportLocationGUI = IOFormat.ExportLocationArgsGUI;
                        modalPanelContent = ExportCanvasGUI;
                        showModalPanel    = true;
                    }
                    else if (IOFormat.ExportLocationArgsSelection(canvasCache.nodeCanvas.saveName, out IOLocationArgs))
                    {
                        ImportExportManager.ExportCanvas(canvasCache.nodeCanvas, IOFormat, IOLocationArgs);
                    }
                }
                string buttonText = "Mission";
                switch (NodeEditorGUI.state)
                {
                case NodeEditorGUI.NodeEditorState.Mission:
                    buttonText = "Mission";
                    break;

                case NodeEditorGUI.NodeEditorState.Dialogue:
                    buttonText = "Dialogue";
                    break;

                case NodeEditorGUI.NodeEditorState.Sector:
                    buttonText = "Sector";
                    break;

                default:
                    break;
                }

                if (GUILayout.Button(buttonText, NodeEditorGUI.toolbarButton, GUILayout.Width(50)))
                {
                    NodeEditorGUI.state = (NodeEditorGUI.NodeEditorState)(((int)NodeEditorGUI.state + 1) % 3);

                    switch (NodeEditorGUI.state)
                    {
                    case NodeEditorGUI.NodeEditorState.Mission:
                        NewNodeCanvas(typeof(QuestCanvas));
                        break;

                    case NodeEditorGUI.NodeEditorState.Dialogue:
                        NewNodeCanvas(typeof(DialogueCanvas));
                        break;

                    case NodeEditorGUI.NodeEditorState.Sector:
                        NewNodeCanvas(typeof(SectorCanvas));
                        break;

                    default:
                        break;
                    }
                    NodeEditorGUI.Init();
                }

                bool autoSave = GUILayout.Toggle(autoSaveEnabled, "Auto Save");
                if (autoSave != autoSaveEnabled)
                {
                    autoSaveEnabled = autoSave;
                    PlayerPrefs.SetInt("NEAutoSave", autoSave ? 1 : 0);
                    PlayerPrefs.Save();
                }

                GUI.backgroundColor = Color.white;
                GUILayout.EndHorizontal();
                GUILayout.EndArea();
                if (Event.current.type == EventType.Repaint)
                {
                    toolbarHeight = 20;
                }
            }
        }
Beispiel #13
0
        private void OnGUI()
        {
            // Initiation
            NodeEditor.checkInit(true);
            if (NodeEditor.InitiationError || canvasCache == null)
            {
                GUILayout.Label("Node Editor Initiation failed! Check console for more information!");
                return;
            }
            AssureEditor();
            canvasCache.AssureCanvas();

            // Specify the Canvas rect in the EditorState, currently disabled for dynamic sidebar resizing
            // canvasCache.editorState.canvasRect = canvasWindowRect;
            // If you want to use GetRect:
//			Rect canvasRect = GUILayoutUtility.GetRect (600, 600);
//			if (Event.current.type != EventType.Layout)
//				mainEditorState.canvasRect = canvasRect;
            NodeEditorGUI.StartNodeGUI("NodeEditorWindow", true);

            // Perform drawing with error-handling
            try
            {
                NodeEditor.DrawCanvas(canvasCache.nodeCanvas, canvasCache.editorState);
            }
            catch (UnityException e)
            {             // on exceptions in drawing flush the canvas to avoid locking the ui.
                canvasCache.NewNodeCanvas();
                NodeEditor.ReInit(true);
                Debug.LogError("Unloaded Canvas due to an exception during the drawing phase!");
                Debug.LogException(e);
            }

            // Draw Toolbar
            DrawToolbarGUI();

            // Show Side Window
            if (showSideWindow)
            {
                // Draw Side Window
                sideWindowWidth = Math.Min(600, Math.Max(200, (int)(position.width / 5)));
                GUILayout.BeginArea(sideWindowRect, GUI.skin.box);
                DrawSideWindow();
                GUILayout.EndArea();

                canvasCache.editorState.canvasRect = new Rect(0, toolbarHeight, position.width - sideWindowWidth, position.height);
            }
            else
            {
                canvasCache.editorState.canvasRect = new Rect(0, toolbarHeight, position.width, position.height);
            }

            if (showModalPanel)
            {
                BeginWindows();
                modalWindowRect = GUILayout.Window(0, modalWindowRect, DoModalWindow, "Save to Scene");
                EndWindows();
            }

            NodeEditorGUI.EndNodeGUI();
        }