示例#1
0
 private void Create(ITextView textView, IEditorOptions editorOptions = null)
 {
     _textView = textView;
     _textBuffer = textView.TextBuffer;
     _snapshot = _textBuffer.CurrentSnapshot;
     _textBuffer.Changed += delegate { _snapshot = _textBuffer.CurrentSnapshot; };
     _globalSettings = new Vim.GlobalSettings();
     _localSettings = new LocalSettings(_globalSettings, FSharpOption.CreateForReference(editorOptions), FSharpOption.CreateForReference(textView));
     _markMap = new MarkMap(new TrackingLineColumnService());
     _vimData = new VimData();
     _search = VimUtil.CreateSearchService(_globalSettings);
     _jumpList = VimUtil.CreateJumpList();
     _statusUtil = new Mock<IStatusUtil>(MockBehavior.Strict);
     _navigator = VimUtil.CreateTextStructureNavigator(_textView, WordKind.NormalWord);
     _motionUtil = new MotionUtil(
         _textView,
         _markMap,
         _localSettings,
         _search,
         _navigator,
         _jumpList,
         _statusUtil.Object,
         VimUtil.GetWordUtil(textView),
         _vimData);
 }
示例#2
0
        private void Create2(
            ModeKind kind = ModeKind.VisualCharacter,
            params string[] lines)
        {
            _textView   = EditorUtil.CreateTextView(lines);
            _textBuffer = _textView.TextBuffer;
            var vimTextBuffer = Vim.CreateVimTextBuffer(_textBuffer);
            var vimBufferData = CreateVimBufferData(vimTextBuffer, _textView);

            _selection = _textView.Selection;
            _factory   = new MockRepository(MockBehavior.Strict);
            _tracker   = _factory.Create <ISelectionTracker>();
            _tracker.Setup(x => x.Start());
            _tracker.Setup(x => x.ResetCaret());
            _tracker.Setup(x => x.UpdateSelection());
            _operations = _factory.Create <ICommonOperations>();
            _operations.SetupGet(x => x.TextView).Returns(_textView);
            _commandUtil = _factory.Create <ICommandUtil>();
            var motionUtil = new MotionUtil(vimBufferData);
            var capture    = new MotionCapture(vimBufferData, new IncrementalSearch(vimBufferData, _operations.Object));
            var runner     = new CommandRunner(
                _textView,
                Vim.RegisterMap,
                capture,
                _commandUtil.Object,
                (new Mock <IStatusUtil>()).Object,
                VisualKind.Character);

            _modeRaw = new VisualMode(vimBufferData, _operations.Object, motionUtil, kind, runner, capture, _tracker.Object);
            _mode    = _modeRaw;
            _mode.OnEnter(ModeArgument.None);
        }
示例#3
0
        private void Create2(
            ModeKind kind = ModeKind.VisualCharacter,
            params string[] lines)
        {
            _textView   = CreateTextView(lines);
            _textBuffer = _textView.TextBuffer;
            var vimTextBuffer = Vim.CreateVimTextBuffer(_textBuffer);
            var vimBufferData = CreateVimBufferData(vimTextBuffer, _textView);
            var visualKind    = VisualKind.OfModeKind(kind).Value;

            _selection = _textView.Selection;
            _factory   = new MockRepository(MockBehavior.Strict);
            _tracker   = _factory.Create <ISelectionTracker>();
            _tracker.Setup(x => x.Start());
            _tracker.Setup(x => x.UpdateSelection());
            _tracker.Setup(x => x.RecordCaretTrackingPoint(It.IsAny <ModeArgument>()));
            _tracker.SetupGet(x => x.IsRunning).Returns(true);
            _operations = _factory.Create <ICommonOperations>();
            _operations.SetupGet(x => x.TextView).Returns(_textView);
            _operations.Setup(x => x.MoveCaretToPoint(It.IsAny <SnapshotPoint>(), ViewFlags.Standard));
            _commandUtil = _factory.Create <ICommandUtil>();
            var motionUtil = new MotionUtil(vimBufferData, _operations.Object);
            var capture    = new MotionCapture(vimBufferData, new IncrementalSearch(vimBufferData, _operations.Object, motionUtil));
            var runner     = new CommandRunner(
                vimBufferData,
                capture,
                _commandUtil.Object,
                VisualKind.Character,
                KeyRemapMode.Visual);

            _modeRaw = new VisualMode(vimBufferData, _operations.Object, motionUtil, visualKind, runner, capture, _tracker.Object);
            _mode    = _modeRaw;
            _mode.OnEnter(ModeArgument.None);
        }
