public void Play()
        {
            if (!playBack && knots.m_size > 1)
            {
                currentTransfrom = new Knot();

                CameraDirector.mainWindow.isVisible = false;
                CameraDirector.SetFreeCamera(CameraDirector.freeCamera);

                if (CameraDirector.freeCamera)
                {
                    Cursor.visible = false;
                }

                time     = 0f;
                playBack = true;
                CameraDirector.camera.GetComponent <CameraController>().enabled = false;

                if (CameraDirector.startSimulation)
                {
                    simPaused = SimulationManager.instance.SimulationPaused;
                    SimulationManager.instance.SimulationPaused = false;
                }

                if (CameraDirector.useFps)
                {
                    while (!Monitor.TryEnter(m_simulationFrameLock, SimulationManager.SYNCHRONIZE_TIMEOUT))
                    {
                    }
                    try
                    {
                        SimulationManager.instance.m_simulationThread.Suspend();
                    }
                    finally
                    {
                        Monitor.Exit(m_simulationFrameLock);
                    }

                    waitTimeTarget = 1000 / CameraDirector.fps;
                    stepcount      = 0;
                }
            }
        }
        public void Stop()
        {
            CameraDirector.mainWindow.isVisible = true;
            CameraDirector.SetFreeCamera(false);

            if (CameraDirector.freeCamera)
            {
                Cursor.visible = true;
            }

            playBack = false;
            CameraDirector.cameraController.enabled = true;
            CameraDirector.camera.fieldOfView       = CameraDirector.mainWindow.fovSlider.value / 2f;

            if (CameraDirector.startSimulation)
            {
                SimulationManager.instance.SimulationPaused = simPaused;
            }

            if (CameraDirector.useFps)
            {
                SimulationManager.instance.m_simulationThread.Resume();
            }
        }