/// <summary>Returns a routine for transitiong from the current active scene to a scene with given name in given load mode and /// with given provider</summary> private IEnumerator TransitionRoutine(string sceneName, LoadSceneMode mode, ITransitionProvider provider, Action onFinish = null) { IsTransitioning = true; yield return(UnLoadRoutine(provider)); yield return(LoadRoutine(sceneName, mode, provider)); IsTransitioning = false; onFinish?.Invoke(); }
/// <summary>Returns a routine that unloads the current active scene based on given provider</summary> private IEnumerator UnLoadRoutine(ITransitionProvider provider) { yield return(provider.Outro()); AsyncOperation unloadOperation = SceneManager.UnloadSceneAsync(SceneManager.GetActiveScene()); while (!unloadOperation.isDone) { provider.OnProgressUpdated(unloadOperation.progress / 2.0f); yield return(null); } }
protected PdvmBasedAnalysis( GraphStructuredProgram <int> program, IContextProcessor <TState, TStackSymbol, Node, OperationEdge <Node>, TContext, GssNode <TStackSymbol, TGssData> > contextProcessor, Func <PDVM <TState, TStackSymbol, Node, OperationEdge <Node>, TContext, TGssData> > pdvmProvider) : base(program) { InternalCacheProvider = new CacheProvider <TState, TStackSymbol, TContext, GssNode <TStackSymbol, TGssData> >(); InternalTransitionProvider = new TransitionProvider(program); InternalSimulation = new PDVMSimulation <TState, TStackSymbol, int, OperationEdge <int>, TContext, TGssData>( contextProcessor, InternalCacheProvider, InternalTransitionProvider, pdvmProvider); }
public PDVMSimulation( IContextProcessor <TState, TStackSymbol, TPosition, TTransition, TContext, GssNode <TStackSymbol, TGssData> > contextProcessor, ICacheProvider <TState, TStackSymbol, TPosition, TContext, GssNode <TStackSymbol, TGssData> > cacheProvider, ITransitionProvider <TPosition, TTransition> transitionProvider, Func <PDVM <TState, TStackSymbol, TPosition, TTransition, TContext, TGssData> > pdvmProvider) { myContextProcessor = contextProcessor; myCacheProvider = cacheProvider; myTransitionProvider = transitionProvider; myPopHistory = new PopHistory <TState, TTransition, TPosition, TContext, GssNode <TStackSymbol, TGssData> >(); myPdvm = pdvmProvider(); myGssRoots = new Dictionary <TStackSymbol, GssNode <TStackSymbol, TGssData> >(); myStarts = new Queue <Head <TState, TPosition, TContext, GssNode <TStackSymbol, TGssData> > >(); }
public DPDASimulation( IDPDA <TState, TStackSymbol, TPosition, TTransition> pda, IContextProcessor <TState, TStackSymbol, TPosition, TTransition, TContext, GssNode <TStackSymbol, TGssData> > contextProcessor, ICacheProvider <TState, TStackSymbol, TPosition, TContext, GssNode <TStackSymbol, TGssData> > cacheProvider, ITransitionProvider <TPosition, TTransition> transitionProvider) { myPda = pda; myContextProcessor = contextProcessor; myCacheProvider = cacheProvider; myTransitionProvider = transitionProvider; myProcessing = new Stack <MyHead>(); myStarts = new Queue <MyHead>(); myStackRoot = new GssNode <TStackSymbol, TGssData>(pda.GetInitialStackData()); myPopHistory = new PopHistory <TState, TTransition, TPosition, TContext, GssNode <TStackSymbol, TGssData> >(); }
/// <summary>Returns a routine that loads a scene with given name in given load mode and /// with given provider</summary> private IEnumerator LoadRoutine(string sceneName, LoadSceneMode mode, ITransitionProvider provider, Action onFinish = null) { AsyncOperation loadOperation = SceneManager.LoadSceneAsync(sceneName, mode); while (!loadOperation.isDone) { provider.OnProgressUpdated(mode == LoadSceneMode.Single ? loadOperation.progress : ((1.0f + loadOperation.progress) / 2.0f)); yield return(null); } Scene sceneLoaded = SceneManager.GetSceneByName(sceneName); SceneManager.SetActiveScene(sceneLoaded); yield return(provider.Intro()); TransitionCompleted?.Invoke(sceneLoaded, mode); onFinish?.Invoke(); }
/// <summary>Starts transition with given transition provider to a scene with given scene name and in given load mode</summary> public void Transition(ITransitionProvider provider, string sceneName, LoadSceneMode loadMode) { if (IsTransitioning || !SceneIsLoadable(sceneName) || !providers.ContainsValue(provider)) { return; } TransitionStarted?.Invoke(sceneName, loadMode); provider.OnProgressUpdated(0.0f); switch (loadMode) { case LoadSceneMode.Single: StartCoroutine(LoadRoutine(sceneName, loadMode, provider)); break; case LoadSceneMode.Additive: StartCoroutine(TransitionRoutine(sceneName, loadMode, provider)); break; } }
/// <summary>Starts transition with given transitionName set by transition provider to a scene with given scene name and in given load mode</summary> public void Transition(string transitionName, string sceneName, LoadSceneMode loadMode, Action onFinish = null) { if (IsTransitioning || !SceneIsLoadable(sceneName) || !providers.ContainsKey(transitionName)) { return; } TransitionStarted?.Invoke(sceneName, loadMode); ITransitionProvider provider = providers[transitionName]; provider.OnProgressUpdated(0.0f); switch (loadMode) { case LoadSceneMode.Single: StartCoroutine(LoadRoutine(sceneName, loadMode, provider, onFinish)); break; case LoadSceneMode.Additive: StartCoroutine(TransitionRoutine(sceneName, loadMode, provider, onFinish)); break; } }
public TranScope(ITransitionProvider transitionInfoProvider) { //_entireHistory = entireHistory; _transitionInfoProvider = transitionInfoProvider; }