public CutscenesWindowAppearance(Rect aStartPos, GUIContent aContent, GUIStyle aStyle,
                                         params GUILayoutOption[] aOptions)
            : base(aStartPos, aContent, aStyle, aOptions)
        {
            appearanceEditor        = ScriptableObject.CreateInstance <AppearanceEditor>();
            appearanceEditor.height = 160;

            video = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionVideoscenes"),
                FileType = FileType.CUTSCENE_VIDEO
            };

            slides = new AnimationField()
            {
                Label    = TC.get("Resources.DescriptionSlidesceneSlides"),
                FileType = FileType.CUTSCENE_SLIDES
            };

            music = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionSceneMusic"),
                FileType = FileType.CUTSCENE_MUSIC
            };
        }
示例#2
0
        public ScenesWindowAppearance(Rect aStartPos, GUIContent aContent, GUIStyle aStyle, SceneEditor sceneEditor, params GUILayoutOption[] aOptions)
            : base(aStartPos, aContent, aStyle, sceneEditor, aOptions)
        {
            appearanceEditor        = ScriptableObject.CreateInstance <AppearanceEditor>();
            appearanceEditor.height = 160;
            appearanceEditor.onAppearanceSelected = sceneEditor.RefreshSceneResources;
            PreviewTitle = "Scene.Preview".Traslate();

            // Fields
            background = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionSceneBackground"),
                FileType = FileType.SCENE_BACKGROUND,
                Empty    = SpecialAssetPaths.ASSET_EMPTY_BACKGROUND
            };

            foreground = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionSceneForeground"),
                FileType = FileType.SCENE_FOREGROUND
            };

            music = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionSceneMusic"),
                FileType = FileType.SCENE_MUSIC
            };
        }
示例#3
0
        public CharactersWindowAppearance(Rect aStartPos, GUIContent aContent, GUIStyle aStyle,
                                          params GUILayoutOption[] aOptions)
            : base(aStartPos, aContent, aStyle, aOptions)
        {
            IsPlayer = false;

            PreviewTitle = "Character.Preview".Traslate();

            appearanceEditor        = ScriptableObject.CreateInstance <AppearanceEditor>();
            appearanceEditor.height = 160;
            appearanceEditor.onAppearanceSelected = RefreshPathInformation;

            if (groups == null)
            {
                groups = Enum.GetValues(typeof(CharacterAnimationsGroup)).Cast <CharacterAnimationsGroup>().ToArray();
            }
            if (types == null)
            {
                types = Enum.GetValues(typeof(CharacterAnimationType)).Cast <CharacterAnimationType>().ToArray();
            }

            foreach (var animationType in types)
            {
                fields[animationType] = new AnimationField()
                {
                    Label    = TC.get(fieldNames[animationType]),
                    FileType = FileType.CHARACTER_ANIM
                };
            }
        }
