void DrawSearchOptions(Color color)
        {
            GUI.color = color;
            EditorGUILayout.BeginVertical("Box");
            GUI.color = Color.white;

            GUIDraw.LabelWidthUnderline("Search Options", 14);

            EditorGUILayout.PropertyField(drawGizmos);
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("Show Cell Grid");
            EditorGUILayout.LabelField("X", GUILayout.Width(13));
            EditorGUILayout.PropertyField(searchBoxGridX, new GUIContent(""), GUILayout.Width(25));
            EditorGUILayout.LabelField("Y", GUILayout.Width(13));
            EditorGUILayout.PropertyField(searchBoxGridY, new GUIContent(""), GUILayout.Width(25));
            EditorGUILayout.LabelField("Z", GUILayout.Width(13));
            EditorGUILayout.PropertyField(searchBoxGridZ, new GUIContent(""), GUILayout.Width(25));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.PropertyField(searchBoxSquare);

            EditorGUILayout.PropertyField(parent);
            EditorGUILayout.PropertyField(layerMask);
            EditorGUILayout.PropertyField(useTag);
            if (useTag.boolValue)
            {
                tag.stringValue = EditorGUILayout.TagField("Tag", tag.stringValue);
            }
            EditorGUILayout.PropertyField(onlyStatic);
            EditorGUILayout.PropertyField(useVertexInputLimit);
            if (useVertexInputLimit.boolValue)
            {
                EditorGUILayout.PropertyField(vertexInputLimit);
            }

            if (vertexInputLimit.intValue < 1)
            {
                vertexInputLimit.intValue = 1;
            }


            EditorGUILayout.PropertyField(nameContains);
            if (nameContains.boolValue)
            {
                GUIDraw.PropertyArray(nameContainList);
            }


            EditorGUILayout.EndVertical();
        }
        void DrawRuntime(Color color)
        {
            GUI.color = color;
            EditorGUILayout.BeginVertical("Box");
            GUI.color = Color.white;
            GUIDraw.LabelWidthUnderline("Runtime", 14);

            EditorGUILayout.PropertyField(combineInRuntime);

            if (combineInRuntime.boolValue)
            {
                EditorGUILayout.PropertyField(combineOnStart);
                EditorGUILayout.PropertyField(useCombineSwapKey);
                if (useCombineSwapKey.boolValue)
                {
                    EditorGUILayout.PropertyField(combineSwapKey);
                }
                EditorGUILayout.PropertyField(originalObjects);
                EditorGUILayout.PropertyField(originalObjectsLODGroups);
            }

            EditorGUILayout.EndVertical();
        }
Example #3
0
        public override void OnInspectorGUI()
        {
            // DrawDefaultInspector();
            CombinedLODManager combinedLODManager = (CombinedLODManager)target;

            serializedObject.Update();

            GUI.color = Color.yellow * editorSkinMulti;
            EditorGUILayout.BeginVertical("Box");
            GUI.color = Color.white;

            GUIDraw.LabelWidthUnderline(new GUIContent("LOD Settings", ""), 14);

            EditorGUILayout.PropertyField(drawGizmos);
            EditorGUILayout.PropertyField(lodMode);
            GUI.changed = false;
            EditorGUILayout.PropertyField(lodDistanceMode);
            if (GUI.changed)
            {
                MeshCombiner meshCombiner = combinedLODManager.GetComponent <MeshCombiner>();
                if (meshCombiner != null)
                {
                    serializedObject.ApplyModifiedProperties();
                    combinedLODManager.UpdateDistances(meshCombiner);
                    return;
                }
            }

            EditorGUILayout.PropertyField(lodCulled);
            if (lodCulled.boolValue)
            {
                EditorGUILayout.PropertyField(lodCullDistance);
                if (lodCullDistance.floatValue < 0)
                {
                    lodCullDistance.floatValue = 0;
                }
            }

            if (lodMode.enumValueIndex == 1)
            {
                EditorGUILayout.PropertyField(showLod);
                if (showLod.intValue < 0)
                {
                    showLod.intValue = 0;
                }
                if (showLod.intValue >= distances.arraySize)
                {
                    showLod.intValue = distances.arraySize - 1;
                }
            }
            else
            {
                GUI.changed = false;
                GUIDraw.PropertyArray(distances, new GUIContent(""), false, false);
                if (GUI.changed)
                {
                    lodDistanceMode.enumValueIndex = 1;
                }

                if (distanceElements == null || distanceElements.Length != distances.arraySize)
                {
                    distanceElements = new SerializedProperty[distances.arraySize];
                }

                for (int i = 0; i < distances.arraySize; i++)
                {
                    distanceElements[i] = distances.GetArrayElementAtIndex(i);
                    if (i == 0)
                    {
                        distanceElements[i].floatValue = 0;
                    }
                    else if (distanceElements[i].floatValue < distanceElements[i - 1].floatValue)
                    {
                        distanceElements[i].floatValue = distanceElements[i - 1].floatValue + 0.1f;
                    }
                }
            }


            EditorGUILayout.EndVertical();

            serializedObject.ApplyModifiedProperties();
        }
        void DrawOutputSettings(Color color)
        {
            GUI.color = color;
            EditorGUILayout.BeginVertical("Box");
            GUI.color = Color.white;

            GUIDraw.LabelWidthUnderline("Output Settings", 14);

            GUI.changed = false;
            int oldCellSize = cellSize.intValue;

            EditorGUILayout.PropertyField(cellSize);
            if (GUI.changed)
            {
                if (cellSize.intValue < 4)
                {
                    cellSize.intValue = 4;
                }
                if (oldCellSize != cellSize.intValue)
                {
                    if (meshCombiner.octreeCreated)
                    {
                        meshCombiner.ResetOctree();
                    }
                    if (meshCombiner.combinedLODManager != null)
                    {
                        serializedObject.ApplyModifiedProperties();
                        meshCombiner.combinedLODManager.UpdateDistances(meshCombiner);
                    }
                }
            }

            GUI.changed = false;
            EditorGUILayout.PropertyField(lodAmount);
            if (lodAmount.intValue < 1)
            {
                lodAmount.intValue = 1;
            }
            if (GUI.changed)
            {
                serializedObject.ApplyModifiedProperties();
                if (lodAmount.intValue > 1)
                {
                    meshCombiner.AddCombinedLODManager();
                }
                else
                {
                    meshCombiner.DestroyCombinedLODManager();
                }
            }

            if (lodAmount.intValue > 1)
            {
                EditorGUILayout.PropertyField(lodSeachText);
            }

            EditorGUILayout.PropertyField(addMeshColliders);

            EditorGUILayout.PropertyField(useVertexOutputLimit);
            if (useVertexOutputLimit.boolValue)
            {
                EditorGUILayout.PropertyField(vertexOutputLimit);
            }

            if (vertexOutputLimit.intValue < 1)
            {
                vertexOutputLimit.intValue = 1;
            }

            //EditorGUILayout.PropertyField(removeGeometryBelowTerrain);
            //if (removeGeometryBelowTerrain.boolValue)
            //{
            //    DrawPropertyArray(terrains);
            //}

            EditorGUILayout.EndVertical();
        }