Exemplo n.º 1
0
    //================================================================================

    void Update()
    {
        if (inputSettings.movementInputName == "")
        {
            ErrorHandling.LogError("Warning [FirstPersonView_TranslationalMotionController] : " +
                                   "Please specify the (correct) name of the movement VirtualJoystick.");
        }
        else
        {
            joystickAxis = VirtualJoystick.GetAxis(inputSettings.movementInputName);
            VirtualJoystick.GetAngleAndMagnitude(inputSettings.movementInputName, out joystickAngle, out joystickMagnitude);
        }

        if (inputSettings.runInputName == "")
        {
            ErrorHandling.LogError("Warning [FirstPersonView_TranslationalMotionController] : " +
                                   "Please specify the (correct) name of runInputName in the inspector");
        }
        else
        {
            switch (inputSettings.runInputStyle)
            {
            case RunJumpInputStyle.VirtualJoystick_DoubleTap:
                isRunning = VirtualJoystick.GetDoubleTap(inputSettings.runInputName);
                break;

            case RunJumpInputStyle.VirtualJoystick_DoubleTapHold:
                isRunning = VirtualJoystick.GetDoubleTapHold(inputSettings.runInputName);
                break;

            case RunJumpInputStyle.VirtualTouchpad_DoubleTap:
                isRunning = VirtualTouchpad.GetDoubleTap(inputSettings.runInputName);
                break;

            case RunJumpInputStyle.VirtualTouchpad_DoubleTapHold:
                isRunning = VirtualTouchpad.GetDoubleTapHold(inputSettings.runInputName);
                break;

            case RunJumpInputStyle.VirtualButton_GoingDown:
                isRunning = VirtualButton.GetButtonDown(inputSettings.runInputName);
                break;

            case RunJumpInputStyle.VirtualButton_Down:
                isRunning = VirtualButton.GetButton(inputSettings.runInputName);
                break;

            case RunJumpInputStyle.None:
                isRunning = false;
                break;

            default:
                isRunning = false;
                break;
            }
        }

        if (inputSettings.jumpInputName == "")
        {
            ErrorHandling.LogError("Warning [FirstPersonView_TranslationalMotionController] : " +
                                   "Please specify the (correct) name of jumpInputName in the inspector");
        }
        else
        {
            switch (inputSettings.jumpInputStyle)
            {
            case RunJumpInputStyle.VirtualJoystick_DoubleTap:
                isJumping = VirtualJoystick.GetDoubleTap(inputSettings.jumpInputName);
                break;

            case RunJumpInputStyle.VirtualJoystick_DoubleTapHold:
                isJumping = VirtualJoystick.GetDoubleTapHold(inputSettings.jumpInputName);
                break;

            case RunJumpInputStyle.VirtualTouchpad_DoubleTap:
                isJumping = VirtualTouchpad.GetDoubleTap(inputSettings.jumpInputName);
                break;

            case RunJumpInputStyle.VirtualTouchpad_DoubleTapHold:
                isJumping = VirtualTouchpad.GetDoubleTapHold(inputSettings.jumpInputName);
                break;

            case RunJumpInputStyle.VirtualButton_GoingDown:
                isJumping = VirtualButton.GetButtonDown(inputSettings.jumpInputName);
                break;

            case RunJumpInputStyle.VirtualButton_Down:
                isJumping = VirtualButton.GetButton(inputSettings.jumpInputName);
                break;

            case RunJumpInputStyle.None:
                isJumping = false;
                break;

            default:
                isJumping = false;
                break;
            }
        }
    }     // void Update ()
