public void OnEnable()
        {
            if (target == null)
            {
                return;
            }

            isoSwitches = target as IsoSwitches;

            switchList = new ReorderableList(isoSwitches.switches, typeof(ISwitch), true, false, true, true);

            switchList.elementHeight = 35;

            switchList.drawElementCallback += (rect, index, isActive, isFocused) =>
            {
                var isw = switchList.list[index] as ISwitch;

                EditorGUI.BeginChangeCheck();
                isw.id    = EditorGUI.TextField(new Rect(rect.x, rect.y, rect.width, rect.height / 2f - 2f), "ID ", isw.id);
                isw.State = ParamEditor.editorFor(new Rect(rect.x, rect.y + rect.height / 2f, rect.width, rect.height / 2f - 2f), isw.State);
                if (EditorGUI.EndChangeCheck())
                {
                    EditorUtility.SetDirty(isw);
                }
            };

            switchList.onRemoveCallback += (list) =>
            {
                isoSwitches.removeSwitch(isoSwitches.switches[list.index]);
            };

            switchList.onAddCallback += (list) =>
            {
                var isw = isoSwitches.addSwitch();
                isw.id = search;
            };
        }