OnPhotonSerializeView is a function that matches similar one-way communication that exists in Unity's networking implementation. It should not be used. Instead, just do an RFC call. So for example, instead of this:
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting)
{
//We own this player: send the others our data
stream.SendNext((int)controllerScript._characterState);
stream.SendNext(transform.position);
stream.SendNext(transform.rotation);
}
else
{
//Network player, receive data
controllerScript._characterState = (CharacterState)(int)stream.ReceiveNext();
correctPlayerPos = (Vector3)stream.ReceiveNext();
correctPlayerRot = (Quaternion)stream.ReceiveNext();
}
}
You could do this:
[RFC]
void OnMyData (int state, Vector3 pos, Quaternion rot)
{
controllerScript._characterState = (CharacterState)state;
correctPlayerPos = pos;
correctPlayerRot = rot;
}
You would then call this function on the object's owner like so:
if (tno.isMine) tno.Send("OnMyData", Target.OthersSaved, (int)controllerScript_characterState, correctPlayerPos, correctPlayerRot);
....However... what would be even easier is to just use TNAutoSync script instead, pointing to the values you want sync'd. Doing so you can achieve all this without having to write any code at all.