Exemplo n.º 2
0
    //================================================================================
    public override void OnInspectorGUI()
    {
        virtualTouchpadScript = target as VirtualTouchpad;

        EditorGUILayout.BeginHorizontal();
        {
            EditorGUILayout.PrefixLabel (" ");
            AddTouchpad ();
            ToggleHelp ();
        }
        EditorGUILayout.EndHorizontal();

        ShowHelp ();

        int i = 0;
        bool removeItem = false;
        int itemToRemove = -1;
        bool moveItem = false;
        int itemToMove = -1;
        int itemMoveDirection = 0;
        foreach (VirtualTouchpad.Touchpad touchpad in virtualTouchpadScript.virtualTouchpads)
        {
            EditorGUILayout.BeginHorizontal();
            {
                touchpad.showSettingsInInspector = EditorGUILayout.Foldout (touchpad.showSettingsInInspector, "[" + (i+1) + "] " + touchpad.name);
                touchpad.enabled = EditorGUILayout.Toggle(" " ,touchpad.enabled);
                if (GUILayout.Button("<"))
                {
                    moveItem = true;
                    itemToMove = i;
                    itemMoveDirection = -1;
                }
                if (GUILayout.Button(">"))
                {
                    moveItem = true;
                    itemToMove = i;
                    itemMoveDirection = 1;
                }
                EditorGUILayout.LabelField (" ", GUILayout.Width (8));
                if (GUILayout.Button("-"))
                {
                    removeItem = true;
                    itemToRemove = i;
                }
            }
            EditorGUILayout.EndHorizontal();

            if (touchpad.showSettingsInInspector)
            {
                touchpad.name = EditorGUILayout.TextField ("Name", touchpad.name);
                EditorGUILayout.BeginHorizontal ();
                {
                    EditorGUILayout.PrefixLabel ("Background Texture");
                    touchpad.backgroundTexture = EditorGUILayout.ObjectField(touchpad.backgroundTexture,typeof(Texture),false) as Texture;
                    touchpad.hideBackgroundTexture = EditorGUILayout.ToggleLeft("Hide",touchpad.hideBackgroundTexture, GUILayout.Width(40));
                }
                EditorGUILayout.EndHorizontal();

                if (touchpad.backgroundTexture)
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.PrefixLabel("Horizontal");
                        float horizontalMin = touchpad.touchpadRect.x;
                        float horizontalMax = touchpad.touchpadRect.x + touchpad.touchpadRect.width;
                        EditorGUILayout.MinMaxSlider(ref horizontalMin, ref horizontalMax, 0f, 1f);
                        horizontalMin = Mathf.Round(horizontalMin * 100f) * 0.01f;
                        horizontalMax = Mathf.Round(horizontalMax * 100f) * 0.01f;
                        touchpad.touchpadRect.x = horizontalMin;
                        touchpad.touchpadRect.width = horizontalMax - touchpad.touchpadRect.x;
                        EditorGUILayout.LabelField(""+horizontalMin.ToString("F2")+"/"+horizontalMax.ToString("F2"), GUILayout.Width(60));
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.PrefixLabel("Vertical");
                        float verticalMin = 1f-(touchpad.touchpadRect.y + touchpad.touchpadRect.height); ;
                        float verticalMax = 1f-touchpad.touchpadRect.y;
                        EditorGUILayout.MinMaxSlider(ref verticalMin, ref verticalMax, 0f, 1f);
                        verticalMin = Mathf.Round(verticalMin * 100f) * 0.01f;
                        verticalMax = Mathf.Round(verticalMax * 100f) * 0.01f;
                        touchpad.touchpadRect.y = (1f-verticalMax);
                        touchpad.touchpadRect.height = (1f-verticalMin) - touchpad.touchpadRect.y;
                        EditorGUILayout.LabelField(""+verticalMin.ToString("F2")+"/"+verticalMax.ToString("F2"), GUILayout.Width(60));
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        touchpad.axisMultiplier = EditorGUILayout.Vector2Field("Axis Multiplier", touchpad.axisMultiplier);
                    }
                    EditorGUILayout.EndHorizontal();

                    touchpad.compensateForDeviceRoll = EditorGUILayout.Toggle("Device Roll Compensation",touchpad.compensateForDeviceRoll);

                    touchpad.autoUpdateEnabled = EditorGUILayout.Toggle("Auto Update",touchpad.autoUpdateEnabled);
                    if (touchpad.autoUpdateEnabled)
                    {
                        EditorGUILayout.BeginHorizontal();
                        {
                            EditorGUILayout.PrefixLabel(" ");
                            touchpad.autoUpdateGyroAccelScript = EditorGUILayout.ToggleLeft(" GyroAccelScript",touchpad.autoUpdateGyroAccelScript);
                        }
                        EditorGUILayout.EndHorizontal();

                        // SendMessage: Axis

                        EditorGUILayout.BeginHorizontal();
                        {
                            EditorGUILayout.PrefixLabel(" ");
                            if (GUILayout.Button ("+"))
                            {
                                touchpad.autoUpdateAxisMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver());
                                int last = touchpad.autoUpdateAxisMessageReceivers.Count-1;
                                touchpad.autoUpdateAxisMessageReceivers[last].messageReceiver = null;
                                touchpad.autoUpdateAxisMessageReceivers[last].functionName = "Function to call";
                            }
                            EditorGUILayout.LabelField ("SendMessage: Axis");
                        }
                        EditorGUILayout.EndHorizontal();

                        int j = 0;
                        bool removeReceiver = false;
                        int receiverToRemove = -1;
                        foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateAxisMessageReceivers)
                        {
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                if (GUILayout.Button("-"))
                                {
                                    removeReceiver = true;
                                    receiverToRemove = j;
                                }
                                receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver,typeof(GameObject),true) as GameObject;
                            }
                            EditorGUILayout.EndHorizontal();
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                EditorGUILayout.LabelField ("",GUILayout.Width(20));
                                receiver.functionName = EditorGUILayout.TextField ("", receiver.functionName);
                            }
                            EditorGUILayout.EndHorizontal();
                            j++;
                        }
                        if (removeReceiver)
                        {
                            touchpad.autoUpdateAxisMessageReceivers.RemoveAt(receiverToRemove);
                        }

                        // SendMessage: DoubleTap

                        EditorGUILayout.BeginHorizontal();
                        {
                            EditorGUILayout.PrefixLabel(" ");
                            if (GUILayout.Button ("+"))
                            {
                                touchpad.autoUpdateDoubleTapMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver());
                                int last = touchpad.autoUpdateDoubleTapMessageReceivers.Count-1;
                                touchpad.autoUpdateDoubleTapMessageReceivers[last].messageReceiver = null;
                                touchpad.autoUpdateDoubleTapMessageReceivers[last].functionName = "Function to call";
                            }
                            EditorGUILayout.LabelField ("SendMessage: DoubleTap");
                        }
                        EditorGUILayout.EndHorizontal();

                        j = 0;
                        removeReceiver = false;
                        receiverToRemove = -1;
                        foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateDoubleTapMessageReceivers)
                        {
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                if (GUILayout.Button("-"))
                                {
                                    removeReceiver = true;
                                    receiverToRemove = j;
                                }
                                receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver,typeof(GameObject),true) as GameObject;
                            }
                            EditorGUILayout.EndHorizontal();
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                EditorGUILayout.LabelField ("",GUILayout.Width(20));
                                receiver.functionName = EditorGUILayout.TextField ("", receiver.functionName);
                            }
                            EditorGUILayout.EndHorizontal();
                            j++;
                        }
                        if (removeReceiver)
                        {
                            touchpad.autoUpdateDoubleTapMessageReceivers.RemoveAt(receiverToRemove);
                        }

                        // SendMessage: DoubleTapHold

                        EditorGUILayout.BeginHorizontal();
                        {
                            EditorGUILayout.PrefixLabel(" ");
                            if (GUILayout.Button ("+"))
                            {
                                touchpad.autoUpdateDoubleTapHoldMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver());
                                int last = touchpad.autoUpdateDoubleTapHoldMessageReceivers.Count-1;
                                touchpad.autoUpdateDoubleTapHoldMessageReceivers[last].messageReceiver = null;
                                touchpad.autoUpdateDoubleTapHoldMessageReceivers[last].functionName = "Function to call";
                            }
                            EditorGUILayout.LabelField ("SendMessage: DoubleTapHold");
                        }
                        EditorGUILayout.EndHorizontal();

                        j = 0;
                        removeReceiver = false;
                        receiverToRemove = -1;
                        foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateDoubleTapHoldMessageReceivers)
                        {
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                if (GUILayout.Button("-"))
                                {
                                    removeReceiver = true;
                                    receiverToRemove = j;
                                }
                                receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver,typeof(GameObject),true) as GameObject;
                            }
                            EditorGUILayout.EndHorizontal();
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                EditorGUILayout.LabelField ("",GUILayout.Width(20));
                                receiver.functionName = EditorGUILayout.TextField ("", receiver.functionName);
                            }
                            EditorGUILayout.EndHorizontal();
                            j++;
                        }
                        if (removeReceiver)
                        {
                            touchpad.autoUpdateDoubleTapHoldMessageReceivers.RemoveAt(receiverToRemove);
                        }
                    }
                }

                if (Application.isPlaying)
                {
                    EditorGUILayout.BeginHorizontal ();
                    {
                        EditorGUILayout.PrefixLabel ("Debug Info");
                        EditorGUILayout.LabelField ("Axis = " + touchpad.axis);
                    }
                    EditorGUILayout.EndHorizontal ();
                } // if (touchpad.showDebugInfoInInspector)

            } // if (touchpad.showSettingsInInspector)
            EditorGUILayout.Space();
            i++;
        }

        if (removeItem)
        {
            virtualTouchpadScript.virtualTouchpads.RemoveAt(itemToRemove);
        }

        if (moveItem)
        {
            int itemToSwap = Mathf.Clamp (itemToMove + itemMoveDirection, 0, i - 1);
            VirtualTouchpad.Touchpad tmpItem = virtualTouchpadScript.virtualTouchpads[itemToSwap];
            virtualTouchpadScript.virtualTouchpads[itemToSwap] =  virtualTouchpadScript.virtualTouchpads[itemToMove];
            virtualTouchpadScript.virtualTouchpads[itemToMove] =  tmpItem;
        }

        EditorGUILayout.Space ();

        if (GUI.changed)
        {
            EditorUtility.SetDirty(virtualTouchpadScript);
        }
    }
