private void GenerateFromTypes(Type baseType)
        {
            bufferData.Clear();
            Type        scriptBaseType = _dataAttribute.ScriptBaseType;
            List <Type> filteredTypes  = LSEditorUtility.GetFilteredTypes(scriptBaseType);

            DataItem[]     data         = Data as DataItem[];
            HashSet <Type> lackingTypes = new HashSet <Type> (filteredTypes);

            for (int i = 0; i < data.Length; i++)
            {
                DataItem       item       = data[i];
                ScriptDataItem scriptItem = item as ScriptDataItem;
                if (lackingTypes.Remove(scriptItem.Script))
                {
                    bufferData.Add(item);
                }
            }
            foreach (Type type in lackingTypes)
            {
                DataItem item = (DataItem)Activator.CreateInstance((TargetType));
                item.Inject(type);
                item.Name = (type.Name);
                bufferData.Add(item);
            }
            DataItem[] tempData = (DataItem[])Array.CreateInstance(TargetType, bufferData.Count);
            bufferData.CopyTo(tempData);
            Data = tempData;
        }
        private void GenerateFromTypes(Type baseType)
        {
            bufferData.Clear();
            Type        scriptBaseType = _dataAttribute.ScriptBaseType;
            List <Type> filteredTypes  = LSEditorUtility.GetFilteredTypes(scriptBaseType);

            DataItem[]     data              = Data as DataItem[];
            HashSet <Type> lackingTypes      = new HashSet <Type> ();
            Type           abilityType       = typeof(Ability);
            Type           activeAbilityType = typeof(ActiveAbility);

            for (int i = 0; i < filteredTypes.Count; i++)
            {
                if (filteredTypes[i].BaseType != abilityType && filteredTypes[i].BaseType != activeAbilityType)
                {
                    if (filteredTypes[i].GetCustomAttributes(typeof(CustomActiveAbilityAttribute), false).Length == 0)
                    {
                        continue;
                    }
                }
                lackingTypes.Add(filteredTypes[i]);
            }
            for (int i = 0; i < data.Length; i++)
            {
                DataItem       item       = data[i];
                ScriptDataItem scriptItem = item as ScriptDataItem;
                if (lackingTypes.Remove(scriptItem.Script))
                {
                    bufferData.Add(item);
                }
            }
            foreach (Type type in lackingTypes)
            {
                DataItem item = (DataItem)Activator.CreateInstance((TargetType));
                item.Inject(type);
                bufferData.Add(item);
            }
            DataItem[] tempData = (DataItem[])Array.CreateInstance(TargetType, bufferData.Count);
            bufferData.CopyTo(tempData);
            Data = tempData;
        }