コード例 #1
0
ファイル: EnterLoading.cs プロジェクト: iuvei/mahjong3d
 void Start()
 {
     instance = this;
 }
コード例 #2
0
ファイル: SceneManager.cs プロジェクト: KHCmaster/PPD
        private void InnerPrepareNextScene(ISceneBase caller, ISceneBase nextScene, Dictionary <string, object> param, Dictionary <string, object> previousParam, bool useStack, ResourceManager resourceManager)
        {
            this.nextScene             = nextScene;
            nextScene.Sound            = Sound;
            nextScene.SceneManager     = this;
            nextScene.GameHost         = GameHost;
            previousSceneResourceUsing = false;
            if (resourceManager != null)
            {
                nextScene.ResourceManager = resourceManager;
            }
            else
            {
                if (String.IsNullOrEmpty(nextScene.SpriteDir))
                {
                    if (caller != null)
                    {
                        nextScene.ResourceManager  = caller.ResourceManager;
                        previousSceneResourceUsing = true;
                    }
                    else
                    {
                        nextScene.ResourceManager = new ResourceManager();
                    }
                }
                else
                {
                    nextScene.ResourceManager = new ResourceManager(new Tuple <ResourceManager, bool>[] {
                        new Tuple <ResourceManager, bool>(new SpriteResourceManager(device, nextScene.SpriteDir), true),
                        new Tuple <ResourceManager, bool>(caller.ResourceManager, false)
                    });
                    previousSceneResourceUsing = true;
                }
            }
            nextScene.Param         = param ?? new Dictionary <string, object>();
            nextScene.PreviousParam = globalPool.ContainsKey(nextScene.GetType()) ? globalPool[nextScene.GetType()] : new Dictionary <string, object>();
            if (previousParam != null && caller != null)
            {
                if (globalPool.ContainsKey(caller.GetType()))
                {
                    globalPool[caller.GetType()] = previousParam;
                }
                else
                {
                    globalPool.Add(caller.GetType(), previousParam);
                }
            }

            if (useStack)
            {
                nextScene.IsInSceneStack = true;
                sceneStack.Push(CurrentScene);
            }
            else
            {
                previousScene = CurrentScene;
            }

            CurrentScene  = null;
            lastTime      = Environment.TickCount;
            loadingThread = ThreadManager.Instance.GetThread(() =>
            {
                loadResult = nextScene.Load();
            });
            loadingThread.Start();
            if (LoadingScene != null)
            {
                LoadingScene.EnterLoading();
            }
            if (EnterLoading != null)
            {
                EnterLoading.Invoke(this, EventArgs.Empty);
            }
        }