Exemplo n.º 3
0
    //================================================================================

    public override void OnInspectorGUI()
    {
        virtualTouchpadScript = target as VirtualTouchpad;

        EditorGUILayout.BeginHorizontal();
        {
            EditorGUILayout.PrefixLabel(" ");
            AddTouchpad();
            ToggleHelp();
        }
        EditorGUILayout.EndHorizontal();

        ShowHelp();

        int  i                 = 0;
        bool removeItem        = false;
        int  itemToRemove      = -1;
        bool moveItem          = false;
        int  itemToMove        = -1;
        int  itemMoveDirection = 0;

        foreach (VirtualTouchpad.Touchpad touchpad in virtualTouchpadScript.virtualTouchpads)
        {
            EditorGUILayout.BeginHorizontal();
            {
                touchpad.showSettingsInInspector = EditorGUILayout.Foldout(touchpad.showSettingsInInspector, "[" + (i + 1) + "] " + touchpad.name);
                touchpad.enabled = EditorGUILayout.Toggle(" ", touchpad.enabled);
                if (GUILayout.Button("<"))
                {
                    moveItem          = true;
                    itemToMove        = i;
                    itemMoveDirection = -1;
                }
                if (GUILayout.Button(">"))
                {
                    moveItem          = true;
                    itemToMove        = i;
                    itemMoveDirection = 1;
                }
                EditorGUILayout.LabelField(" ", GUILayout.Width(8));
                if (GUILayout.Button("-"))
                {
                    removeItem   = true;
                    itemToRemove = i;
                }
            }
            EditorGUILayout.EndHorizontal();

            if (touchpad.showSettingsInInspector)
            {
                touchpad.name = EditorGUILayout.TextField("Name", touchpad.name);
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.PrefixLabel("Background Texture");
                    touchpad.backgroundTexture     = EditorGUILayout.ObjectField(touchpad.backgroundTexture, typeof(Texture), false) as Texture;
                    touchpad.hideBackgroundTexture = EditorGUILayout.ToggleLeft("Hide", touchpad.hideBackgroundTexture, GUILayout.Width(40));
                }
                EditorGUILayout.EndHorizontal();

                if (touchpad.backgroundTexture)
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.PrefixLabel("Horizontal");
                        float horizontalMin = touchpad.touchpadRect.x;
                        float horizontalMax = touchpad.touchpadRect.x + touchpad.touchpadRect.width;
                        EditorGUILayout.MinMaxSlider(ref horizontalMin, ref horizontalMax, 0f, 1f);
                        horizontalMin               = Mathf.Round(horizontalMin * 100f) * 0.01f;
                        horizontalMax               = Mathf.Round(horizontalMax * 100f) * 0.01f;
                        touchpad.touchpadRect.x     = horizontalMin;
                        touchpad.touchpadRect.width = horizontalMax - touchpad.touchpadRect.x;
                        EditorGUILayout.LabelField("" + horizontalMin.ToString("F2") + "/" + horizontalMax.ToString("F2"), GUILayout.Width(60));
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.PrefixLabel("Vertical");
                        float verticalMin = 1f - (touchpad.touchpadRect.y + touchpad.touchpadRect.height);;
                        float verticalMax = 1f - touchpad.touchpadRect.y;
                        EditorGUILayout.MinMaxSlider(ref verticalMin, ref verticalMax, 0f, 1f);
                        verticalMin                  = Mathf.Round(verticalMin * 100f) * 0.01f;
                        verticalMax                  = Mathf.Round(verticalMax * 100f) * 0.01f;
                        touchpad.touchpadRect.y      = (1f - verticalMax);
                        touchpad.touchpadRect.height = (1f - verticalMin) - touchpad.touchpadRect.y;
                        EditorGUILayout.LabelField("" + verticalMin.ToString("F2") + "/" + verticalMax.ToString("F2"), GUILayout.Width(60));
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        touchpad.axisMultiplier = EditorGUILayout.Vector2Field("Axis Multiplier", touchpad.axisMultiplier);
                    }
                    EditorGUILayout.EndHorizontal();

                    touchpad.compensateForDeviceRoll = EditorGUILayout.Toggle("Device Roll Compensation", touchpad.compensateForDeviceRoll);

                    touchpad.autoUpdateEnabled = EditorGUILayout.Toggle("Auto Update", touchpad.autoUpdateEnabled);
                    if (touchpad.autoUpdateEnabled)
                    {
                        EditorGUILayout.BeginHorizontal();
                        {
                            EditorGUILayout.PrefixLabel(" ");
                            touchpad.autoUpdateGyroAccelScript = EditorGUILayout.ToggleLeft(" GyroAccelScript", touchpad.autoUpdateGyroAccelScript);
                        }
                        EditorGUILayout.EndHorizontal();

                        // SendMessage: Axis

                        EditorGUILayout.BeginHorizontal();
                        {
                            EditorGUILayout.PrefixLabel(" ");
                            if (GUILayout.Button("+"))
                            {
                                touchpad.autoUpdateAxisMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver());
                                int last = touchpad.autoUpdateAxisMessageReceivers.Count - 1;
                                touchpad.autoUpdateAxisMessageReceivers[last].messageReceiver = null;
                                touchpad.autoUpdateAxisMessageReceivers[last].functionName    = "Function to call";
                            }
                            EditorGUILayout.LabelField("SendMessage: Axis");
                        }
                        EditorGUILayout.EndHorizontal();

                        int  j = 0;
                        bool removeReceiver   = false;
                        int  receiverToRemove = -1;
                        foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateAxisMessageReceivers)
                        {
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                if (GUILayout.Button("-"))
                                {
                                    removeReceiver   = true;
                                    receiverToRemove = j;
                                }
                                receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver, typeof(GameObject), true) as GameObject;
                            }
                            EditorGUILayout.EndHorizontal();
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                EditorGUILayout.LabelField("", GUILayout.Width(20));
                                receiver.functionName = EditorGUILayout.TextField("", receiver.functionName);
                            }
                            EditorGUILayout.EndHorizontal();
                            j++;
                        }
                        if (removeReceiver)
                        {
                            touchpad.autoUpdateAxisMessageReceivers.RemoveAt(receiverToRemove);
                        }

                        // SendMessage: DoubleTap

                        EditorGUILayout.BeginHorizontal();
                        {
                            EditorGUILayout.PrefixLabel(" ");
                            if (GUILayout.Button("+"))
                            {
                                touchpad.autoUpdateDoubleTapMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver());
                                int last = touchpad.autoUpdateDoubleTapMessageReceivers.Count - 1;
                                touchpad.autoUpdateDoubleTapMessageReceivers[last].messageReceiver = null;
                                touchpad.autoUpdateDoubleTapMessageReceivers[last].functionName    = "Function to call";
                            }
                            EditorGUILayout.LabelField("SendMessage: DoubleTap");
                        }
                        EditorGUILayout.EndHorizontal();

                        j = 0;
                        removeReceiver   = false;
                        receiverToRemove = -1;
                        foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateDoubleTapMessageReceivers)
                        {
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                if (GUILayout.Button("-"))
                                {
                                    removeReceiver   = true;
                                    receiverToRemove = j;
                                }
                                receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver, typeof(GameObject), true) as GameObject;
                            }
                            EditorGUILayout.EndHorizontal();
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                EditorGUILayout.LabelField("", GUILayout.Width(20));
                                receiver.functionName = EditorGUILayout.TextField("", receiver.functionName);
                            }
                            EditorGUILayout.EndHorizontal();
                            j++;
                        }
                        if (removeReceiver)
                        {
                            touchpad.autoUpdateDoubleTapMessageReceivers.RemoveAt(receiverToRemove);
                        }

                        // SendMessage: DoubleTapHold

                        EditorGUILayout.BeginHorizontal();
                        {
                            EditorGUILayout.PrefixLabel(" ");
                            if (GUILayout.Button("+"))
                            {
                                touchpad.autoUpdateDoubleTapHoldMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver());
                                int last = touchpad.autoUpdateDoubleTapHoldMessageReceivers.Count - 1;
                                touchpad.autoUpdateDoubleTapHoldMessageReceivers[last].messageReceiver = null;
                                touchpad.autoUpdateDoubleTapHoldMessageReceivers[last].functionName    = "Function to call";
                            }
                            EditorGUILayout.LabelField("SendMessage: DoubleTapHold");
                        }
                        EditorGUILayout.EndHorizontal();

                        j = 0;
                        removeReceiver   = false;
                        receiverToRemove = -1;
                        foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateDoubleTapHoldMessageReceivers)
                        {
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                if (GUILayout.Button("-"))
                                {
                                    removeReceiver   = true;
                                    receiverToRemove = j;
                                }
                                receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver, typeof(GameObject), true) as GameObject;
                            }
                            EditorGUILayout.EndHorizontal();
                            EditorGUILayout.BeginHorizontal();
                            {
                                EditorGUILayout.PrefixLabel(" ");
                                EditorGUILayout.LabelField("", GUILayout.Width(20));
                                receiver.functionName = EditorGUILayout.TextField("", receiver.functionName);
                            }
                            EditorGUILayout.EndHorizontal();
                            j++;
                        }
                        if (removeReceiver)
                        {
                            touchpad.autoUpdateDoubleTapHoldMessageReceivers.RemoveAt(receiverToRemove);
                        }
                    }
                }

                if (Application.isPlaying)
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.PrefixLabel("Debug Info");
                        EditorGUILayout.LabelField("Axis = " + touchpad.axis);
                    }
                    EditorGUILayout.EndHorizontal();
                }         // if (touchpad.showDebugInfoInInspector)
            }             // if (touchpad.showSettingsInInspector)
            EditorGUILayout.Space();
            i++;
        }

        if (removeItem)
        {
            virtualTouchpadScript.virtualTouchpads.RemoveAt(itemToRemove);
        }

        if (moveItem)
        {
            int itemToSwap = Mathf.Clamp(itemToMove + itemMoveDirection, 0, i - 1);
            VirtualTouchpad.Touchpad tmpItem = virtualTouchpadScript.virtualTouchpads[itemToSwap];
            virtualTouchpadScript.virtualTouchpads[itemToSwap] = virtualTouchpadScript.virtualTouchpads[itemToMove];
            virtualTouchpadScript.virtualTouchpads[itemToMove] = tmpItem;
        }

        EditorGUILayout.Space();

        if (GUI.changed)
        {
            EditorUtility.SetDirty(virtualTouchpadScript);
        }
    }     // public override void OnInspectorGUI()