Ejemplo n.º 1
0
        private void SceneManager_sceneLoaded(Scene scene, LoadSceneMode mode)
        {
            SceneInfo sceneInfo = GetSceneInfo(scene);

            // For First Scene
            if (sceneInfo == null)
            {
                sceneInfo = new SceneInfo(scene);
                root      = sceneInfo;
                AddSceneInfo(scene, sceneInfo);
            }
            ISceneController controller = null;

            GameObject[] rootObjects = scene.GetRootGameObjects();
            foreach (GameObject robj in rootObjects)
            {
                controller = robj.GetComponent <ISceneController>();
                if (controller != null)
                {
                    break;
                }
            }
            controller.MySceneInfo = sceneInfo;
            sceneInfo.RegisterSceneController(controller);
            onSceneLoad(sceneInfo);
            sceneInfo.InvokeOpen();
        }
Ejemplo n.º 2
0
        private void _InitSceneController(ISceneController controller, ILoadingSceneConfig config)
        {
            var entity = World.NewEntity();

            entity.Get <SceneLoadedComponent>();

            ref var sceneComponent = ref entity.Get <SceneComponent>();
Ejemplo n.º 3
0
 // Start is called before the first frame update
 void Start()
 {
     arrived   = false;
     gameState = GameState.playing;
     action    = SceneDirector.GetInstance().CSController as ISceneController;
     action.LoadResources();
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 加载游戏场景;
 /// </summary>
 public static void LoadGameScene()
 {
     QuitCurrentScene();
     CurrentScene = SceneType.Game;
     LoadScene(SceneType.Game.ToString(), LoadSceneMode.Single);
     CurrentSceneController = FindCurrentSceneController();
 }
Ejemplo n.º 5
0
            void Start()
            {
                Engine = WEngine.Instance;

                for (int i = 0; i < m_sceneControllerObjs.Length; ++i)
                {
                    ISceneController sceneController = m_sceneControllerObjs[i].GetComponent <ISceneController>();
                    if (null != sceneController)
                    {
                        //only add if it doesnt exist yet
                        if (!_controllers.Contains(sceneController))
                        {
                            _controllers.Add(sceneController);
                        }
                    }
                    else
                    {
                        Debug.LogError("scene controller objects " + m_sceneControllerObjs[i] + " is not a scene controller");
                    }
                }

                foreach (ISceneController controller in _controllers)
                {
                    controller.InitSceneController(this);
                }

                // broadcast on start scene controller
                if (null != OnStartSceneController)
                {
                    OnStartSceneController.Invoke(this);
                }
            }
Ejemplo n.º 6
0
 /// <summary>
 /// 加载主菜单场景;
 /// </summary>
 public static void LoadMainMenuScene()
 {
     QuitCurrentScene();
     CurrentScene = SceneType.MainMenu;
     LoadScene(SceneType.MainMenu.ToString(), LoadSceneMode.Single);
     CurrentSceneController = FindCurrentSceneController();
 }
Ejemplo n.º 7
0
 public LoadedScene(ISceneController controller, SceneModel model, GameObject sceneRoot, SceneIndex id)
 {
     Controller      = controller;
     Model           = model;
     SceneIdentifier = id;
     Scene           = sceneRoot;
 }
Ejemplo n.º 8
0
        protected virtual void Initialize(params object[] args)
        {
            m_Pages = new Cache <IPage>();

            var parametrs = (ISceneInitializationParams)args[PARAMS_INITIALIZATION];

            m_SceneController = parametrs.SceneController;
        }
Ejemplo n.º 9
0
 // Start is called before the first frame update
 void Start()
 {
     clickGo   = false;
     arrived   = false;
     gameState = GameState.playing;
     action    = SceneDirector.GetInstance().CSController = new SceneController();
     action.LoadResources();
 }
Ejemplo n.º 10
0
    public ISceneController scene;    //场景接口

    void Start()
    {
        GameObject obj = GameObject.Find("Main Camera");

        camera = obj.GetComponent <Camera>();
        action = SSDirector.getInstance().currentScenceController as UserAction;
        scene  = SSDirector.getInstance().currentScenceController as ISceneController;
    }
Ejemplo n.º 11
0
        private IEnumerator LoadAdditiveScene(SceneIndex scene, SceneModel model)
        {
            OnLoadingStart?.Invoke();
            IsLoading = true;

            AsyncOperation loadSceneJob = SceneManager.LoadSceneAsync(scene.ToString(), LoadSceneMode.Additive);

            while (!loadSceneJob.isDone)
            {
                yield return(null);

                // Callback to update based on the async task progress
                OnLoadingUpdate?.Invoke(loadSceneJob.progress);
            }

            // Scene was done loading
            Scene loadedScene = SceneManager.GetSceneByName(scene.ToString());

            if (loadedScene.isLoaded)
            {
                // Get the scene object to initialize the scene using the ISceneController interface
                GameObject[] rootObjects = loadedScene.GetRootGameObjects();

                bool controllerFound = false;
                foreach (GameObject rootObject in rootObjects)
                {
                    // Try to get the scene controller so we can initialize the scene
                    ISceneController sceneController = rootObject.GetComponent <ISceneController>();

                    // This object didn't have the scene controller
                    if (sceneController == null)
                    {
                        continue;
                    }

                    sceneController.BaseModel = model;

                    LoadedScene managedLoadedScene = new LoadedScene(sceneController, model, rootObject, scene);
                    _loadedScenes.Add(managedLoadedScene);

                    yield return(sceneController.Initialization());

                    sceneController.AfterInitialization();

                    controllerFound = true;
                }

                if (!controllerFound)
                {
                    Debug.LogError("[SceneTransitionManager] Could not find any object with component ISceneController in scene: "
                                   + loadedScene.name);
                }
                SceneManager.MergeScenes(loadedScene, SceneManager.GetActiveScene());
            }

            OnLoadingFinished?.Invoke();
            IsLoading = false;
        }
 public void SetUp_SceneController()
 {
     PoolManager.enablePrewarm = false;
     DCL.Configuration.ParcelSettings.VISUAL_LOADING_ENABLED = false;
     sceneController = Environment.i.world.sceneController;
     sceneController.deferredMessagesDecoding = false;
     sceneController.prewarmSceneMessagesPool = false;
     sceneController.prewarmEntitiesPool      = false;
 }
Ejemplo n.º 13
0
        protected virtual void Initialize(params object[] args)
        {
            var parametrs = (IStateInitializationParams)args[PARAMS_INITIALIZATION];

            m_Session         = parametrs.Session;
            m_SceneController = parametrs.SceneController;

            //Debug.Log("State was initialized!");
        }
Ejemplo n.º 14
0
 public void setJudge(CharacterModel[] characters, BoatModel boat, ISceneController source)
 {
     for (int i = 0; i < 6; i++)
     {
         this.roles[i] = characters[i];
     }
     this.boat = boat;
     callback  = source;
 }
Ejemplo n.º 15
0
 protected void Start()
 {
     controller = (ISceneController)SSDirector.getInstance().currentSceneController;
     controller.actionManager = this;
     ruler = new Ruler();
     for (int i = 0; i < 20; i++)
     {
         diskID[i] = -1; //开始时没有可用飞碟,ID 均为-1
     }
 }
Ejemplo n.º 16
0
    void SetActiveScene(Scene scene)
    {
        _currentSceneController?.Deactivate();
        _current = scene;

        SceneManager.SetActiveScene(scene);
        scene.GetRootGameObjects(_currentObjects);
        _currentSceneController = _currentObjects.Find(IsSceneController).GetComponent <ISceneController>();
        _currentSceneController.Activate();
    }
Ejemplo n.º 17
0
 public StateControllerInitializationParams(ISession session,
                                            ISceneController sceneController,
                                            IStateFactory stateFactory,
                                            IStateInitializationParams stateInitializationParams)
 {
     Session                   = session;
     SceneController           = sceneController;
     StateFactory              = stateFactory;
     StateInitializationParams = stateInitializationParams;
 }
Ejemplo n.º 18
0
        protected override void Initialize(params object[] args)
        {
            base.Initialize();
            var parametrs = (IStateControllerInitializationParams)args[PARAMS_INITIALIZATION];

            m_Session                   = parametrs.Session;
            m_SceneController           = parametrs.SceneController;
            m_StateFactory              = parametrs.StateFactory;
            m_StateInitializationParams = parametrs.StateInitializationParams;

            Debug.Log("StateController was initialized!");
        }
Ejemplo n.º 19
0
 public virtual void GameInit()
 {
     _scene            = CurrentGame.Scene;
     Status            = NoteStatus.NotShown;
     FrameComputed     = false;
     NoteHit           = false;
     _computationDrawn = false;
     _prevTimeDiff     = 0;
     _t            = 0;
     _noteHandle   = 0;
     _lineHandle   = 0;
     _gpLineHandle = 0;
 }
Ejemplo n.º 20
0
 private void Update()
 {
     action     = SSDirector.getInstance().CurrentSceneController as IUserAction;
     controller = SSDirector.getInstance().CurrentSceneController as ISceneController;
     if (controller.getGameState().Equals(GameState.RUNNING))
     {
         // 获取键盘输入
         float translationX = Input.GetAxis("Horizontal");
         float translationZ = Input.GetAxis("Vertical");
         //移动玩家
         action.MovePlayer(translationX, translationZ);
     }
 }
 public WorldRuntimeContext(IWorldState state,
                            ISceneController sceneController,
                            IPointerEventsController pointerEventsController,
                            ISceneBoundsChecker sceneBoundsChecker,
                            IWorldBlockersController blockersController,
                            IRuntimeComponentFactory componentFactory)
 {
     this.state                   = state;
     this.sceneController         = sceneController;
     this.pointerEventsController = pointerEventsController;
     this.sceneBoundsChecker      = sceneBoundsChecker;
     this.blockersController      = blockersController;
     this.componentFactory        = componentFactory;
 }
Ejemplo n.º 22
0
 // Use this for initialization
 void Start()
 {
     _sceneController = _controllerHolder.GetComponent <ISceneController>();
     _helpText.text   = "Press <b>Ctrl</b> to toggle mouse control\n" +
                        "Press <b>AWSD</b> to move\n" +
                        "<b>Arrows</b> to rotate camera\n";
     if (_sceneController.GetRenderMode() == RenderMode.AMF)
     {
         _text.text = "AMF";
     }
     else
     {
         _text.text = "Unity";
     }
 }
Ejemplo n.º 23
0
        public void InjectTransition(SceneTransition transition, ISceneController sceneController)
        {
            GameObject newInstance = GameObject.Instantiate(transition.gameObject) as GameObject;
            IEnumerable <SceneTransition> sceneTransitions = newInstance.GetComponents <SceneTransition>();

            _sceneManager.HookTransition(sceneTransitions.FirstOrDefault());

            GameObject.DontDestroyOnLoad(newInstance);
            newInstance.transform.parent = sceneController.Transform;

            foreach (SceneTransition sceneTransition in sceneTransitions)
            {
                CoreLogger.LogInfo(LoggerModules.SceneManager, string.Format("\tinjecting effect {0}", sceneTransition.GetType().Name));
            }
        }
Ejemplo n.º 24
0
 public static WorldRuntimeContext CreateWithCustomMocks(
     IWorldState state = null,
     ISceneController sceneController = null,
     IPointerEventsController pointerEventsController = null,
     ISceneBoundsChecker sceneBoundsChecker           = null,
     IWorldBlockersController worldBlockersController = null,
     IRuntimeComponentFactory componentFactory        = null)
 {
     return(new WorldRuntimeContext(
                state: state ?? Substitute.For <IWorldState>(),
                sceneController: sceneController ?? Substitute.For <ISceneController>(),
                pointerEventsController: pointerEventsController ?? Substitute.For <IPointerEventsController>(),
                sceneBoundsChecker: sceneBoundsChecker ?? Substitute.For <ISceneBoundsChecker>(),
                blockersController: worldBlockersController ?? Substitute.For <IWorldBlockersController>(),
                componentFactory: componentFactory ?? Substitute.For <IRuntimeComponentFactory>()));
 }
Ejemplo n.º 25
0
    private void OnGUI()
    {
        controller = SSDirector.getInstance().CurrentSceneController as ISceneController;
        string buttonText = "";

        if (controller.getGameState().Equals(GameState.START) || controller.getGameState().Equals(GameState.PAUSE))
        {
            buttonText = "Start";
        }
        if (controller.getGameState().Equals(GameState.LOSE))
        {
            buttonText = "Restart";
            GUI.Label(new Rect(Screen.width / 2 - 40, Screen.height / 2 + 100, 200, 50), "Game Over!", finishStyle);
        }
        if (controller.getGameState().Equals(GameState.WIN))
        {
            buttonText = "Restart";
            GUI.Label(new Rect(Screen.width / 2 - 40, Screen.height / 2 + 100, 200, 50), "You Win!", finishStyle);
        }
        if (controller.getGameState().Equals(GameState.RUNNING))
        {
            buttonText = "Pause";
        }
        GUI.Label(new Rect(Screen.width / 2 - 400, Screen.height / 2 - 200, 100, 50),
                  "Score: " + controller.GetScore().ToString(), scoreStyle);
        //GUI.Label(new Rect(Screen.width / 2 - 50, Screen.height / 2 - 350, 100, 50),
        //    "Time: " + SSDirector.getInstance().leaveSeconds.ToString(), countDownStyle);

        if (GUI.Button(new Rect(Screen.width / 2 - 60, Screen.height / 2 + 150, 100, 50), buttonText, buttonStyle))
        {
            // 按下按钮控制游戏状态
            if (buttonText == "Pause")
            {
                controller.Pause();
            }
            else if (buttonText == "Start")
            {
                controller.Begin();
            }
            else if (buttonText == "Restart")
            {
                controller.Restart();
            }
        }
    }
Ejemplo n.º 26
0
        protected IEnumerator InitScene(bool spawnCharController = true)
        {
            sceneController = Environment.i.world.sceneController;

            yield return(new WaitForSeconds(0.01f));

            scene = sceneController.CreateTestScene();

            yield return(new WaitForSeconds(0.01f));

            if (spawnCharController)
            {
                if (DCLCharacterController.i == null)
                {
                    GameObject.Instantiate(Resources.Load("Prefabs/CharacterController"));
                }
            }
        }
    //private MasterController(){}

    //public static MasterController Instance {
    //	get {
    //		return instance;
    //	}
    //}

    // Data
    // private GameState gameState;
    // private List<IGameStateListener> gameStateListener;
    // private Settings settings;

    // Methods

    // dependencies haven't been created yet...
    // private Boolean ChangeScene(string SceneName){

    // }

    public bool registerAsSceneController(ISceneController sceneController)
    {
        //Might need additional operations to properly dispose of the old but...
        this.sceneController = sceneController;
        getInputsController().registerListener(sceneController);
        List <IPlayer> addedPlayers = new List <IPlayer>();

        foreach (IPlayer player in this.unregisteredPlayers)
        {
            this.sceneController.registerPlayer(player);
            addedPlayers.Add(player);
        }
        for (int i = 0; i < addedPlayers.Count; i++)
        {
            this.unregisteredPlayers.Remove(addedPlayers[i]);
        }
        return(true);
    }
Ejemplo n.º 28
0
        public DataQueue RegisterScene(SceneType scene)
        {
            ISceneController ctrler = null;

            if (!ctrlers.TryGetValue(scene, out ctrler))
            {
                Func <SceneType, ISceneController> creator = null;
                if (ctrlerCreators.TryGetValue(scene, out creator))
                {
                    ctrler = creator(scene);
                }
                else
                {
                    return(null);
                }
                ctrlers.Add(scene, ctrler);
            }
            return(ctrler.RegisterScene(scene));
        }
Ejemplo n.º 29
0
        private Promise ChangeCurrentController(ISceneController sceneController)
        {
            if (_currentSceneController == null)
            {
                Debug.Log(string.Format("NavController.ChangeCurrentController - SceneController={0}", sceneController));
                return(sceneController.Init()
                       .Then(x =>
                {
                    Debug.Log(string.Format("NavController.ChangeCurrentController - Init [Then] - Controller changed. sceneController={0}", sceneController));
                    _currentSceneController = sceneController;
                }));
            }

            return(Promise.All(_currentSceneController.Shutdown(), sceneController.Init())
                   .Then(x =>
            {
                Debug.Log(string.Format("NavController.ChangeCurrentController - All [Then] - Controller changed. sceneController={0}", sceneController));
                _currentSceneController = sceneController;
                return x;
            })
                   .Progress <string>(x => Debug.Log(string.Format("The progress status={0}", x))));
        }
        public void CloseAdditiveScene(ISceneController controller)
        {
            // Search a loaded scene by it's controller reference and destroy the root gameobject
            LoadedScene loadedScene = _loadedScenes.Find(x => x.Controller == controller);

            if (loadedScene != null)
            {
                // Callback before destroying the loaded scene
                loadedScene.Controller.BeforeDestroy();
                DestroyImmediate(loadedScene.Scene);
                _loadedScenes.Remove(loadedScene);
                loadedScene = null;
                GC.Collect();

                // Try to focus the last scene loaded
                // Assert(_loadedScenes.Count should always be greater than 0)
                if (_loadedScenes.Count > 0)
                {
                    _loadedScenes[_loadedScenes.Count - 1].Controller.OnFocus();
                }
            }
        }