Esempio n. 1
0
    ///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);
            }
        }
    }