public EditorEntity CreateAndAdd(string strType)
    {
        EditorEntity instance = null;

        foreach (EntityInstance instantiable in instantiablesDict)
        {
            if (instantiable.type == strType)
            {
                instance = Instantiate(instantiable.prefab) as EditorEntity;
                instance.transform.SetParent(instantiable.entityCollectionParent);
            }
        }
        if (instance == null)
        {
            Debug.LogError($"Didn't find type '{strType}' in the instantiablesDict");
            return(null);
        }

        switch (strType)
        {
        case "Shooting_Enemy":
            shootingEnemies.Add(instance);
            break;

        case "Walking_Enemy":
            walkingEnemies.Add(instance);
            break;

        case "Checkpoint":
            checkpoints.Add(instance);
            break;

        default:
            Debug.LogWarning($"Unhandled strType {strType}");
            return(null);
        }

        SetCommonActions(instance);

        // entityplacement just like a player, but can also be binned
        instance.entityPlacement.OnDropped += entityTrashCan.CheckDestroy;

        instance.OnEnterEditMode(); // turn it's brain off immediately

        return(instance);
    }
 private void OnSwitchedMode(LevelControl.Modes m)
 {
     EntityPlacement.beingHeld = null;
     if (m == LevelControl.Modes.Edit)
     {
         player.OnEnterEditMode();
         levelExit.OnEnterEditMode();
         foreach (var e in shootingEnemies)
         {
             e.OnEnterEditMode();
         }
         foreach (var e in walkingEnemies)
         {
             e.OnEnterEditMode();
         }
         foreach (var e in checkpoints)
         {
             e.OnEnterEditMode();
         }
     }
     else if (m == LevelControl.Modes.Play)
     {
         player.OnEnterPlayMode();
         levelExit.OnEnterPlayMode();
         foreach (var e in shootingEnemies)
         {
             e.OnEnterPlayMode();
         }
         foreach (var e in walkingEnemies)
         {
             e.OnEnterPlayMode();
         }
         foreach (var e in checkpoints)
         {
             e.OnEnterPlayMode();
         }
     }
 }