public static void SetStatesAndCategoriesRecursively(this GraphicalUiElement graphicalElement, ElementSave elementSave) { if (!string.IsNullOrEmpty(elementSave.BaseType)) { var baseElementSave = Gum.Managers.ObjectFinder.Self.GetElementSave(elementSave.BaseType); if (baseElementSave != null) { graphicalElement.SetStatesAndCategoriesRecursively(baseElementSave); } } // We need to set categories and states before calling SetGraphicalUiElement so that the states can be used foreach (var category in elementSave.Categories) { graphicalElement.AddCategory(category); } graphicalElement.AddStates(elementSave.States); }