using System; using System.Collections.Generic; namespace UnityEngine.Networking { // Token: 0x02000056 RID: 86 internal class NetworkScene { // Token: 0x1700009A RID: 154 // (get) Token: 0x0600039E RID: 926 RVA: 0x00014BE4 File Offset: 0x00012DE4 internal Dictionary localObjects { get { return this.m_LocalObjects; } } // Token: 0x1700009B RID: 155 // (get) Token: 0x0600039F RID: 927 RVA: 0x00014C00 File Offset: 0x00012E00 internal static Dictionary guidToPrefab { get { return NetworkScene.s_GuidToPrefab; } } // Token: 0x1700009C RID: 156 // (get) Token: 0x060003A0 RID: 928 RVA: 0x00014C1C File Offset: 0x00012E1C internal static Dictionary spawnHandlers { get { return NetworkScene.s_SpawnHandlers; } } // Token: 0x1700009D RID: 157 // (get) Token: 0x060003A1 RID: 929 RVA: 0x00014C38 File Offset: 0x00012E38 internal static Dictionary unspawnHandlers { get { return NetworkScene.s_UnspawnHandlers; } } // Token: 0x060003A2 RID: 930 RVA: 0x00014C52 File Offset: 0x00012E52 internal void Shutdown() { this.ClearLocalObjects(); NetworkScene.ClearSpawners(); } // Token: 0x060003A3 RID: 931 RVA: 0x00014C60 File Offset: 0x00012E60 internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isClient, bool isServer) { if (LogFilter.logDev) { Debug.Log(string.Concat(new object[] { "SetLocalObject ", netId, " ", obj })); } if (obj == null) { this.m_LocalObjects[netId] = null; } else { NetworkIdentity networkIdentity = null; if (this.m_LocalObjects.ContainsKey(netId)) { networkIdentity = this.m_LocalObjects[netId]; } if (networkIdentity == null) { networkIdentity = obj.GetComponent(); this.m_LocalObjects[netId] = networkIdentity; } networkIdentity.UpdateClientServer(isClient, isServer); } } // Token: 0x060003A4 RID: 932 RVA: 0x00014D14 File Offset: 0x00012F14 internal GameObject FindLocalObject(NetworkInstanceId netId) { if (this.m_LocalObjects.ContainsKey(netId)) { NetworkIdentity networkIdentity = this.m_LocalObjects[netId]; if (networkIdentity != null) { return networkIdentity.gameObject; } } return null; } // Token: 0x060003A5 RID: 933 RVA: 0x00014D64 File Offset: 0x00012F64 internal bool GetNetworkIdentity(NetworkInstanceId netId, out NetworkIdentity uv) { bool flag; if (this.m_LocalObjects.ContainsKey(netId) && this.m_LocalObjects[netId] != null) { uv = this.m_LocalObjects[netId]; flag = true; } else { uv = null; flag = false; } return flag; } // Token: 0x060003A6 RID: 934 RVA: 0x00014DBC File Offset: 0x00012FBC internal bool RemoveLocalObject(NetworkInstanceId netId) { return this.m_LocalObjects.Remove(netId); } // Token: 0x060003A7 RID: 935 RVA: 0x00014DE0 File Offset: 0x00012FE0 internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) { bool flag; if (this.m_LocalObjects.ContainsKey(netId)) { NetworkIdentity networkIdentity = this.m_LocalObjects[netId]; Object.Destroy(networkIdentity.gameObject); flag = this.m_LocalObjects.Remove(netId); } else { flag = false; } return flag; } // Token: 0x060003A8 RID: 936 RVA: 0x00014E32 File Offset: 0x00013032 internal void ClearLocalObjects() { this.m_LocalObjects.Clear(); } // Token: 0x060003A9 RID: 937 RVA: 0x00014E40 File Offset: 0x00013040 internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) { NetworkIdentity component = prefab.GetComponent(); if (component) { component.SetDynamicAssetId(newAssetId); if (LogFilter.logDebug) { Debug.Log(string.Concat(new object[] { "Registering prefab '", prefab.name, "' as asset:", component.assetId })); } NetworkScene.s_GuidToPrefab[component.assetId] = prefab; } else if (LogFilter.logError) { Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); } } // Token: 0x060003AA RID: 938 RVA: 0x00014EEC File Offset: 0x000130EC internal static void RegisterPrefab(GameObject prefab) { NetworkIdentity component = prefab.GetComponent(); if (component) { if (LogFilter.logDebug) { Debug.Log(string.Concat(new object[] { "Registering prefab '", prefab.name, "' as asset:", component.assetId })); } NetworkScene.s_GuidToPrefab[component.assetId] = prefab; NetworkIdentity[] componentsInChildren = prefab.GetComponentsInChildren(); if (componentsInChildren.Length > 1) { if (LogFilter.logWarn) { Debug.LogWarning("The prefab '" + prefab.name + "' has multiple NetworkIdentity components. There can only be one NetworkIdentity on a prefab, and it must be on the root object."); } } } else if (LogFilter.logError) { Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); } } // Token: 0x060003AB RID: 939 RVA: 0x00014FC8 File Offset: 0x000131C8 internal static bool GetPrefab(NetworkHash128 assetId, out GameObject prefab) { bool flag; if (!assetId.IsValid()) { prefab = null; flag = false; } else if (NetworkScene.s_GuidToPrefab.ContainsKey(assetId) && NetworkScene.s_GuidToPrefab[assetId] != null) { prefab = NetworkScene.s_GuidToPrefab[assetId]; flag = true; } else { prefab = null; flag = false; } return flag; } // Token: 0x060003AC RID: 940 RVA: 0x00015033 File Offset: 0x00013233 internal static void ClearSpawners() { NetworkScene.s_GuidToPrefab.Clear(); NetworkScene.s_SpawnHandlers.Clear(); NetworkScene.s_UnspawnHandlers.Clear(); } // Token: 0x060003AD RID: 941 RVA: 0x00015054 File Offset: 0x00013254 public static void UnregisterSpawnHandler(NetworkHash128 assetId) { NetworkScene.s_SpawnHandlers.Remove(assetId); NetworkScene.s_UnspawnHandlers.Remove(assetId); } // Token: 0x060003AE RID: 942 RVA: 0x00015070 File Offset: 0x00013270 internal static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { if (spawnHandler == null || unspawnHandler == null) { if (LogFilter.logError) { Debug.LogError("RegisterSpawnHandler custom spawn function null for " + assetId); } } else { if (LogFilter.logDebug) { Debug.Log(string.Concat(new object[] { "RegisterSpawnHandler asset '", assetId, "' ", spawnHandler.GetMethodName(), "/", unspawnHandler.GetMethodName() })); } NetworkScene.s_SpawnHandlers[assetId] = spawnHandler; NetworkScene.s_UnspawnHandlers[assetId] = unspawnHandler; } } // Token: 0x060003AF RID: 943 RVA: 0x00015118 File Offset: 0x00013318 internal static void UnregisterPrefab(GameObject prefab) { NetworkIdentity component = prefab.GetComponent(); if (component == null) { if (LogFilter.logError) { Debug.LogError("Could not unregister '" + prefab.name + "' since it contains no NetworkIdentity component"); } } else { NetworkScene.s_SpawnHandlers.Remove(component.assetId); NetworkScene.s_UnspawnHandlers.Remove(component.assetId); } } // Token: 0x060003B0 RID: 944 RVA: 0x00015188 File Offset: 0x00013388 internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { NetworkIdentity component = prefab.GetComponent(); if (component == null) { if (LogFilter.logError) { Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); } } else if (spawnHandler == null || unspawnHandler == null) { if (LogFilter.logError) { Debug.LogError("RegisterPrefab custom spawn function null for " + component.assetId); } } else if (!component.assetId.IsValid()) { if (LogFilter.logError) { Debug.LogError("RegisterPrefab game object " + prefab.name + " has no prefab. Use RegisterSpawnHandler() instead?"); } } else { if (LogFilter.logDebug) { Debug.Log(string.Concat(new object[] { "Registering custom prefab '", prefab.name, "' as asset:", component.assetId, " ", spawnHandler.GetMethodName(), "/", unspawnHandler.GetMethodName() })); } NetworkScene.s_SpawnHandlers[component.assetId] = spawnHandler; NetworkScene.s_UnspawnHandlers[component.assetId] = unspawnHandler; } } // Token: 0x060003B1 RID: 945 RVA: 0x000152D4 File Offset: 0x000134D4 internal static bool GetSpawnHandler(NetworkHash128 assetId, out SpawnDelegate handler) { bool flag; if (NetworkScene.s_SpawnHandlers.ContainsKey(assetId)) { handler = NetworkScene.s_SpawnHandlers[assetId]; flag = true; } else { handler = null; flag = false; } return flag; } // Token: 0x060003B2 RID: 946 RVA: 0x00015314 File Offset: 0x00013514 internal static bool InvokeUnSpawnHandler(NetworkHash128 assetId, GameObject obj) { bool flag; if (NetworkScene.s_UnspawnHandlers.ContainsKey(assetId) && NetworkScene.s_UnspawnHandlers[assetId] != null) { UnSpawnDelegate unSpawnDelegate = NetworkScene.s_UnspawnHandlers[assetId]; unSpawnDelegate(obj); flag = true; } else { flag = false; } return flag; } // Token: 0x060003B3 RID: 947 RVA: 0x00015368 File Offset: 0x00013568 internal void DestroyAllClientObjects() { foreach (NetworkInstanceId networkInstanceId in this.m_LocalObjects.Keys) { NetworkIdentity networkIdentity = this.m_LocalObjects[networkInstanceId]; if (networkIdentity != null && networkIdentity.gameObject != null) { if (!NetworkScene.InvokeUnSpawnHandler(networkIdentity.assetId, networkIdentity.gameObject)) { if (networkIdentity.sceneId.IsEmpty()) { Object.Destroy(networkIdentity.gameObject); } else { networkIdentity.MarkForReset(); networkIdentity.gameObject.SetActive(false); } } } } this.ClearLocalObjects(); } // Token: 0x060003B4 RID: 948 RVA: 0x0001544C File Offset: 0x0001364C internal void DumpAllClientObjects() { foreach (NetworkInstanceId networkInstanceId in this.m_LocalObjects.Keys) { NetworkIdentity networkIdentity = this.m_LocalObjects[networkInstanceId]; if (networkIdentity != null) { Debug.Log(string.Concat(new object[] { "ID:", networkInstanceId, " OBJ:", networkIdentity.gameObject, " AS:", networkIdentity.assetId })); } else { Debug.Log("ID:" + networkInstanceId + " OBJ: null"); } } } // Token: 0x040001B3 RID: 435 private Dictionary m_LocalObjects = new Dictionary(); // Token: 0x040001B4 RID: 436 private static Dictionary s_GuidToPrefab = new Dictionary(); // Token: 0x040001B5 RID: 437 private static Dictionary s_SpawnHandlers = new Dictionary(); // Token: 0x040001B6 RID: 438 private static Dictionary s_UnspawnHandlers = new Dictionary(); } }