public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { if (stream.IsWriting) { if (this.m_SynchronizePosition) { this.m_Direction = transform.position - this.m_StoredPosition; this.m_StoredPosition = transform.position; stream.SendNext(transform.position); stream.SendNext(this.m_Direction); } if (this.m_SynchronizeRotation) { stream.SendNext(transform.rotation); } if (this.m_SynchronizeScale) { stream.SendNext(transform.localScale); } if (m_SynchronizeState) { stream.SendNext(gameObject.activeSelf); } } else { _offsetTime = 0f; if (this.m_SynchronizePosition) { this.m_NetworkPosition = (Vector3)stream.ReceiveNext(); this.m_Direction = (Vector3)stream.ReceiveNext(); float lag = Mathf.Abs((float)(PhotonNetwork.Time - info.SentServerTime)); this.m_NetworkPosition += this.m_Direction * lag; this.m_Distance = Vector3.Distance(transform.position, this.m_NetworkPosition); } if (this.m_SynchronizeRotation) { this.m_NetworkRotation = (Quaternion)stream.ReceiveNext(); this.m_Angle = Quaternion.Angle(transform.rotation, this.m_NetworkRotation); } if (this.m_SynchronizeScale) { transform.localScale = (Vector3)stream.ReceiveNext(); } if (m_SynchronizeState) { gameObject.SetActive((bool)stream.ReceiveNext()); } } }
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { if (stream.IsWriting) { if (this.m_SynchronizePosition) { this.m_Direction = transform.position - this.m_StoredPosition; this.m_StoredPosition = transform.position; stream.SendNext(transform.position); stream.SendNext(this.m_Direction); } if (this.m_SynchronizeRotation) { stream.SendNext(transform.rotation); } if (this.m_SynchronizeScale) { stream.SendNext(transform.localScale);// - m_StoredScale } } else { if (this.m_SynchronizePosition) { this.m_NetworkPosition = (Vector3)stream.ReceiveNext(); this.m_Direction = (Vector3)stream.ReceiveNext(); if (m_firstTake) { transform.position = this.m_NetworkPosition; this.m_Distance = 0f; } else { float lag = Mathf.Abs((float)(PhotonNetwork.Time - info.SentServerTime)); this.m_NetworkPosition += this.m_Direction * lag; this.m_Distance = Vector3.Distance(transform.position, this.m_NetworkPosition); } } if (this.m_SynchronizeRotation) { this.m_NetworkRotation = (Quaternion)stream.ReceiveNext(); if (m_firstTake) { this.m_Angle = 0f; transform.rotation = this.m_NetworkRotation; } else { this.m_Angle = Quaternion.Angle(transform.rotation, this.m_NetworkRotation); } } if (this.m_SynchronizeScale) { this.gameObject.transform.localScale = (Vector3)stream.ReceiveNext(); // this.m_NetworkScale = (Vector3)stream.ReceiveNext(); //if (m_firstTake) // { // transform.localScale = this.m_NetworkScale; // this.m_diff = 0; // } // else // { // float lag = Mathf.Abs((float)(PhotonNetwork.Time - info.SentServerTime)); // this.m_diff = lag*Vector3.Distance(transform.localScale, this.m_NetworkScale); // } } if (m_firstTake) { m_firstTake = false; } } }
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { var tr = transform; // Write if (stream.IsWriting) { if (this.m_SynchronizePosition) { if (m_UseLocal) { this.m_Direction = tr.localPosition - this.m_StoredPosition; this.m_StoredPosition = tr.localPosition; stream.SendNext(tr.localPosition); stream.SendNext(this.m_Direction); } else { this.m_Direction = tr.position - this.m_StoredPosition; this.m_StoredPosition = tr.position; stream.SendNext(tr.position); stream.SendNext(this.m_Direction); } } if (this.m_SynchronizeRotation) { if (m_UseLocal) { stream.SendNext(tr.localRotation); } else { stream.SendNext(tr.rotation); } } if (this.m_SynchronizeScale) { stream.SendNext(tr.localScale); } } // Read else { if (this.m_SynchronizePosition) { this.m_NetworkPosition = (Vector3)stream.ReceiveNext(); this.m_Direction = (Vector3)stream.ReceiveNext(); if (m_firstTake) { if (m_UseLocal) { tr.localPosition = this.m_NetworkPosition; } else { tr.position = this.m_NetworkPosition; } this.m_Distance = 0f; } else { float lag = Mathf.Abs((float)(PhotonNetwork.Time - info.SentServerTime)); this.m_NetworkPosition += this.m_Direction * lag; if (m_UseLocal) { this.m_Distance = Vector3.Distance(tr.localPosition, this.m_NetworkPosition); } else { this.m_Distance = Vector3.Distance(tr.position, this.m_NetworkPosition); } } } if (this.m_SynchronizeRotation) { this.m_NetworkRotation = (Quaternion)stream.ReceiveNext(); if (m_firstTake) { this.m_Angle = 0f; if (m_UseLocal) { tr.localRotation = this.m_NetworkRotation; } else { tr.rotation = this.m_NetworkRotation; } } else { if (m_UseLocal) { this.m_Angle = Quaternion.Angle(tr.localRotation, this.m_NetworkRotation); } else { this.m_Angle = Quaternion.Angle(tr.rotation, this.m_NetworkRotation); } } } if (this.m_SynchronizeScale) { tr.localScale = (Vector3)stream.ReceiveNext(); } if (m_firstTake) { m_firstTake = false; } } }
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { if (stream.IsWriting) { if (m_Other && m_firstSync) { m_StoredPosition = m_Other.transform.position; m_firstSync = !m_firstSync; } if (this.m_SynchronizePosition) { if (m_Other) { this.m_Direction = m_Other.transform.position - this.m_StoredPosition; this.m_StoredPosition = m_Other.transform.position; stream.SendNext(m_Other.transform.position); stream.SendNext(this.m_Direction); } else { stream.SendNext(Vector3.zero); stream.SendNext(Vector3.forward); } } if (this.m_SynchronizeRotation) { if (m_Other) { stream.SendNext(m_Other.transform.rotation); } else { stream.SendNext(Quaternion.identity); } } if (this.m_SynchronizeScale) { if (m_Other) { stream.SendNext(m_Other.transform.localScale); } else { stream.SendNext(Vector3.one); } } } else { if (this.m_SynchronizePosition) { this.m_NetworkPosition = (Vector3)stream.ReceiveNext(); this.m_Direction = (Vector3)stream.ReceiveNext(); if (m_firstTake) { transform.position = this.m_NetworkPosition; this.m_Distance = 0f; } else { float lag = Mathf.Abs((float)(PhotonNetwork.Time - info.SentServerTime)); this.m_NetworkPosition += this.m_Direction * lag; this.m_Distance = Vector3.Distance(transform.position, this.m_NetworkPosition); } } if (this.m_SynchronizeRotation) { this.m_NetworkRotation = (Quaternion)stream.ReceiveNext(); if (m_firstTake) { this.m_Angle = 0f; transform.rotation = this.m_NetworkRotation; } else { this.m_Angle = Quaternion.Angle(transform.rotation, this.m_NetworkRotation); } } if (this.m_SynchronizeScale) { transform.localScale = (Vector3)stream.ReceiveNext(); } if (m_firstTake) { m_firstTake = false; } } }