示例#4
0
        public ItemsWindowAppearance(Rect aStartPos, GUIContent aContent, GUIStyle aStyle, params GUILayoutOption[] aOptions)
            : base(aStartPos, aContent, aStyle, aOptions)
        {
            appearanceEditor        = ScriptableObject.CreateInstance <AppearanceEditor>();
            appearanceEditor.height = 160;
            appearanceEditor.onAppearanceSelected = RefreshResources;

            PreviewTitle = "Item.Preview".Traslate();
            // File selectors

            image = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionItemImage"),
                FileType = FileType.ITEM_IMAGE,
                Empty    = SpecialAssetPaths.ASSET_EMPTY_IMAGE
            };

            icon = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionItemIcon"),
                FileType = FileType.ITEM_ICON,
                Empty    = SpecialAssetPaths.ASSET_EMPTY_ICON
            };

            image_over = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionItemImageOver"),
                FileType = FileType.ITEM_IMAGE_OVER
            };
        }
        public override void Initialize(InitializationContext context)
        {
            _extensionHost = (LiteExtensionHost)context.Host;
            _extensionHost.TemplateService.AddFileSearchDirectory(new FilePath(Application.StartupPath).Combine("Templates", "File"));
            _extensionHost.TemplateService.AddProjectSearchDirectory(new FilePath(Application.StartupPath).Combine("Templates", "Project"));
            _extensionHost.TemplateService.AddIconSearchDirectory(new FilePath(Application.StartupPath).Combine("Templates", "Icons"));

            var generalSettingsEditorControl = new GeneralSettingsEditor(_settings = LiteDevelopSettings.Instance)
            {
                Dock = DockStyle.Fill
            };
            var internationalSettingsEditorControl = new InternationalSettingsEditor(_settings)
            {
                Dock = DockStyle.Fill
            };
            var appearanceEditorControl = new AppearanceEditor()
            {
                Dock = DockStyle.Fill
            };

            var generalSettingsNode       = new SettingsNode("General", generalSettingsEditorControl);
            var internationalSettingsNode = new SettingsNode("International", internationalSettingsEditorControl);
            var appearanceNode            = new SettingsNode("Appearance", appearanceEditorControl);

            _settingsNode = new SettingsNode("LiteDevelop", generalSettingsEditorControl);
            _settingsNode.Nodes.AddRange(new TreeNode[]
            {
                generalSettingsNode,
                appearanceNode,
                internationalSettingsNode,
            });

            _componentMuiIdentifiers = new Dictionary <object, string>()
            {
                { generalSettingsNode, "LiteDevelopExtension.GeneralSettings" },
                { appearanceNode, "LiteDevelopExtension.Appearance" },
                { internationalSettingsNode, "LiteDevelopExtension.InternationalSettings" },
            };

            _extensionHost.UILanguageChanged += extensionHost_UILanguageChanged;
            extensionHost_UILanguageChanged(null, null);

            _appearanceMapPath    = Path.Combine(Constants.AppDataDirectory, "appearance.xml");
            _defaultAppearanceMap = AppearanceMap.LoadFromFile(Path.Combine(
                                                                   Path.GetDirectoryName(typeof(LiteDevelopExtension).Assembly.Location),
                                                                   "default_appearance.xml"));

            try { _appearanceMap = AppearanceMap.LoadFromFile(_appearanceMapPath); }
            catch { _appearanceMap = _defaultAppearanceMap; }
        }
    public static void ShowWindow()
    {
        AppearanceEditor window = GetWindow(typeof(AppearanceEditor)) as AppearanceEditor;

        int width         = 400;
        int height        = 850;
        int screen_widht  = 1920;
        int screen_height = 1080;
        int x             = (screen_widht - width) / 2;
        int y             = (screen_height - height) / 2;

        window.position = new Rect(x, y, width, height);

        window.InitData();
    }
        public SetItemsWindowApperance(Rect aStartPos, GUIContent aContent, GUIStyle aStyle, params GUILayoutOption[] aOptions)
            : base(aStartPos, aContent, aStyle, aOptions)
        {
            appearanceEditor        = ScriptableObject.CreateInstance <AppearanceEditor>();
            appearanceEditor.height = 160;

            PreviewTitle = "Atrezzo.Preview".Traslate();

            // File selectors

            image = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionItemImage"),
                FileType = FileType.SET_ITEM_IMAGE
            };
        }
        public BooksWindowAppearance(Rect aStartPos, GUIContent aContent, GUIStyle aStyle, params GUILayoutOption[] aOptions)
            : base(aStartPos, aContent, aStyle, aOptions)
        {
            appearanceEditor        = ScriptableObject.CreateInstance <AppearanceEditor>();
            appearanceEditor.height = 160;
            appearanceEditor.onAppearanceSelected = RefreshPathInformation;

            PreviewTitle = "BackgroundAssets.Preview".Traslate();

            background = new FileChooser()
            {
                Label    = TC.get("Resources.DescriptionBookBackground"),
                FileType = FileType.SCENE_BACKGROUND,
                Empty    = SpecialAssetPaths.ASSET_EMPTY_IMAGE
            };

            left = new FileChooser()
            {
                Label    = TC.get("Resources.ArrowLeftNormal"),
                FileType = FileType.BOOK_ARROW_LEFT_NORMAL,
                Empty    = SpecialAssetPaths.ASSET_DEFAULT_ARROW_NORMAL
            };

            left_over = new FileChooser()
            {
                Label    = TC.get("Resources.ArrowLeftOver"),
                FileType = FileType.BOOK_ARROW_LEFT_OVER,
                Empty    = SpecialAssetPaths.ASSET_DEFAULT_ARROW_OVER
            };

            right = new FileChooser()
            {
                Label    = TC.get("Resources.ArrowRightNormal"),
                FileType = FileType.BOOK_ARROW_RIGHT_NORMAL,
                Empty    = SpecialAssetPaths.ASSET_DEFAULT_ARROW_NORMAL_RIGHT
            };

            right_over = new FileChooser()
            {
                Label    = TC.get("Resources.ArrowRightOver"),
                FileType = FileType.BOOK_ARROW_RIGHT_OVER,
                Empty    = SpecialAssetPaths.ASSET_DEFAULT_ARROW_OVER_RIGHT
            };
        }
        /// <summary>
        /// Edits the specified object's value using the editor style indicated by the <see cref="M:System.Drawing.Design.UITypeEditor.GetEditStyle"/> method.
        /// </summary>
        /// <returns>
        /// The new value of the object. If the value of the object has not changed, this should return the same object it was passed.
        /// </returns>
        /// <param name="context">An <see cref="T:System.ComponentModel.ITypeDescriptorContext"/> that can be used to gain additional context information. </param><param name="provider">An <see cref="T:System.IServiceProvider"/> that this editor can use to obtain services. </param><param name="value">The object to edit. </param>
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            AppearanceEditor editor;

            if (context != null && context.Instance != null && provider != null)
            {
                object currentValue = value;
                if (value is string)
                {
                    var convet = new GenericConverter <MonthCalanderAppearance>();
                    currentValue = convet.ConvertTo(value, typeof(MonthCalanderAppearance));
                }
                editor = new AppearanceEditor((MonthCalanderAppearance)currentValue);
                editor.ShowDialog();
                value = editor.Value;
                if (context.Instance is MonthCalander)
                {
                    ((MonthCalander)context.Instance).Appearance.Assign(editor.Value);
                    ((MonthCalander)context.Instance).SetThemeDefaults();
                }
            }
            return(value);
        }
