예제 #1
0
    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();
    }
예제 #2
0
    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();
    }
예제 #3
0
    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);
            }
        }
    }
예제 #4
0
    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);
            }
        }
    }