private Task OnRemoteUpdate(MessageContainer obj) { var message = MessageUpdateOrigin.Unpack(obj); targetLocalPosition = message.Position; targetLocalRotation = message.Orientation; targetLocalScale = new Vector3(message.Scale, message.Scale, message.Scale); changedFromNetwork = true; return(Task.CompletedTask); }
// Update is called once per frame private void Update() { if (changedFromNetwork) { transform.localPosition = targetLocalPosition; transform.localRotation = targetLocalRotation; transform.localScale = targetLocalScale; changedFromNetwork = false; } else if (previousLocalPosition != transform.localPosition || previousLocalRotation != transform.localRotation || previousLocalScale != transform.localScale) { var message = new MessageUpdateOrigin(transform.localPosition, transform.localRotation, transform.localScale.x).Pack(); Services.NetworkManager().SendMessage(message); } previousLocalPosition = transform.localPosition; previousLocalRotation = transform.localRotation; previousLocalScale = transform.localScale; }