示例#4
0
 private void Create(ITextView textView)
 {
     _textView = textView;
     _textBuffer = textView.TextBuffer;
     _buffer = _textView.TextBuffer;
     _snapshot = _buffer.CurrentSnapshot;
     _buffer.Changed += delegate { _snapshot = _buffer.CurrentSnapshot; };
     _globalSettings = new Vim.GlobalSettings();
     _localSettings = new LocalSettings(_globalSettings, _textView);
     _markMap = new MarkMap(new TrackingLineColumnService());
     _vimData = new VimData();
     _search = VimUtil.CreateSearchService(_globalSettings);
     _jumpList = VimUtil.CreateJumpList();
     _statusUtil = new Mock<IStatusUtil>(MockBehavior.Strict);
     _navigator = VimUtil.CreateTextStructureNavigator(_textView.TextBuffer);
     _motionUtil = new MotionUtil(
         _textView,
         _markMap,
         _localSettings,
         _search,
         _navigator,
         _jumpList,
         _statusUtil.Object,
         _vimData);
 }
    private static void GetCheckRay(MotionDirection side, CharacterMotorConfig config, Transform toMove, Vector3[] output, float index, float distance)
    {
        Vector3 sideDir   = MotionUtil.ToVector(side);
        Vector3 origin    = toMove.position;
        Vector3 direction = Vector3.zero;

        GetCheckValue(ref origin, ref direction, sideDir.x, config, index, Vector3.right, Vector3.up, distance);
        GetCheckValue(ref origin, ref direction, sideDir.y, config, index, Vector3.up, Vector3.right, distance);
        output[0] = origin;
        output[1] = origin + direction;
    }
示例#6
0
 private void BtnAllDefault_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show(string.Format("将所有的参数设置为默认值?"), "重置",
                         MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
     {
         foreach (var item in AxisMgr.Instance.FindAll())
         {
             MotionUtil.ResetAxisPrm(item);
         }
     }
 }
    private static Vector2 getForcesDirection(CharacterMotorState state)
    {
        var node      = state.forces.First;
        var direction = Vector2.zero;

        while (node != null)
        {
            direction = direction + (MotionUtil.ToVector(node.Value.direction) * node.Value.factor);
            node      = node.Next;
        }
        return(direction);
    }
示例#8
0
        /// <summary>
        /// Create the IVimBuffer with the given set of lines.  Note that we intentionally don't
        /// set the mode to Insert here because the given commands should work irrespective of the 
        /// mode. There are a few tests that rely on behavior from SelectionChangeTracker so they set
        /// the mode to Insert.
        /// </summary>
        /// <param name="lines"></param>
        protected virtual void Create(params string[] lines)
        {
            _textView = CreateTextView(lines);
            _textBuffer = _textView.TextBuffer;
            _vimBuffer = Vim.CreateVimBuffer(_textView);
            _globalSettings = _vimBuffer.GlobalSettings;
            _localSettings = _vimBuffer.LocalSettings;

            var operations = CommonOperationsFactory.GetCommonOperations(_vimBuffer.VimBufferData);
            var motionUtil = new MotionUtil(_vimBuffer.VimBufferData, operations);
            _insertUtilRaw = new InsertUtil(_vimBuffer.VimBufferData, motionUtil, operations);
            _insertUtil = _insertUtilRaw;
        }
示例#9
0
        /// <summary>
        /// Create the IVimBuffer with the given set of lines.  Note that we intentionally don't
        /// set the mode to Insert here because the given commands should work irrespective of the
        /// mode. There are a few tests that rely on behavior from SelectionChangeTracker so they set
        /// the mode to Insert.
        /// </summary>
        /// <param name="lines"></param>
        protected virtual void Create(params string[] lines)
        {
            _textView       = CreateTextView(lines);
            _textBuffer     = _textView.TextBuffer;
            _vimBuffer      = Vim.CreateVimBuffer(_textView);
            _globalSettings = _vimBuffer.GlobalSettings;
            _localSettings  = _vimBuffer.LocalSettings;

            var operations = CommonOperationsFactory.GetCommonOperations(_vimBuffer.VimBufferData);
            var motionUtil = new MotionUtil(_vimBuffer.VimBufferData, operations);

            _insertUtilRaw = new InsertUtil(_vimBuffer.VimBufferData, motionUtil, operations);
            _insertUtil    = _insertUtilRaw;
        }
示例#10
0
        public MotionCaptureTest()
        {
            _textView = CreateTextView();

            var vimTextBuffer    = Vim.CreateVimTextBuffer(_textView.TextBuffer);
            var vimBufferData    = CreateVimBufferData(vimTextBuffer, _textView);
            var commonOperations = CommonOperationsFactory.GetCommonOperations(vimBufferData);
            var motionUtil       = new MotionUtil(vimBufferData, commonOperations);

            _incrementalSearch = new IncrementalSearch(vimBufferData, commonOperations, motionUtil);
            _localSettings     = vimTextBuffer.LocalSettings;
            _captureRaw        = new MotionCapture(
                vimBufferData,
                _incrementalSearch);
            _capture = _captureRaw;
        }
