Beispiel #1
0
        void Mouse_Move(object sender, Duality.Input.MouseMoveEventArgs e)
        {
            mousePosition.X = e.X;
            mousePosition.Y = e.Y;

            // check all MenuComponents under the mouse and sort them by Z,
            // to find the one nearest to the Camera
            MenuComponent hoveredComponent = this.GameObj.ParentScene.FindComponents <MenuComponent>()
                                             .Where(mc => mc.GameObj.Active && mc.GetAreaOnScreen().Contains(mousePosition))
                                             .OrderBy(mc => mc.GameObj.Transform.Pos.Z)
                                             .FirstOrDefault();

            // I found my hovered menu component.. is it different from the current one?
            if (hoveredComponent != currentComponent)
            {
                // if the old one is not null, leave it.
                if (currentComponent != null)
                {
                    currentComponent.MouseLeave();
                }

                // if the new one is not null, enter it.
                if (hoveredComponent != null)
                {
                    hoveredComponent.MouseEnter();
                }
            }

            // set the current component to the hovered one.
            currentComponent = hoveredComponent;
        }
Beispiel #2
0
        void ICmpUpdatable.OnUpdate()
        {
            // No menus currently active? Switch to StartingMenu - this is checked everytime
            if (this.currentMenu == null)
            {
                this.SwitchToMenu(this.StartingMenu);
            }

            mousePosition.X = DualityApp.Mouse.X;
            mousePosition.Y = DualityApp.Mouse.Y;

            // check all MenuComponents under the mouse and sort them by Z,
            // to find the one nearest to the Camera
            MenuComponent hoveredComponent = this.GameObj.ParentScene.FindComponents <MenuComponent>()
                                             .Where(mc => mc.GameObj.Active && mc.GetAreaOnScreen().Contains(mousePosition))
                                             .OrderBy(mc => mc.GameObj.Transform.Pos.Z)
                                             .FirstOrDefault();

            // I found my hovered menu component.. is it different from the current one?
            if (hoveredComponent != currentComponent)
            {
                // if the old one is not null, leave it.
                if (currentComponent != null)
                {
                    currentComponent.MouseLeave();
                }

                // if the new one is not null, enter it.
                if (hoveredComponent != null)
                {
                    hoveredComponent.MouseEnter();
                }
            }


            // set the current component to the hovered one.
            currentComponent = hoveredComponent;

            // did I click the left button and am I hovering a component? do something!
            if (DualityApp.Mouse.ButtonHit(Duality.Input.MouseButton.Left) && currentComponent != null)
            {
                currentComponent.DoAction();
            }
        }