Пример #1
0
        public override void Awake()
        {
            base.Awake();

            _unityRobot = Owner.GetComponent <UnityRobot.UnityRobot>();
            if (_unityRobot == null)
            {
                Debug.LogWarning("There exist no UnityRobot!");
            }
            else
            {
                _unityRobot.OnConnected        += OnConnected;
                _unityRobot.OnConnectionFailed += OnConnectionFailed;
                _unityRobot.OnDisconnected     += OnDisconnected;
                _unityRobot.OnSearchCompleted  += OnSearchCompleted;
                _unityRobot.OnUpdated          += OnUpdated;
            }
        }
Пример #2
0
    public override void OnInspectorGUI()
    {
        this.serializedObject.Update();

        UnityRobot.UnityRobot robot = (UnityRobot.UnityRobot)target;
        GUI.enabled = !robot.Connected;

        EditorGUILayout.BeginHorizontal();
        int index = -1;

        string[] list = new string[portNames.arraySize];
        for (int i = 0; i < list.Length; i++)
        {
            list[i] = portNames.GetArrayElementAtIndex(i).stringValue;
            if (portName.stringValue.Equals(list[i]) == true)
            {
                index = i;
            }
        }
        index = EditorGUILayout.Popup("Port Name", index, list);
        if (index >= 0)
        {
            portName.stringValue = list[index];
        }
        else
        {
            portName.stringValue = "";
        }
        if (GUILayout.Button("Search") == true)
        {
            robot.PortSearch();
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.PropertyField(baudrate, new GUIContent("Baudrate"));
        EditorGUILayout.PropertyField(timeoutSec, new GUIContent("Timeout(sec)"));

        if (Application.isPlaying == true)
        {
            GUI.enabled = true;
            if (robot.Connected == true)
            {
                if (GUILayout.Button("Disconnect") == true)
                {
                    robot.Disconnect();
                }
            }
            else
            {
                if (GUILayout.Button("Connect") == true)
                {
                    robot.Connect();
                }
            }

            EditorUtility.SetDirty(target);
        }

        foldout = EditorGUILayout.Foldout(foldout, "Modules");
        if (foldout == true)
        {
            SerializedProperty module;

            EditorGUILayout.BeginHorizontal();
            string[] moduleList = new string[] { "Digital Pin"
                                                 , "Analog Pin" };
            indexModuleList = EditorGUILayout.Popup(indexModuleList, moduleList, GUILayout.Width(120));
            if (GUILayout.Button("Create Module") == true)
            {
                modules.InsertArrayElementAtIndex(modules.arraySize);
                module = modules.GetArrayElementAtIndex(modules.arraySize - 1);
                GameObject go = new GameObject();
                go.transform.parent = robot.transform;
                go.name             = moduleList[indexModuleList];
                switch (indexModuleList)
                {
                case 0:
                    module.objectReferenceValue = go.AddComponent <DigitalPin>();
                    break;

                case 1:
                    module.objectReferenceValue = go.AddComponent <AnalogPin>();
                    break;
                }
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Add Module") == true)
            {
                modules.InsertArrayElementAtIndex(modules.arraySize);
                module = modules.GetArrayElementAtIndex(modules.arraySize - 1);
                module.objectReferenceValue = null;
            }
            if (modules.arraySize > 0)
            {
                if (GUILayout.Button("Remove All") == true)
                {
                    modules.ClearArray();
                }
            }
            EditorGUILayout.EndHorizontal();

            for (int i = 0; i < modules.arraySize; i++)
            {
                EditorGUILayout.BeginHorizontal();
                module = modules.GetArrayElementAtIndex(i);
                EditorGUILayout.PropertyField(module, new GUIContent(string.Format("Module {0:d}", i)));
                if (clipboard == null)
                {
                    GUI.enabled = false;
                }
                else
                {
                    GUI.enabled = true;
                }
                if (GUILayout.Button("Paste", GUILayout.Width(50)) == true)
                {
                    module.objectReferenceValue = clipboard;
                }
                if (i < (modules.arraySize - 1))
                {
                    GUI.enabled = true;
                }
                else
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button("+", GUILayout.Width(20)) == true)
                {
                    modules.MoveArrayElement(i, i + 1);
                }
                if (i > 0)
                {
                    GUI.enabled = true;
                }
                else
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button("-", GUILayout.Width(20)) == true)
                {
                    modules.MoveArrayElement(i, i - 1);
                }
                GUI.enabled = true;
                if (GUILayout.Button("X", GUILayout.Width(20)) == true)
                {
                    module.objectReferenceValue = null;
                    modules.DeleteArrayElementAtIndex(i);
                    i--;
                }
                EditorGUILayout.EndHorizontal();
            }

            this.serializedObject.ApplyModifiedProperties();
        }
    }