/// <summary> /// Handles cleaning up a known mesh or moving it to the RemovedMeshObjects list /// /// If NumUpdatesBeforeRemoval < 1, the mesh will immediately be destroyed upon removal /// Else we will create a new RemoveSurfaceHolder and add that to the RemovedMeshObjects list to cache the mesh until we believe it should actually be removed /// </summary> /// <param name="surfaceId"></param> protected virtual void HandleDelete(SurfaceId surfaceId) { GameObject obj = SpatialMeshObjects[surfaceId]; SpatialMeshObjects.Remove(surfaceId); if (NumUpdatesBeforeRemoval < 1) { FinalDestroy(obj); } else if (obj != null) { bool shouldDisable = !ShouldBeActiveWhileRemoved(obj); MeshCollider collider = obj.GetComponent <MeshCollider>(); bool collisionsEnabled = (collider != null && collider.enabled); if (collisionsEnabled && shouldDisable) { collider.enabled = false; } MeshRenderer mr = obj.GetComponent <MeshRenderer>(); bool rendererEnabled = (mr != null && mr.enabled); if (rendererEnabled && shouldDisable) { mr.enabled = false; } RemovedSurfaceHolder holder = new RemovedSurfaceHolder(NumUpdatesBeforeRemoval + 1 /*+1 because we are going to process it now*/, obj, surfaceId, collisionsEnabled, rendererEnabled); RemovedMeshObjects.Add(surfaceId, holder); } }
/// <summary> /// Handles cleaning up a known mesh or moving it to the RemovedMeshObjects list /// /// If NumUpdatesBeforeRemoval < 1, the mesh will immediately be destroyed upon removal /// Else we will create a new RemoveSurfaceHolder and add that to the RemovedMeshObjects list to cache the mesh until we believe it should actually be removed /// </summary> /// <param name="surfaceId"></param> protected virtual void HandleDelete(SurfaceId surfaceId) { GameObject obj = SpatialMeshObjects[surfaceId]; SpatialMeshObjects.Remove(surfaceId); if (NumUpdatesBeforeRemoval < 1) { FinalDestroy(obj); } else if (obj != null) { bool shouldDisable = !ShouldBeActiveWhileRemoved(obj); MeshCollider collider = obj.GetComponent<MeshCollider>(); bool collisionsEnabled = (collider != null && collider.enabled); if (collisionsEnabled && shouldDisable) { collider.enabled = false; } MeshRenderer mr = obj.GetComponent<MeshRenderer>(); bool rendererEnabled = (mr != null && mr.enabled); if (rendererEnabled && shouldDisable) { mr.enabled = false; } RemovedSurfaceHolder holder = new RemovedSurfaceHolder(NumUpdatesBeforeRemoval + 1 /*+1 because we are going to process it now*/, obj, surfaceId, collisionsEnabled, rendererEnabled); RemovedMeshObjects.Add(surfaceId, holder); } }