public override void OnInspectorGUI() { StreamManager sm = target as StreamManager; MicroSplatObject mso = sm.GetComponent <MicroSplatObject>(); if (mso == null) { EditorGUILayout.HelpBox("Must be on a MicroSplatObject (terrain, mesh terrain, etc)", MessageType.Error); return; } if (mso.keywordSO == null) { EditorGUILayout.HelpBox("MicroSplat Terrain is missing keywords", MessageType.Error); return; } if (!mso.keywordSO.IsKeywordEnabled("_DYNAMICFLOWS")) { EditorGUILayout.HelpBox("Must have Dynamic Flows ON in your terrain material", MessageType.Error); return; } EditorGUI.BeginChangeCheck(); if (MicroSplatUtilities.DrawRollup("Streams", true, false)) { sm.strength.x = EditorGUILayout.Slider(CStrength, sm.strength.x, 0, 1); sm.evaporation.x = EditorGUILayout.Slider(CEvaporation, sm.evaporation.x, 0, 0.5f); sm.speed.x = EditorGUILayout.Slider(CSpeed, sm.speed.x, 0, 10); sm.resistance.x = EditorGUILayout.Slider(CResistance, sm.resistance.x, 0.005f, 0.75f); sm.wetnessEvaporation = EditorGUILayout.Slider(CWetnessEvap, sm.wetnessEvaporation, 0.0f, 0.5f); if (Application.isPlaying) { GUILayout.BeginHorizontal(); GUILayout.Space(5); if (GUILayout.Button("Save State")) { SaveStream(sm); } GUILayout.Space(5); GUILayout.EndHorizontal(); } } if (MicroSplatUtilities.DrawRollup("Lava", true, false)) { sm.strength.y = EditorGUILayout.Slider(CStrength, sm.strength.y, 0, 1); sm.evaporation.y = EditorGUILayout.Slider(CEvaporation, sm.evaporation.y, 0, 0.5f); sm.speed.y = EditorGUILayout.Slider(CSpeed, sm.speed.y, 0, 10); sm.resistance.y = EditorGUILayout.Slider(CResistance, sm.resistance.y, 0.005f, 0.75f); sm.burnEvaporation = EditorGUILayout.Slider(CBurnEvap, sm.burnEvaporation, 0.0f, 0.5f); if (Application.isPlaying) { GUILayout.BeginHorizontal(); GUILayout.Space(5); if (GUILayout.Button("Save State")) { SaveLava(sm); } GUILayout.Space(5); GUILayout.EndHorizontal(); } } if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(sm); } if (sm.updateBuffer != null) { if (sm.updateBuffer.GetCurrent() != null) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Dynamic Buffer"); int mem = sm.updateBuffer.width * sm.updateBuffer.height * 2; mem /= 128; EditorGUILayout.LabelField("Buffer Memory: " + mem.ToString() + "kb"); EditorGUILayout.EndHorizontal(); GUILayout.Box(sm.updateBuffer.GetCurrent(), GUILayout.Width(256), GUILayout.Height(256)); } } }
public override void OnInspectorGUI() { StreamManager sm = target as StreamManager; Terrain t = sm.GetComponent <Terrain>(); if (t == null || t.materialTemplate == null || !t.materialTemplate.IsKeywordEnabled("_MICROSPLAT")) { EditorGUILayout.HelpBox("Must be on a MicroSplat Terrain", MessageType.Error); return; } if (!t.materialTemplate.IsKeywordEnabled("_DYNAMICFLOWS")) { EditorGUILayout.HelpBox("Must have Dynamic Flows ON in your terrain material", MessageType.Error); return; } if (sm.updateShader == null) { sm.updateShader = Shader.Find("Hidden/MicroSplat/StreamUpdate"); EditorUtility.SetDirty(sm.gameObject); } if (MicroSplatUtilities.DrawRollup("Streams", true, false)) { sm.strength.x = EditorGUILayout.Slider(CStrength, sm.strength.x, 0, 1); sm.evaporation.x = EditorGUILayout.Slider(CEvaporation, sm.evaporation.x, 0, 0.5f); sm.speed.x = EditorGUILayout.Slider(CSpeed, sm.speed.x, 0, 10); sm.resistance.x = EditorGUILayout.Slider(CResistance, sm.resistance.x, 0.005f, 0.75f); sm.wetnessEvaporation = EditorGUILayout.Slider(CWetnessEvap, sm.wetnessEvaporation, 0.0f, 0.5f); if (Application.isPlaying) { GUILayout.BeginHorizontal(); GUILayout.Space(5); if (GUILayout.Button("Save State")) { SaveStream(sm); } GUILayout.Space(5); GUILayout.EndHorizontal(); } } if (MicroSplatUtilities.DrawRollup("Lava", true, false)) { sm.strength.y = EditorGUILayout.Slider(CStrength, sm.strength.y, 0, 1); sm.evaporation.y = EditorGUILayout.Slider(CEvaporation, sm.evaporation.y, 0, 0.5f); sm.speed.y = EditorGUILayout.Slider(CSpeed, sm.speed.y, 0, 10); sm.resistance.y = EditorGUILayout.Slider(CResistance, sm.resistance.y, 0.005f, 0.75f); sm.burnEvaporation = EditorGUILayout.Slider(CBurnEvap, sm.burnEvaporation, 0.0f, 0.5f); if (Application.isPlaying) { GUILayout.BeginHorizontal(); GUILayout.Space(5); if (GUILayout.Button("Save State")) { SaveLava(sm); } GUILayout.Space(5); GUILayout.EndHorizontal(); } } if (sm.currentBuffer != null) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Dynamic Buffer"); int mem = sm.currentBuffer.width * sm.currentBuffer.height * 2; mem /= 128; EditorGUILayout.LabelField("Buffer Memory: " + mem.ToString() + "kb"); EditorGUILayout.EndHorizontal(); GUILayout.Box(sm.currentBuffer, GUILayout.Width(256), GUILayout.Height(256)); } }