Exemplo n.º 1
0
 private void OnComponentUpdated(TransformComponent.Update update)
 {
     if (!transformComponent.HasAuthority)
     {
         UpdateTransform();
     }
 }
 private void OnTransformComponentUpdated(TransformComponent.Update update)
 {
     for (int i = 0; i < update.teleportEvent.Count; i++)
     {
         TeleportTo(update.teleportEvent[i].targetPosition.ToVector3());
     }
 }
 private void VisualizeTransform(TransformComponent.Update update)
 {
     if (update.rotation.HasValue)
     {
         SetRotation(update.rotation.Value);
     }
 }
Exemplo n.º 4
0
 private void OnRotationUpdated(TransformComponent.Update update)
 {
     if (rotationComponent.Authority == Authority.NotAuthoritative)
     {
         myRigidbody.MoveRotation(Quaternion.Euler(0f, QuantizationUtils.DequantizeAngle(update.Rotation), 0f));
     }
 }
Exemplo n.º 5
0
        private void FixedUpdate()
        {
            timeNow += Time.deltaTime;
            if (timeNow < TIME_DELAY)
            {
                return;
            }

            timeNow = 0;

            var newPosition = transform.position.ToCoordinates();
            var newRotation = QuantizationUtils.QuantizeAngle(transform.rotation.eulerAngles.y); // 沿Y轴旋转

            fixedFramesSinceLastUpdate++;
            if ((PositionNeedsUpdate(newPosition) || RotationNeedsUpdate(newRotation)) && fixedFramesSinceLastUpdate > SimulationSettings.TransformUpdatesToSkipBetweenSends)
            {
                fixedFramesSinceLastUpdate = 0;
                var update = new Position.Update()
                {
                    Coords = newPosition
                };
                positionComponent.SendUpdate(update);
                var update2 = new TransformComponent.Update()
                {
                    Rotation = newRotation
                };
                transformComponent.SendUpdate(update2);
            }
        }
Exemplo n.º 6
0
        private void SendPosition()
        {
            var newPosition = transform.position.ToCoordinates();
            var newRotation = QuantizationUtils.QuantizeAngle(transform.rotation.eulerAngles.y); // 沿Y轴旋转
            var update      = new Position.Update()
            {
                Coords = newPosition
            };

            positionComponent.SendUpdate(update);
            var update2 = new TransformComponent.Update()
            {
                Rotation = newRotation
            };

            transformComponent.SendUpdate(update2);
        }