示例#11
0
        protected void Create(ITextView textView)
        {
            _textView = textView;
            _textBuffer = textView.TextBuffer;
            _snapshot = _textBuffer.CurrentSnapshot;
            _textBuffer.Changed += delegate { _snapshot = _textBuffer.CurrentSnapshot; };

            _vimTextBuffer = Vim.CreateVimTextBuffer(_textBuffer);
            _statusUtil = new Mock<IStatusUtil>(MockBehavior.Strict);
            var vimBufferData = CreateVimBufferData(_vimTextBuffer, _textView, statusUtil: _statusUtil.Object);
            _globalSettings = vimBufferData.LocalSettings.GlobalSettings;
            _localSettings = vimBufferData.LocalSettings;
            _markMap = vimBufferData.Vim.MarkMap;
            _vimData = vimBufferData.Vim.VimData;
            _search = vimBufferData.Vim.SearchService;
            var wordNavigator = CreateTextStructureNavigator(_textView.TextBuffer, WordKind.NormalWord);
            _motionUtil = new MotionUtil(vimBufferData);
        }
    public static void Update(Transform toMove, CharacterMotorState state, CharacterMotorConfig config)
    {
        if (!state.isEnabled)
        {
            return;
        }
        Vector3 dir = getForcesDirection(state);

        dir = dir * Time.deltaTime;
        state.wasBlocked[MotionDirection.Up]    = state.blocked[MotionDirection.Up];
        state.wasBlocked[MotionDirection.Down]  = state.blocked[MotionDirection.Down];
        state.wasBlocked[MotionDirection.Left]  = state.blocked[MotionDirection.Left];
        state.wasBlocked[MotionDirection.Right] = state.blocked[MotionDirection.Right];
        foreach (MotionDirection side in SIDES)
        {
            state.blocked[side] = false;
            Vector3 sideDir            = MotionUtil.ToVector(side);
            var     isMovingInSideXDir = Math.Sign(dir.x) == Math.Sign(sideDir.x);
            var     isMovingInSideYDir = Math.Sign(dir.y) == Math.Sign(sideDir.y);
            if (!isMovingInSideXDir && !isMovingInSideYDir)
            {
                continue;
            }
            for (int i = 0; i < config.sideCheckCount; i++)
            {
                GetCheckRay(side, config, toMove, RAY_BUFFER, i, dir.magnitude);
                Vector3 direction = (RAY_BUFFER[1] - RAY_BUFFER[0]);
                float   distance  = GetBlockDistance(RAY_BUFFER[0], direction, config.layer);
                if (distance < float.MaxValue)
                {
                    float canMove = Mathf.Max(0, distance - .01f);
                    state.blocked[side] = true;
                    dir.x = isMovingInSideXDir ? Mathf.Sign(dir.x) * Mathf.Min(canMove, Mathf.Abs(dir.x)) : dir.x;
                    dir.y = isMovingInSideYDir ? Mathf.Sign(dir.y) * Mathf.Min(canMove, Mathf.Abs(dir.y)) : dir.y;
                    break;
                }
            }
        }
        state.lastMotion = dir;
        toMove.position  = toMove.position + dir;
    }
示例#13
0
        private void Create(KeyRemapMode countKeyRemapMode, params string[] lines)
        {
            _textView      = CreateTextView(lines);
            _vimTextBuffer = Vim.CreateVimTextBuffer(_textView.TextBuffer);
            _registerMap   = Vim.RegisterMap;
            var vimBufferData = CreateVimBufferData(
                _vimTextBuffer,
                _textView);

            _commandUtil = CreateCommandUtil(vimBufferData);
            var commonOperations  = CommonOperationsFactory.GetCommonOperations(vimBufferData);
            var motionUtil        = new MotionUtil(vimBufferData, commonOperations);
            var incrementalSearch = new IncrementalSearch(vimBufferData, commonOperations, motionUtil);
            var motionCapture     = new MotionCapture(vimBufferData, incrementalSearch);

            _runnerRaw = new CommandRunner(
                vimBufferData,
                motionCapture,
                _commandUtil,
                VisualKind.Character,
                countKeyRemapMode);
            _runner = _runnerRaw;
        }
