Esempio n. 1
0
 void Start()
 {
     //GameObject.Find("Canvas").GetComponent<HUDManager>().CreateHUD(gameObject);
     GameObject.Find("CanvasHUD").GetComponent <HUDManager>().CreateHUD(gameObject);
     foreach (Instruction I in _instructions)
     {
         InstructionEditor IE = new InstructionEditor();
         IE._listeStringPerceptsVoulus = I._listeStringPerceptsVoulus;
         IE._stringAction = I._stringAction;
         IE._stringActionsNonTerminales = I._stringActionsNonTerminales;
         _instructionsEditor.Add(IE);
     }
 }
        private void DrawConnectionModifiers(Vector2 position, Connection connection)
        {
            Handles.CircleHandleCap(0, position, Quaternion.identity, 5, EventType.Layout);
            if (_isLayoutEvent)
            {
                _culledMods = new List <Instruction>();
            }
            Color oldColor = GUI.color;


            Rect[] modRects;
            bool   found = _connectionModifierRects.TryGetValue(connection, out modRects);

            if (!found)
            {
                modRects = new Rect[connection.InstructionCount];
                _connectionModifierRects[connection] = modRects;
            }
            else if (modRects.Length < connection.InstructionCount)
            {
                Rect[] newRects = new Rect[connection.InstructionCount];
                modRects.CopyTo(newRects, 0);
                modRects = newRects;
                _connectionModifierRects[connection] = modRects;
            }
            else if (modRects.Length > connection.InstructionCount)
            {
                Rect[] newRects = new Rect[connection.InstructionCount];
                Array.Copy(modRects, newRects, connection.InstructionCount);
                modRects = newRects;
                _connectionModifierRects[connection] = modRects;
            }

            Vector2 rectBoxMaxSize = new Vector2(0, 0);
            //if (!_isLayoutEvent) _connectionModifierRectsSize.TryGetValue(connection, out offset);
            //if (_isLayoutEvent)
            {
                foreach (Rect rect in modRects)
                {
                    rectBoxMaxSize.x = Mathf.Max(rectBoxMaxSize.x, rect.width);
                    //rectBoxMaxSize.y = Mathf.Max(rectBoxMaxSize.y, rect.yMax);
                    rectBoxMaxSize.y += rect.height + EditorGUIUtility.standardVerticalSpacing;
                }
            }

            Vector2 startPosition = position - rectBoxMaxSize / 2;

            for (int i = 0; i < connection.InstructionCount; i++)
            {
                Instruction mod = connection.GetInstruction(i);
                if (mod == null)
                {
                    Debug.LogWarning("Null Mod!?");
                    continue;
                }

                bool selected = Selection.Contains(mod);
                InstructionEditor modEditor = InstructionEditor.GetEditor(mod);

                float y = 0;
                if (i > 0)
                {
                    for (int j = 0; j < i; j++)
                    {
                        y += modRects[j].height + EditorGUIUtility.standardVerticalSpacing;
                    }
                    y -= EditorGUIUtility.standardVerticalSpacing;
                }

                Vector2 finalPosition = startPosition + new Vector2(0, y);

                //if (_isLayoutEvent)
                //{
                //    if (!selected && ShouldBeCulled(modsStartPosition + modPosition, cachedRect.size))
                //    {
                //        _culledMods.Add(mod);
                //        continue;
                //    }
                //}
                //else if (_culledMods.Contains(mod)) continue;

                Rect modRect = new Rect(GridToWindowPositionNotClipped(finalPosition), new Vector2(modEditor.GetWidth(), 4000));
                GUILayout.BeginArea(modRect);

                if (selected)
                {
                    GUIStyle style          = new GUIStyle(modEditor.GetBodyStyle());
                    GUIStyle highlightStyle = new GUIStyle(NodeResources.Styles.nodeHighlight)
                    {
                        padding = style.padding
                    };
                    style.padding = new RectOffset();
                    GUILayout.BeginVertical(style);
                    GUI.color = Color.white;
                    GUILayout.BeginVertical(new GUIStyle(highlightStyle));
                }
                else
                {
                    GUIStyle style = new GUIStyle(modEditor.GetBodyStyle());
                    GUILayout.BeginVertical(style);
                }

                GUI.color = oldColor;
                EditorGUI.BeginChangeCheck();

                modEditor.OnHeaderGUI();
                modEditor.OnBodyGUI();

                if (EditorGUI.EndChangeCheck())
                {
                    EditorUtility.SetDirty(mod);
                    modEditor.SerializedObject.ApplyModifiedProperties();
                }

                GUILayout.EndVertical();
                if (selected)
                {
                    GUILayout.EndVertical();
                }

                if (_isRepaintEvent)
                //if (!_isLayoutEvent)
                {
                    Rect rect = GUILayoutUtility.GetLastRect();
                    rect.position = finalPosition;// - new Vector2(NodePreferences.STANDARD_NODE_SIZE.x / 2, 0);
                    modRects[i]   = rect;
                }

                GUILayout.EndArea();
                //Handles.color = Color.green;
                //Handles.CircleHandleCap(0, GridToWindowPositionNotClipped(finalPosition), Quaternion.identity, 8, EventType.Repaint);
                //Handles.color = Color.white;
            }
            //Handles.color = Color.red;
            //Handles.CircleHandleCap(0, GridToWindowPositionNotClipped(startPosition), Quaternion.identity, 8,
            //    EventType.Repaint);
            //Handles.color = Color.white;
        }
Esempio n. 3
0
 private void insertAndEdit(Instruction inst)
 {
     InstructionEditor inst_ed = new InstructionEditor(inst);
     if (this.instructions.SelectedItems.Count != 0)
     {
         int i = this.instructions.SelectedIndex;
         this.instructions.Items.Insert(i, inst_ed);
     }
     else
     {
         this.instructions.Items.Add(inst_ed);
     }
     editItem(inst_ed);
 }
Esempio n. 4
0
 private void editItem(InstructionEditor inst_ed)
 {
     switch (inst_ed.inst.t)
     {
         case InstructionType.InstructionTransition:
             this.transition.SetInstruction(inst_ed.inst);
             this.transition.Show();
             break;
         case InstructionType.InstructionSetDisplay:
             this.set_display.SetInstruction(inst_ed.inst);
             this.set_display.Show();
             break;
         case InstructionType.InstructionWait:
             this.wait.SetInstruction(inst_ed.inst);
             this.wait.Show();
             break;
         default:
             break;
     }
     revalidate();
 }