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); } }