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); } }
private void OnRotationUpdated(TransformComponent.Update update) { if (rotationComponent.Authority == Authority.NotAuthoritative) { myRigidbody.MoveRotation(Quaternion.Euler(0f, QuantizationUtils.DequantizeAngle(update.Rotation), 0f)); } }
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); } }
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); }