protected void FieldSetNativeSize()
 {
     if (MadGUI.Button("Set Native Size"))
     {
         var b = (EnergyBarUGUIBase)target;
         MadUndo.RecordObject2(b.gameObject, "Set Native Size");
         b.SetNativeSize();
     }
 }
    void FieldSequenceTextures() {
        if (UseAtlas()) {
            int size = script.sequenceAtlasTexturesGUID.Length;
            int nSize = FieldTextureCount();

            EditorGUILayout.Space();

            FieldBatchTextureSet();

            EditorGUILayout.Space();

            MadGUI.Indent(() => { 
            
                if (size != nSize) {
                    MadUndo.RecordObject2(script, "Texture Count Resize");
                    System.Array.Resize(ref script.sequenceAtlasTexturesGUID, nSize);
                    EditorUtility.SetDirty(script);
                }

                if (sequenceAtlasTexturesGUID.arraySize == 0) {
                    ZeroTexturesWarning();
                }

                for (int i = 0; i < sequenceAtlasTexturesGUID.arraySize; ++i) {
                    var element = sequenceAtlasTexturesGUID.GetArrayElementAtIndex(i);
                    FieldAtlasSprite(element, "Texture " + i);
                }
            });
        } else {
            int size = script.sequenceTextures.Length;
            int nSize = FieldTextureCount();

            EditorGUILayout.Space();

            MadGUI.Indent(() => {

                if (size != nSize) {
                    MadUndo.RecordObject2(script, "Texture Count Resize");
                    System.Array.Resize(ref script.sequenceTextures, nSize);
                    EditorUtility.SetDirty(script);
                }

                if (sequenceTextures.arraySize == 0) {
                    ZeroTexturesWarning();
                }

                for (int i = 0; i < sequenceTextures.arraySize; ++i) {
                    var element = sequenceTextures.GetArrayElementAtIndex(i);
                    MadGUI.PropertyField(element, "Texture " + i);
                }

            });
        }
    }
    private void FieldBatchTextureSet() {
        MadGUI.Info("If your atlas textures have regular names (like part_01, part_02) then you can add them all at once. "
            + "Just enter here something like 'part_??' where ?? are placeholders for digits, and then press the button below.");

        nameTemplate = EditorGUILayout.TextField("Name Template", nameTemplate);

        if (MadGUI.Button("Batch Texture Set", Color.yellow)) {
            if (EditorUtility.DisplayDialog("Batch Texture Set", "Are you sure that you want to overwrite your texture settings?", "Yes", "No")) {
                MadUndo.RecordObject2(script, "Batch Texture Set");

                var regex = "^" + nameTemplate.Replace("?", "[0-9]") + "$";
                var filtered = from i in script.atlas.items where Regex.Match(i.name, regex).Success orderby i.name select i;
                var filteredArr = filtered.ToArray();

                for (int i = 0; i < script.sequenceAtlasTexturesGUID.Length && i < filteredArr.Length; ++i) {
                    script.sequenceAtlasTexturesGUID[i] = filteredArr[i].textureGUID;
                }
            }
        }
    }