Пример #1
0
        void SimulateOnMove_DoWork(object sender, DoWorkEventArgs e)
        {
            var coordinates   = (List <double[]>)((object[])e.Argument)[0];
            var changedJoints = (List <Boolean>)((object[])e.Argument)[1];

            if (SimulateOnMove.CancellationPending)
            {
                e.Cancel = true; return;
            }
            if (movingPMKS == null)
            {
                movingPMKS = new Simulator(App.main.LinkIDs, App.main.JointTypes,
                                           App.main.drivingIndex, coordinates)
                {
                    MaxSmoothingError = 0.1
                };
            }
            else
            {
                movingPMKS.AssignPositions(coordinates);
            }
            if (SimulateOnMove.CancellationPending)
            {
                e.Cancel = true; return;
            }
            if (movingPMKS.DegreesOfFreedom != 1)
            {
                return;
            }
            movingPMKS.FindFullMovement();
            App.main.Dispatcher.BeginInvoke(() => UpdateShapesDuringMove(changedJoints, App.main.JointsInfo.Data, e));
        }