public void OnPhotonSerializeView(Vector3 currentScale, PhotonStream stream, PhotonMessageInfo info) { if (m_Model.SynchronizeEnabled == false) { return; } if (stream.IsWriting == true) { stream.SendNext(currentScale); m_NetworkScale = currentScale; } else { m_NetworkScale = (Vector3)stream.ReceiveNext(); } }
public void OnPhotonSerializeView(Quaternion currentRotation, PhotonStream stream, PhotonMessageInfo info) { if (m_Model.SynchronizeEnabled == false) { return; } if (stream.IsWriting == true) { stream.SendNext(currentRotation); m_NetworkRotation = currentRotation; } else { m_NetworkRotation = (Quaternion)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); } 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) { 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; } } }
private void DeserializeDataDiscretly(PhotonStream stream) { for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) { if (this.m_SynchronizeLayers[i].SynchronizeType == SynchronizeType.Discrete) { this.m_Animator.SetLayerWeight(this.m_SynchronizeLayers[i].LayerIndex, (float)stream.ReceiveNext()); } } for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) { SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; if (parameter.SynchronizeType == SynchronizeType.Discrete) { switch (parameter.Type) { case ParameterType.Bool: if (stream.PeekNext() is bool == false) { return; } this.m_Animator.SetBool(parameter.Name, (bool)stream.ReceiveNext()); break; case ParameterType.Float: if (stream.PeekNext() is float == false) { return; } this.m_Animator.SetFloat(parameter.Name, (float)stream.ReceiveNext()); break; case ParameterType.Int: if (stream.PeekNext() is int == false) { return; } this.m_Animator.SetInteger(parameter.Name, (int)stream.ReceiveNext()); break; case ParameterType.Trigger: if (stream.PeekNext() is bool == false) { return; } if ((bool)stream.ReceiveNext()) { this.m_Animator.SetTrigger(parameter.Name); } break; } } } }
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) { 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; } } }