コード例 #1
0
    void IPunObservable.OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
#if USE_PUN
        if (stream.isWriting)
        {
            stream.SendNext(inPlayMode);
            stream.SendColor(currentTint);

            bool toolActive = locallyActiveTool != null;
            stream.SendNext(toolActive);
            if (toolActive)
            {
                stream.SendNext(locallyActiveTool.GetToolEffectName());
                stream.SendNext(locallyActiveTool.GetToolEffectActive());
                stream.SendNext(locallyActiveTool.GetToolEffectTargetViewId());
                stream.SendNext(locallyActiveTool.GetToolEffectTargetPosition());
                stream.SendNext(locallyActiveTool.GetCreatePreviewSettingsJson());
            }
            stream.SendNext(playAvatarRendererEnabled);
        }
        else
        {
            if (!setupCalled)
            {
                Setup(false);
            }

            SetInPlayMode((bool)stream.ReceiveNext());
            SetTint(stream.ReceiveColor());
            if ((bool)stream.ReceiveNext())
            {
                // Tool is active.
                SetToolEffectName((string)stream.ReceiveNext());
                bool isActive = (bool)stream.ReceiveNext(); // IMPORTANT keep a local var, since the ?. may not call receive
                toolEffectReplicant?.SetActive(isActive);
                receivedToolTargetViewId = (int)stream.ReceiveNext();
                lastReceivedTargetPos    = (Vector3)stream.ReceiveNext(); // IMPORTANT keep a local var, since the ?. may not call receive
                SetCreatePreviewSettingsJson((string)stream.ReceiveNext());
            }
            else
            {
                DestroyToolEffectReplicant();
                SetCreatePreviewSettingsJson(null);
                lerpedTargetPos       = Vector3.positiveInfinity;
                lastReceivedTargetPos = Vector3.positiveInfinity;
            }
            // "Render enabled" field not present in earlier versions, defaults to true:
            SetPlayerVisible((bool)stream.ReceiveNext());
        }
#endif
    }