using System.Threading; namespace DotRecast.Core { public class AtomicFloat { private volatile float _location; public AtomicFloat(float location) { _location = location; } public float Get() { return _location; } public float Exchange(float exchange) { return Interlocked.Exchange(ref _location, exchange); } public float CompareExchange(float value, float comparand) { return Interlocked.CompareExchange(ref _location, value, comparand); } } }