/**
         * <summary>Gets the SceneSettings component that is in the same scene as a given GameObject.</summary>
         * <param name = "_gameObject">The GameObject in the scene</param>
         * <returns>The SceneSettings component that is in the same scene as the given GameObject</returns>
         */
        public static SceneSettings GetSceneSettingsOfGameObject(GameObject _gameObject)
        {
            if (UnityVersionHandler.ObjectIsInActiveScene(_gameObject))
            {
                return(KickStarter.sceneSettings);
            }

            UnityEngine.SceneManagement.Scene scene = _gameObject.scene;
            if (Application.isPlaying)
            {
                foreach (SubScene subScene in KickStarter.sceneChanger.SubScenes)
                {
                    if (subScene.gameObject.scene == scene)
                    {
                        return(subScene.SceneSettings);
                    }
                }
            }
            else
            {
                foreach (SceneSettings sceneSettings in GameObject.FindObjectsOfType <SceneSettings>())
                {
                    if (sceneSettings.gameObject.scene == scene)
                    {
                        return(sceneSettings);
                    }
                }
            }
            return(null);
        }
 private void OnEnable()
 {
     if (UnityVersionHandler.ObjectIsInActiveScene(gameObject) && KickStarter.stateHandler)
     {
         KickStarter.stateHandler.Register(GetComponent <KickStarter> ());
     }
 }
        protected void Awake()
        {
            if (!UnityVersionHandler.ObjectIsInActiveScene(gameObject))
            {
                // Register self as a "sub-scene"
                GameObject subSceneOb  = new GameObject();
                SubScene   newSubScene = subSceneOb.AddComponent <SubScene>();
                newSubScene.Initialise(this);
                return;
            }

            if (!TestManagerPresence())
            {
                return;
            }

                        #if UNITY_EDITOR
            if (!TestOwnComponents())
            {
                return;
            }
                        #endif

            GetComponent <KickStarter>().Initialise();

            runStart = true;             // This is necessary because switching the active scene will cause Start to be re-run
        }
        /**
         * <summary>Gets the LocalVariables component that is in the same scene as a given GameObject.</summary>
         * <param name = "_gameObject">The GameObject in the scene</param>
         * <returns>The LocalVariables component that is in the same scene as the given GameObject</returns>
         */
        public static LocalVariables GetLocalVariablesOfGameObject(GameObject _gameObject)
        {
            if (UnityVersionHandler.ObjectIsInActiveScene(_gameObject))
            {
                return(KickStarter.localVariables);
            }

            UnityEngine.SceneManagement.Scene scene = _gameObject.scene;
            if (Application.isPlaying)
            {
                foreach (SubScene subScene in KickStarter.sceneChanger.SubScenes)
                {
                    if (subScene.gameObject.scene == scene)
                    {
                        return(subScene.LocalVariables);
                    }
                }
            }
            else
            {
                foreach (LocalVariables localVariables in GameObject.FindObjectsOfType <LocalVariables>())
                {
                    if (localVariables.gameObject.scene == scene)
                    {
                        return(localVariables);
                    }
                }
            }

            return(null);
        }
Example #5
0
        private void Awake()
        {
            UnityVersionHandler.EnsureSingleScene();

            if (!UnityVersionHandler.ObjectIsInActiveScene(gameObject))
            {
                return;
            }

            activeKickStarter = FindObjectOfType <KickStarter>();

            if (activeKickStarter != null)
            {
                KickStarter.mainCamera.OnAwake();
                activeKickStarter.OnAwake();
                KickStarter.playerInput.OnAwake();
                KickStarter.playerQTE.OnAwake();
                KickStarter.sceneSettings.OnAwake();
                KickStarter.dialog.OnAwake();
                KickStarter.navigationManager.OnAwake();
                KickStarter.actionListManager.OnAwake();

                KickStarter.stateHandler.RegisterWithGameEngine();
            }
            else
            {
                ACDebug.LogError("No KickStarter component found in the scene!");
            }
        }
