Merge branch 'dev'
@ -8,7 +8,7 @@
|
|||||||
"displayName": "DragonECS-Unity",
|
"displayName": "DragonECS-Unity",
|
||||||
"description": "Integration with Unity for DragonECS",
|
"description": "Integration with Unity for DragonECS",
|
||||||
"unity": "2021.2",
|
"unity": "2021.2",
|
||||||
"version": "0.3.16",
|
"version": "0.3.19",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/DCFApixels/DragonECS-Unity.git"
|
"url": "https://github.com/DCFApixels/DragonECS-Unity.git"
|
||||||
|
@ -1,23 +1,27 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace DCFApixels.DragonECS
|
namespace DCFApixels.DragonECS
|
||||||
{
|
{
|
||||||
internal static class UnityComponentConsts
|
internal static class UnityComponentConsts
|
||||||
{
|
{
|
||||||
private const string UNITY_COMPONENT_NAME = "UnityComponent";
|
internal const string UNITY_COMPONENT_NAME = "UnityComponent";
|
||||||
public static readonly MetaGroup BaseGroup = new MetaGroup(UNITY_COMPONENT_NAME);
|
public static readonly MetaGroup BaseGroup = new MetaGroup(UNITY_COMPONENT_NAME);
|
||||||
public static readonly MetaGroup ColliderGroup = new MetaGroup($"{UNITY_COMPONENT_NAME}/Collider/");
|
public static readonly MetaGroup ColliderGroup = new MetaGroup($"{UNITY_COMPONENT_NAME}/Collider/");
|
||||||
public static readonly MetaGroup JointGroup = new MetaGroup($"{UNITY_COMPONENT_NAME}/Joint/");
|
public static readonly MetaGroup JointGroup = new MetaGroup($"{UNITY_COMPONENT_NAME}/Joint/");
|
||||||
}
|
}
|
||||||
[Serializable]
|
[Serializable]
|
||||||
[MetaColor(255 / 3, 255, 0)]
|
[MetaColor(255 / 3, 255, 0)]
|
||||||
|
[MetaDescription(EcsConsts.AUTHOR, "Component-reference to Unity object for EcsPool")]
|
||||||
|
[MetaGroup(UnityComponentConsts.UNITY_COMPONENT_NAME)]
|
||||||
public struct UnityComponent<T> : IEcsComponent, IEnumerable<T>//IntelliSense hack
|
public struct UnityComponent<T> : IEcsComponent, IEnumerable<T>//IntelliSense hack
|
||||||
where T : Component
|
where T : Component
|
||||||
{
|
{
|
||||||
public T obj;
|
public T obj;
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public UnityComponent(T obj)
|
public UnityComponent(T obj)
|
||||||
{
|
{
|
||||||
this.obj = obj;
|
this.obj = obj;
|
||||||
@ -30,6 +34,10 @@ namespace DCFApixels.DragonECS
|
|||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static implicit operator T(UnityComponent<T> a) { return a.obj; }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static implicit operator UnityComponent<T>(T a) { return new UnityComponent<T>(a); }
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Unity Component Templates
|
#region Unity Component Templates
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using UnityEditor;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
#region UNITY_EDITOR
|
||||||
|
using UnityEditor;
|
||||||
|
#endregion
|
||||||
|
|
||||||
namespace DCFApixels.DragonECS
|
namespace DCFApixels.DragonECS
|
||||||
{
|
{
|
||||||
@ -172,6 +174,7 @@ namespace DCFApixels.DragonECS
|
|||||||
internal void Autoset_Editor()
|
internal void Autoset_Editor()
|
||||||
{
|
{
|
||||||
Autoset(this);
|
Autoset(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
[ContextMenu("Autoset Cascade")]
|
[ContextMenu("Autoset Cascade")]
|
||||||
internal void AutosetCascade_Editor()
|
internal void AutosetCascade_Editor()
|
||||||
|
@ -29,7 +29,6 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
nameof(EcsConsts.DISABLE_DEBUG),
|
nameof(EcsConsts.DISABLE_DEBUG),
|
||||||
nameof(EcsConsts.ENABLE_DUMMY_SPAN),
|
nameof(EcsConsts.ENABLE_DUMMY_SPAN),
|
||||||
nameof(EcsConsts.DISABLE_CATH_EXCEPTIONS),
|
nameof(EcsConsts.DISABLE_CATH_EXCEPTIONS),
|
||||||
"DEBUG",
|
|
||||||
};
|
};
|
||||||
for (int i = 0; i < _defineSymbols.Count; i++)
|
for (int i = 0; i < _defineSymbols.Count; i++)
|
||||||
{
|
{
|
||||||
@ -61,24 +60,27 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
GUILayout.BeginHorizontal();
|
||||||
settings.IsShowHidden = EditorGUILayout.Toggle(SettingsPrefs.instance.IsShowHidden, GUILayout.Width(checkBoxWidth));
|
settings.IsShowHidden = EditorGUILayout.Toggle(SettingsPrefs.instance.IsShowHidden, GUILayout.Width(checkBoxWidth));
|
||||||
GUILayout.Label(nameof(SettingsPrefs.IsShowHidden), GUILayout.ExpandWidth(false));
|
GUILayout.Label(UnityEditorUtility.TransformFieldName(nameof(SettingsPrefs.IsShowHidden)), GUILayout.ExpandWidth(false));
|
||||||
GUILayout.EndHorizontal();
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
GUILayout.BeginHorizontal();
|
||||||
settings.IsShowInterfaces = EditorGUILayout.Toggle(SettingsPrefs.instance.IsShowInterfaces, GUILayout.Width(checkBoxWidth));
|
settings.IsShowInterfaces = EditorGUILayout.Toggle(SettingsPrefs.instance.IsShowInterfaces, GUILayout.Width(checkBoxWidth));
|
||||||
GUILayout.Label(nameof(SettingsPrefs.IsShowInterfaces), GUILayout.ExpandWidth(false));
|
GUILayout.Label(UnityEditorUtility.TransformFieldName(nameof(SettingsPrefs.IsShowInterfaces)), GUILayout.ExpandWidth(false));
|
||||||
GUILayout.EndHorizontal();
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
GUILayout.BeginHorizontal();
|
||||||
settings.IsShowRuntimeComponents = EditorGUILayout.Toggle(SettingsPrefs.instance.IsShowRuntimeComponents, GUILayout.Width(checkBoxWidth));
|
settings.IsShowRuntimeComponents = EditorGUILayout.Toggle(SettingsPrefs.instance.IsShowRuntimeComponents, GUILayout.Width(checkBoxWidth));
|
||||||
GUILayout.Label(nameof(SettingsPrefs.IsShowRuntimeComponents), GUILayout.ExpandWidth(false));
|
GUILayout.Label(UnityEditorUtility.TransformFieldName(nameof(SettingsPrefs.IsShowRuntimeComponents)), GUILayout.ExpandWidth(false));
|
||||||
GUILayout.EndHorizontal();
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
settings.AutoColorMode = (ComponentColorMode)EditorGUILayout.EnumPopup(UnityEditorUtility.TransformFieldName(nameof(SettingsPrefs.ComponentColorMode)), SettingsPrefs.instance.ComponentColorMode);
|
||||||
|
|
||||||
if (EditorGUI.EndChangeCheck())
|
if (EditorGUI.EndChangeCheck())
|
||||||
{
|
{
|
||||||
SettingsPrefs.instance.IsShowHidden = settings.IsShowHidden;
|
SettingsPrefs.instance.IsShowHidden = settings.IsShowHidden;
|
||||||
SettingsPrefs.instance.IsShowInterfaces = settings.IsShowInterfaces;
|
SettingsPrefs.instance.IsShowInterfaces = settings.IsShowInterfaces;
|
||||||
SettingsPrefs.instance.IsShowRuntimeComponents = settings.IsShowRuntimeComponents;
|
SettingsPrefs.instance.IsShowRuntimeComponents = settings.IsShowRuntimeComponents;
|
||||||
|
SettingsPrefs.instance.ComponentColorMode = settings.AutoColorMode;
|
||||||
}
|
}
|
||||||
GUILayout.EndVertical();
|
GUILayout.EndVertical();
|
||||||
|
|
||||||
@ -144,6 +146,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
public bool IsShowHidden;
|
public bool IsShowHidden;
|
||||||
public bool IsShowInterfaces;
|
public bool IsShowInterfaces;
|
||||||
public bool IsShowRuntimeComponents;
|
public bool IsShowRuntimeComponents;
|
||||||
|
public ComponentColorMode AutoColorMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,14 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace DCFApixels.DragonECS.Unity.Editors
|
namespace DCFApixels.DragonECS.Unity.Editors
|
||||||
{
|
{
|
||||||
[FilePath(EcsConsts.FRAMEWORK_NAME + "/" + nameof(SettingsPrefs) + ".prefs", FilePathAttribute.Location.ProjectFolder)]
|
internal enum ComponentColorMode
|
||||||
public class SettingsPrefs : ScriptableSingleton<SettingsPrefs>
|
{
|
||||||
|
Generic = 0,
|
||||||
|
Auto = 1,
|
||||||
|
Rainbow = 2,
|
||||||
|
}
|
||||||
|
[FilePath(EcsConsts.AUTHOR + "/" + EcsConsts.FRAMEWORK_NAME + "/" + nameof(SettingsPrefs) + ".prefs", FilePathAttribute.Location.ProjectFolder)]
|
||||||
|
internal class SettingsPrefs : ScriptableSingleton<SettingsPrefs>
|
||||||
{
|
{
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private bool _isShowInterfaces = false;
|
private bool _isShowInterfaces = false;
|
||||||
@ -52,6 +58,19 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
Save(false);
|
Save(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
private ComponentColorMode _componentColorMode = ComponentColorMode.Auto;
|
||||||
|
public ComponentColorMode ComponentColorMode
|
||||||
|
{
|
||||||
|
get => _componentColorMode;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_componentColorMode = value;
|
||||||
|
Save(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
@ -15,7 +15,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
bool isAlive = Target.Entity.TryUnpackForUnityEditor(out int id, out short gen, out short worldID, out EcsWorld world);
|
bool isAlive = Target.Entity.TryUnpackForUnityEditor(out int id, out short gen, out short worldID, out EcsWorld world);
|
||||||
using (new EditorGUI.DisabledScope(!isAlive))
|
using (new EditorGUI.DisabledScope(!isAlive))
|
||||||
{
|
{
|
||||||
if (GUILayout.Button("Delete Entity"))
|
if (GUILayout.Button("Delete Entity", GUILayout.Height(36f)))
|
||||||
{
|
{
|
||||||
world.DelEntity(id);
|
world.DelEntity(id);
|
||||||
}
|
}
|
||||||
|
65
src/EntityTemplate/ComponentTemplateProperty.cs
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
using System;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DCFApixels.DragonECS
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public struct ComponentTemplateProperty : IEquatable<ComponentTemplateProperty>
|
||||||
|
{
|
||||||
|
[SerializeReference]
|
||||||
|
private IComponentTemplate _template;
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public ComponentTemplateProperty(IComponentTemplate template)
|
||||||
|
{
|
||||||
|
_template = template;
|
||||||
|
}
|
||||||
|
public IComponentTemplate Template
|
||||||
|
{
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
get { return _template; }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
set { _template = value; }
|
||||||
|
}
|
||||||
|
public Type Type
|
||||||
|
{
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
get { return _template.Type; }
|
||||||
|
}
|
||||||
|
public bool IsNull
|
||||||
|
{
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
get { return _template == null; }
|
||||||
|
}
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public void Apply(short worldID, int entityID) { _template.Apply(worldID, entityID); }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public object GetRaw() { return _template.GetRaw(); }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public void OnGizmos(Transform transform, IComponentTemplate.GizmosMode mode) { _template.OnGizmos(transform, mode); }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public void OnValidate(UnityEngine.Object obj) { _template.OnValidate(obj); }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public void SetRaw(object raw) { _template.SetRaw(raw); }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public bool Equals(ComponentTemplateProperty other) { return _template == other._template; }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public override int GetHashCode() { return _template.GetHashCode(); }
|
||||||
|
public override bool Equals(object obj) { return obj is ComponentTemplateProperty other && Equals(other); }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static bool operator ==(ComponentTemplateProperty a, ComponentTemplateProperty b) { return a._template == b._template; }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static bool operator !=(ComponentTemplateProperty a, ComponentTemplateProperty b) { return a._template != b._template; }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static bool operator ==(ComponentTemplateProperty a, Null? b) { return a.IsNull; }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static bool operator ==(Null? a, ComponentTemplateProperty b) { return b.IsNull; }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static bool operator !=(ComponentTemplateProperty a, Null? b) { return !a.IsNull; }
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static bool operator !=(Null? a, ComponentTemplateProperty b) { return !b.IsNull; }
|
||||||
|
public readonly struct Null { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class ComponentTemplateReferenceAttribute : PropertyAttribute { }
|
||||||
|
}
|
11
src/EntityTemplate/ComponentTemplateProperty.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6231d6781930a694696d09c3d55fc2fb
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
253
src/EntityTemplate/Editor/ComponentTemplatePropertyDrawer.cs
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
#if UNITY_EDITOR
|
||||||
|
using DCFApixels.DragonECS.Unity.Internal;
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DCFApixels.DragonECS.Unity.Editors
|
||||||
|
{
|
||||||
|
[CustomPropertyDrawer(typeof(ComponentTemplateProperty), true)]
|
||||||
|
internal class ComponentTemplatePropertyDrawer : PropertyDrawer
|
||||||
|
{
|
||||||
|
private ComponentTemplateReferenceDrawer _drawer = new ComponentTemplateReferenceDrawer();
|
||||||
|
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
||||||
|
{
|
||||||
|
property.Next(true);
|
||||||
|
return _drawer.GetPropertyHeight(property, label);
|
||||||
|
}
|
||||||
|
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
||||||
|
{
|
||||||
|
property.Next(true);
|
||||||
|
_drawer.OnGUI(position, property, label);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[CustomPropertyDrawer(typeof(ComponentTemplateReferenceAttribute), true)]
|
||||||
|
internal class ComponentTemplateReferenceDrawer : PropertyDrawer
|
||||||
|
{
|
||||||
|
private static readonly Rect HeadIconsRect = new Rect(0f, 0f, 19f, 19f);
|
||||||
|
|
||||||
|
private float Padding => EditorGUIUtility.standardVerticalSpacing;
|
||||||
|
private float SingleLineWithPadding => EditorGUIUtility.singleLineHeight + Padding * 4f;
|
||||||
|
|
||||||
|
private const float DamagedComponentHeight = 18f * 2f;
|
||||||
|
|
||||||
|
private static bool _isInit;
|
||||||
|
private static GenericMenu _genericMenu;
|
||||||
|
|
||||||
|
#region Init
|
||||||
|
private static void Init()
|
||||||
|
{
|
||||||
|
if (_genericMenu == null) { _isInit = false; }
|
||||||
|
if (_isInit) { return; }
|
||||||
|
|
||||||
|
_genericMenu = new GenericMenu();
|
||||||
|
|
||||||
|
var componentTemplateDummies = ComponentTemplateTypeCache.Dummies;
|
||||||
|
foreach (var dummy in componentTemplateDummies)
|
||||||
|
{
|
||||||
|
if (dummy.Type.GetCustomAttribute<SerializableAttribute>() == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Type {dummy.Type.Name} does not have the [Serializable] attribute");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ITypeMeta meta = dummy is ITypeMeta metaOverride ? metaOverride : dummy.Type.ToMeta();
|
||||||
|
string name = meta.Name;
|
||||||
|
string description = meta.Description.Text;
|
||||||
|
MetaGroup group = meta.Group;
|
||||||
|
|
||||||
|
if (group.Name.Length > 0)
|
||||||
|
{
|
||||||
|
name = group.Name + name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(description) == false)
|
||||||
|
{
|
||||||
|
name = $"{name} [i]";
|
||||||
|
}
|
||||||
|
_genericMenu.AddItem(new GUIContent(name, description), false, SelectComponent, dummy);
|
||||||
|
}
|
||||||
|
|
||||||
|
_isInit = true;
|
||||||
|
}
|
||||||
|
[ThreadStatic]
|
||||||
|
private static SerializedProperty currentProperty;
|
||||||
|
private static void SelectComponent(object dummy)
|
||||||
|
{
|
||||||
|
currentProperty.managedReferenceValue = ((IComponentTemplate)dummy).Clone();
|
||||||
|
currentProperty.isExpanded = false;
|
||||||
|
currentProperty.serializedObject.ApplyModifiedProperties();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
||||||
|
{
|
||||||
|
IComponentTemplate template = property.managedReferenceValue as IComponentTemplate;
|
||||||
|
if (template == null || property.managedReferenceValue == null)
|
||||||
|
{
|
||||||
|
return EditorGUIUtility.singleLineHeight + Padding * 2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ComponentTemplateBase customTemplate = property.managedReferenceValue as ComponentTemplateBase;
|
||||||
|
if (customTemplate != null)
|
||||||
|
{
|
||||||
|
property = property.FindPropertyRelative("component");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
property = null;
|
||||||
|
}
|
||||||
|
if (property == null)
|
||||||
|
{
|
||||||
|
return DamagedComponentHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
int propCount = EcsGUI.GetChildPropertiesCount(property);
|
||||||
|
|
||||||
|
return (propCount <= 0 ? EditorGUIUtility.singleLineHeight : EditorGUI.GetPropertyHeight(property, label)) + Padding * 4f;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public override void OnGUI(Rect position, SerializedProperty componentRefProp, GUIContent label)
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
var counter = componentRefProp.Copy();
|
||||||
|
|
||||||
|
int positionCountr = int.MaxValue;
|
||||||
|
while (counter.NextVisible(false))
|
||||||
|
{
|
||||||
|
positionCountr--;
|
||||||
|
}
|
||||||
|
|
||||||
|
IComponentTemplate template = componentRefProp.managedReferenceValue as IComponentTemplate;
|
||||||
|
if (template == null || componentRefProp.managedReferenceValue == null)
|
||||||
|
{
|
||||||
|
DrawSelectionPopup(position, componentRefProp, label);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Type componentType;
|
||||||
|
SerializedProperty componentProperty = componentRefProp;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ComponentTemplateBase customTemplate = componentProperty.managedReferenceValue as ComponentTemplateBase;
|
||||||
|
if (customTemplate != null)
|
||||||
|
{
|
||||||
|
componentProperty = componentRefProp.FindPropertyRelative("component");
|
||||||
|
componentType = customTemplate.GetType().GetField("component", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).FieldType;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
componentType = componentProperty.managedReferenceValue.GetType();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (componentType == null || componentProperty == null)
|
||||||
|
{
|
||||||
|
throw new NullReferenceException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogException(e, componentRefProp.serializedObject.targetObject);
|
||||||
|
DrawDamagedComponent(position, "Damaged component template.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//сюда попадают уже валидные компоненты
|
||||||
|
|
||||||
|
ITypeMeta meta = template is ITypeMeta metaOverride ? metaOverride : template.Type.ToMeta();
|
||||||
|
string name = meta.Name;
|
||||||
|
string description = meta.Description.Text;
|
||||||
|
|
||||||
|
int propCount = EcsGUI.GetChildPropertiesCount(componentProperty);
|
||||||
|
|
||||||
|
Color panelColor = EcsGUI.SelectPanelColor(meta, positionCountr, -1).Desaturate(EscEditorConsts.COMPONENT_DRAWER_DESATURATE);
|
||||||
|
|
||||||
|
Color alphaPanelColor = panelColor;
|
||||||
|
alphaPanelColor.a = EscEditorConsts.COMPONENT_DRAWER_ALPHA;
|
||||||
|
|
||||||
|
|
||||||
|
EditorGUI.BeginChangeCheck();
|
||||||
|
EditorGUI.DrawRect(position, alphaPanelColor);
|
||||||
|
|
||||||
|
Rect paddingPosition = RectUtility.AddPadding(position, Padding * 2f);
|
||||||
|
|
||||||
|
#region Draw Component Block
|
||||||
|
Rect removeButtonRect = position;
|
||||||
|
removeButtonRect.center -= new Vector2(0, removeButtonRect.height);
|
||||||
|
removeButtonRect.yMin = removeButtonRect.yMax;
|
||||||
|
removeButtonRect.yMax += HeadIconsRect.height;
|
||||||
|
removeButtonRect.xMin = removeButtonRect.xMax - HeadIconsRect.width;
|
||||||
|
removeButtonRect.center += Vector2.up * Padding * 1f;
|
||||||
|
|
||||||
|
bool isRemoveComponent = EcsGUI.CloseButton(removeButtonRect);
|
||||||
|
|
||||||
|
if (propCount <= 0)
|
||||||
|
{
|
||||||
|
EcsGUI.DrawEmptyComponentProperty(paddingPosition, componentRefProp, label, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (componentProperty.propertyType == SerializedPropertyType.Generic)
|
||||||
|
{
|
||||||
|
EditorGUI.PropertyField(paddingPosition, componentProperty, label, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Rect r = RectUtility.AddPadding(paddingPosition, 0, 20f, 0, 0);
|
||||||
|
EditorGUI.PropertyField(r, componentProperty, label, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(label.text))
|
||||||
|
{
|
||||||
|
EditorGUI.indentLevel++;
|
||||||
|
EditorGUI.PrefixLabel(position.AddPadding(0, 0, 0, position.height - SingleLineWithPadding), UnityEditorUtility.GetLabel(name));
|
||||||
|
EditorGUI.indentLevel--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GUI.Label(position.AddPadding(EditorGUIUtility.labelWidth, 0, 0, position.height - SingleLineWithPadding), name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isRemoveComponent)
|
||||||
|
{
|
||||||
|
componentRefProp.managedReferenceValue = null;
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(description) == false)
|
||||||
|
{
|
||||||
|
Rect tooltipIconRect = HeadIconsRect;
|
||||||
|
tooltipIconRect.center = removeButtonRect.center;
|
||||||
|
tooltipIconRect.center -= Vector2.right * tooltipIconRect.width;
|
||||||
|
EcsGUI.DescriptionIcon(tooltipIconRect, description);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
if (EditorGUI.EndChangeCheck())
|
||||||
|
{
|
||||||
|
componentProperty.serializedObject.ApplyModifiedProperties();
|
||||||
|
EditorUtility.SetDirty(componentProperty.serializedObject.targetObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawSelectionPopup(Rect position, SerializedProperty componentRefProp, GUIContent label)
|
||||||
|
{
|
||||||
|
EditorGUI.LabelField(position, label);
|
||||||
|
Rect buttonRect = RectUtility.AddPadding(position, EditorGUIUtility.labelWidth, 0f, 0f, 0f);
|
||||||
|
if (GUI.Button(buttonRect, "Select"))
|
||||||
|
{
|
||||||
|
currentProperty = componentRefProp;
|
||||||
|
_genericMenu.ShowAsContext();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void DrawDamagedComponent(Rect position, string message)
|
||||||
|
{
|
||||||
|
EditorGUI.HelpBox(position, message, MessageType.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dbf91ec8124942340b7f095474db92b1
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -9,39 +9,33 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
{
|
{
|
||||||
internal abstract class EntityTemplateEditorBase : Editor
|
internal abstract class EntityTemplateEditorBase : Editor
|
||||||
{
|
{
|
||||||
private static readonly Rect RemoveButtonRect = new Rect(0f, 0f, 19f, 19f);
|
private static readonly Rect HeadIconsRect = new Rect(0f, 0f, 19f, 19f);
|
||||||
private static readonly Rect TooltipIconRect = new Rect(0f, 0f, 19f, 19f);
|
|
||||||
|
|
||||||
private GUIStyle _removeButtonStyle;
|
|
||||||
private GenericMenu _genericMenu;
|
private GenericMenu _genericMenu;
|
||||||
private bool _isInit = false;
|
private bool _isInit = false;
|
||||||
|
|
||||||
|
private static ComponentColorMode AutoColorMode
|
||||||
|
{
|
||||||
|
get { return SettingsPrefs.instance.ComponentColorMode; }
|
||||||
|
set { SettingsPrefs.instance.ComponentColorMode = value; }
|
||||||
|
}
|
||||||
|
|
||||||
#region Init
|
#region Init
|
||||||
private void Init()
|
private void Init()
|
||||||
{
|
{
|
||||||
if (_genericMenu == null) { _isInit = false; }
|
if (_genericMenu == null) { _isInit = false; }
|
||||||
if (_isInit) { return; }
|
if (_isInit) { return; }
|
||||||
|
|
||||||
var tmpstylebase = UnityEditorUtility.GetStyle(new Color(0.9f, 0f, 0.22f), 0.5f);
|
|
||||||
var tmpStyle = UnityEditorUtility.GetStyle(new Color(1f, 0.5f, 0.7f), 0.5f);
|
|
||||||
|
|
||||||
_removeButtonStyle = new GUIStyle(EditorStyles.linkLabel);
|
|
||||||
_removeButtonStyle.alignment = TextAnchor.MiddleCenter;
|
|
||||||
|
|
||||||
_removeButtonStyle.normal = tmpstylebase.normal;
|
|
||||||
_removeButtonStyle.hover = tmpStyle.normal;
|
|
||||||
_removeButtonStyle.active = tmpStyle.normal;
|
|
||||||
_removeButtonStyle.focused = tmpStyle.normal;
|
|
||||||
|
|
||||||
_removeButtonStyle.padding = new RectOffset(0, 0, 0, 0);
|
|
||||||
_removeButtonStyle.margin = new RectOffset(0, 0, 0, 0);
|
|
||||||
_removeButtonStyle.border = new RectOffset(0, 0, 0, 0);
|
|
||||||
|
|
||||||
_genericMenu = new GenericMenu();
|
_genericMenu = new GenericMenu();
|
||||||
|
|
||||||
var componentTemplateDummies = ComponentTemplateTypeCache.Dummies;
|
var componentTemplateDummies = ComponentTemplateTypeCache.Dummies;
|
||||||
foreach (var dummy in componentTemplateDummies)
|
foreach (var dummy in componentTemplateDummies)
|
||||||
{
|
{
|
||||||
|
if (dummy.Type.GetCustomAttribute<SerializableAttribute>() == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Type {dummy.Type.Name} does not have the [Serializable] attribute");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
ITypeMeta meta = dummy is ITypeMeta metaOverride ? metaOverride : dummy.Type.ToMeta();
|
ITypeMeta meta = dummy is ITypeMeta metaOverride ? metaOverride : dummy.Type.ToMeta();
|
||||||
string name = meta.Name;
|
string name = meta.Name;
|
||||||
string description = meta.Description.Text;
|
string description = meta.Description.Text;
|
||||||
@ -112,7 +106,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
GUILayout.Label("", GUILayout.Height(0), GUILayout.ExpandWidth(true));
|
GUILayout.Label("", GUILayout.Height(0), GUILayout.ExpandWidth(true));
|
||||||
for (int i = 0; i < componentsProp.arraySize; i++)
|
for (int i = 0; i < componentsProp.arraySize; i++)
|
||||||
{
|
{
|
||||||
DrawComponentData(componentsProp.GetArrayElementAtIndex(i), i);
|
DrawComponentData(componentsProp.GetArrayElementAtIndex(i), componentsProp.arraySize, i);
|
||||||
}
|
}
|
||||||
GUILayout.EndVertical();
|
GUILayout.EndVertical();
|
||||||
}
|
}
|
||||||
@ -132,37 +126,56 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawComponentData(SerializedProperty componentRefProp, int index)
|
private void DrawComponentData(SerializedProperty componentRefProp, int total, int index)
|
||||||
{
|
{
|
||||||
IComponentTemplate template = componentRefProp.managedReferenceValue as IComponentTemplate;
|
IComponentTemplate template = componentRefProp.managedReferenceValue as IComponentTemplate;
|
||||||
if (template == null || componentRefProp.managedReferenceValue == null)
|
if (template == null || componentRefProp.managedReferenceValue == null)
|
||||||
{
|
{
|
||||||
DrawDamagedComponent(componentRefProp, index);
|
DrawDamagedComponent_Replaced(componentRefProp, index);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Type componentType;
|
||||||
|
SerializedProperty componentProperty = componentRefProp;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ComponentTemplateBase customTemplate = componentProperty.managedReferenceValue as ComponentTemplateBase;
|
||||||
|
if (customTemplate != null)
|
||||||
|
{
|
||||||
|
componentProperty = componentRefProp.FindPropertyRelative("component");
|
||||||
|
componentType = customTemplate.GetType().GetField("component", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).FieldType;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
componentType = componentProperty.managedReferenceValue.GetType();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (componentType == null || componentProperty == null)
|
||||||
|
{
|
||||||
|
throw new NullReferenceException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogException(e, serializedObject.targetObject);
|
||||||
|
DrawDamagedComponent(index, "Damaged component template.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Type componentType;
|
//сюда попадают уже валидные компоненты
|
||||||
SerializedProperty componentProperty = componentRefProp;
|
|
||||||
ComponentTemplateBase customInitializer = componentProperty.managedReferenceValue as ComponentTemplateBase;
|
|
||||||
if (customInitializer != null)
|
|
||||||
{
|
|
||||||
componentProperty = componentRefProp.FindPropertyRelative("component");
|
|
||||||
componentType = customInitializer.GetType().GetField("component", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).FieldType;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
componentType = componentProperty.managedReferenceValue.GetType(); ;
|
|
||||||
}
|
|
||||||
|
|
||||||
ITypeMeta meta = template is ITypeMeta metaOverride ? metaOverride : template.Type.ToMeta();
|
ITypeMeta meta = template is ITypeMeta metaOverride ? metaOverride : template.Type.ToMeta();
|
||||||
string name = meta.Name;
|
string name = meta.Name;
|
||||||
string description = meta.Description.Text;
|
string description = meta.Description.Text;
|
||||||
Color panelColor = meta.Color.ToUnityColor().Desaturate(EscEditorConsts.COMPONENT_DRAWER_DESATURATE);
|
|
||||||
|
|
||||||
//GUIContent label = new GUIContent(name);
|
int propCount = EcsGUI.GetChildPropertiesCount(componentProperty, componentType, out bool isEmpty);
|
||||||
bool isEmpty = componentType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Length <= 0;
|
|
||||||
float padding = EditorGUIUtility.standardVerticalSpacing;
|
float padding = EditorGUIUtility.standardVerticalSpacing;
|
||||||
|
|
||||||
|
Color panelColor = EcsGUI.SelectPanelColor(meta, index, total).Desaturate(EscEditorConsts.COMPONENT_DRAWER_DESATURATE);
|
||||||
|
|
||||||
Color alphaPanelColor = panelColor;
|
Color alphaPanelColor = panelColor;
|
||||||
alphaPanelColor.a = EscEditorConsts.COMPONENT_DRAWER_ALPHA;
|
alphaPanelColor.a = EscEditorConsts.COMPONENT_DRAWER_ALPHA;
|
||||||
|
|
||||||
@ -171,26 +184,17 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
EditorGUI.BeginChangeCheck();
|
EditorGUI.BeginChangeCheck();
|
||||||
GUILayout.BeginVertical(UnityEditorUtility.GetStyle(alphaPanelColor));
|
GUILayout.BeginVertical(UnityEditorUtility.GetStyle(alphaPanelColor));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region Draw Component Block
|
#region Draw Component Block
|
||||||
bool isRemoveComponent = false;
|
|
||||||
removeButtonRect.yMin = removeButtonRect.yMax;
|
removeButtonRect.yMin = removeButtonRect.yMax;
|
||||||
removeButtonRect.yMax += RemoveButtonRect.height;
|
removeButtonRect.yMax += HeadIconsRect.height;
|
||||||
removeButtonRect.xMin = removeButtonRect.xMax - RemoveButtonRect.width;
|
removeButtonRect.xMin = removeButtonRect.xMax - HeadIconsRect.width;
|
||||||
removeButtonRect.center += Vector2.up * padding * 2f;
|
removeButtonRect.center += Vector2.up * padding * 2f;
|
||||||
|
|
||||||
if (EcsGUI.CloseButton(removeButtonRect))
|
bool isRemoveComponent = EcsGUI.CloseButton(removeButtonRect);
|
||||||
{
|
|
||||||
isRemoveComponent = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isEmpty)
|
if (propCount <= 0)
|
||||||
{
|
{
|
||||||
GUIContent label = UnityEditorUtility.GetLabel(name);
|
EcsGUI.Layout.DrawEmptyComponentProperty(componentRefProp, name, isEmpty);
|
||||||
GUILayout.Label(label);
|
|
||||||
EditorGUI.BeginProperty(GUILayoutUtility.GetLastRect(), label, componentRefProp);
|
|
||||||
EditorGUI.EndProperty();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -211,7 +215,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
}
|
}
|
||||||
if (string.IsNullOrEmpty(description) == false)
|
if (string.IsNullOrEmpty(description) == false)
|
||||||
{
|
{
|
||||||
Rect tooltipIconRect = TooltipIconRect;
|
Rect tooltipIconRect = HeadIconsRect;
|
||||||
tooltipIconRect.center = removeButtonRect.center;
|
tooltipIconRect.center = removeButtonRect.center;
|
||||||
tooltipIconRect.center -= Vector2.right * tooltipIconRect.width;
|
tooltipIconRect.center -= Vector2.right * tooltipIconRect.width;
|
||||||
EcsGUI.DescriptionIcon(tooltipIconRect, description);
|
EcsGUI.DescriptionIcon(tooltipIconRect, description);
|
||||||
@ -226,19 +230,28 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
EditorUtility.SetDirty(componentProperty.serializedObject.targetObject);
|
EditorUtility.SetDirty(componentProperty.serializedObject.targetObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void DrawDamagedComponent_Replaced(SerializedProperty componentRefProp, int index)
|
||||||
private void DrawDamagedComponent(SerializedProperty componentRefProp, int index)
|
|
||||||
{
|
{
|
||||||
|
DrawDamagedComponent(index, $"Damaged component template. If the problem occurred after renaming a component or initializer. use MovedFromAttrubute");
|
||||||
|
}
|
||||||
|
private void DrawDamagedComponent(int index, string message)
|
||||||
|
{
|
||||||
|
Rect removeButtonRect = GUILayoutUtility.GetLastRect();
|
||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
GUILayout.BeginHorizontal();
|
||||||
|
|
||||||
EditorGUILayout.HelpBox($"Damaged component. If the problem occurred after renaming a component or initializer. use MovedFromAttrubute", MessageType.Warning);
|
float padding = EditorGUIUtility.standardVerticalSpacing;
|
||||||
|
|
||||||
Rect lastrect = GUILayoutUtility.GetLastRect();
|
removeButtonRect.yMin = removeButtonRect.yMax;
|
||||||
Rect removeButtonRect = RemoveButtonRect;
|
removeButtonRect.yMax += HeadIconsRect.height;
|
||||||
removeButtonRect.center = new Vector2(lastrect.xMax + removeButtonRect.width, lastrect.yMin + removeButtonRect.height / 2f);
|
removeButtonRect.xMin = removeButtonRect.xMax - HeadIconsRect.width;
|
||||||
|
removeButtonRect.center += Vector2.up * padding * 2f;
|
||||||
|
|
||||||
GUILayout.Label("", GUILayout.Width(removeButtonRect.width));
|
bool isRemoveComponent = EcsGUI.CloseButton(removeButtonRect);
|
||||||
if (GUI.Button(removeButtonRect, "x", _removeButtonStyle))
|
|
||||||
|
EditorGUILayout.HelpBox(message, MessageType.Warning);
|
||||||
|
|
||||||
|
if (isRemoveComponent)
|
||||||
{
|
{
|
||||||
OnRemoveComponentAt(index);
|
OnRemoveComponentAt(index);
|
||||||
}
|
}
|
||||||
|
@ -57,12 +57,12 @@ namespace DCFApixels.DragonECS
|
|||||||
protected T component;
|
protected T component;
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
public override Type Type { get { return typeof(T); } }
|
public sealed override Type Type { get { return typeof(T); } }
|
||||||
public override string Name { get { return Meta.Name; } }
|
public override string Name { get { return Meta.Name; } }
|
||||||
|
public override MetaColor Color { get { return Meta.Color; } }
|
||||||
public override MetaGroup Group { get { return Meta.Group; } }
|
public override MetaGroup Group { get { return Meta.Group; } }
|
||||||
public override MetaDescription Description { get { return Meta.Description; } }
|
public override MetaDescription Description { get { return Meta.Description; } }
|
||||||
public override IReadOnlyCollection<string> Tags { get { return Meta.Tags; } }
|
public override IReadOnlyCollection<string> Tags { get { return Meta.Tags; } }
|
||||||
public override MetaColor Color { get { return Meta.Color; } }
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
@ -129,7 +129,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
Type interfaceType = typeof(IComponentTemplate);
|
Type interfaceType = typeof(IComponentTemplate);
|
||||||
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
|
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
|
||||||
{
|
{
|
||||||
var targetTypes = assembly.GetTypes().Where(type => !type.IsGenericType && !(type.IsAbstract || type.IsInterface) && type.GetCustomAttribute<SerializableAttribute>() != null);
|
var targetTypes = assembly.GetTypes().Where(type => !type.IsGenericType && !(type.IsAbstract || type.IsInterface) /*&& type.GetCustomAttribute<SerializableAttribute>() != null*/);
|
||||||
|
|
||||||
types.AddRange(targetTypes.Where(type => interfaceType.IsAssignableFrom(type)));
|
types.AddRange(targetTypes.Where(type => interfaceType.IsAssignableFrom(type)));
|
||||||
|
|
||||||
|
BIN
src/Icons/AutosetCascadeIcon.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
@ -3,10 +3,10 @@ guid: 8f9fb2a8877577940971d81a98aeaaaa
|
|||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 13
|
serializedVersion: 11
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 0
|
||||||
sRGBTexture: 1
|
sRGBTexture: 1
|
||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
@ -20,12 +20,11 @@ TextureImporter:
|
|||||||
externalNormalMap: 0
|
externalNormalMap: 0
|
||||||
heightScale: 0.25
|
heightScale: 0.25
|
||||||
normalMapFilter: 0
|
normalMapFilter: 0
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
isReadable: 0
|
||||||
streamingMipmaps: 0
|
streamingMipmaps: 0
|
||||||
streamingMipmapsPriority: 0
|
streamingMipmapsPriority: 0
|
||||||
vTOnly: 0
|
vTOnly: 0
|
||||||
ignoreMipmapLimit: 0
|
ignoreMasterTextureLimit: 0
|
||||||
grayScaleToAlpha: 0
|
grayScaleToAlpha: 0
|
||||||
generateCubemap: 6
|
generateCubemap: 6
|
||||||
cubemapConvolution: 0
|
cubemapConvolution: 0
|
||||||
@ -52,7 +51,7 @@ TextureImporter:
|
|||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 1
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 0
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
@ -64,20 +63,17 @@ TextureImporter:
|
|||||||
textureFormatSet: 0
|
textureFormatSet: 0
|
||||||
ignorePngGamma: 0
|
ignorePngGamma: 0
|
||||||
applyGammaDecoding: 0
|
applyGammaDecoding: 0
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
platformSettings:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
buildTarget: DefaultTexturePlatform
|
buildTarget: DefaultTexturePlatform
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 1
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
@ -90,7 +86,18 @@ TextureImporter:
|
|||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
@ -107,8 +114,9 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable: {}
|
nameFileIdTable: {}
|
||||||
mipmapLimitGroupName:
|
spritePackingTag:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
BIN
src/Icons/AutosetIcon.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
@ -3,10 +3,10 @@ guid: d01e651682f48b548b597714f47e14b9
|
|||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 13
|
serializedVersion: 11
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 0
|
||||||
sRGBTexture: 1
|
sRGBTexture: 1
|
||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
@ -20,12 +20,11 @@ TextureImporter:
|
|||||||
externalNormalMap: 0
|
externalNormalMap: 0
|
||||||
heightScale: 0.25
|
heightScale: 0.25
|
||||||
normalMapFilter: 0
|
normalMapFilter: 0
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
isReadable: 0
|
||||||
streamingMipmaps: 0
|
streamingMipmaps: 0
|
||||||
streamingMipmapsPriority: 0
|
streamingMipmapsPriority: 0
|
||||||
vTOnly: 0
|
vTOnly: 0
|
||||||
ignoreMipmapLimit: 0
|
ignoreMasterTextureLimit: 0
|
||||||
grayScaleToAlpha: 0
|
grayScaleToAlpha: 0
|
||||||
generateCubemap: 6
|
generateCubemap: 6
|
||||||
cubemapConvolution: 0
|
cubemapConvolution: 0
|
||||||
@ -43,7 +42,7 @@ TextureImporter:
|
|||||||
nPOTScale: 0
|
nPOTScale: 0
|
||||||
lightmap: 0
|
lightmap: 0
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
spriteMode: 2
|
spriteMode: 1
|
||||||
spriteExtrude: 1
|
spriteExtrude: 1
|
||||||
spriteMeshType: 1
|
spriteMeshType: 1
|
||||||
alignment: 0
|
alignment: 0
|
||||||
@ -52,7 +51,7 @@ TextureImporter:
|
|||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 1
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 0
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
@ -64,20 +63,17 @@ TextureImporter:
|
|||||||
textureFormatSet: 0
|
textureFormatSet: 0
|
||||||
ignorePngGamma: 0
|
ignorePngGamma: 0
|
||||||
applyGammaDecoding: 0
|
applyGammaDecoding: 0
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
platformSettings:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
buildTarget: DefaultTexturePlatform
|
buildTarget: DefaultTexturePlatform
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 1
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
@ -90,7 +86,18 @@ TextureImporter:
|
|||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
@ -99,7 +106,7 @@ TextureImporter:
|
|||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
bones: []
|
bones: []
|
||||||
spriteID:
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
internalID: 0
|
internalID: 0
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
@ -107,8 +114,9 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable: {}
|
nameFileIdTable: {}
|
||||||
mipmapLimitGroupName:
|
spritePackingTag:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
Before Width: | Height: | Size: 379 B After Width: | Height: | Size: 379 B |
@ -3,10 +3,10 @@ guid: 8a708e50662813d4a99c107e6431a60b
|
|||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 13
|
serializedVersion: 11
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 0
|
||||||
sRGBTexture: 1
|
sRGBTexture: 1
|
||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
@ -20,12 +20,11 @@ TextureImporter:
|
|||||||
externalNormalMap: 0
|
externalNormalMap: 0
|
||||||
heightScale: 0.25
|
heightScale: 0.25
|
||||||
normalMapFilter: 0
|
normalMapFilter: 0
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
isReadable: 0
|
||||||
streamingMipmaps: 0
|
streamingMipmaps: 0
|
||||||
streamingMipmapsPriority: 0
|
streamingMipmapsPriority: 0
|
||||||
vTOnly: 0
|
vTOnly: 0
|
||||||
ignoreMipmapLimit: 0
|
ignoreMasterTextureLimit: 0
|
||||||
grayScaleToAlpha: 0
|
grayScaleToAlpha: 0
|
||||||
generateCubemap: 6
|
generateCubemap: 6
|
||||||
cubemapConvolution: 0
|
cubemapConvolution: 0
|
||||||
@ -52,7 +51,7 @@ TextureImporter:
|
|||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 1
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 0
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
@ -64,20 +63,17 @@ TextureImporter:
|
|||||||
textureFormatSet: 0
|
textureFormatSet: 0
|
||||||
ignorePngGamma: 0
|
ignorePngGamma: 0
|
||||||
applyGammaDecoding: 0
|
applyGammaDecoding: 0
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
platformSettings:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
buildTarget: DefaultTexturePlatform
|
buildTarget: DefaultTexturePlatform
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 1
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
@ -90,7 +86,18 @@ TextureImporter:
|
|||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
@ -107,8 +114,9 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable: {}
|
nameFileIdTable: {}
|
||||||
mipmapLimitGroupName:
|
spritePackingTag:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@ -3,10 +3,10 @@ guid: 6a1d402595b00c24db2ba647fed93a5c
|
|||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 13
|
serializedVersion: 11
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 0
|
||||||
sRGBTexture: 1
|
sRGBTexture: 1
|
||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
@ -20,12 +20,11 @@ TextureImporter:
|
|||||||
externalNormalMap: 0
|
externalNormalMap: 0
|
||||||
heightScale: 0.25
|
heightScale: 0.25
|
||||||
normalMapFilter: 0
|
normalMapFilter: 0
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
isReadable: 0
|
||||||
streamingMipmaps: 0
|
streamingMipmaps: 0
|
||||||
streamingMipmapsPriority: 0
|
streamingMipmapsPriority: 0
|
||||||
vTOnly: 0
|
vTOnly: 0
|
||||||
ignoreMipmapLimit: 0
|
ignoreMasterTextureLimit: 0
|
||||||
grayScaleToAlpha: 0
|
grayScaleToAlpha: 0
|
||||||
generateCubemap: 6
|
generateCubemap: 6
|
||||||
cubemapConvolution: 0
|
cubemapConvolution: 0
|
||||||
@ -52,7 +51,7 @@ TextureImporter:
|
|||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 1
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 0
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
@ -64,20 +63,17 @@ TextureImporter:
|
|||||||
textureFormatSet: 0
|
textureFormatSet: 0
|
||||||
ignorePngGamma: 0
|
ignorePngGamma: 0
|
||||||
applyGammaDecoding: 0
|
applyGammaDecoding: 0
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
platformSettings:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
buildTarget: DefaultTexturePlatform
|
buildTarget: DefaultTexturePlatform
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 1
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
@ -90,7 +86,18 @@ TextureImporter:
|
|||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
@ -107,8 +114,9 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable: {}
|
nameFileIdTable: {}
|
||||||
mipmapLimitGroupName:
|
spritePackingTag:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 646 B |
@ -3,10 +3,10 @@ guid: e135cf23a5d53ce48a75e163b41e39d5
|
|||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 13
|
serializedVersion: 11
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 0
|
||||||
sRGBTexture: 1
|
sRGBTexture: 1
|
||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
@ -20,12 +20,11 @@ TextureImporter:
|
|||||||
externalNormalMap: 0
|
externalNormalMap: 0
|
||||||
heightScale: 0.25
|
heightScale: 0.25
|
||||||
normalMapFilter: 0
|
normalMapFilter: 0
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
isReadable: 0
|
||||||
streamingMipmaps: 0
|
streamingMipmaps: 0
|
||||||
streamingMipmapsPriority: 0
|
streamingMipmapsPriority: 0
|
||||||
vTOnly: 0
|
vTOnly: 0
|
||||||
ignoreMipmapLimit: 0
|
ignoreMasterTextureLimit: 0
|
||||||
grayScaleToAlpha: 0
|
grayScaleToAlpha: 0
|
||||||
generateCubemap: 6
|
generateCubemap: 6
|
||||||
cubemapConvolution: 0
|
cubemapConvolution: 0
|
||||||
@ -52,7 +51,7 @@ TextureImporter:
|
|||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 1
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 0
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
@ -64,20 +63,17 @@ TextureImporter:
|
|||||||
textureFormatSet: 0
|
textureFormatSet: 0
|
||||||
ignorePngGamma: 0
|
ignorePngGamma: 0
|
||||||
applyGammaDecoding: 0
|
applyGammaDecoding: 0
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
platformSettings:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
buildTarget: DefaultTexturePlatform
|
buildTarget: DefaultTexturePlatform
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 1
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
@ -90,7 +86,18 @@ TextureImporter:
|
|||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
@ -107,8 +114,9 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable: {}
|
nameFileIdTable: {}
|
||||||
mipmapLimitGroupName:
|
spritePackingTag:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
BIN
src/Icons/UnlinkIcon.png
Normal file
After Width: | Height: | Size: 647 B |
@ -3,10 +3,10 @@ guid: 5baead89a941e034e9f44d63617d3246
|
|||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 13
|
serializedVersion: 11
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 0
|
||||||
sRGBTexture: 1
|
sRGBTexture: 1
|
||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
@ -20,12 +20,11 @@ TextureImporter:
|
|||||||
externalNormalMap: 0
|
externalNormalMap: 0
|
||||||
heightScale: 0.25
|
heightScale: 0.25
|
||||||
normalMapFilter: 0
|
normalMapFilter: 0
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
isReadable: 0
|
||||||
streamingMipmaps: 0
|
streamingMipmaps: 0
|
||||||
streamingMipmapsPriority: 0
|
streamingMipmapsPriority: 0
|
||||||
vTOnly: 0
|
vTOnly: 0
|
||||||
ignoreMipmapLimit: 0
|
ignoreMasterTextureLimit: 0
|
||||||
grayScaleToAlpha: 0
|
grayScaleToAlpha: 0
|
||||||
generateCubemap: 6
|
generateCubemap: 6
|
||||||
cubemapConvolution: 0
|
cubemapConvolution: 0
|
||||||
@ -52,7 +51,7 @@ TextureImporter:
|
|||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 1
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 0
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
@ -64,20 +63,17 @@ TextureImporter:
|
|||||||
textureFormatSet: 0
|
textureFormatSet: 0
|
||||||
ignorePngGamma: 0
|
ignorePngGamma: 0
|
||||||
applyGammaDecoding: 0
|
applyGammaDecoding: 0
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
platformSettings:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
buildTarget: DefaultTexturePlatform
|
buildTarget: DefaultTexturePlatform
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 1
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
@ -90,7 +86,18 @@ TextureImporter:
|
|||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
ignorePlatformSupport: 0
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
@ -107,8 +114,9 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable: {}
|
nameFileIdTable: {}
|
||||||
mipmapLimitGroupName:
|
spritePackingTag:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
Before Width: | Height: | Size: 728 B |
Before Width: | Height: | Size: 227 B |
Before Width: | Height: | Size: 283 B |
@ -4,6 +4,8 @@ using System;
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityObject = UnityEngine.Object;
|
||||||
|
using UnityComponent = UnityEngine.Component;
|
||||||
|
|
||||||
namespace DCFApixels.DragonECS.Unity.Editors
|
namespace DCFApixels.DragonECS.Unity.Editors
|
||||||
{
|
{
|
||||||
@ -26,6 +28,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
public struct ColorScope : IDisposable
|
public struct ColorScope : IDisposable
|
||||||
{
|
{
|
||||||
private readonly Color _value;
|
private readonly Color _value;
|
||||||
|
public ColorScope(float r, float g, float b, float a = 1f) : this(new Color(r, g, b, a)) { }
|
||||||
public ColorScope(Color value)
|
public ColorScope(Color value)
|
||||||
{
|
{
|
||||||
_value = GUI.color;
|
_value = GUI.color;
|
||||||
@ -39,6 +42,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
public struct ContentColorScope : IDisposable
|
public struct ContentColorScope : IDisposable
|
||||||
{
|
{
|
||||||
private readonly Color _value;
|
private readonly Color _value;
|
||||||
|
public ContentColorScope(float r, float g, float b, float a = 1f) : this(new Color(r, g, b, a)) { }
|
||||||
public ContentColorScope(Color value)
|
public ContentColorScope(Color value)
|
||||||
{
|
{
|
||||||
_value = GUI.contentColor;
|
_value = GUI.contentColor;
|
||||||
@ -49,8 +53,17 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
GUI.contentColor = _value;
|
GUI.contentColor = _value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private static ContentColorScope SetContentColor(Color value) => new ContentColorScope(value);
|
||||||
|
private static ContentColorScope SetContentColor(float r, float g, float b, float a = 1f) => new ContentColorScope(r, g, b, a);
|
||||||
|
private static ColorScope SetColor(Color value) => new ColorScope(value);
|
||||||
|
private static ColorScope SetColor(float r, float g, float b, float a = 1f) => new ColorScope(r, g, b, a);
|
||||||
|
private static EditorGUI.DisabledScope Enable => new EditorGUI.DisabledScope(false);
|
||||||
|
private static EditorGUI.DisabledScope Disable => new EditorGUI.DisabledScope(true);
|
||||||
|
private static EditorGUI.DisabledScope SetEnable(bool value) => new EditorGUI.DisabledScope(!value);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private static readonly BindingFlags fieldFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
||||||
|
|
||||||
internal readonly static Color GrayColor = new Color32(100, 100, 100, 255);
|
internal readonly static Color GrayColor = new Color32(100, 100, 100, 255);
|
||||||
internal readonly static Color GreenColor = new Color32(75, 255, 0, 255);
|
internal readonly static Color GreenColor = new Color32(75, 255, 0, 255);
|
||||||
internal readonly static Color RedColor = new Color32(255, 0, 75, 255);
|
internal readonly static Color RedColor = new Color32(255, 0, 75, 255);
|
||||||
@ -60,6 +73,12 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
|
|
||||||
public static float EntityBarHeight => EditorGUIUtility.singleLineHeight + 3f;
|
public static float EntityBarHeight => EditorGUIUtility.singleLineHeight + 3f;
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
private static ComponentColorMode AutoColorMode
|
||||||
|
{
|
||||||
|
get { return SettingsPrefs.instance.ComponentColorMode; }
|
||||||
|
set { SettingsPrefs.instance.ComponentColorMode = value; }
|
||||||
|
}
|
||||||
private static bool IsShowHidden
|
private static bool IsShowHidden
|
||||||
{
|
{
|
||||||
get { return SettingsPrefs.instance.IsShowHidden; }
|
get { return SettingsPrefs.instance.IsShowHidden; }
|
||||||
@ -70,7 +89,9 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
get { return SettingsPrefs.instance.IsShowRuntimeComponents; }
|
get { return SettingsPrefs.instance.IsShowRuntimeComponents; }
|
||||||
set { SettingsPrefs.instance.IsShowRuntimeComponents = value; }
|
set { SettingsPrefs.instance.IsShowRuntimeComponents = value; }
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region enums
|
||||||
public enum AddClearComponentButton : byte
|
public enum AddClearComponentButton : byte
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
@ -84,7 +105,9 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
Alive = 1 << 0,
|
Alive = 1 << 0,
|
||||||
Undefined = 1 << 1,
|
Undefined = 1 << 1,
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region HitTest
|
||||||
internal static bool HitTest(Rect rect)
|
internal static bool HitTest(Rect rect)
|
||||||
{
|
{
|
||||||
return HitTest(rect, Event.current.mousePosition);
|
return HitTest(rect, Event.current.mousePosition);
|
||||||
@ -102,11 +125,16 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
{
|
{
|
||||||
return point.x >= rect.xMin - (float)offset && point.x < rect.xMax + (float)offset && point.y >= rect.yMin - (float)offset && point.y < rect.yMax + (float)offset;
|
return point.x >= rect.xMin - (float)offset && point.x < rect.xMax + (float)offset && point.y >= rect.yMin - (float)offset && point.y < rect.yMax + (float)offset;
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region small elems
|
||||||
public static void DrawIcon(Rect position, Texture icon, float iconPadding, string description)
|
public static void DrawIcon(Rect position, Texture icon, float iconPadding, string description)
|
||||||
{
|
{
|
||||||
GUI.Label(position, UnityEditorUtility.GetLabel(string.Empty, description));
|
using (SetColor(GUI.enabled ? GUI.color : GUI.color * new Color(1f, 1f, 1f, 0.4f)))
|
||||||
GUI.DrawTexture(RectUtility.AddPadding(position, iconPadding), icon);
|
{
|
||||||
|
GUI.Label(position, UnityEditorUtility.GetLabel(string.Empty, description));
|
||||||
|
GUI.DrawTexture(RectUtility.AddPadding(position, iconPadding), icon);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public static (bool, bool) IconButtonGeneric(Rect position)
|
public static (bool, bool) IconButtonGeneric(Rect position)
|
||||||
{
|
{
|
||||||
@ -163,8 +191,9 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
{
|
{
|
||||||
return IconButton(position, Icons.Instance.CloseIcon, 0f, "Delete Entity");
|
return IconButton(position, Icons.Instance.CloseIcon, 0f, "Delete Entity");
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region entity bar
|
||||||
public static void EntityBarForAlive(Rect position, EntityStatus status, int id, short gen, short world)
|
public static void EntityBarForAlive(Rect position, EntityStatus status, int id, short gen, short world)
|
||||||
{
|
{
|
||||||
EntityBar(position, status != EntityStatus.Alive, status, id, gen, world);
|
EntityBar(position, status != EntityStatus.Alive, status, id, gen, world);
|
||||||
@ -242,7 +271,49 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
internal static int GetChildPropertiesCount(SerializedProperty property, Type type, out bool isEmpty)
|
||||||
|
{
|
||||||
|
int result = GetChildPropertiesCount(property);
|
||||||
|
isEmpty = result <= 0 && type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Length <= 0;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
internal static int GetChildPropertiesCount(SerializedProperty property)
|
||||||
|
{
|
||||||
|
var propsCounter = property.Copy();
|
||||||
|
int lastDepth = propsCounter.depth;
|
||||||
|
bool next = propsCounter.Next(true) && lastDepth < propsCounter.depth;
|
||||||
|
int result = next ? -1 : 0;
|
||||||
|
while (next)
|
||||||
|
{
|
||||||
|
result++;
|
||||||
|
next = propsCounter.Next(false);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public static Color SelectPanelColor(ITypeMeta meta, int index, int total)
|
||||||
|
{
|
||||||
|
var trueMeta = meta.Type.ToMeta();
|
||||||
|
if (trueMeta.IsCustomColor || meta.Color != trueMeta.Color)
|
||||||
|
{
|
||||||
|
return meta.Color.ToUnityColor();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (AutoColorMode)
|
||||||
|
{
|
||||||
|
case ComponentColorMode.Auto:
|
||||||
|
return meta.Color.ToUnityColor().Desaturate(0.48f) / 1.18f; //.Desaturate(0.48f) / 1.18f;
|
||||||
|
case ComponentColorMode.Rainbow:
|
||||||
|
int localTotal = Mathf.Max(total, EscEditorConsts.AUTO_COLOR_RAINBOW_MIN_RANGE);
|
||||||
|
Color hsv = Color.HSVToRGB(1f / localTotal * (index % localTotal), 1, 1);
|
||||||
|
return hsv.Desaturate(0.48f) / 1.18f;
|
||||||
|
default:
|
||||||
|
return index % 2 == 0 ? new Color(0.40f, 0.40f, 0.40f) : new Color(0.54f, 0.54f, 0.54f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
public static bool AddComponentButtons(Rect position)
|
public static bool AddComponentButtons(Rect position)
|
||||||
{
|
{
|
||||||
position = RectUtility.AddPadding(position, 20f, 20f, 12f, 2f);
|
position = RectUtility.AddPadding(position, 20f, 20f, 12f, 2f);
|
||||||
@ -264,8 +335,34 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
return AddClearComponentButton.None;
|
return AddClearComponentButton.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void DrawEmptyComponentProperty(Rect position, SerializedProperty property, string name, bool isDisplayEmpty)
|
||||||
|
{
|
||||||
|
DrawEmptyComponentProperty(position, property, UnityEditorUtility.GetLabel(name), isDisplayEmpty);
|
||||||
|
}
|
||||||
|
public static void DrawEmptyComponentProperty(Rect position, SerializedProperty property, GUIContent label, bool isDisplayEmpty)
|
||||||
|
{
|
||||||
|
EditorGUI.LabelField(position, label);
|
||||||
|
if (isDisplayEmpty)
|
||||||
|
{
|
||||||
|
using (SetContentColor(1f, 1f, 1f, 0.4f))
|
||||||
|
{
|
||||||
|
GUI.Label(position.AddPadding(EditorGUIUtility.labelWidth, 0, 0, 0), "empty");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EditorGUI.BeginProperty(position, label, property);
|
||||||
|
EditorGUI.EndProperty();
|
||||||
|
}
|
||||||
|
|
||||||
public static class Layout
|
public static class Layout
|
||||||
{
|
{
|
||||||
|
public static void DrawEmptyComponentProperty(SerializedProperty property, string name, bool isDisplayEmpty)
|
||||||
|
{
|
||||||
|
EcsGUI.DrawEmptyComponentProperty(GUILayoutUtility.GetRect(UnityEditorUtility.GetLabel(name), EditorStyles.label), property, name, isDisplayEmpty);
|
||||||
|
}
|
||||||
|
public static void DrawEmptyComponentProperty(SerializedProperty property, GUIContent label, bool isDisplayEmpty)
|
||||||
|
{
|
||||||
|
EcsGUI.DrawEmptyComponentProperty(GUILayoutUtility.GetRect(label, EditorStyles.label), property, label, isDisplayEmpty);
|
||||||
|
}
|
||||||
public static void DrawWorldBaseInfo(EcsWorld world)
|
public static void DrawWorldBaseInfo(EcsWorld world)
|
||||||
{
|
{
|
||||||
bool isNull = world == null || world.IsDestroyed || world.id == 0;
|
bool isNull = world == null || world.IsDestroyed || world.id == 0;
|
||||||
@ -280,6 +377,8 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
EditorGUILayout.IntField("Leaked Entites", leakedEntitesCount, EditorStyles.boldLabel);
|
EditorGUILayout.IntField("Leaked Entites", leakedEntitesCount, EditorStyles.boldLabel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region entity bar
|
||||||
public static void EntityBarForAlive(EntityStatus status, int id, short gen, short world)
|
public static void EntityBarForAlive(EntityStatus status, int id, short gen, short world)
|
||||||
{
|
{
|
||||||
float width = EditorGUIUtility.currentViewWidth;
|
float width = EditorGUIUtility.currentViewWidth;
|
||||||
@ -304,6 +403,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
float height = EntityBarHeight;
|
float height = EntityBarHeight;
|
||||||
EcsGUI.EntityBar(GUILayoutUtility.GetRect(width, height));
|
EcsGUI.EntityBar(GUILayoutUtility.GetRect(width, height));
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
public static bool AddComponentButtons()
|
public static bool AddComponentButtons()
|
||||||
{
|
{
|
||||||
@ -333,7 +433,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
}
|
}
|
||||||
if (isWithFoldout == false || IsShowRuntimeComponents)
|
if (isWithFoldout == false || IsShowRuntimeComponents)
|
||||||
{
|
{
|
||||||
if (EcsGUI.Layout.AddComponentButtons())
|
if (AddComponentButtons())
|
||||||
{
|
{
|
||||||
GenericMenu genericMenu = RuntimeComponentsUtility.GetAddComponentGenericMenu(world);
|
GenericMenu genericMenu = RuntimeComponentsUtility.GetAddComponentGenericMenu(world);
|
||||||
RuntimeComponentsUtility.CurrentEntityID = entityID;
|
RuntimeComponentsUtility.CurrentEntityID = entityID;
|
||||||
@ -343,24 +443,25 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
GUILayout.Box("", UnityEditorUtility.GetStyle(GUI.color, 0.16f), GUILayout.ExpandWidth(true));
|
GUILayout.Box("", UnityEditorUtility.GetStyle(GUI.color, 0.16f), GUILayout.ExpandWidth(true));
|
||||||
IsShowHidden = EditorGUI.Toggle(GUILayoutUtility.GetLastRect(), "Show Hidden", IsShowHidden);
|
IsShowHidden = EditorGUI.Toggle(GUILayoutUtility.GetLastRect(), "Show Hidden", IsShowHidden);
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
foreach (var componentTypeID in componentTypeIDs)
|
foreach (var componentTypeID in componentTypeIDs)
|
||||||
{
|
{
|
||||||
var pool = world.GetPoolInstance(componentTypeID);
|
var pool = world.GetPoolInstance(componentTypeID);
|
||||||
{
|
{
|
||||||
DrawRuntimeComponent(entityID, pool);
|
DrawRuntimeComponent(componentTypeIDs.Length, i++, entityID, pool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GUILayout.EndVertical();
|
GUILayout.EndVertical();
|
||||||
}
|
}
|
||||||
private static readonly BindingFlags fieldFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
private static void DrawRuntimeComponent(int total, int index, int entityID, IEcsPool pool)
|
||||||
private static void DrawRuntimeComponent(int entityID, IEcsPool pool)
|
|
||||||
{
|
{
|
||||||
var meta = pool.ComponentType.ToMeta();
|
var meta = pool.ComponentType.ToMeta();
|
||||||
if (meta.IsHidden == false || IsShowHidden)
|
if (meta.IsHidden == false || IsShowHidden)
|
||||||
{
|
{
|
||||||
object data = pool.GetRaw(entityID);
|
object data = pool.GetRaw(entityID);
|
||||||
Color panelColor = meta.Color.ToUnityColor().Desaturate(EscEditorConsts.COMPONENT_DRAWER_DESATURATE);
|
|
||||||
|
Color panelColor = SelectPanelColor(meta, index, total).Desaturate(EscEditorConsts.COMPONENT_DRAWER_DESATURATE);
|
||||||
|
|
||||||
float padding = EditorGUIUtility.standardVerticalSpacing;
|
float padding = EditorGUIUtility.standardVerticalSpacing;
|
||||||
Rect removeButtonRect = GUILayoutUtility.GetLastRect();
|
Rect removeButtonRect = GUILayoutUtility.GetLastRect();
|
||||||
@ -373,7 +474,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
removeButtonRect.yMax += RemoveButtonRect.height;
|
removeButtonRect.yMax += RemoveButtonRect.height;
|
||||||
removeButtonRect.xMin = removeButtonRect.xMax - RemoveButtonRect.width;
|
removeButtonRect.xMin = removeButtonRect.xMax - RemoveButtonRect.width;
|
||||||
removeButtonRect.center += Vector2.up * padding * 2f;
|
removeButtonRect.center += Vector2.up * padding * 2f;
|
||||||
if (EcsGUI.CloseButton(removeButtonRect))
|
if (CloseButton(removeButtonRect))
|
||||||
{
|
{
|
||||||
isRemoveComponent = true;
|
isRemoveComponent = true;
|
||||||
}
|
}
|
||||||
@ -398,7 +499,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
Rect tooltipIconRect = TooltipIconRect;
|
Rect tooltipIconRect = TooltipIconRect;
|
||||||
tooltipIconRect.center = removeButtonRect.center;
|
tooltipIconRect.center = removeButtonRect.center;
|
||||||
tooltipIconRect.center -= Vector2.right * tooltipIconRect.width;
|
tooltipIconRect.center -= Vector2.right * tooltipIconRect.width;
|
||||||
EcsGUI.DescriptionIcon(tooltipIconRect, meta.Description.Text);
|
DescriptionIcon(tooltipIconRect, meta.Description.Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
GUILayout.EndVertical();
|
GUILayout.EndVertical();
|
||||||
@ -410,7 +511,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
outData = data;
|
outData = data;
|
||||||
Type type = data == null ? typeof(void) : data.GetType();
|
Type type = data == null ? typeof(void) : data.GetType();
|
||||||
|
|
||||||
bool isUnityObject = typeof(UnityEngine.Object).IsAssignableFrom(fieldType);
|
bool isUnityObject = typeof(UnityObject).IsAssignableFrom(fieldType);
|
||||||
|
|
||||||
if (isUnityObject == false && data == null)
|
if (isUnityObject == false && data == null)
|
||||||
{
|
{
|
||||||
@ -447,12 +548,12 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
if (isUnityObject)
|
if (isUnityObject)
|
||||||
{
|
{
|
||||||
EditorGUI.BeginChangeCheck();
|
EditorGUI.BeginChangeCheck();
|
||||||
var uobj = (UnityEngine.Object)data;
|
var uobj = (UnityObject)data;
|
||||||
|
|
||||||
bool isComponent = (typeof(UnityEngine.Component)).IsAssignableFrom(fieldType);
|
bool isComponent = typeof(UnityComponent).IsAssignableFrom(fieldType);
|
||||||
if (isComponent)
|
if (isComponent)
|
||||||
{
|
{
|
||||||
uobj = EditorGUILayout.ObjectField(label, uobj, typeof(UnityEngine.Object), true);
|
uobj = EditorGUILayout.ObjectField(label, uobj, typeof(UnityObject), true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4,5 +4,6 @@
|
|||||||
{
|
{
|
||||||
public const float COMPONENT_DRAWER_ALPHA = 0.26f;
|
public const float COMPONENT_DRAWER_ALPHA = 0.26f;
|
||||||
public const float COMPONENT_DRAWER_DESATURATE = 0.86f;
|
public const float COMPONENT_DRAWER_DESATURATE = 0.86f;
|
||||||
|
public const int AUTO_COLOR_RAINBOW_MIN_RANGE = 7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ namespace DCFApixels.DragonECS.Unity.Internal
|
|||||||
{
|
{
|
||||||
internal static class RectUtility
|
internal static class RectUtility
|
||||||
{
|
{
|
||||||
public static (Rect, Rect) HorizontalSliceLerp(Rect rect, float t)
|
public static (Rect, Rect) HorizontalSliceLerp(in this Rect rect, float t)
|
||||||
{
|
{
|
||||||
Rect l = rect;
|
Rect l = rect;
|
||||||
Rect r = rect;
|
Rect r = rect;
|
||||||
@ -12,7 +12,7 @@ namespace DCFApixels.DragonECS.Unity.Internal
|
|||||||
r.xMin += rect.width * t;
|
r.xMin += rect.width * t;
|
||||||
return (l, r);
|
return (l, r);
|
||||||
}
|
}
|
||||||
public static (Rect, Rect) HorizontalSliceLeft(Rect rect, float with)
|
public static (Rect, Rect) HorizontalSliceLeft(in this Rect rect, float with)
|
||||||
{
|
{
|
||||||
Rect l = rect;
|
Rect l = rect;
|
||||||
Rect r = rect;
|
Rect r = rect;
|
||||||
@ -20,7 +20,7 @@ namespace DCFApixels.DragonECS.Unity.Internal
|
|||||||
r.xMin += with;
|
r.xMin += with;
|
||||||
return (l, r);
|
return (l, r);
|
||||||
}
|
}
|
||||||
public static (Rect, Rect) HorizontalSliceRight(Rect rect, float with)
|
public static (Rect, Rect) HorizontalSliceRight(in this Rect rect, float with)
|
||||||
{
|
{
|
||||||
Rect l = rect;
|
Rect l = rect;
|
||||||
Rect r = rect;
|
Rect r = rect;
|
||||||
@ -29,7 +29,7 @@ namespace DCFApixels.DragonECS.Unity.Internal
|
|||||||
return (l, r);
|
return (l, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static (Rect, Rect) VerticalSliceTop(Rect rect, float height)
|
public static (Rect, Rect) VerticalSliceTop(in this Rect rect, float height)
|
||||||
{
|
{
|
||||||
Rect t = rect;
|
Rect t = rect;
|
||||||
Rect b = rect;
|
Rect b = rect;
|
||||||
@ -37,7 +37,7 @@ namespace DCFApixels.DragonECS.Unity.Internal
|
|||||||
b.yMin += height;
|
b.yMin += height;
|
||||||
return (t, b);
|
return (t, b);
|
||||||
}
|
}
|
||||||
public static (Rect, Rect) VerticalSliceBottom(Rect rect, float height)
|
public static (Rect, Rect) VerticalSliceBottom(in this Rect rect, float height)
|
||||||
{
|
{
|
||||||
Rect t = rect;
|
Rect t = rect;
|
||||||
Rect b = rect;
|
Rect b = rect;
|
||||||
@ -46,28 +46,30 @@ namespace DCFApixels.DragonECS.Unity.Internal
|
|||||||
return (t, b);
|
return (t, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Rect AddPadding(Rect rect, float verticalHorizontal)
|
public static Rect AddPadding(in this Rect rect, float verticalHorizontal)
|
||||||
{
|
{
|
||||||
return AddPadding(rect, verticalHorizontal, verticalHorizontal, verticalHorizontal, verticalHorizontal);
|
return AddPadding(rect, verticalHorizontal, verticalHorizontal, verticalHorizontal, verticalHorizontal);
|
||||||
}
|
}
|
||||||
public static Rect AddPadding(Rect rect, float horizontal, float vertical)
|
public static Rect AddPadding(in this Rect rect, float horizontal, float vertical)
|
||||||
{
|
{
|
||||||
return AddPadding(rect, horizontal, horizontal, vertical, vertical);
|
return AddPadding(rect, horizontal, horizontal, vertical, vertical);
|
||||||
}
|
}
|
||||||
public static Rect AddPadding(Rect rect, float left, float right, float top, float bottom)
|
public static Rect AddPadding(in this Rect rect, float left, float right, float top, float bottom)
|
||||||
{
|
{
|
||||||
rect.xMin += left;
|
Rect result = rect;
|
||||||
rect.xMax -= right;
|
result.xMin += left;
|
||||||
rect.yMin += top;
|
result.xMax -= right;
|
||||||
rect.yMax -= bottom;
|
result.yMin += top;
|
||||||
|
result.yMax -= bottom;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public static Rect Move(in this Rect rect, Vector2 addVector)
|
||||||
|
{
|
||||||
|
Rect result = rect;
|
||||||
|
result.center += addVector;
|
||||||
return rect;
|
return rect;
|
||||||
}
|
}
|
||||||
public static Rect Move(Rect rect, Vector2 addVector)
|
public static Rect Move(in this Rect rect, float addX, float addY)
|
||||||
{
|
|
||||||
rect.center += addVector;
|
|
||||||
return rect;
|
|
||||||
}
|
|
||||||
public static Rect Move(Rect rect, float addX, float addY)
|
|
||||||
{
|
{
|
||||||
return Move(rect, new Vector2(addX, addY));
|
return Move(rect, new Vector2(addX, addY));
|
||||||
}
|
}
|
||||||
|