예제 #1
0
        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);
        }
예제 #2
0
        // 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;
        }