public void RestoreSceneCache(SceneCache_v1 sceneCacheData) { if (sceneCacheData == null) { return; } if (sceneCacheData.permanentScenes != null && sceneCacheData.permanentScenes.Length > 0) { permanentScenes = new List <string>(sceneCacheData.permanentScenes); } SceneCacheEntry_v1[] sceneCacheEntries = sceneCacheData.sceneCache; if (sceneCacheEntries == null || sceneCacheEntries.Length == 0) { return; } for (int i = 0; i < sceneCacheEntries.Length; i++) { SceneCacheEntry_v1 scene = sceneCacheEntries[i]; List <object[]> sceneData = new List <object[]>(numStatefulGameObjectTypes); sceneData.Insert((int)StatefulGameObjectTypes.LootContainer, scene.lootContainers); sceneData.Insert((int)StatefulGameObjectTypes.ActionDoor, scene.actionDoors); sceneData.Insert((int)StatefulGameObjectTypes.ActionObject, new object[0]); sceneData.Insert((int)StatefulGameObjectTypes.Enemy, new object[0]); sceneDataCache[scene.sceneName] = sceneData; } }
public SceneCache_v1 GetSceneCache() { List <SceneCacheEntry_v1> entries = new List <SceneCacheEntry_v1>(sceneDataCache.Count); foreach (string sceneName in sceneDataCache.Keys) { List <object[]> sceneData; sceneDataCache.TryGetValue(sceneName, out sceneData); if (sceneData != null) { LootContainerData_v1[] containerData = (LootContainerData_v1[])sceneData[(int)StatefulGameObjectTypes.LootContainer]; ActionDoorData_v1[] actionDoorData = (ActionDoorData_v1[])sceneData[(int)StatefulGameObjectTypes.ActionDoor]; entries.Add(new SceneCacheEntry_v1() { sceneName = sceneName, lootContainers = containerData, actionDoors = actionDoorData }); } } SceneCache_v1 data = new SceneCache_v1() { sceneCache = entries.ToArray(), permanentScenes = permanentScenes.ToArray() }; return(data); }