Пример #1
0
    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));
            }
        }
    }
Пример #2
0
    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));
        }
    }