示例#10
0
        public void Write(AppearanceEditor ap, EquipmentEditor eq, SaveModes mode)
        {
            if (mode.HasFlag(SaveModes.EquipmentGear))
            {
                if (this.MainHand?.ModelSet != 0)
                {
                    this.MainHand?.Write(eq.MainHand);
                }

                this.OffHand?.Write(eq.OffHand);
                this.HeadGear?.Write(eq.Head);
                this.Body?.Write(eq.Body);
                this.Hands?.Write(eq.Hands);
                this.Legs?.Write(eq.Legs);
                this.Feet?.Write(eq.Feet);

                Write(this.MainHandScale, (v) => eq.MainHand.Scale = v);
                Write(this.MainHandColor, (v) => eq.MainHand.Color = v);
                Write(this.OffHandScale, (v) => eq.OffHand.Scale   = v);
                Write(this.OffHandColor, (v) => eq.OffHand.Color   = v);
            }

            if (mode.HasFlag(SaveModes.EquipmentAccessories))
            {
                this.Ears?.Write(eq.Ears);
                this.Neck?.Write(eq.Neck);
                this.Wrists?.Write(eq.Wrists);
                this.LeftRing?.Write(eq.LeftRing);
                this.RightRing?.Write(eq.RightRing);
            }

            if (mode.HasFlag(SaveModes.AppearanceHair))
            {
                Write(this.Hair, (v) => ap.Appearance.Hair = v);
                Write(this.EnableHighlights, (v) => ap.Appearance.EnableHighlights = v);
                Write(this.HairTone, (v) => ap.Appearance.HairTone     = v);
                Write(this.Highlights, (v) => ap.Appearance.Highlights = v);

                ap.HairTint      = this.HairTint;
                ap.HairGlow      = this.HairGlow;
                ap.HighlightTint = this.HighlightTint;
            }

            if (mode.HasFlag(SaveModes.AppearanceFace) || mode.HasFlag(SaveModes.AppearanceBody))
            {
                Write(this.Race, (v) => ap.Appearance.Race     = v);
                Write(this.Gender, (v) => ap.Appearance.Gender = v);
                Write(this.Tribe, (v) => ap.Appearance.Tribe   = v);
                Write(this.Age, (v) => ap.Appearance.Age       = v);
            }

            if (mode.HasFlag(SaveModes.AppearanceFace))
            {
                Write(this.Head, (v) => ap.Appearance.Head                     = v);
                Write(this.REyeColor, (v) => ap.Appearance.REyeColor           = v);
                Write(this.FacialFeatures, (v) => ap.Appearance.FacialFeatures = v);
                Write(this.LimbalEyes, (v) => ap.Appearance.LimbalEyes         = v);
                Write(this.Eyebrows, (v) => ap.Appearance.Eyebrows             = v);
                Write(this.LEyeColor, (v) => ap.Appearance.LEyeColor           = v);
                Write(this.Eyes, (v) => ap.Appearance.Eyes                     = v);
                Write(this.Nose, (v) => ap.Appearance.Nose                     = v);
                Write(this.Jaw, (v) => ap.Appearance.Jaw     = v);
                Write(this.Mouth, (v) => ap.Appearance.Mouth = v);
                Write(this.LipsToneFurPattern, (v) => ap.Appearance.LipsToneFurPattern = v);
                Write(this.FacePaint, (v) => ap.Appearance.FacePaint           = v);
                Write(this.FacePaintColor, (v) => ap.Appearance.FacePaintColor = v);

                ap.LeftEyeColor    = this.LeftEyeColor;
                ap.RightEyeColor   = this.RightEyeColor;
                ap.LimbalRingColor = this.LimbalRingColor;
                ap.LipTint         = this.LipTint;
            }

            if (mode.HasFlag(SaveModes.AppearanceBody))
            {
                Write(this.Height, (v) => ap.Appearance.Height     = v);
                Write(this.Skintone, (v) => ap.Appearance.Skintone = v);
                Write(this.EarMuscleTailSize, (v) => ap.Appearance.EarMuscleTailSize = v);
                Write(this.TailEarsType, (v) => ap.Appearance.TailEarsType           = v);
                Write(this.Bust, (v) => ap.Appearance.Bust = v);

                ap.SkinTint = this.SkinTint;
                ap.SkinGlow = this.SkinGlow;
            }
        }
