private void OnEnable() { if (target == null) { DestroyImmediate(this); return; } terrainColoring = serializedObject.FindProperty("terrainColoring"); darkSide = serializedObject.FindProperty("darkSide"); liquidColor = serializedObject.FindProperty("liquidColor"); liquidHeight = serializedObject.FindProperty("liquidHeight"); specularColor = serializedObject.FindProperty("specularColor"); specularHighlight = serializedObject.FindProperty("specularHighlight"); coreColor = serializedObject.FindProperty("coreColor"); rimColor = serializedObject.FindProperty("rimColor"); rimPower = serializedObject.FindProperty("rimPower"); rimOpacity = serializedObject.FindProperty("rimOpacity"); outerRim = serializedObject.FindProperty("outerRim"); outerRimRadius = serializedObject.FindProperty("outerRimRadius"); outerRimColor = serializedObject.FindProperty("outerRimColor"); outerRimOffset = serializedObject.FindProperty("outerRimOffset"); outerRimOpacity = serializedObject.FindProperty("outerRimOpacity"); planetData = (PPC_PlanetData)target; }
public override void OnInspectorGUI() { // Check if we need to get our asset's editor if (cachedEditor == null || subEditorData != polyPlanet.data) { subEditorData = polyPlanet.data; cachedEditor = CreateEditor(subEditorData); } bool regenerateAtEnd = false; serializedObject.Update(); if (PPC_PlanetManager.Instance.lightModeIsCustom) { EditorGUI.BeginChangeCheck(); Vector4 customLightDirection = EditorGUILayout.Vector4Field("Light Direction", polyPlanet.customLightDirection); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Light Direction Change"); polyPlanet.customLightDirection = customLightDirection; } } EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Data"); EditorGUI.BeginChangeCheck(); PPC_PlanetData data = EditorGUILayout.ObjectField(polyPlanet.data, typeof(PPC_PlanetData), false) as PPC_PlanetData; if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Poly Planet Data Change"); polyPlanet.data = data; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Auto Load Data"); EditorGUILayout.PropertyField(autoLoadData, GUIContent.none, GUILayout.Width(14)); EditorGUI.BeginDisabledGroup(polyPlanet.data == null); if (GUILayout.Button("Load Mesh Data", EditorStyles.miniButton)) { polyPlanet.LoadMeshData(); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(" "); EditorGUILayout.LabelField(GUIContent.none, GUILayout.Width(14)); EditorGUI.BeginDisabledGroup(polyPlanet.data == null); if (GUILayout.Button("Load Shader Data", EditorStyles.miniButton)) { polyPlanet.LoadShaderData(); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); if (PPC_PlanetManager.Instance.camertaProjectionIs2D) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(" "); EditorGUILayout.LabelField(GUIContent.none, GUILayout.Width(14)); if (GUILayout.Button("Fix 2D Rim Scale", EditorStyles.miniButton)) { polyPlanet.SetOrthograhicRimScale(); } EditorGUILayout.EndHorizontal(); } if (polyPlanet.data == null) { EditorGUI.BeginDisabledGroup(polyPlanet.data == null); EditorGUILayout.Foldout(false, "Shader Data"); EditorGUI.EndDisabledGroup(); } else { editData = EditorGUILayout.Foldout(editData, "Shader Data"); if (editData) { EditorGUILayout.BeginVertical(GUI.skin.textArea); EditorGUI.BeginChangeCheck(); if (cachedEditor != null) { cachedEditor.OnInspectorGUI(); } regenerateAtEnd = EditorGUI.EndChangeCheck(); EditorGUILayout.EndVertical(); EditorGUILayout.HelpBox("Changes are also saved in play mode.", MessageType.Info); } } serializedObject.ApplyModifiedProperties(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(" "); EditorGUILayout.LabelField(GUIContent.none, GUILayout.Width(14)); if (GUILayout.Button("Go To Shader Settings", EditorStyles.miniButton)) { Selection.objects = new Object[] { PPC_PlanetManager.Instance } } ; EditorGUILayout.EndHorizontal(); if (regenerateAtEnd) { polyPlanet.LoadShaderData(); } } }