diff --git a/src/Internal/Editor/MetaObjectsDropDown.cs b/src/Internal/Editor/MetaObjectsDropDown.cs index 2bbba66..51a99e1 100644 --- a/src/Internal/Editor/MetaObjectsDropDown.cs +++ b/src/Internal/Editor/MetaObjectsDropDown.cs @@ -86,9 +86,9 @@ namespace DCFApixels.DragonECS.Unity.Editors } } } - internal class ComponentDropDown : MetaObjectsDropDown + internal class ComponentTemplatesDropDown : MetaObjectsDropDown { - public ComponentDropDown() + public ComponentTemplatesDropDown() { IEnumerable<(IComponentTemplate template, ITypeMeta meta)> itemMetaPairs = ComponentTemplateTypeCache.Dummies.ToArray().Select(dummy => { @@ -168,9 +168,9 @@ namespace DCFApixels.DragonECS.Unity.Editors } } } - internal class RuntimeComponentDropDown : MetaObjectsDropDown + internal class RuntimeComponentsDropDown : MetaObjectsDropDown { - public RuntimeComponentDropDown(IEnumerable pools) + public RuntimeComponentsDropDown(IEnumerable pools) { IEnumerable<(IEcsPool pool, ITypeMeta meta)> itemMetaPairs = pools.Select(pool => { @@ -268,6 +268,7 @@ namespace DCFApixels.DragonECS.Unity.Editors protected override void ItemSelected(AdvancedDropdownItem item) { + //EcsGUI.Changed = true; base.ItemSelected(item); var tType = (Item)item; ItemSelected(tType); diff --git a/src/Internal/Editor/UnityEditorUtility.cs b/src/Internal/Editor/UnityEditorUtility.cs index 3abe0ff..b1738ef 100644 --- a/src/Internal/Editor/UnityEditorUtility.cs +++ b/src/Internal/Editor/UnityEditorUtility.cs @@ -507,9 +507,9 @@ namespace DCFApixels.DragonECS.Unity.Editors { public struct WorldData { - public RuntimeComponentDropDown addComponentGenericMenu; + public RuntimeComponentsDropDown addComponentGenericMenu; public int poolsCount; - public WorldData(RuntimeComponentDropDown addComponentGenericMenu, int poolsCount) + public WorldData(RuntimeComponentsDropDown addComponentGenericMenu, int poolsCount) { this.addComponentGenericMenu = addComponentGenericMenu; this.poolsCount = poolsCount; @@ -518,7 +518,7 @@ namespace DCFApixels.DragonECS.Unity.Editors //world id private static Dictionary _worldDatas = new Dictionary(); - public static RuntimeComponentDropDown GetAddComponentGenericMenu(EcsWorld world) + public static RuntimeComponentsDropDown GetAddComponentGenericMenu(EcsWorld world) { if (_worldDatas.TryGetValue(world, out WorldData data)) { @@ -541,7 +541,7 @@ namespace DCFApixels.DragonECS.Unity.Editors private static WorldData CreateWorldData(EcsWorld world) { IEnumerable pools = world.AllPools.ToArray().Where(o => o.IsNullOrDummy() == false); - RuntimeComponentDropDown genericMenu = new RuntimeComponentDropDown(pools); + RuntimeComponentsDropDown genericMenu = new RuntimeComponentsDropDown(pools); return new WorldData(genericMenu, world.PoolsCount); } diff --git a/src/Templates/EntityTemplate/Editor/ComponentTemplatePropertyDrawer.cs b/src/Templates/EntityTemplate/Editor/ComponentTemplatePropertyDrawer.cs index f19db99..b704f5a 100644 --- a/src/Templates/EntityTemplate/Editor/ComponentTemplatePropertyDrawer.cs +++ b/src/Templates/EntityTemplate/Editor/ComponentTemplatePropertyDrawer.cs @@ -30,7 +30,7 @@ namespace DCFApixels.DragonECS.Unity.Editors internal class ComponentTemplateReferenceDrawer : ExtendedPropertyDrawer { private const float DamagedComponentHeight = 18f * 2f; - private static ComponentDropDown _componentDropDown; + private static ComponentTemplatesDropDown _componentDropDown; #region Properties private float SingleLineWithPadding => OneLineHeight + Padding * 4f; @@ -41,14 +41,15 @@ namespace DCFApixels.DragonECS.Unity.Editors #region Init protected override void OnStaticInit() { - _componentDropDown = new ComponentDropDown(); + _componentDropDown = new ComponentTemplatesDropDown(); _componentDropDown.OnSelected += SelectComponent; } [ThreadStatic] private static SerializedProperty currentProperty; - private static void SelectComponent(ComponentDropDown.Item item) + private static void SelectComponent(ComponentTemplatesDropDown.Item item) { + EcsGUI.Changed = true; currentProperty.managedReferenceValue = item.Obj.Clone(); currentProperty.isExpanded = false; currentProperty.serializedObject.ApplyModifiedProperties(); diff --git a/src/Templates/EntityTemplate/Editor/EntityTemplateEditor.cs b/src/Templates/EntityTemplate/Editor/EntityTemplateEditor.cs index 0f865ba..5585279 100644 --- a/src/Templates/EntityTemplate/Editor/EntityTemplateEditor.cs +++ b/src/Templates/EntityTemplate/Editor/EntityTemplateEditor.cs @@ -9,10 +9,11 @@ namespace DCFApixels.DragonECS.Unity.Editors { internal abstract class EntityTemplateEditorBase : ExtendedEditor { - private ComponentDropDown _componentDropDown; + private ComponentTemplatesDropDown _componentDropDown; private SerializedProperty _componentsProp; private ReorderableList _reorderableComponentsList; + private int _reorderableComponentsListLastCount; protected abstract bool IsSO { get; } @@ -22,7 +23,7 @@ namespace DCFApixels.DragonECS.Unity.Editors protected override bool IsInit { get { return _componentDropDown != null; } } protected override void OnInit() { - _componentDropDown = new ComponentDropDown(); + _componentDropDown = new ComponentTemplatesDropDown(); _componentsProp = serializedObject.FindProperty(Target.ComponentsPropertyName); @@ -38,6 +39,8 @@ namespace DCFApixels.DragonECS.Unity.Editors _reorderableComponentsList.footerHeight = 0f; _reorderableComponentsList.headerHeight = 0f; _reorderableComponentsList.elementHeight = 0f; + + _reorderableComponentsListLastCount = _reorderableComponentsList.count; } #region ReorderableComponentsList @@ -166,6 +169,15 @@ namespace DCFApixels.DragonECS.Unity.Editors GUILayout.Label("Multi-object editing not supported.", EditorStyles.helpBox); return; } + else + { + //костыль который насильно заставляет _reorderableComponentsList пересчитать высоту + if (_reorderableComponentsListLastCount != _reorderableComponentsList.count) + { + EcsGUI.Changed = true; + _reorderableComponentsListLastCount = _reorderableComponentsList.count; + } + } if (IsMultipleTargets == false && SerializationUtility.HasManagedReferencesWithMissingTypes(target)) {