Пример #1
0
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();
            AutoProjector projector = target as AutoProjector;
            Component     predictor = (Component)EditorGUILayout.ObjectField("Predictor", projector.predictor as Component, typeof(Component), true);

            if (predictor != projector.predictor)
            {
                if (predictor == null)
                {
                    Undo.RecordObject(projector, "Inspector");
                    projector.predictor = null;
                    EditorUtility.SetDirty(projector);
                }
                else
                {
                    Component[] components = predictor.GetComponents <Component>();
                    for (int i = 0; i < components.Length; ++i)
                    {
                        if (components[i] is ITransformPredictor)
                        {
                            Undo.RecordObject(projector, "Inspector");
                            projector.predictor = components[i] as ITransformPredictor;
                            EditorUtility.SetDirty(projector);
                            break;
                        }
                    }
                }
            }
        }
Пример #2
0
        bool OnGUIAttachAutoProjectorToSceneObjects()
        {
            if (m_sceneProjectors == null)
            {
                m_sceneProjectors = Object.FindObjectsOfType <Projector>();
            }
            if (m_sceneProjectors != null && 0 < m_sceneProjectors.Length)
            {
                GUILayout.TextArea("AutoProjector component is necessary for a projector to work with ProjectorManager.\n" +
                                   "Check the checkboxes below to add AutoProjector component.");
            }
            else
            {
                GUILayout.TextArea("AutoProjector component is necessary for a projector to work with ProjectorManager.");
            }
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("List of Projectors in the Scene");
            if (GUILayout.Button("Update"))
            {
                m_sceneProjectors = Object.FindObjectsOfType <Projector>();
            }
            EditorGUILayout.EndHorizontal();
            EditorGUI.indentLevel++;
            m_scrollPosition = EditorGUILayout.BeginScrollView(m_scrollPosition);
            bool allProjectorsHaveAutoProjector = true;

            if (m_sceneProjectors != null && 0 < m_sceneProjectors.Length)
            {
                {
                    var __array6       = m_sceneProjectors;
                    var __arrayLength6 = __array6.Length;
                    for (int __i6 = 0; __i6 < __arrayLength6; ++__i6)
                    {
                        var projector = (Projector)__array6[__i6];
                        {
                            EditorGUILayout.BeginHorizontal();
                            AutoProjector autoProjector = projector.GetComponent <AutoProjector>();
                            bool          bAdded        = autoProjector != null;
                            if (!bAdded)
                            {
                                allProjectorsHaveAutoProjector = false;
                            }
                            EditorGUILayout.ObjectField(projector, typeof(Projector), true);
                            bool b = EditorGUILayout.Toggle(bAdded);
                            if (b != bAdded)
                            {
                                if (b)
                                {
                                    Undo.AddComponent <AutoProjector>(projector.gameObject);
                                }
                                else
                                {
                                    Undo.DestroyObjectImmediate(autoProjector);
                                }
                                EditorUtility.SetDirty(projector.gameObject);
                            }
                            EditorGUILayout.EndHorizontal();
                        }
                    }
                }
            }
            EditorGUILayout.EndScrollView();
            EditorGUI.indentLevel--;
            if (m_sceneProjectors != null && 0 < m_sceneProjectors.Length)
            {
                EditorGUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                if (allProjectorsHaveAutoProjector)
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button("Add AutoProjector component to all the projectors in the scene"))
                {
                    {
                        var __array7       = m_sceneProjectors;
                        var __arrayLength7 = __array7.Length;
                        for (int __i7 = 0; __i7 < __arrayLength7; ++__i7)
                        {
                            var projector = (Projector)__array7[__i7];
                            {
                                AutoProjector autoProjector = projector.GetComponent <AutoProjector>();
                                if (autoProjector == null)
                                {
                                    Undo.AddComponent <AutoProjector>(projector.gameObject);
                                    EditorUtility.SetDirty(projector.gameObject);
                                }
                            }
                        }
                    }
                }
                GUI.enabled = true;
                EditorGUILayout.EndHorizontal();
            }
            m_isAbleToGoNext = true;
            return(true);
        }
