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); }