コード例 #1
0
ファイル: InputProcessor.cs プロジェクト: bangush/Core2D
 static void OnNextLeftDown(IInputTarget target, InputArgs args)
 {
     if (target.IsLeftDownAvailable())
     {
         target.LeftDown(args);
     }
 }
コード例 #2
0
ファイル: InputProcessor.cs プロジェクト: ag-csharp/Core2D
 /// <summary>
 /// Connects source and target inputs.
 /// </summary>
 /// <param name="source">The input source.</param>
 /// <param name="target">The input target.</param>
 public void Connect(IInputSource source, IInputTarget target)
 {
     _leftDownDisposable  = ConnectLeftDown(source, target);
     _leftUpDisposable    = ConnectLeftUp(source, target);
     _rightDownDisposable = ConnectRightDown(source, target);
     _rightUpDisposable   = ConnectRightUp(source, target);
     _moveDisposable      = ConnectMove(source, target);
 }
コード例 #3
0
        private static IDisposable ConnectLeftDown(IInputSource source, IInputTarget target)
        {
            //var observer = new InputArgsObserver(target, OnNextLeftDown);
            //return source.LeftDown.SubscribeSafe(observer);
            return(source.LeftDown.Subscribe(OnNextLeftDown));

            void OnNextLeftDown(InputArgs args)
            {
                if (target.IsLeftDownAvailable())
                {
                    target.LeftDown(args);
                }
            }
        }
コード例 #4
0
        private static IDisposable ConnectMove(IInputSource source, IInputTarget target)
        {
            //var observer = new InputArgsObserver(target, OnNextMove);
            //return source.Move.SubscribeSafe(observer);
            return(source.Move.Subscribe(OnNextMove));

            void OnNextMove(InputArgs args)
            {
                if (target.IsMoveAvailable())
                {
                    target.Move(args);
                }
            }
        }
コード例 #5
0
        private static IDisposable ConnectRightUp(IInputSource source, IInputTarget target)
        {
            //var observer = new InputArgsObserver(target, OnNextRightUp);
            //return source.RightUp.SubscribeSafe(observer);
            return(source.RightUp.Subscribe(OnNextRightUp));

            void OnNextRightUp(InputArgs args)
            {
                if (target.IsRightUpAvailable())
                {
                    target.RightUp(args);
                }
            }
        }
コード例 #6
0
    private void HandleInputTargetFound(IInputTarget inputTarget)
    {
        var movable = inputTarget as MovableItem;

        if (movable != null)
        {
            HandleMovableFound(movable);
        }
        var target = inputTarget as TargetObject;

        if (target != null)
        {
            HandleTargetFound(target);
        }
    }
コード例 #7
0
ファイル: InputProcessor.cs プロジェクト: Core2D/Core2D
        /// <summary>
        /// Initializes a new instance of the <see cref="InputProcessor"/> class.
        /// </summary>
        /// <param name="source">The input source.</param>
        /// <param name="target">The input target.</param>
        public InputProcessor(IInputSource source, IInputTarget target)
        {
            _leftDownDisposable = source.LeftDown.Subscribe(
                (v) =>
                {
                    if (target.IsLeftDownAvailable())
                    {
                        target.LeftDown(v.X, v.Y);
                    }
                });

            _leftUpDisposable = source.LeftUp.Subscribe(
                (v) =>
                {
                    if (target.IsLeftUpAvailable())
                    {
                        target.LeftUp(v.X, v.Y);
                    }
                });

            _rightDownDisposable = source.RightDown.Subscribe(
                (v) =>
                {
                    if (target.IsRightDownAvailable())
                    {
                        target.RightDown(v.X, v.Y);
                    }
                });

            _rightUpDisposable = source.RightUp.Subscribe(
                (v) =>
                {
                    if (target.IsRightUpAvailable())
                    {
                        target.RightUp(v.X, v.Y);
                    }
                });

            _moveDisposable = source.Move.Subscribe(
                (v) =>
                {
                    if (target.IsMoveAvailable())
                    {
                        target.Move(v.X, v.Y);
                    }
                });
        }
コード例 #8
0
ファイル: InputProcessor.cs プロジェクト: erisonliang/Core2D
        /// <summary>
        /// Initializes a new instance of the <see cref="InputProcessor"/> class.
        /// </summary>
        /// <param name="source">The input source.</param>
        /// <param name="target">The input target.</param>
        public InputProcessor(IInputSource source, IInputTarget target)
        {
            _leftDownDisposable = source.LeftDown.Subscribe(
                (args) =>
            {
                if (target.IsLeftDownAvailable())
                {
                    target.LeftDown(args);
                }
            });

            _leftUpDisposable = source.LeftUp.Subscribe(
                (args) =>
            {
                if (target.IsLeftUpAvailable())
                {
                    target.LeftUp(args);
                }
            });

            _rightDownDisposable = source.RightDown.Subscribe(
                (args) =>
            {
                if (target.IsRightDownAvailable())
                {
                    target.RightDown(args);
                }
            });

            _rightUpDisposable = source.RightUp.Subscribe(
                (args) =>
            {
                if (target.IsRightUpAvailable())
                {
                    target.RightUp(args);
                }
            });

            _moveDisposable = source.Move.Subscribe(
                (args) =>
            {
                if (target.IsMoveAvailable())
                {
                    target.Move(args);
                }
            });
        }
