protected override void OnUpdate()
        {
            for (var i = 0; i < positionData.Length; i++)
            {
                var position = positionData.Position[i];

                if (position.DirtyBit != true)
                {
                    continue;
                }

                var lastPositionSent = positionData.LastPositionSent[i];
                lastPositionSent.TimeSinceLastUpdate += Time.deltaTime;
                positionData.LastPositionSent[i]      = lastPositionSent;

                if (lastPositionSent.TimeSinceLastUpdate <
                    1.0f / TransformSynchronizationConfig.MaxPositionUpdateRateHz)
                {
                    continue;
                }

                var squareDistance =
                    TransformUtils.SquareDistance(lastPositionSent.Position.Coords, positionData.Position[i].Coords);

                if (squareDistance == 0.0f)
                {
                    continue;
                }

                if (lastPositionSent.TimeSinceLastUpdate <
                    TransformSynchronizationConfig.MaxTimeForStalePositionWithoutUpdateS)
                {
                    if (squareDistance < TransformSynchronizationConfig.MaxSquarePositionChangeWithoutUpdate)
                    {
                        continue;
                    }
                }

                var entityId = positionData.SpatialEntityIds[i].EntityId;

                var update = new SchemaComponentUpdate(position.ComponentId);
                Position.Serialization.SerializeUpdate(position, update);
                WorkerSystem.Connection.SendComponentUpdate(entityId, new ComponentUpdate(update));

                position.DirtyBit        = false;
                positionData.Position[i] = position;

                lastPositionSent.TimeSinceLastUpdate = 0.0f;
                lastPositionSent.Position            = position;
                positionData.LastPositionSent[i]     = lastPositionSent;
            }
        }