///managed by UpdateManager public override void LateUpdateMe() { //finish rotation now that the transform should finally be rotated if (!NeedsRotationClient && inProgressRotation != null) { //client and server logic happens here because server also must wait for the rotation to finish lerping. Logger.LogTraceFormat("{0} ending rotation progress to {1}", Category.Matrix, this, inProgressRotation.Value); if (isServer) { MatrixMoveEvents.OnRotate.Invoke(new MatrixRotationInfo(this, inProgressRotation.Value, NetworkSide.Server, RotationEvent.End)); } MatrixMoveEvents.OnRotate.Invoke(new MatrixRotationInfo(this, inProgressRotation.Value, NetworkSide.Client, RotationEvent.End)); inProgressRotation = null; if (pendingInitialRotation && !receivedInitialState) { receivedInitialState = true; pendingInitialRotation = false; } } if (isClient) { if (coordReadoutScript != null) { coordReadoutScript.SetCoords(clientState.Position); } if (shuttleControlGUI != null && rcsModeActive != shuttleControlGUI.RcsMode) { shuttleControlGUI.ClientToggleRcs(rcsModeActive); } } }