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(); } } }