示例#1
0
    // static MapPreview mapPrev = null;

    public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
    {
        Event            guiEvent   = Event.current;
        MaterialGradient grad       = (MaterialGradient)fieldInfo.GetValue(prop.serializedObject.targetObject);
        float            labelWidth = GUI.skin.label.CalcSize(label).x + 5;
        Rect             textRect   = new Rect(pos.x + labelWidth, pos.y, pos.width - labelWidth, pos.height);

        // if (!mapPrev) mapPrev = GameObject.Find("MapPreview").GetComponent<MapPreview>();

        if (guiEvent.type == EventType.Repaint)
        {
            GUIStyle gradStyle = new GUIStyle();

            GUI.Label(pos, label);
            // There is an issue with printing the texture
            gradStyle.normal.background = grad.GetTexture((int)pos.width);
            GUI.Label(textRect, GUIContent.none, gradStyle);

            // if (mapPrev && mapPrev.autoUpdate) mapPrev.DrawMapInEditorGrad();
        }
        else if (guiEvent.type == EventType.MouseDown && guiEvent.button == 0 && textRect.Contains(guiEvent.mousePosition))
        {
            // Open the window when clicked on
            MaterialGradientEditor window = EditorWindow.GetWindow <MaterialGradientEditor>();

            window.Gradient = grad;
        }
    }