Exemplo n.º 1
0
        private void DoPick(IInputStateSnapshot snapshot)
        {
            var norm = GetNormalizedMousePosition();

            var startPos    = _view.Camera.NormalizedScreenToWorld(new Vector3(norm.X, norm.Y, 0.0f)); // Near plane
            var endPos      = _view.Camera.NormalizedScreenToWorld(new Vector3(norm.X, norm.Y, 1.0f)); // Far plane
            var intersector = LineSegmentIntersector.Create(startPos, endPos);

            var intersectionVisitor = IntersectionVisitor.Create(intersector);

            _view.SceneData?.Accept(intersectionVisitor);

            if (intersector.Intersections.Any())
            {
                var idx = 0;
                foreach (var intersection in intersector.Intersections)
                {
                    Console.WriteLine($"Intersected [{idx}]: {intersection.Drawable.Name}");
                    var jdx = 0;
                    foreach (var node in intersection.NodePath)
                    {
                        Console.WriteLine($"  Path[{jdx}]: {node.NameString}");
                        ++jdx;
                    }
                    ++idx;
                }
            }
            else
            {
                Console.WriteLine("No Intersections");
            }
        }
        public override void HandleInput(IInputStateSnapshot snapshot)
        {
            base.HandleInput(snapshot);

            if (InputStateTracker.IsMouseButtonPushed())
            {
                HandleMouseButtonPushed();
            }

            if (InputStateTracker.IsMouseButtonReleased())
            {
                HandleMouseButtonReleased();
            }

            if (InputStateTracker.IsMouseButtonDown() && InputStateTracker.IsMouseMove())
            {
                HandleDrag();
            }

            else if (InputStateTracker.IsMouseMove())
            {
                HandleMouseMove();
            }

            if (InputStateTracker.FrameSnapshot.WheelDelta != 0)
            {
                HandleWheelDelta();
            }
        }
Exemplo n.º 3
0
        public void UpdateFrameInput(IInputStateSnapshot snapshot)
        {
            FrameSnapshot = snapshot;
            _newKeysThisFrame.Clear();
            _pushedMouseButtonsThisFrame.Clear();
            _releasedMouseButtonsThisFrame.Clear();

            LastMousePosition = MousePosition;
            MousePosition     = snapshot.MousePosition;

            for (int i = 0; i < snapshot.KeyEvents.Count; i++)
            {
                KeyEvent ke = snapshot.KeyEvents[i];
                if (ke.Down)
                {
                    KeyDown(ke.Key);
                }
                else
                {
                    KeyUp(ke.Key);
                }
            }
            for (int i = 0; i < snapshot.MouseEvents.Count; i++)
            {
                MouseEvent me = snapshot.MouseEvents[i];
                if (me.Down)
                {
                    MouseDown(me.MouseButton);
                }
                else
                {
                    MouseUp(me.MouseButton);
                }
            }
        }
Exemplo n.º 4
0
        public override void HandleInput(IInputStateSnapshot snapshot)
        {
            base.HandleInput(snapshot);

            foreach (var keyEvent in snapshot.KeyEvents)
            {
                if (keyEvent.Down)
                {
                    switch (keyEvent.Key)
                    {
                    case Key.P:
                        DoPick(snapshot);
                        break;
                    }
                }
            }
        }
Exemplo n.º 5
0
        private void DoSwitch(IInputStateSnapshot snapshot)
        {
            if (_pos == -1)
            {
                _switch.SetAllChildrenOff();
                _logger.Info(m => m("All Children Off"));
            }
            else if (_pos == _switch.GetNumChildren())
            {
                _switch.SetAllChildrenOn();
                _logger.Info(m => m("All Children On"));
            }
            else
            {
                _switch.SetValue(_pos, true);
                _logger.Info(m => m($"Enabled Child At => {_pos}"));
            }

            _pos++;
            if (_pos == _switch.GetNumChildren())
            {
                _pos = -1;
            }
        }
Exemplo n.º 6
0
 public virtual void HandleInput(IInputStateSnapshot snapshot)
 {
     InputStateTracker.UpdateFrameInput(snapshot);
 }
 private void DoSwitchUpateState(IInputStateSnapshot snapshot)
 {
 }