static void DestroyObject(NetworkIdentity uv, bool destroyServerObject) { if (LogFilter.Debug) { Debug.Log("DestroyObject instance:" + uv.netId); } if (objects.ContainsKey(uv.netId)) { objects.Remove(uv.netId); } if (uv.clientAuthorityOwner != null) { uv.clientAuthorityOwner.RemoveOwnedObject(uv); } ObjectDestroyMessage msg = new ObjectDestroyMessage(); msg.netId = uv.netId; SendToObservers(uv.gameObject, (short)MsgType.ObjectDestroy, msg); uv.ClearObservers(); if (NetworkClient.active && s_LocalClientActive) { uv.OnNetworkDestroy(); ClientScene.SetLocalObject(msg.netId, null); } // when unspawning, dont destroy the server's object if (destroyServerObject) { UnityEngine.Object.Destroy(uv.gameObject); } uv.MarkForReset(); }
static void DestroyObject(NetworkIdentity identity, bool destroyServerObject) { if (LogFilter.Debug) { Debug.Log("DestroyObject instance:" + identity.netId); } NetworkIdentity.spawned.Remove(identity.netId); identity.clientAuthorityOwner?.RemoveOwnedObject(identity); ObjectDestroyMessage msg = new ObjectDestroyMessage { netId = identity.netId }; SendToObservers(identity, msg); identity.ClearObservers(); if (NetworkClient.active && localClientActive) { identity.OnNetworkDestroy(); } // when unspawning, dont destroy the server's object if (destroyServerObject) { UnityEngine.Object.Destroy(identity.gameObject); } identity.MarkForReset(); }
void DestroyObject(NetworkIdentity identity, bool destroyServerObject) { if (LogFilter.Debug) { Debug.Log("DestroyObject instance:" + identity.NetId); } spawned.Remove(identity.NetId); identity.ConnectionToClient?.RemoveOwnedObject(identity); var msg = new ObjectDestroyMessage { netId = identity.NetId }; SendToObservers(identity, msg); identity.ClearObservers(); if (LocalClientActive) { identity.OnNetworkDestroy.Invoke(); } // when unspawning, dont destroy the server's object if (destroyServerObject) { UnityEngine.Object.Destroy(identity.gameObject); } identity.MarkForReset(); }
void UnSpawn(NetworkIdentity identity) { Guid assetId = identity.AssetId; identity.NetworkDestroy(); if (unspawnHandlers.TryGetValue(assetId, out UnSpawnDelegate handler) && handler != null) { handler(identity.gameObject); } else if (identity.sceneId == 0) { Destroy(identity.gameObject); } else { identity.MarkForReset(); identity.gameObject.SetActive(false); spawnableObjects[identity.sceneId] = identity; } }
public static void DestroyAllClientObjects() { foreach (KeyValuePair <uint, NetworkIdentity> kvp in NetworkIdentity.spawned) { NetworkIdentity identity = kvp.Value; if (identity != null && identity.gameObject != null) { if (!InvokeUnSpawnHandler(identity.assetId, identity.gameObject)) { if (identity.sceneId == 0) { Object.Destroy(identity.gameObject); } else { identity.MarkForReset(); identity.gameObject.SetActive(false); } } } } NetworkIdentity.spawned.Clear(); }
public static void DestroyAllClientObjects() { foreach (uint netId in NetworkIdentity.spawned.Keys) { NetworkIdentity identity = NetworkIdentity.spawned[netId]; if (identity.gameObject != null) { if (!InvokeUnSpawnHandler(identity.assetId, identity.gameObject)) { if (identity.sceneId == 0) { Object.Destroy(identity.gameObject); } else { identity.MarkForReset(); identity.gameObject.SetActive(false); } } } } NetworkIdentity.spawned.Clear(); }
internal void DestroyAllClientObjects() { foreach (var netId in m_LocalObjects.Keys) { NetworkIdentity uv = m_LocalObjects[netId]; if (uv != null && uv.gameObject != null) { if (!InvokeUnSpawnHandler(uv.assetId, uv.gameObject)) { if (uv.sceneId.IsEmpty()) { Object.Destroy(uv.gameObject); } else { uv.MarkForReset(); uv.gameObject.SetActive(false); } } } } ClearLocalObjects(); }