Пример #1
0
        public void LoadNavMeshRelatedLevel(string stageTypeName)
        {
            StageEntry stageEntryByName = StageData.GetStageEntryByName(stageTypeName);

            char[] separator = new char[] { '/' };
            string str       = stageEntryByName.GetPerpStagePrefabPath().Split(separator)[1];

            if (!string.IsNullOrEmpty(this._currentLocatorName))
            {
                SceneManager.UnloadScene(this._currentLocatorName);
                this._currentLocatorName = string.Empty;
            }
            string locatorName = this.GetLocatorName(stageEntryByName);

            foreach (ConfigNavMeshScenePath path in GlobalDataManager.metaConfig.scenePaths)
            {
                if ((path.MainSceneName == str) && (path.UnitySceneName == locatorName))
                {
                    SceneManager.LoadScene(path.UnitySceneName, LoadSceneMode.Additive);
                    this._currentLocatorName = locatorName;
                    this.ResetStageAreaMask(stageEntryByName);
                    break;
                }
            }
        }
Пример #2
0
 private void PostAwakeTryLoadFromFile()
 {
     if (DevLevelConfigData.configFromScene)
     {
         this.TryDestroyTypeAll <BaseMonoAvatar>();
         this.TryDestroyTypeAll <BaseMonoMonster>();
         this.TryDestroyTypeAll <MonoBasePerpStage>();
         this.TryDestroyTypeAll <MonoStageEnv>();
         Resources.UnloadUnusedAssets();
         GC.Collect();
         GC.WaitForPendingFinalizers();
         StageEntry stageEntryByName = StageData.GetStageEntryByName(this.stageDevData.stageName);
         GameObject obj2             = UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(stageEntryByName.GetPerpStagePrefabPath(), BundleType.RESOURCE_FILE));
         obj2.transform.position = Vector3.zero;
         Transform transform = obj2.transform;
         transform.position -= obj2.transform.Find(stageEntryByName.LocationPointName).position;
         StageManager.SetPerpstageNodeVisibility(obj2.GetComponent <MonoBasePerpStage>(), stageEntryByName, false, false);
         StageManager.SetPerpstageNodeVisibility(obj2.GetComponent <MonoBasePerpStage>(), stageEntryByName, true, true);
         UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(stageEntryByName.GetEnvPrefabPath(), BundleType.RESOURCE_FILE));
         DevAvatarData data = this.avatarDevDatas[0];
         UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(AvatarData.GetPrefabResPath(data.avatarType, false), BundleType.RESOURCE_FILE));
         this.monsterInstanceIds = new List <int>();
         foreach (DevMonsterData data2 in this.monsterDevDatas)
         {
             this.monsterInstanceIds.Add(UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(MonsterData.GetPrefabResPath(data2.monsterName, data2.typeName, false), BundleType.RESOURCE_FILE)).GetInstanceID());
         }
     }
 }
Пример #3
0
        public void CreateStage(string typeName, List <string> avatarSpawnNameList, string baseWeatherName, bool isContinued = false)
        {
            MonoBasePerpStage component;
            StageEntry        stageEntryByName = StageData.GetStageEntryByName(typeName);
            bool    isBorn = this._activeStageEntry == null;
            Vector3 zero   = Vector3.zero;

            MonoBasePerpStage.ContinueWeatherDataSettings continueData = null;
            if (this._activeStageEntry == null)
            {
                component = ((GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource(stageEntryByName.GetPerpStagePrefabPath(), BundleType.RESOURCE_FILE))).GetComponent <MonoBasePerpStage>();
                SetPerpstageNodeVisibility(component, stageEntryByName, false, false);
                SetPerpstageNodeVisibility(component, stageEntryByName, true, true);
            }
            else if (this._activeStageEntry.PerpStagePrefabPath != stageEntryByName.PerpStagePrefabPath)
            {
                zero         = this._perpStage.transform.position;
                continueData = this._perpStage.GetContinueWeatherDataSetup();
                UnityEngine.Object.DestroyImmediate(this._perpStage.gameObject);
                Resources.UnloadUnusedAssets();
                component = ((GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource(stageEntryByName.GetPerpStagePrefabPath(), BundleType.RESOURCE_FILE))).GetComponent <MonoBasePerpStage>();
                SetPerpstageNodeVisibility(component, stageEntryByName, false, false);
                SetPerpstageNodeVisibility(component, stageEntryByName, true, true);
            }
            else
            {
                SetPerpstageNodeVisibility(this._perpStage, this._activeStageEntry, false, true);
                zero         = -this._perpStage.transform.Find(this._activeStageEntry.LocationPointName).localPosition;
                continueData = this._perpStage.GetContinueWeatherDataSetup();
                component    = this._perpStage;
                SetPerpstageNodeVisibility(component, stageEntryByName, false, false);
                SetPerpstageNodeVisibility(component, stageEntryByName, true, true);
            }
            Vector3 offset = this.InitAfterCreateStage(stageEntryByName, component, zero, isBorn, baseWeatherName, continueData, isContinued);

            Singleton <AvatarManager> .Instance.PreloadTeamAvatars();

            Singleton <EventManager> .Instance.FireEvent(new EvtStageCreated(avatarSpawnNameList, isBorn, offset), MPEventDispatchMode.Normal);
        }