private static IPromise WaitUntilSceneIsLoaded(Scene scene)
 {
     return(CoroutineExtensions.WaitUntil(() => scene.isLoaded)
            .Then(() => Promise.Resolved(scene)));
 }
            public static GenericTweenResolution <T> Create(float time, T from, T to, Action <T, T, float> onUpdate,
                                                            Easing.Functions easing, bool unscaled, Promise promise)
            {
                var r = ObjectPool.Pop <GenericTweenResolution <T> >();

                r._time     = time;
                r._from     = from;
                r._to       = to;
                r._onUpdate = onUpdate;
                r._easing   = easing;
                r._unscaled = unscaled;
                r._promise  = promise;
                return(r);
            }
            public static WaitUntilResolution Create(YieldInstruction yieldInstruction, Promise promise)
            {
                var r = ObjectPool.Pop <WaitUntilResolution>();

                r._yieldInstruction = yieldInstruction;
                r._promise          = promise;
                return(r);
            }
 public override void Dispose()
 {
     _onUpdate = null;
     _promise  = null;
     ObjectPool.Push(this);
 }
            public static FuncToEnumerableResolution Create(Func <IEnumerable <IPromise> > func, Promise promise)
            {
                var r = ObjectPool.Pop <FuncToEnumerableResolution>();

                r._func    = func;
                r._promise = promise;
                return(r);
            }