public ITeleportState Interpolate(ITeleportState other, float progress01)
        {
            var otherState = (TeleportTransformState)other;
            var newState   = new TeleportTransformState(InstanceId);

            newState.Position = Vector3.Lerp(Position, otherState.Position, progress01);
            newState.Rotation = Quaternion.Lerp(Rotation, otherState.Rotation, progress01);
            return(newState);
        }
        public ITeleportState[] GetCurrentStates()
        {
            ushort         instanceId;
            GameObject     instance;
            ITeleportState state;
            var            states     = new ITeleportState[_instanceByInstanceId.Count];
            int            stateIndex = 0;

            foreach (var pair in _instanceByInstanceId)
            {
                instanceId = pair.Key;
                instance   = pair.Value;
                state      = new TeleportTransformState(instanceId);
                state.FromInstance(instance);
                states[stateIndex++] = state;
            }
            return(states);
        }