public static void SelectCovers(string title, System.Predicate <Cover> match = null) { GUIEditorUtils.RegisterSceneUndo("Covers : " + title); List <Cover> coverList = new List <Cover>(); Cover[] covers = Resources.FindObjectsOfTypeAll(typeof(Cover)) as Cover[]; if (null != covers) { coverList.AddRange(covers); coverList = coverList.FindAll(cover => !EditorUtility.IsPersistent(cover.gameObject)); } if (null != match) { coverList = coverList.FindAll(match); } List <GameObject> gameObjectList = new List <GameObject>(); foreach (Cover cover in coverList) { gameObjectList.Add(cover.gameObject); } Selection.objects = gameObjectList.ToArray(); }
void CheckObjects <T>(string name, CheckObject <T> checkDelegate, T[] allObjects) where T : MonoBehaviour { List <GameObject> problematicObjects = new List <GameObject>(); //T[] allObjects = Resources.FindObjectsOfTypeAll( typeof( T ) ) as T[]; if (null != allObjects) { foreach (T obj in allObjects) { if (EditorUtility.IsPersistent(obj.gameObject)) { continue; } if (!checkDelegate(obj, allObjects)) { problematicObjects.Add(obj.gameObject); } } } if (problematicObjects.Count > 0) { string output = problematicObjects.Count + " problematic " + name + "s found ! See selection for more details. ( " + name + "s "; bool first = true; foreach (GameObject go in problematicObjects) { if (!first) { output += ", "; } else { first = false; } output += go.name; } output += ")"; Debug.LogError(output); GUIEditorUtils.RegisterSceneUndo("Checking " + name + "s : selection of problematic " + name + "s"); } else { Debug.Log("No problematic " + name + "s found."); } Selection.objects = problematicObjects.ToArray(); }
void OnWizardCreate() { if (replacement == null) { return; } GUIEditorUtils.RegisterSceneUndo("Replace Selection"); Transform[] transforms = Selection.GetTransforms( SelectionMode.TopLevel | SelectionMode.OnlyUserModifiable); foreach (Transform t in transforms) { GameObject g; PrefabType pref = PrefabUtility.GetPrefabType(replacement); if (pref == PrefabType.Prefab || pref == PrefabType.ModelPrefab) { g = (GameObject)PrefabUtility.InstantiatePrefab(replacement); } else { g = (GameObject)Editor.Instantiate(replacement); } g.transform.parent = t.parent; g.name = (inheritName)? t.gameObject.name : replacement.name; if (inheritTag) { g.tag = t.gameObject.tag; } if (inheritLayer) { g.layer = t.gameObject.layer; } if (inheritStatic) { g.isStatic = t.gameObject.isStatic; } g.transform.localPosition = t.localPosition; g.transform.localScale = t.localScale; g.transform.localRotation = t.localRotation; } if (!keep) { foreach (GameObject g in Selection.gameObjects) { GameObject.DestroyImmediate(g); } } }
private static void ExecuteCommandOnSelectedCovers(CoverCommand command, float param, string undoName) { List <Cover> covers = CoverUtils.GrabSelectedCovers(); if (covers.Count > 0) { GUIEditorUtils.RegisterSceneUndo(undoName); foreach (Cover cover in covers) { command(cover, param); } } }