public override void OnInspectorGUI()
    {
        serializedObject.Update();

        GlowMaskForRenderer gmask = (GlowMaskForRenderer)target;
        gmask.rend = rend;

        if (rend == null)
        {
            EditorGUILayout.HelpBox("Glow mask component should be placed on object with Renderer component present.",MessageType.Error);
            return;
        }

        if (gmask.glowMasks == null)
        {
            gmask.glowMasks = new GlowMaskForRenderer.TextureInfo[rend.sharedMaterials.Length];
        }

        if (gmask.glowMasks.Length != rend.sharedMaterials.Length)
        {
            Array.Resize(ref gmask.glowMasks, rend.sharedMaterials.Length);
        }

        //foreach(GlowMask.TextureInfo tinfo in gmask.glowMasks)
        for (int i = 0; i < gmask.glowMasks.Length; i++)
        {
            if (gmask.glowMasks[i] == null)
                gmask.glowMasks[i] = new GlowMaskForRenderer.TextureInfo();
            gmask.glowMasks[i].glowMaskComponent = gmask;
        }

        for (int i = 0; i < gmask.glowMasks.Length; i++)
        {
            EditorGUILayout.BeginVertical("box");
            EditorGUILayout.HelpBox("Material: " + rend.sharedMaterials[i].name,MessageType.None);

            gmask.glowMasks[i].glowTint = EditorGUILayout.ColorField("Glow tint", gmask.glowMasks[i].glowTint);

            gmask.glowMasks[i].texture = (Texture)EditorGUILayout.ObjectField("Glow mask texture", gmask.glowMasks[i].texture, typeof(Texture), false);

            if (!(gmask.glowMasks[i].useMainTextureTilingOffset = EditorGUILayout.ToggleLeft("Use main texture tiling & offset settings",gmask.glowMasks[i].useMainTextureTilingOffset)))
            {
                gmask.glowMasks[i].tiling = EditorGUILayout.Vector2Field("Tiling",gmask.glowMasks[i].tiling);
                gmask.glowMasks[i].offset = EditorGUILayout.Vector2Field("Offset",gmask.glowMasks[i].offset);
            }
            if (Application.isPlaying)
            {
                EditorGUILayout.ToggleLeft("Affect all instances of material(Read-only in Play mode)",gmask.glowMasks[i].affectAllInstancesOfMaterial);
            }
            else
            {
                gmask.glowMasks[i].affectAllInstancesOfMaterial = EditorGUILayout.ToggleLeft("Affect all instances of material",gmask.glowMasks[i].affectAllInstancesOfMaterial);
            }
            EditorGUILayout.EndVertical();
        }

        if (GUI.changed)
            EditorUtility.SetDirty (target);
    }
 public void OnEnable()
 {
     GlowMaskForRenderer gmask = (GlowMaskForRenderer)target;
     rend = gmask.gameObject.GetComponent<Renderer>();
 }