public void Stop(BonePosePreCalculator calculator)
 {
     lock (this)
     {
         _calculators.Remove(calculator);
     }
 }
 public void NotifyTake(BonePosePreCalculator calculator)
 {
     lock (_calculators)
     {
         Monitor.PulseAll(_calculators);
     }
 }
        private static void WritePose(BinaryWriter writer, Poser poser)
        {
            var bonePoseImages = BonePosePreCalculator.GetBonePoseImage(poser);

            foreach (var bonePose in bonePoseImages)
            {
                WriteVector3(writer, bonePose.Position);
                WriteVector3(writer, bonePose.Rotation.eulerAngles);
            }
        }
 //返回id
 public void Start(BonePosePreCalculator calculator)
 {
     lock (this)
     {
         _calculators.Add(calculator);
         if (_workThread == null)
         {
             _workThread = new Thread(Run);
             _workThread.Start();
         }
     }
     lock (_calculators)
     {
         Monitor.PulseAll(_calculators);
     }
 }