示例#11
0
        public void Read(AppearanceEditor ed, EquipmentEditor eq, SaveModes mode)
        {
            if (mode.HasFlag(SaveModes.EquipmentGear))
            {
                this.MainHand      = new Weapon(eq.MainHand);
                this.MainHandScale = eq.MainHand.Scale;
                this.MainHandColor = eq.MainHand.Color;

                this.OffHand      = new Weapon(eq.OffHand);
                this.OffHandScale = eq.OffHand.Scale;
                this.OffHandColor = eq.OffHand.Color;

                this.HeadGear = new Item(eq.Head);
                this.Body     = new Item(eq.Body);
                this.Hands    = new Item(eq.Hands);
                this.Legs     = new Item(eq.Legs);
                this.Feet     = new Item(eq.Feet);
            }

            if (mode.HasFlag(SaveModes.EquipmentAccessories))
            {
                this.Ears      = new Item(eq.Ears);
                this.Neck      = new Item(eq.Neck);
                this.Wrists    = new Item(eq.Wrists);
                this.LeftRing  = new Item(eq.LeftRing);
                this.RightRing = new Item(eq.RightRing);
            }

            if (mode.HasFlag(SaveModes.AppearanceHair))
            {
                this.Hair             = ed.Appearance.Hair;
                this.EnableHighlights = ed.Appearance.EnableHighlights;
                this.HairTone         = ed.Appearance.HairTone;
                this.Highlights       = ed.Appearance.Highlights;
                this.HairTint         = ed.HairTint;
                this.HairGlow         = ed.HairGlow;
                this.HighlightTint    = ed.HighlightTint;
            }

            if (mode.HasFlag(SaveModes.AppearanceFace) || mode.HasFlag(SaveModes.AppearanceBody))
            {
                this.Race   = ed.Appearance.Race;
                this.Gender = ed.Appearance.Gender;
                this.Tribe  = ed.Appearance.Tribe;
                this.Age    = ed.Appearance.Age;
            }

            if (mode.HasFlag(SaveModes.AppearanceFace))
            {
                this.Head               = ed.Appearance.Head;
                this.REyeColor          = ed.Appearance.REyeColor;
                this.LimbalEyes         = ed.Appearance.LimbalEyes;
                this.FacialFeatures     = ed.Appearance.FacialFeatures;
                this.Eyebrows           = ed.Appearance.Eyebrows;
                this.LEyeColor          = ed.Appearance.LEyeColor;
                this.Eyes               = ed.Appearance.Eyes;
                this.Nose               = ed.Appearance.Nose;
                this.Jaw                = ed.Appearance.Jaw;
                this.Mouth              = ed.Appearance.Mouth;
                this.LipsToneFurPattern = ed.Appearance.LipsToneFurPattern;
                this.FacePaint          = ed.Appearance.FacePaint;
                this.FacePaintColor     = ed.Appearance.FacePaintColor;
                this.LeftEyeColor       = ed.LeftEyeColor;
                this.RightEyeColor      = ed.RightEyeColor;
                this.LimbalRingColor    = ed.LimbalRingColor;
                this.LipTint            = ed.LipTint;
            }

            if (mode.HasFlag(SaveModes.AppearanceBody))
            {
                this.Height            = ed.Appearance.Height;
                this.Skintone          = ed.Appearance.Skintone;
                this.EarMuscleTailSize = ed.Appearance.EarMuscleTailSize;
                this.TailEarsType      = ed.Appearance.TailEarsType;
                this.Bust     = ed.Appearance.Bust;
                this.SkinTint = ed.SkinTint;
                this.SkinGlow = ed.SkinGlow;
            }
        }