Пример #3
0
        bool OnGUIAttachAutoProjectorToPrefabs()
        {
            m_searchFolder = EditorGUILayout.TextField("Search Folder", m_searchFolder);
            EditorGUILayout.TextArea("Use semicolon \";\" as a separator to specify multiple folders");
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Search for Prefab"))
            {
                string[] searchFolders = m_searchFolder.Split(new char[] { ',', ';' });
                for (int i = 0; i < searchFolders.Length; ++i)
                {
                    searchFolders[i] = searchFolders[i].Trim();
                }
                string[] gameObjects = AssetDatabase.FindAssets("t:GameObject", searchFolders);
                if (m_projectorPrefabs == null)
                {
                    m_projectorPrefabs = new List <GameObject>();
                }
                m_projectorPrefabs.Clear();
                m_scrollPosition = new Vector2(0, 0);
                {
                    var __array3       = gameObjects;
                    var __arrayLength3 = __array3.Length;
                    for (int __i3 = 0; __i3 < __arrayLength3; ++__i3)
                    {
                        var guid = (string)__array3[__i3];
                        {
                            string      path       = AssetDatabase.GUIDToAssetPath(guid);
                            GameObject  prefab     = AssetDatabase.LoadAssetAtPath(path, typeof(GameObject)) as GameObject;
                            GameObject  go         = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
                            Projector[] projectors = go.GetComponentsInChildren <Projector>(true);
                            if (projectors != null && 0 < projectors.Length)
                            {
                                {
                                    var __array10       = projectors;
                                    var __arrayLength10 = __array10.Length;
                                    for (int __i10 = 0; __i10 < __arrayLength10; ++__i10)
                                    {
                                        var projector = (Projector)__array10[__i10];
                                        {
                                            m_projectorPrefabs.Add(PrefabUtility.GetPrefabParent(projector.gameObject) as GameObject);
                                        }
                                    }
                                }
                            }
                            Object.DestroyImmediate(go);
                        }
                    }
                }
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Separator();
            if (m_projectorPrefabs != null && 0 < m_projectorPrefabs.Count)
            {
                GUILayout.TextArea("AutoProjector component is necessary for a projector to work with ProjectorManager.\n" +
                                   "Check the checkboxes below to add AutoProjector component.");
            }
            else
            {
                GUILayout.TextArea("AutoProjector component is necessary for a projector to work with ProjectorManager.");
            }
            EditorGUI.indentLevel++;
            m_scrollPosition = EditorGUILayout.BeginScrollView(m_scrollPosition);
            bool allProjectorsHaveAutoProjector = true;

            if (m_projectorPrefabs != null)
            {
                {
                    var __list4      = m_projectorPrefabs;
                    var __listCount4 = __list4.Count;
                    for (int __i4 = 0; __i4 < __listCount4; ++__i4)
                    {
                        var go = (GameObject)__list4[__i4];
                        {
                            EditorGUILayout.BeginHorizontal();
                            AutoProjector autoProjector = go.GetComponent <AutoProjector>();
                            bool          bAdded        = autoProjector != null;
                            if (!bAdded)
                            {
                                allProjectorsHaveAutoProjector = false;
                            }
                            EditorGUILayout.ObjectField(go, typeof(GameObject), true);
                            GUILayout.Label("in");
                            EditorGUILayout.ObjectField(PrefabUtility.FindPrefabRoot(go), typeof(GameObject), true);
                            bool b = EditorGUILayout.Toggle(bAdded);
                            if (b != bAdded)
                            {
                                if (b)
                                {
                                    Undo.AddComponent <AutoProjector>(go);
                                }
                                else
                                {
                                    Undo.DestroyObjectImmediate(autoProjector);
                                }
                                EditorUtility.SetDirty(go);
                            }
                            EditorGUILayout.EndHorizontal();
                        }
                    }
                }
                if (m_projectorPrefabs.Count == 0)
                {
                    EditorGUILayout.LabelField("Nothing found.");
                }
            }
            EditorGUILayout.EndScrollView();
            EditorGUI.indentLevel--;
            if (m_projectorPrefabs != null && 0 < m_projectorPrefabs.Count)
            {
                EditorGUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                if (allProjectorsHaveAutoProjector)
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button("Add AutoProjector component to all the projector prefabs"))
                {
                    {
                        var __list5      = m_projectorPrefabs;
                        var __listCount5 = __list5.Count;
                        for (int __i5 = 0; __i5 < __listCount5; ++__i5)
                        {
                            var go = (GameObject)__list5[__i5];
                            {
                                AutoProjector autoProjector = go.GetComponent <AutoProjector>();
                                if (autoProjector == null)
                                {
                                    Undo.AddComponent <AutoProjector>(go);
                                    EditorUtility.SetDirty(go);
                                }
                            }
                        }
                    }
                }
                GUI.enabled = true;
                EditorGUILayout.EndHorizontal();
            }
            m_isAbleToGoNext = true;//m_projectorPrefabs != null;
            return(true);
        }