Exemple #1
0
        private void OnGUI()
        {
            if (controller == null)
            {
                return;
            }

            if (paused == false)
            {
                // Mouse.
                controller.ProccessMouse(UE.Input.mousePosition.x, UE.Screen.height - UE.Input.mousePosition.y);

                // Keys.
                var currentEvent = UE.Event.current;
                if (currentEvent.keyCode != UE.KeyCode.None)
                {
                    var keyData = UnityKeyTranslator.ToKeyData(currentEvent.modifiers, currentEvent.keyCode);
                    var keyArgs = new KeyEventArgs(keyData);
                    keyArgs.uwfKeyCode   = currentEvent.keyCode;
                    keyArgs.uwfModifiers = currentEvent.modifiers;
                    if ((keyArgs.uwfModifiers & UE.EventModifiers.FunctionKey) != 0)
                    {
                        keyArgs.uwfModifiers &= ~UE.EventModifiers.FunctionKey;
                    }

                    var keyEventType = (Application.KeyEvents)(currentEvent.type - 3);
                    if (keyEventType == Application.KeyEvents.Down || keyEventType == Application.KeyEvents.Up)
                    {
                        controller.ProccessKeys(keyArgs, keyEventType);
                    }
                }
            }

            controller.Redraw();
        }
        private void OnGUI()
        {
            if (controller == null)
            {
                return;
            }

            if (paused == false)
            {
                var currentEvent = UE.Event.current;

                var currentButton       = currentEvent.button;
                var currentClicks       = currentEvent.clickCount;
                var currentDelta        = currentEvent.delta.y;
                var currentKeyCode      = currentEvent.keyCode;
                var currentKeyModifiers = currentEvent.modifiers;
                var currentType         = currentEvent.type;

                // Prepare mouse.
                var mouseButton     = MouseButtons.None;
                var mouseEvent      = Application.MouseEvents.None;
                var mouseWheelDelta = 0f;

                switch (currentType)
                {
                case UE.EventType.MouseDown:
                    switch (currentButton)
                    {
                    case 0:
                        mouseButton = MouseButtons.Left;
                        mouseEvent  = Application.MouseEvents.Down;
                        if (currentClicks > 1)
                        {
                            mouseEvent = Application.MouseEvents.DoubleClick;
                        }
                        break;

                    case 1:
                        mouseButton = MouseButtons.Right;
                        mouseEvent  = Application.MouseEvents.Down;
                        break;

                    case 2:
                        mouseButton = MouseButtons.Middle;
                        mouseEvent  = Application.MouseEvents.Down;
                        break;
                    }

                    break;

                case UE.EventType.MouseUp:
                    switch (currentButton)
                    {
                    case 0:
                        mouseButton = MouseButtons.Left;
                        mouseEvent  = Application.MouseEvents.Up;
                        break;

                    case 1:
                        mouseButton = MouseButtons.Right;
                        mouseEvent  = Application.MouseEvents.Up;
                        break;

                    case 2:
                        mouseButton = MouseButtons.Middle;
                        mouseEvent  = Application.MouseEvents.Up;
                        break;
                    }

                    break;

                case UE.EventType.ScrollWheel:
                    mouseEvent      = Application.MouseEvents.Wheel;
                    mouseWheelDelta = currentDelta;
                    break;
                }

                // Mouse.
                var mouseX = UE.Input.mousePosition.x;
                var mouseY = UE.Screen.height - UE.Input.mousePosition.y;

                controller.ProccessMouse(mouseEvent, mouseX, mouseY, mouseButton, currentClicks, (int)mouseWheelDelta);

                // Keys.

                // Manualy set event for 'shift' key.
                if (shiftPressed && currentKeyCode == UE.KeyCode.None)
                {
                    if (shiftWait <= 0)
                    {
                        currentKeyCode = UE.KeyCode.LeftShift;
                        currentType    = UE.EventType.KeyDown;

                        shiftWait = .2f;
                    }
                    else
                    {
                        shiftWait -= swfHelper.GetDeltaTime();
                    }
                }

                // Try release 'shift'.
                // Fix: it's presses additional time when using Shift + any key.

                /*var prevShift = shiftPressed;
                 * shiftPressed = currentEvent.shift;
                 *
                 * if (prevShift && shiftPressed == false && currentKeyCode == UE.KeyCode.LeftShift)
                 *  currentEventType = UE.EventType.KeyUp;*/

                // Proccess.
                if (currentKeyCode != UE.KeyCode.None)
                {
                    var keyData = UnityKeyTranslator.ToKeyData(currentKeyModifiers, currentKeyCode);
                    var keyArgs = new KeyEventArgs(keyData);
                    keyArgs.uwfKeyCode   = currentKeyCode;
                    keyArgs.uwfModifiers = currentKeyModifiers;
                    if ((keyArgs.uwfModifiers & UE.EventModifiers.FunctionKey) != 0)
                    {
                        keyArgs.uwfModifiers &= ~UE.EventModifiers.FunctionKey;
                    }

                    var keyEventType = (Application.KeyEvents)(currentType - 3);
                    if (keyEventType == Application.KeyEvents.Down || keyEventType == Application.KeyEvents.Up)
                    {
                        controller.ProccessKeys(keyArgs, keyEventType);
                    }
                }
            }

            // Scale if needed.
            var scaleX = SWF.Application.ScaleX;
            var scaleY = SWF.Application.ScaleY;

            if (scaleX != 1f || scaleY != 1f)
            {
                UnityEngine.GUI.matrix = UnityEngine.Matrix4x4.TRS(
                    UE.Vector3.zero,
                    UE.Quaternion.AngleAxis(0, UE.Vector3.up),
                    new UE.Vector3(scaleX, scaleY, 1));
            }

            controller.Redraw();
        }
        private void UpdateKeys()
        {
            var currentEvent        = UE.Event.current;
            var currentKeyCode      = currentEvent.keyCode;
            var currentKeyModifiers = currentEvent.modifiers;
            var currentType         = currentEvent.type;

            // Shift key is not have a KeyDown and KeyUp events, so we need to update them manually.
            // There is also problem that if any key besides modifier keys were pressed along with Shift one
            // Unity will alternately send KeyDown events with pressed key and Shift key.

            // Update shift press.
            if (shiftPressed)
            {
                if (shiftDownDelayTimer <= 0)
                {
                    if (shiftDownTimer <= 0)
                    {
                        currentKeyModifiers = UE.EventModifiers.Shift;

                        if (currentKeyCode == UE.KeyCode.None)
                        {
                            currentKeyCode = UE.KeyCode.LeftShift;
                            currentType    = UE.EventType.KeyDown;
                        }

                        shiftDownTimer = ShiftDownTime;
                    }
                    else
                    {
                        shiftDownTimer -= swfHelper.GetDeltaTime();
                    }
                }
                else
                {
                    shiftDownDelayTimer -= swfHelper.GetDeltaTime();
                }
            }

            var prevShift = shiftPressed;

            shiftPressed = currentEvent.shift;

            // Start shift key.
            if (!prevShift && shiftPressed)
            {
                currentKeyModifiers = UE.EventModifiers.Shift;
                currentKeyCode      = UE.KeyCode.LeftShift;
                currentType         = UE.EventType.KeyDown;
                shiftDownDelayTimer = ShiftDownDelayTime;
            }

            // Release shift key.
            if (prevShift && !shiftPressed)
            {
                currentKeyModifiers = UE.EventModifiers.Shift;
                currentKeyCode      = UE.KeyCode.LeftShift;
                currentType         = UE.EventType.KeyUp;
                shiftDownTimer      = 0;
            }

            if (currentKeyCode == UE.KeyCode.None)
            {
                return;
            }
            if (currentType != UE.EventType.KeyDown && currentType != UE.EventType.KeyUp)
            {
                return;
            }

            var keyData = UnityKeyTranslator.ToKeyData(currentKeyModifiers, currentKeyCode);
            var keyArgs = new KeyEventArgs(keyData);

            var keyEventType = (Application.KeyEvents)(currentType - 3);

            if (keyEventType == Application.KeyEvents.Down || keyEventType == Application.KeyEvents.Up)
            {
                controller.ProcessKeys(keyArgs, keyEventType);
            }
        }
