Ejemplo n.º 1
0
        public bool IsActiveInFrame(bool checkForOverlaps = true)
        {
            if (!IsEnabled || IsEmpty())
            {
                return(false);
            }

            if (Key != KeyCode.None && !RTInput.WasKeyPressedThisFrame(Key))
            {
                return(false);
            }

            // If strict modifier check is used but at least one modifier key is pressed,
            // it means the key is not active and we return false.
            if (UseStrictModifierCheck && HasNoModifiers() && IsAnyModifierKeyPressed())
            {
                return(false);
            }

            // Check if the corresponding modifier keys are pressed
            if (_lCtrl && !RTInput.IsKeyPressed(KeyCode.LeftControl))
            {
                return(false);
            }
            if (_lCmd && !RTInput.IsKeyPressed(KeyCode.LeftCommand))
            {
                return(false);
            }
            if (_lAlt && !RTInput.IsKeyPressed(KeyCode.LeftAlt))
            {
                return(false);
            }
            if (_lShift && !RTInput.IsKeyPressed(KeyCode.LeftShift))
            {
                return(false);
            }

            // Perform the mouse button strict check in the same way we did for the modifier keys
            if (UseStrictMouseCheck && HasNoMouseButtons() && IsAnyMouseButtonPressed())
            {
                return(false);
            }

            // Check if the corresponding mouse buttons are pressed
            if (_lMouseBtn && !RTInput.WasLeftMouseButtonPressedThisFrame())
            {
                return(false);
            }
            if (_rMouseBtn && !RTInput.WasRightMouseButtonPressedThisFrame())
            {
                return(false);
            }
            if (_mMouseBtn && !RTInput.WasMiddleMouseButtonPressedThisFrame())
            {
                return(false);
            }

            if (checkForOverlaps)
            {
                foreach (var potentialOverlap in _potentialOverlaps)
                {
                    if (potentialOverlap.IsActiveInFrame(false) &&
                        IsOverlappedBy(potentialOverlap))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }