mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 11:00:32 +00:00
NetworkServer.DestroyObject: 'DestroyMode' enum instead of bool to make it more obvious.
we don't just need it
This commit is contained in:
parent
47217bef6c
commit
4a505860eb
@ -1181,7 +1181,7 @@ static void SpawnObserversForConnection(NetworkConnection conn)
|
|||||||
// Unlike when calling NetworkServer.Destroy(), on the server the object
|
// Unlike when calling NetworkServer.Destroy(), on the server the object
|
||||||
// will NOT be destroyed. This allows the server to re-use the object,
|
// will NOT be destroyed. This allows the server to re-use the object,
|
||||||
// even spawn it again later.
|
// even spawn it again later.
|
||||||
public static void UnSpawn(GameObject obj) => DestroyObject(obj, false);
|
public static void UnSpawn(GameObject obj) => DestroyObject(obj, DestroyMode.Reset_And_Hide);
|
||||||
|
|
||||||
// destroy /////////////////////////////////////////////////////////////
|
// destroy /////////////////////////////////////////////////////////////
|
||||||
/// <summary>Destroys all of the connection's owned objects on the server.</summary>
|
/// <summary>Destroys all of the connection's owned objects on the server.</summary>
|
||||||
@ -1201,7 +1201,14 @@ public static void DestroyPlayerForConnection(NetworkConnection conn)
|
|||||||
conn.identity = null;
|
conn.identity = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DestroyObject(NetworkIdentity identity, bool destroyServerObject)
|
// sometimes we want to GameObject.Destroy.
|
||||||
|
// sometimes we want to call .Reset() and hide it.
|
||||||
|
// sometimes for .Unspawn.
|
||||||
|
// sometimes for destroying scene objects.
|
||||||
|
// => 'bool destroy' isn't obvious enough. it's really destroy OR reset!
|
||||||
|
enum DestroyMode { GameObject_Destroy, Reset_And_Hide }
|
||||||
|
|
||||||
|
static void DestroyObject(NetworkIdentity identity, DestroyMode mode)
|
||||||
{
|
{
|
||||||
if (aoi)
|
if (aoi)
|
||||||
{
|
{
|
||||||
@ -1235,21 +1242,20 @@ static void DestroyObject(NetworkIdentity identity, bool destroyServerObject)
|
|||||||
|
|
||||||
identity.OnStopServer();
|
identity.OnStopServer();
|
||||||
|
|
||||||
// only .Destroy() if we are supposed to destroy it on server
|
// are we supposed to GameObject.Destroy() it completely?
|
||||||
if (destroyServerObject)
|
if (mode == DestroyMode.GameObject_Destroy)
|
||||||
{
|
{
|
||||||
identity.destroyCalled = true;
|
identity.destroyCalled = true;
|
||||||
UnityEngine.Object.Destroy(identity.gameObject);
|
UnityEngine.Object.Destroy(identity.gameObject);
|
||||||
}
|
}
|
||||||
// otherwise simply .Reset() it.
|
// otherwise simply .Reset() and set inactive again
|
||||||
// for Unspawn() etc.
|
else if (mode == DestroyMode.Reset_And_Hide)
|
||||||
else
|
|
||||||
{
|
{
|
||||||
identity.Reset();
|
identity.Reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DestroyObject(GameObject obj, bool destroyServerObject)
|
static void DestroyObject(GameObject obj, DestroyMode mode)
|
||||||
{
|
{
|
||||||
if (obj == null)
|
if (obj == null)
|
||||||
{
|
{
|
||||||
@ -1259,7 +1265,7 @@ static void DestroyObject(GameObject obj, bool destroyServerObject)
|
|||||||
|
|
||||||
if (GetNetworkIdentity(obj, out NetworkIdentity identity))
|
if (GetNetworkIdentity(obj, out NetworkIdentity identity))
|
||||||
{
|
{
|
||||||
DestroyObject(identity, destroyServerObject);
|
DestroyObject(identity, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1267,7 +1273,7 @@ static void DestroyObject(GameObject obj, bool destroyServerObject)
|
|||||||
// In some cases it is useful to remove an object but not delete it on
|
// In some cases it is useful to remove an object but not delete it on
|
||||||
// the server. For that, use NetworkServer.UnSpawn() instead of
|
// the server. For that, use NetworkServer.UnSpawn() instead of
|
||||||
// NetworkServer.Destroy().
|
// NetworkServer.Destroy().
|
||||||
public static void Destroy(GameObject obj) => DestroyObject(obj, true);
|
public static void Destroy(GameObject obj) => DestroyObject(obj, DestroyMode.GameObject_Destroy);
|
||||||
|
|
||||||
// interest management /////////////////////////////////////////////////
|
// interest management /////////////////////////////////////////////////
|
||||||
// Helper function to add all server connections as observers.
|
// Helper function to add all server connections as observers.
|
||||||
|
Loading…
Reference in New Issue
Block a user