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);
        }