Exemple #4
0
        private void OnGUI()
        {
            if (controller == null)
            {
                return;
            }

            if (paused == false)
            {
                // Mouse.
                controller.ProccessMouse(UE.Input.mousePosition.x, UE.Screen.height - UE.Input.mousePosition.y);

                // Keys.
                var currentEvent        = UE.Event.current;
                var currentEventType    = currentEvent.type;
                var currentKeyCode      = currentEvent.keyCode;
                var currentKeyModifiers = currentEvent.modifiers;

                // Manualy set event for 'shift' key.
                if (shiftPressed && currentKeyCode == UE.KeyCode.None)
                {
                    if (shiftWait <= 0)
                    {
                        currentKeyCode   = UE.KeyCode.LeftShift;
                        currentEventType = UE.EventType.KeyDown;

                        shiftWait = .2f;
                    }
                    else
                    {
                        shiftWait -= swfHelper.GetDeltaTime();
                    }
                }

                // Try release 'shift'.
                // Fix: it's presses additional time when using Shift + any key.

                /*var prevShift = shiftPressed;
                 * shiftPressed = currentEvent.shift;
                 *
                 * if (prevShift && shiftPressed == false && currentKeyCode == UE.KeyCode.LeftShift)
                 *  currentEventType = UE.EventType.KeyUp;*/

                // Proccess.
                if (currentKeyCode != UE.KeyCode.None)
                {
                    var keyData = UnityKeyTranslator.ToKeyData(currentKeyModifiers, currentKeyCode);
                    var keyArgs = new KeyEventArgs(keyData);
                    keyArgs.uwfKeyCode   = currentKeyCode;
                    keyArgs.uwfModifiers = currentKeyModifiers;
                    if ((keyArgs.uwfModifiers & UE.EventModifiers.FunctionKey) != 0)
                    {
                        keyArgs.uwfModifiers &= ~UE.EventModifiers.FunctionKey;
                    }

                    var keyEventType = (Application.KeyEvents)(currentEventType - 3);
                    if (keyEventType == Application.KeyEvents.Down || keyEventType == Application.KeyEvents.Up)
                    {
                        controller.ProccessKeys(keyArgs, keyEventType);
                    }
                }
            }

            controller.Redraw();
        }