示例#12
0
    public void Awake()
    {
        appearances = ScriptableObject.CreateInstance <AppearanceEditor>();

        conditionsTex   = Resources.Load <Texture2D>("EAdventureData/img/icons/conditions-24x24");
        noConditionsTex = Resources.Load <Texture2D>("EAdventureData/img/icons/no-conditions-24x24");

        actionsList = new DataControlList()
        {
            footerHeight  = 25,
            elementHeight = 40,
            Columns       = new System.Collections.Generic.List <ColumnList.Column>()
            {
                new ColumnList.Column()
                {
                    Text        = TC.get("ActionsList.ActionName"),
                    SizeOptions = new GUILayoutOption[] { GUILayout.Width(150) }
                },
                new ColumnList.Column()
                {
                    Text        = TC.get("DescriptionList.Description"),
                    SizeOptions = new GUILayoutOption[] { GUILayout.ExpandWidth(true) }
                },
                new ColumnList.Column()
                {
                    Text        = TC.get("ActionsList.NeedsGoTo"),
                    SizeOptions = new GUILayoutOption[] { GUILayout.Width(120) }
                },
                new ColumnList.Column()
                {
                    Text        = TC.get("ActionsList.Conditions"),
                    SizeOptions = new GUILayoutOption[] { GUILayout.Width(70) }
                },
                new ColumnList.Column()
                {
                    Text        = TC.get("Element.Effects"),
                    SizeOptions = new GUILayoutOption[] { GUILayout.Width(70) }
                }
            },
            drawCell = (rect, index, column, isActive, isFocused) =>
            {
                var action = actionsList.list[index] as ActionDataControl;
                switch (column)
                {
                case 0:
                {
                    var name = action.getContent() is CustomAction ? ((CustomAction)action.getContent()).getName() : action.getTypeName();

                    var leftHalf = new Rect(rect);
                    leftHalf.width /= 2f;
                    var rightHalf = new Rect(leftHalf);
                    rightHalf.x += leftHalf.width;

                    if (action.hasIdTarget())
                    {
                        rightHalf.height = 25;
                        EditorGUI.LabelField(leftHalf, name);
                        if (!isActive)
                        {
                            EditorGUI.LabelField(rightHalf, !string.IsNullOrEmpty(action.getIdTarget()) ? action.getIdTarget() : "---");
                        }
                        else
                        {
                            EditorGUI.BeginChangeCheck();
                            string   selected = string.Empty;
                            string[] choices  = new string[0];
                            switch ((action.getContent() as Action).getType())
                            {
                            case Action.DRAG_TO:
                            case Action.CUSTOM_INTERACT:
                                choices = Controller.Instance.IdentifierSummary.combineIds(new System.Type[] { typeof(Item), typeof(NPC), typeof(ActiveArea) });
                                break;

                            case Action.GIVE_TO:
                                choices = Controller.Instance.IdentifierSummary.getIds <NPC>();
                                break;

                            case Action.USE_WITH:
                                choices = Controller.Instance.IdentifierSummary.combineIds(new System.Type[] { typeof(Item), typeof(ActiveArea) });
                                break;
                            }

                            var selectedIndex = EditorGUI.Popup(rightHalf, System.Array.FindIndex(choices, action.getIdTarget().Equals), choices);
                            if (EditorGUI.EndChangeCheck())
                            {
                                if (selectedIndex >= 0 && selectedIndex < choices.Length)
                                {
                                    selected = choices[selectedIndex];
                                    action.setIdTarget(selected);
                                }
                            }
                        }
                    }
                    else if (action.getType() == Controller.ACTION_TALK_TO)
                    {
                        EditorGUI.LabelField(leftHalf, name);
                        var triggerConversationEffect = action.getEffects().getEffects().Find(e => e is TriggerConversationEffect) as TriggerConversationEffect;
                        if (triggerConversationEffect != null)
                        {
                            var conversationId = triggerConversationEffect.getTargetId();
                            if (GUI.Button(rightHalf, "Open"))
                            {
                                var conversationsList = Controller.Instance.SelectedChapterDataControl.getConversationsList();
                                var conversation      = conversationsList.getConversations().Find(c => c.getId() == conversationId);
                                Controller.Instance.SelectElement(conversation);
                            }
                        }
                    }
                    else
                    {
                        EditorGUI.LabelField(rect, name);
                    }
                }
                break;

                case 1:
                    EditorGUI.BeginChangeCheck();
                    var documentation = EditorGUI.TextArea(rect, action.getDocumentation() ?? string.Empty);
                    if (EditorGUI.EndChangeCheck())
                    {
                        action.setDocumentation(documentation);
                    }
                    break;

                case 2:
                    if (Controller.Instance.PlayerMode == Controller.FILE_ADVENTURE_1STPERSON_PLAYER)
                    {
                        EditorGUI.LabelField(rect, TC.get("ActionsList.NotRelevant"));
                    }
                    else
                    {
                        var leftHalf = new Rect(rect);
                        leftHalf.width /= 2f;
                        var rightHalf = new Rect(leftHalf);
                        rightHalf.x += leftHalf.width;

                        EditorGUI.BeginChangeCheck();
                        var needsToGo = EditorGUI.Toggle(leftHalf, action.getNeedsGoTo());
                        if (EditorGUI.EndChangeCheck())
                        {
                            action.setNeedsGoTo(needsToGo);
                        }

                        EditorGUI.BeginChangeCheck();
                        var distance = EditorGUI.IntField(rightHalf, action.getKeepDistance());
                        if (EditorGUI.EndChangeCheck())
                        {
                            action.setKeepDistance(distance);
                        }
                        ;
                    }
                    break;

                case 3:
                    if (GUI.Button(rect, action.getConditions().getBlocksCount() > 0 ? conditionsTex : noConditionsTex))
                    {
                        ConditionEditorWindow window = ScriptableObject.CreateInstance <ConditionEditorWindow>();
                        window.Init(action.getConditions());
                    }
                    break;

                case 4:
                    if (GUI.Button(rect, "Effects"))
                    {
                        EffectEditorWindow window = ScriptableObject.CreateInstance <EffectEditorWindow>();
                        window.Init(action.getEffects());
                    }
                    break;
                }
            }
        };

        actionsList.onSelectCallback += (list) =>
        {
            var i       = list.index;
            var actions = ActionsListDataControl.getActions();
            customAction = i != -1 && actions[i] is CustomActionDataControl ? actions[i] as CustomActionDataControl : null;
            if (customAction != null)
            {
                appearances.Data = customAction;
            }
        };

        actionsList.onRemoveCallback += (list) =>
        {
            customAction = null;
        };

        appearances = CreateInstance <AppearanceEditor>();

        file = new FileChooser()
        {
            FileType = FileType.BUTTON,
        };

        animation = new AnimationField()
        {
            FileType = FileType.CHARACTER_ANIM,
        };
    }