public void Remove(ISpawnable spawnable) { /* In this implementation we can ignore the argument since we * already know it. This is more like a signal function so. */ m_Spawned = null; if (m_DeactivateOnRemove) { m_State = SpawnState.Inactive; } else { m_State = SpawnState.Respawning; TimeSpan respawnDelay = GetRespawnDelay(); m_NextSpawn = DateTime.UtcNow + respawnDelay; m_Timer = Timer.DelayCall(respawnDelay, Respawn); m_Timer.Start(); } m_Owner.OnEntityRemoved(spawnable); }