private static void EnsureLookup(bool init) { if (AIManager._aiLookup != null) { return; } lock (AIManager.initLock) { if (AIManager._aiLookup == null) { AIManager._aiLookup = new Dictionary <Guid, AIManager.AIData>(); } else { return; } } AIStorage[] aIStorageArray = Resources.LoadAll <AIStorage>("ApexAIStorage"); for (int i = 0; i < (int)aIStorageArray.Length; i++) { AIManager.AIData aIDatum = new AIManager.AIData() { storedData = aIStorageArray[i] }; AIManager._aiLookup.Add(new Guid(aIDatum.storedData.aiId), aIDatum); if (init) { AIManager.ReadAndInit(aIDatum); } } }
private static void ReadAndInit(AIManager.AIData data) { List <IInitializeAfterDeserialization> initializeAfterDeserializations = new List <IInitializeAfterDeserialization>(); try { data.ai = SerializationMaster.Deserialize <UtilityAI>(data.storedData.configuration, initializeAfterDeserializations); data.ai.name = data.storedData.name; } catch (Exception exception1) { Exception exception = exception1; UnityEngine.Debug.LogWarning(string.Format("Unable to load the AI: {0}. Additional details: {1}\n{2}", data.storedData.name, exception.Message, exception.StackTrace)); return; } int count = initializeAfterDeserializations.Count; for (int i = 0; i < count; i++) { initializeAfterDeserializations[i].Initialize(data.ai); } }