public void OnEnable()
    {
        SIG_GlowMask_For_Renderer gmask = (SIG_GlowMask_For_Renderer)target;

        rend = gmask.gameObject.GetComponent <Renderer>();
    }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        SIG_GlowMask_For_Renderer gmask = (SIG_GlowMask_For_Renderer)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 SIG_GlowMask_For_Renderer.TextureInfo[rend.sharedMaterials.Length];
        }

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

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


        for (int i = 0; i < gmask.glowMasks.Length; i++)
        {
            if (rend.sharedMaterials[i] != null)
            {
                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();
            }
            else
            {
                EditorGUILayout.BeginVertical("box");
                if (rend is ParticleSystemRenderer)
                {
                    EditorGUILayout.HelpBox("There is null material inside renderer sharedMaterials array. It's normal for particle systems.", MessageType.None);
                }
                else
                {
                    EditorGUILayout.HelpBox("This material is null inside renderer sharedMaterials array.", MessageType.Warning);
                }
                EditorGUILayout.EndVertical();
            }
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
        }
    }