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