Example #6
0
        private void SendDataToScene(SingleLevelData levelData, bool restoringSaveFile, SubScene subScene = null)
        {
            SceneSettings  sceneSettings  = (subScene == null) ? KickStarter.sceneSettings : subScene.SceneSettings;
            LocalVariables localVariables = (subScene == null) ? KickStarter.localVariables : subScene.LocalVariables;

            KickStarter.actionListManager.LoadData(levelData.activeLists, subScene);

            UnloadCutsceneOnLoad(levelData.onLoadCutscene, sceneSettings);
            UnloadCutsceneOnStart(levelData.onStartCutscene, sceneSettings);
            UnloadNavMesh(levelData.navMesh, sceneSettings);
            UnloadPlayerStart(levelData.playerStart, sceneSettings);
            UnloadSortingMap(levelData.sortingMap, sceneSettings);
            UnloadTintMap(levelData.tintMap, sceneSettings);

            UnloadTransformData(levelData.allTransformData, subScene);

            foreach (ScriptData _scriptData in levelData.allScriptData)
            {
                if (_scriptData.data != null && _scriptData.data.Length > 0)
                {
                    // Get objects in active scene, and "DontDestroyOnLoad" scene
                    Remember[] saveObjects = Serializer.returnComponents <Remember> (_scriptData.objectID);

                    foreach (Remember saveObject in saveObjects)
                    {
                        if (saveObject != null && UnityVersionHandler.ObjectIsInActiveScene(saveObject.gameObject))
                        {
                            // May have more than one Remember script on the same object, so check all
                            Remember[] saveScripts = saveObject.gameObject.GetComponents <Remember>();
                            foreach (Remember saveScript in saveScripts)
                            {
                                saveScript.LoadData(_scriptData.data, restoringSaveFile);
                            }
                        }
                    }
                }

                /*Remember saveObject = Serializer.returnComponent <Remember> (_scriptData.objectID, sceneSettings.gameObject);
                 * if (saveObject != null && _scriptData.data != null && _scriptData.data.Length > 0)
                 * {
                 *      // May have more than one Remember script on the same object, so check all
                 *      Remember[] saveScripts = saveObject.gameObject.GetComponents <Remember>();
                 *      foreach (Remember saveScript in saveScripts)
                 *      {
                 *              saveScript.LoadData (_scriptData.data, restoringSaveFile);
                 *      }
                 * }*/
            }

            UnloadVariablesData(levelData.localVariablesData, localVariables);
            KickStarter.sceneSettings.UpdateAllSortingMaps();
        }
        private void Start()
        {
            if (!UnityVersionHandler.ObjectIsInActiveScene(gameObject))
            {
                return;
            }

            if (ownKickStarter != null)
            {
                KickStarter.sceneSettings.OnStart();
                KickStarter.playerMovement.OnStart();
                KickStarter.mainCamera.OnStart();
            }
        }
        private void Awake()
        {
            if (!UnityVersionHandler.ObjectIsInActiveScene(gameObject))
            {
                // Register self as a "sub-scene"

                GameObject subSceneOb  = new GameObject();
                SubScene   newSubScene = subSceneOb.AddComponent <SubScene>();
                newSubScene.Initialise(this);
                return;
            }

            ownKickStarter = GetComponent <KickStarter>();

            GameObject taggedMainCamera = GameObject.FindWithTag(Tags.mainCamera);

            if (taggedMainCamera == null)
            {
                ACDebug.LogError("No MainCamera found - please click 'Organise room objects' in the Scene Manager to create one.");
            }
            else
            {
                if (taggedMainCamera.GetComponent <MainCamera>() == null &&
                    taggedMainCamera.GetComponentInParent <MainCamera>() == null)
                {
                    ACDebug.LogError("MainCamera has no MainCamera component.");
                }
            }

            if (ownKickStarter != null)
            {
                KickStarter.mainCamera.OnAwake();
                ownKickStarter.OnAwake();
                KickStarter.playerInput.OnAwake();
                KickStarter.playerQTE.OnAwake();
                KickStarter.sceneSettings.OnAwake();
                KickStarter.dialog.OnAwake();
                KickStarter.navigationManager.OnAwake();
                KickStarter.actionListManager.OnAwake();

                KickStarter.stateHandler.RegisterWithGameEngine();
            }
            else
            {
                ACDebug.LogError("No KickStarter component found in the scene!");
            }
        }
        protected void Start()
        {
            if (!runStart)
            {
                return;
            }
            runStart = false;

            if (UnityVersionHandler.ObjectIsInActiveScene(gameObject) && KickStarter.settingsManager && KickStarter.saveSystem)
            {
                if (KickStarter.settingsManager.IsInLoadingScene())
                {
                    ACDebug.Log("Bypassing regular AC startup because the current scene is the 'Loading' scene.");
                    return;
                }

                KickStarter.saveSystem.InitAfterLoad();
            }
        }
Example #10
0
        private void Awake()
        {
            UnityVersionHandler.EnsureSingleScene();

            if (!UnityVersionHandler.ObjectIsInActiveScene(gameObject))
            {
                return;
            }

            activeKickStarter = FindObjectOfType <KickStarter>();

            if (GameObject.FindWithTag(Tags.mainCamera) == null)
            {
                ACDebug.LogError("No MainCamera found - please click 'Organise room objects' in the Scene Manager to create one.");
            }
            else
            {
                if (GameObject.FindWithTag(Tags.mainCamera).GetComponent <MainCamera>() == null &&
                    GameObject.FindWithTag(Tags.mainCamera).GetComponentInParent <MainCamera>() == null)
                {
                    ACDebug.LogError("MainCamera has no MainCamera component.");
                }
            }

            if (activeKickStarter != null)
            {
                KickStarter.mainCamera.OnAwake();
                activeKickStarter.OnAwake();
                KickStarter.playerInput.OnAwake();
                KickStarter.playerQTE.OnAwake();
                KickStarter.sceneSettings.OnAwake();
                KickStarter.dialog.OnAwake();
                KickStarter.navigationManager.OnAwake();
                KickStarter.actionListManager.OnAwake();

                KickStarter.stateHandler.RegisterWithGameEngine();
            }
            else
            {
                ACDebug.LogError("No KickStarter component found in the scene!");
            }
        }
