void OnEvent(GameEvent ev)
    {
        switch (ev.Type())
        {
        case GameEventType.EVENT_PLAYER_SPAWNED:
            EventPlayerSpawned spawn = (EventPlayerSpawned)ev;
            target_group.AddTarget(spawn.player.transform, player_radius);
            break;

        case GameEventType.EVENT_PLAYER_DESPAWNED:
            EventPlayerDeSpawned despawn = (EventPlayerDeSpawned)ev;
            target_group.RemoveTarget(despawn.player.transform);
            break;

        default:
            Debug.LogError("CameraManager: Invalid call to OnEvent");
            break;
        }
    }
    public PlayerStats SpawnPlayerInstance(Player assigned, Vector2 pos)
    {
        PlayerStats ret = null;

        if (assigned != null)
        {
            DestroyPlayerInstance(assigned);

            GameObject new_player = Instantiate(player_prefab, pos, Quaternion.identity);

            if (new_player != null)
            {
                ret = new_player.GetComponent <PlayerStats>();

                ret.SetPlayer(assigned);
                assigned.SetPlayerInstance(ret);

                EventPlayerSpawned ev = new EventPlayerSpawned(ret);
                EventManager.Instance.SendEvent(ev);
            }
        }

        return(ret);
    }