コード例 #9
0
ファイル: InputProcessor.cs プロジェクト: ag-csharp/Core2D
        private static IDisposable ConnectRightDown(IInputSource source, IInputTarget target)
        {
#if USE_CUSTOM_OBSERVER
            var observer = new InputArgsObserver(target, OnNextRightDown);
            return(source.RightDown.Subscribe(observer));

            void OnNextRightDown(IInputTarget target, InputArgs args)
#else
            return(source.RightDown.Subscribe(OnNextRightDown));

            void OnNextRightDown(InputArgs args)
#endif
            {
                if (target.IsRightDownAvailable())
                {
                    target.RightDown(args);
                }
            }
        }
コード例 #10
0
ファイル: InputProcessor.cs プロジェクト: ag-csharp/Core2D
        private static IDisposable ConnectLeftUp(IInputSource source, IInputTarget target)
        {
#if USE_CUSTOM_OBSERVER
            var observer = new InputArgsObserver(target, OnNextLeftUp);
            return(source.LeftUp.Subscribe(observer));

            void OnNextLeftUp(IInputTarget target, InputArgs args)
#else
            return(source.LeftUp.Subscribe(OnNextLeftUp));

            void OnNextLeftUp(InputArgs args)
#endif
            {
                if (target.IsLeftUpAvailable())
                {
                    target.LeftUp(args);
                }
            }
        }
コード例 #11
0
ファイル: InputDeviceButton.cs プロジェクト: vetuomia/rocket
 /// <summary>
 /// Sends the input to the target.
 /// </summary>
 /// <param name="target">The input target.</param>
 public override void SendTo(IInputTarget target)
 {
     base.SendTo(target);
     target.OnInputDeviceButton(this);
 }
コード例 #12
0
ファイル: InputProcessor.cs プロジェクト: bangush/Core2D
        private static IDisposable ConnectLeftDown(IInputSource source, IInputTarget target)
        {
            var observer = new InputArgsObserver(target, OnNextLeftDown);

            return(source.LeftDown.Subscribe(observer));
コード例 #13
0
ファイル: InputProcessor.cs プロジェクト: ag-csharp/Core2D
 public InputArgsObserver(IInputTarget target, Action <IInputTarget, InputArgs> onNext)
 {
     _target = target;
     _onNext = onNext;
 }
コード例 #14
0
ファイル: GamepadAxis.cs プロジェクト: vetuomia/rocket
 /// <summary>
 /// Sends the input to the target.
 /// </summary>
 /// <param name="target">The input target.</param>
 public override void SendTo(IInputTarget target)
 {
     base.SendTo(target);
     target.OnGamepadAxis(this);
 }
コード例 #15
0
ファイル: Key.cs プロジェクト: vetuomia/rocket
 /// <summary>
 /// Sends the input to the target.
 /// </summary>
 /// <param name="target">The input target.</param>
 public override void SendTo(IInputTarget target)
 {
     base.SendTo(target);
     target.OnKey(this);
 }
コード例 #16
0
ファイル: JoystickButton.cs プロジェクト: vetuomia/rocket
 /// <summary>
 /// Sends the input to the target.
 /// </summary>
 /// <param name="target">The input target.</param>
 public override void SendTo(IInputTarget target)
 {
     base.SendTo(target);
     target.OnJoystickButton(this);
 }
コード例 #17
0
ファイル: ButtonInput.cs プロジェクト: vetuomia/rocket
 /// <summary>
 /// Sends the input to the target.
 /// </summary>
 /// <param name="target">The input target.</param>
 public override void SendTo(IInputTarget target) => target.OnButton(this);
コード例 #18
0
ファイル: MouseMove.cs プロジェクト: vetuomia/rocket
 /// <summary>
 /// Sends the input to the target.
 /// </summary>
 /// <param name="target">The input target.</param>
 public override void SendTo(IInputTarget target) => target.OnMouseMove(this);
コード例 #19
0
ファイル: Character.cs プロジェクト: vetuomia/rocket
 /// <summary>
 /// Sends the input to the target.
 /// </summary>
 /// <param name="target">The input target.</param>
 public override void SendTo(IInputTarget target) => target.OnCharacter(this);
コード例 #20
0
ファイル: Input.cs プロジェクト: vetuomia/rocket
 /// <summary>
 /// Sends the input to the target.
 /// </summary>
 /// <param name="target">The input target.</param>
 public abstract void SendTo(IInputTarget target);