Example #11
0
        /**
         * <summary>Converts the class's data into a string that can be saved.</summary>
         * <param name = "subScene">If set, only data for a given subscene will be saved. If null, only data for the active scene will be saved</param>
         * <returns>The class's data, converted to a string</returns>
         */
        public string GetSaveData(SubScene subScene)
        {
            string ID     = string.Empty;
            string convID = string.Empty;

            if (IsRunning())
            {
                // Unless ActionLists can be saved mid-stream, don't save info about those currently-running
                return(string.Empty);
            }

            string parameterData = string.Empty;

            if (actionListAsset != null)
            {
                ID = AdvGame.PrepareStringForSaving(actionListAsset.name);
            }
            else if (actionList != null)
            {
                if (actionList.GetComponent <ConstantID>())
                {
                    ID = actionList.GetComponent <ConstantID>().constantID.ToString();

                    if (subScene == null && UnityVersionHandler.ObjectIsInActiveScene(actionList.gameObject))
                    {
                        // OK
                    }
                    else if (subScene && UnityVersionHandler.GetSceneIndexFromGameObject(actionList.gameObject) == subScene.SceneIndex)
                    {
                        // OK
                    }
                    else
                    {
                        return(string.Empty);
                    }
                }
                else
                {
                    ACDebug.LogWarning("Data for the ActionList '" + actionList.gameObject.name + "' was not saved because it has no Constant ID.", actionList.gameObject);
                    return("");
                }
            }

            if (actionList != null)
            {
                parameterData = actionList.GetParameterData();
            }

            if (conversationOnEnd && conversationOnEnd.GetComponent <ConstantID>())
            {
                convID = conversationOnEnd.GetComponent <ConstantID>().ToString();
            }

            return(ID + SaveSystem.colon +
                   ConvertIndicesToString() + SaveSystem.colon +
                   startIndex + SaveSystem.colon +
                   ((inSkipQueue) ? 1 : 0) + SaveSystem.colon +
                   ((isRunning) ? 1 : 0) + SaveSystem.colon +
                   convID + SaveSystem.colon +
                   parameterData);
        }
Example #12
0
        public void ShowGUI()
        {
            EditorGUILayout.BeginVertical("Button");

            saveController = EditorGUILayout.ToggleLeft("Save change in Controller?", saveController);

            setDefaultParameterValues = EditorGUILayout.ToggleLeft("Set default parameters?", setDefaultParameterValues);
            if (setDefaultParameterValues)
            {
                if (!UnityVersionHandler.IsPrefabEditing(gameObject) && !UnityVersionHandler.ObjectIsInActiveScene(gameObject))
                {
                    EditorGUILayout.HelpBox("To view/edit parameters, the GameObject must be active in the scene.", MessageType.Warning);
                }
                else if (Animator.parameters != null)
                {
                    GUILayout.Box(string.Empty, GUILayout.ExpandWidth(true), GUILayout.Height(1));

                    int numParameters = Animator.parameters.Length;
                    if (numParameters < defaultAnimParameters.Count)
                    {
                        defaultAnimParameters.RemoveRange(numParameters, defaultAnimParameters.Count - numParameters);
                    }
                    else if (numParameters > defaultAnimParameters.Count)
                    {
                        if (numParameters > defaultAnimParameters.Capacity)
                        {
                            defaultAnimParameters.Capacity = numParameters;
                        }
                        for (int i = defaultAnimParameters.Count; i < numParameters; i++)
                        {
                            defaultAnimParameters.Add(new DefaultAnimParameter());
                        }
                    }

                    for (int i = 0; i < Animator.parameters.Length; i++)
                    {
                        AnimatorControllerParameter parameter = Animator.parameters[i];
                        switch (parameter.type)
                        {
                        case AnimatorControllerParameterType.Bool:
                            bool boolValue = (defaultAnimParameters[i].intValue == 1);
                            boolValue = EditorGUILayout.Toggle(parameter.name, boolValue);
                            defaultAnimParameters[i] = new DefaultAnimParameter((boolValue) ? 1 : 0);
                            break;

                        case AnimatorControllerParameterType.Float:
                            float floatValue = EditorGUILayout.FloatField(parameter.name, defaultAnimParameters[i].floatValue);
                            defaultAnimParameters[i] = new DefaultAnimParameter(floatValue);
                            break;

                        case AnimatorControllerParameterType.Int:
                            int intValue = EditorGUILayout.IntField(parameter.name, defaultAnimParameters[i].intValue);
                            defaultAnimParameters[i] = new DefaultAnimParameter(intValue);
                            break;
                        }
                    }
                }
            }

            EditorGUILayout.EndVertical();
        }