public ICEEnergyBarObject(ICEEnergyBarObject _bar)
        {
            if (_bar == null)
            {
                return;
            }

            ReferenceObject = _bar.ReferenceObject;
            Value           = _bar.Value;
            Offset          = _bar.Offset;
            VerticalOffset  = _bar.VerticalOffset;
        }
        public override void OnInspectorGUI()
        {
            Info.HelpButtonIndex = 0;
            ICECreatureEBTAdapter _adapter = (ICECreatureEBTAdapter)target;

            EditorGUILayout.Separator();
            ICEEditorLayout.BeginHorizontal();
            _adapter.Display = (Canvas)EditorGUILayout.ObjectField("Display", _adapter.Display, typeof(Canvas), true);
            ICEEditorLayout.EndHorizontal();

            EditorGUILayout.Separator();
            ICEEditorLayout.Label("Offsets", false);
            EditorGUI.indentLevel++;
            _adapter.InitialOffset = ICEEditorLayout.DefaultSlider("Initial Offset", "", _adapter.InitialOffset, 0.01f, -10, 10, 0, "");
            _adapter.LineOffset    = ICEEditorLayout.DefaultSlider("Line Offset", "", _adapter.LineOffset, 0.01f, 0, 10, 0, "");
            EditorGUI.indentLevel--;

            EditorGUILayout.Separator();
            ICEEditorLayout.Label("Status Bars", false);
            EditorGUI.indentLevel++;
            for (int _i = 0; _i < _adapter.Bars.Count; _i++)
            {
                ICEEnergyBarObject _bar = _adapter.Bars[_i];

                ICEEditorLayout.BeginHorizontal();
                _bar.Value = (ICEEnergyBarDataType)ICEEditorLayout.EnumPopup("Status Value #" + (_i + 1), "", _bar.Value);

                if (ICEEditorLayout.ButtonUp())
                {
                    ICEEnergyBarObject _obj = _adapter.Bars[_i];
                    _adapter.Bars.RemoveAt(_i);

                    if (_i - 1 < 0)
                    {
                        _adapter.Bars.Add(_obj);
                    }
                    else
                    {
                        _adapter.Bars.Insert(_i - 1, _obj);
                    }

                    return;
                }


                if (ICEEditorLayout.ButtonDown())
                {
                    ICEEnergyBarObject _obj = _adapter.Bars[_i];
                    _adapter.Bars.RemoveAt(_i);

                    if (_i + 1 > _adapter.Bars.Count)
                    {
                        _adapter.Bars.Insert(0, _obj);
                    }
                    else
                    {
                        _adapter.Bars.Insert(_i + 1, _obj);
                    }

                    return;
                }

                if (GUILayout.Button("COPY", ICEEditorStyle.CMDButtonDouble))
                {
                    _adapter.Bars.Add(new ICEEnergyBarObject(_bar));
                }

                if (GUILayout.Button("X", ICEEditorStyle.CMDButton))
                {
                    _adapter.Bars.RemoveAt(_i);
                    --_i;
                }
                ICEEditorLayout.EndHorizontal();

                EditorGUI.indentLevel++;
                ICEEditorLayout.BeginHorizontal();
                _bar.ReferenceObject = (EnergyBar)EditorGUILayout.ObjectField("Reference", _bar.ReferenceObject, typeof(EnergyBar), true);
                ICEEditorLayout.EndHorizontal();

                ICEEditorLayout.BeginHorizontal();
                _bar.Offset = ICEEditorLayout.OffsetGroup("Offset", _bar.Offset);
                ICEEditorLayout.EndHorizontal();

                _bar.VerticalOffset = _adapter.InitialOffset + (_adapter.LineOffset * (_adapter.Bars.Count - _i));


                EditorGUI.indentLevel--;
            }

            EditorGUI.indentLevel--;

            ICEEditorLayout.BeginHorizontal();
            ICEEditorLayout.Label("Add Status Value", false);
            GUILayout.FlexibleSpace();
            if (ICEEditorLayout.Button("ADD", "", ICEEditorStyle.CMDButtonDouble))
            {
                _adapter.Bars.Add(new ICEEnergyBarObject());
            }
            ICEEditorLayout.EndHorizontal();

            EditorGUILayout.Separator();
        }