示例#14
0
        private void Create(params string[] lines)
        {
            _vimHost        = (MockVimHost)Vim.VimHost;
            _textView       = CreateTextView(lines);
            _globalSettings = Vim.GlobalSettings;
            _globalSettings.IncrementalSearch = true;
            _globalSettings.WrapScan          = true;

            var vimTextBuffer = Vim.CreateVimTextBuffer(_textView.TextBuffer);

            _factory    = new MockRepository(MockBehavior.Strict);
            _statusUtil = _factory.Create <IStatusUtil>();
            _statusUtil.Setup(x => x.OnWarning(Resources.Common_SearchBackwardWrapped));
            _statusUtil.Setup(x => x.OnWarning(Resources.Common_SearchForwardWrapped));

            _vimData = Vim.VimData;
            var vimBufferData = CreateVimBufferData(vimTextBuffer, _textView);
            var operations    = CommonOperationsFactory.GetCommonOperations(vimBufferData);
            var motionUtil    = new MotionUtil(vimBufferData, operations);

            _searchRaw = new IncrementalSearch(vimBufferData, operations, motionUtil);
            _search    = _searchRaw;
        }
示例#15
0
        private void Create2(
            ModeKind kind = ModeKind.VisualCharacter,
            params string[] lines)
        {
            _textView = CreateTextView(lines);
            _textBuffer = _textView.TextBuffer;
            var vimTextBuffer = Vim.CreateVimTextBuffer(_textBuffer);
            var vimBufferData = CreateVimBufferData(vimTextBuffer, _textView);
            var visualKind = VisualKind.OfModeKind(kind).Value;

            _selection = _textView.Selection;
            _factory = new MockRepository(MockBehavior.Strict);
            _tracker = _factory.Create<ISelectionTracker>();
            _tracker.Setup(x => x.Start());
            _tracker.Setup(x => x.UpdateSelection());
            _tracker.Setup(x => x.RecordCaretTrackingPoint(It.IsAny<ModeArgument>()));
            _tracker.SetupGet(x => x.IsRunning).Returns(true);
            _operations = _factory.Create<ICommonOperations>();
            _operations.SetupGet(x => x.TextView).Returns(_textView);
            _operations.Setup(x => x.MoveCaretToPoint(It.IsAny<SnapshotPoint>(), ViewFlags.Standard));
            _commandUtil = _factory.Create<ICommandUtil>();
            var motionUtil = new MotionUtil(vimBufferData, _operations.Object);
            var capture = new MotionCapture(vimBufferData, new IncrementalSearch(vimBufferData, _operations.Object));
            var runner = new CommandRunner(
                _textView,
                Vim.RegisterMap,
                capture,
                vimBufferData.LocalSettings,
                _commandUtil.Object,
                (new Mock<IStatusUtil>()).Object,
                VisualKind.Character,
                KeyRemapMode.Visual);
            _modeRaw = new VisualMode(vimBufferData, _operations.Object, motionUtil, visualKind, runner, capture, _tracker.Object);
            _mode = _modeRaw;
            _mode.OnEnter(ModeArgument.None);
        }
示例#16
0
        private void Create2(
            ModeKind kind = ModeKind.VisualCharacter,
            params string[] lines)
        {
            _textView = CreateTextView(lines);
            _textBuffer = _textView.TextBuffer;
            var vimTextBuffer = Vim.CreateVimTextBuffer(_textBuffer);
            var vimBufferData = CreateVimBufferData(vimTextBuffer, _textView);

            _selection = _textView.Selection;
            _factory = new MockRepository(MockBehavior.Strict);
            _tracker = _factory.Create<ISelectionTracker>();
            _tracker.Setup(x => x.Start());
            _tracker.Setup(x => x.UpdateSelection());
            _tracker.SetupGet(x => x.IsRunning).Returns(true);
            _operations = _factory.Create<ICommonOperations>();
            _operations.SetupGet(x => x.TextView).Returns(_textView);
            _commandUtil = _factory.Create<ICommandUtil>();
            var motionUtil = new MotionUtil(vimBufferData);
            var capture = new MotionCapture(vimBufferData, new IncrementalSearch(vimBufferData, _operations.Object));
            var runner = new CommandRunner(
                _textView,
                Vim.RegisterMap,
                capture,
                _commandUtil.Object,
                (new Mock<IStatusUtil>()).Object,
                VisualKind.Character);
            _modeRaw = new VisualMode(vimBufferData, _operations.Object, motionUtil, kind, runner, capture, _tracker.Object);
            _mode = _modeRaw;
            _mode.OnEnter(ModeArgument.None);
        }
示例#17
0
 public void Create(params string[] lines)
 {
     _textView = Utils.EditorUtil.CreateView(lines);
     _buffer = _textView.TextBuffer;
     _settings = new Vim.GlobalSettings();
     _utilRaw = new MotionUtil(_textView, _settings);
     _util = _utilRaw;
 }