public static TweenOperation MoveByAsync(this Transform transform, MoveByOptions options)
        {
            var offset     = options.offset;
            var toPosition = default(Vector3);

            switch (options.spaceType)
            {
            case SpaceType.Local:
                toPosition = transform.localPosition + offset;
                break;

            case SpaceType.World:
                toPosition = transform.position + offset;
                break;

            case SpaceType.Custom:
                toPosition = options.customSpaceTransform.worldToLocalMatrix.MultiplyPoint3x4(transform.position) + offset;
                break;
            }
            var moveToOptions = new MoveToOptions(toPosition);

            moveToOptions.tweenOptions         = options.tweenOptions;
            moveToOptions.spaceType            = options.spaceType;
            moveToOptions.customSpaceTransform = options.customSpaceTransform;
            return(MoveToAsync(transform, moveToOptions));
        }
        public static TweenOperation MoveToAsync(this Transform transform, MoveToOptions options)
        {
            var state = new State()
            {
                options = options,
                target  = transform,
            };

            return(TweenAction <State> .Prepare(state, options.tweenOptions));
        }
 public static TweenOperation MoveToAsync(this GameObject gameObject, MoveToOptions options)
 {
     return(MoveToAsync(gameObject.transform, options));
 }