namespace AcDream.App.Physics; /// /// Preserves retail ForcePosition's atomic local order: validate the accepted /// Position authority, blip once, acknowledge once, then stop if the /// acknowledgement synchronously displaced that authority. /// internal static class LocalForcePositionTransaction { internal static bool Apply( bool isForcePosition, Func isCurrent, Action blip, Action acknowledge) { ArgumentNullException.ThrowIfNull(isCurrent); ArgumentNullException.ThrowIfNull(blip); ArgumentNullException.ThrowIfNull(acknowledge); if (!isForcePosition) return true; if (!isCurrent()) return false; blip(); acknowledge(); return isCurrent(); } }