示例#1
0
        public override void Update(GameTime gameTime)
        {
            var info = (MouseClickInteractInfo)GetInteractInfo();

            if (info.GetInteractType() == MouseInteractType.Unknown)
            {
                return;
            }

            IClickable best = null;

            foreach (var clickable in RegisteredInterables.Select(x => (IClickable)x))
            {
                if (clickable.TriggerArea.Contains(info.Position) && (best == null || best.Layer < clickable.Layer))
                {
                    best = clickable;
                }
            }

            best?.NotifyInteract(info);
        }
示例#2
0
        public override void Update(GameTime gameTime)
        {
            var info = (TouchPadInteractInfo)GetInteractInfo();

            if (info.GetInteractType() == TouchInteractType.Unknown)
            {
                return;
            }
            if (info.GetInteractType() == TouchInteractType.Tap)
            {
                var        tapInfo = (TouchPadTapInteractInfo)info;
                IClickable best    = null;
                foreach (var tappable in RegisteredInterables.Select(x => (ITappable)x))
                {
                    if (tappable.TriggerArea.Contains(tapInfo.Position) && (best == null || best.Layer < tappable.Layer))
                    {
                        best = tappable;
                    }
                }

                best?.NotifyInteract(tapInfo);
            }
        }