Esempio n. 1
0
        public TestSceneCursorContainer()
        {
            Container           container;
            TestCursorContainer cursorContainer;

            void createContent()
            {
                Child = container = new Container
                {
                    Masking          = true,
                    RelativeSizeAxes = Axes.Both,
                    Anchor           = Anchor.Centre,
                    Origin           = Anchor.Centre,
                    Size             = new Vector2(0.5f),
                    Children         = new Drawable[]
                    {
                        new Box
                        {
                            Colour           = Color4.Yellow,
                            RelativeSizeAxes = Axes.Both,
                        },
                        cursorContainer = new TestCursorContainer
                        {
                            Name             = "test",
                            RelativeSizeAxes = Axes.Both
                        }
                    }
                };
            }

            bool cursorCenteredInContainer() =>
            Precision.AlmostEquals(
                cursorContainer.ActiveCursor.ScreenSpaceDrawQuad.Centre,
                container.ScreenSpaceDrawQuad.Centre);

            bool cursorAtMouseScreenSpace() =>
            Precision.AlmostEquals(
                cursorContainer.ActiveCursor.ScreenSpaceDrawQuad.Centre,
                InputManager.CurrentState.Mouse.Position);

            createContent();
            AddStep("Move cursor to centre", () => InputManager.MoveMouseTo(container.ScreenSpaceDrawQuad.Centre));
            AddAssert("cursor is centered", () => cursorCenteredInContainer());
            AddStep("Move container", () => container.Y += 50);
            AddAssert("cursor no longer centered", () => !cursorCenteredInContainer());
            AddAssert("cursor at mouse position", () => cursorAtMouseScreenSpace());
            AddStep("Resize container", () => container.Size *= new Vector2(1.4f, 1));
            AddAssert("cursor at mouse position", () => cursorAtMouseScreenSpace());

            // ensure positional updates work
            AddStep("Move cursor to centre", () => InputManager.MoveMouseTo(container.ScreenSpaceDrawQuad.Centre));
            AddAssert("cursor is not centered", () => cursorCenteredInContainer());
            AddAssert("cursor at mouse position", () => cursorAtMouseScreenSpace());

            // ensure we received the mouse position update from IRequireHighFrequencyMousePosition
            AddStep("Move cursor to test centre", () => InputManager.MoveMouseTo(Content.ScreenSpaceDrawQuad.Centre));
            AddStep("Recreate container with mouse already in place", createContent);
            AddAssert("cursor is centered", () => cursorCenteredInContainer());
            AddAssert("cursor at mouse position", () => cursorAtMouseScreenSpace());
        }
Esempio n. 2
0
            public CustomCursorBox(Color4 cursorColour, bool providesUserCursor = true)
            {
                ProvidingUserCursor = providesUserCursor;

                Colour  = cursorColour;
                Masking = true;

                Children = new Drawable[]
                {
                    background = new Box
                    {
                        RelativeSizeAxes = Axes.Both,
                        Alpha            = 0.1f
                    },
                    new OsuSpriteText
                    {
                        Anchor = Anchor.Centre,
                        Origin = Anchor.Centre,
                        Text   = providesUserCursor ? "User cursor" : "Local cursor"
                    },
                    Cursor = new TestCursorContainer
                    {
                        State = providesUserCursor ? Visibility.Hidden : Visibility.Visible,
                    }
                };
            }
 private void createContent()
 {
     Child = container = new Container
     {
         Masking          = true,
         RelativeSizeAxes = Axes.Both,
         Anchor           = Anchor.Centre,
         Origin           = Anchor.Centre,
         Size             = new Vector2(0.5f),
         Children         = new Drawable[]
         {
             new Box
             {
                 Colour           = Color4.Yellow,
                 RelativeSizeAxes = Axes.Both,
             },
             cursorContainer = new TestCursorContainer
             {
                 Name             = "test",
                 RelativeSizeAxes = Axes.Both
             }
         }
     };
 }