From b86bfeff1acabdb180bb9416e5236046c23ad8d3 Mon Sep 17 00:00:00 2001 From: DCFApixels <99481254+DCFApixels@users.noreply.github.com> Date: Tue, 18 Mar 2025 16:51:36 +0800 Subject: [PATCH] stash --- src/Internal/Editor/MetaObjectsDropDown.cs | 2 +- src/Internal/Editor/UnityEditorUtility.cs | 6 +- .../Templates/ComponentTemplateBase.cs | 3 +- src/Tools/ComponentTamplateGenerator.meta | 8 ++ .../CodeTemplates.meta | 8 ++ .../CodeTemplates/ComponentTemplate.txt | 7 ++ .../CodeTemplates/ComponentTemplate.txt.meta | 7 ++ .../CodeTemplates/TagComponentTemplate.txt | 7 ++ .../TagComponentTemplate.txt.meta | 7 ++ .../ComponentTamplateGenerator/Generator.cs | 73 +++++++++++++++++++ .../Generator.cs.meta | 11 +++ .../RefRepairer/Editor/MetaIDRegistry.cs | 2 +- 12 files changed, 134 insertions(+), 7 deletions(-) create mode 100644 src/Tools/ComponentTamplateGenerator.meta create mode 100644 src/Tools/ComponentTamplateGenerator/CodeTemplates.meta create mode 100644 src/Tools/ComponentTamplateGenerator/CodeTemplates/ComponentTemplate.txt create mode 100644 src/Tools/ComponentTamplateGenerator/CodeTemplates/ComponentTemplate.txt.meta create mode 100644 src/Tools/ComponentTamplateGenerator/CodeTemplates/TagComponentTemplate.txt create mode 100644 src/Tools/ComponentTamplateGenerator/CodeTemplates/TagComponentTemplate.txt.meta create mode 100644 src/Tools/ComponentTamplateGenerator/Generator.cs create mode 100644 src/Tools/ComponentTamplateGenerator/Generator.cs.meta diff --git a/src/Internal/Editor/MetaObjectsDropDown.cs b/src/Internal/Editor/MetaObjectsDropDown.cs index e78c69f..1ff5ffb 100644 --- a/src/Internal/Editor/MetaObjectsDropDown.cs +++ b/src/Internal/Editor/MetaObjectsDropDown.cs @@ -100,7 +100,7 @@ namespace DCFApixels.DragonECS.Unity.Editors IEnumerable<(IComponentTemplate template, ITypeMeta meta)> itemMetaPairs = ComponentTemplateTypeCache.Dummies.ToArray().Select(dummy => { ITypeMeta meta; - if (dummy is IComponentTemplateWithMetaOverride withMetaOverride) + if (dummy is ITypeMeta withMetaOverride) { meta = withMetaOverride; } diff --git a/src/Internal/Editor/UnityEditorUtility.cs b/src/Internal/Editor/UnityEditorUtility.cs index 8b29d2d..0e6536f 100644 --- a/src/Internal/Editor/UnityEditorUtility.cs +++ b/src/Internal/Editor/UnityEditorUtility.cs @@ -141,12 +141,12 @@ namespace DCFApixels.DragonECS.Unity.Editors } _serializableTypes = serializableTypes.ToArray(); _entityEditorBlockDrawers = entityEditorBlockDrawers.ToArray(); - _serializableTypeWithMetaIDMetas = serializableTypes + _serializableTypeWithMetaIDs = serializableTypes .Where(TypeMeta.IsHasMetaID) .Select(type => type.ToMeta()) .ToArray(); - foreach (var item in _serializableTypeWithMetaIDMetas) + foreach (var item in _serializableTypeWithMetaIDs) { _metaIDTypePairs[item.MetaID] = item.Type; } @@ -161,7 +161,7 @@ namespace DCFApixels.DragonECS.Unity.Editors internal static readonly Assembly _integrationAssembly; internal static readonly Type[] _serializableTypes; internal static readonly EntityEditorBlockDrawer[] _entityEditorBlockDrawers; - internal static readonly TypeMeta[] _serializableTypeWithMetaIDMetas; + internal static readonly TypeMeta[] _serializableTypeWithMetaIDs; private static readonly Dictionary _metaIDTypePairs = new Dictionary(); public static bool TryGetTypeForMetaID(string metaID, out Type type) diff --git a/src/Templates/EntityTemplate/Templates/ComponentTemplateBase.cs b/src/Templates/EntityTemplate/Templates/ComponentTemplateBase.cs index 7c0e3ca..432fcc1 100644 --- a/src/Templates/EntityTemplate/Templates/ComponentTemplateBase.cs +++ b/src/Templates/EntityTemplate/Templates/ComponentTemplateBase.cs @@ -32,10 +32,9 @@ namespace DCFApixels.DragonECS Selected } } - public interface IComponentTemplateWithMetaOverride : IComponentTemplate, ITypeMeta { } [Serializable] - public abstract class ComponentTemplateBase : IComponentTemplateWithMetaOverride + public abstract class ComponentTemplateBase : IComponentTemplate, ITypeMeta { #region Properties public abstract Type Type { get; } diff --git a/src/Tools/ComponentTamplateGenerator.meta b/src/Tools/ComponentTamplateGenerator.meta new file mode 100644 index 0000000..de5835c --- /dev/null +++ b/src/Tools/ComponentTamplateGenerator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8935338c08d47e745ad09f788caea516 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Tools/ComponentTamplateGenerator/CodeTemplates.meta b/src/Tools/ComponentTamplateGenerator/CodeTemplates.meta new file mode 100644 index 0000000..1e90303 --- /dev/null +++ b/src/Tools/ComponentTamplateGenerator/CodeTemplates.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cadcdafa2e78b9c4c90de49ae46c973e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Tools/ComponentTamplateGenerator/CodeTemplates/ComponentTemplate.txt b/src/Tools/ComponentTamplateGenerator/CodeTemplates/ComponentTemplate.txt new file mode 100644 index 0000000..6b68494 --- /dev/null +++ b/src/Tools/ComponentTamplateGenerator/CodeTemplates/ComponentTemplate.txt @@ -0,0 +1,7 @@ +namespace DCFApixels.DragonECS.Unity.Generated +{ + [MetaTags(MetaTags.HIDDEN)] + [MetaGroup("")] + [MetaName(#NAME#)] + internal class Template_#GUID# : ComponentTemplate<#TYPE_NAMESPACE#.#TYPE#> { } +} \ No newline at end of file diff --git a/src/Tools/ComponentTamplateGenerator/CodeTemplates/ComponentTemplate.txt.meta b/src/Tools/ComponentTamplateGenerator/CodeTemplates/ComponentTemplate.txt.meta new file mode 100644 index 0000000..5793ce4 --- /dev/null +++ b/src/Tools/ComponentTamplateGenerator/CodeTemplates/ComponentTemplate.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9abfee9812ed09d4b91226c59c299a29 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Tools/ComponentTamplateGenerator/CodeTemplates/TagComponentTemplate.txt b/src/Tools/ComponentTamplateGenerator/CodeTemplates/TagComponentTemplate.txt new file mode 100644 index 0000000..22ef82b --- /dev/null +++ b/src/Tools/ComponentTamplateGenerator/CodeTemplates/TagComponentTemplate.txt @@ -0,0 +1,7 @@ +namespace DCFApixels.DragonECS.Unity.Generated +{ + [MetaTags(MetaTags.HIDDEN)] + [MetaGroup("")] + [MetaName(#NAME#)] + internal class Template_#GUID# : TagComponentTemplate<#TYPE_NAMESPACE#.#TYPE#> { } +} \ No newline at end of file diff --git a/src/Tools/ComponentTamplateGenerator/CodeTemplates/TagComponentTemplate.txt.meta b/src/Tools/ComponentTamplateGenerator/CodeTemplates/TagComponentTemplate.txt.meta new file mode 100644 index 0000000..9f8a68b --- /dev/null +++ b/src/Tools/ComponentTamplateGenerator/CodeTemplates/TagComponentTemplate.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7d6b6bbb28b605a4bacbef5a07af3f16 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Tools/ComponentTamplateGenerator/Generator.cs b/src/Tools/ComponentTamplateGenerator/Generator.cs new file mode 100644 index 0000000..1238c99 --- /dev/null +++ b/src/Tools/ComponentTamplateGenerator/Generator.cs @@ -0,0 +1,73 @@ +#if UNITY_EDITOR +using DCFApixels.DragonECS; +using DCFApixels.DragonECS.Unity; +using DCFApixels.DragonECS.Unity.Editors; +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEditor.Compilation; +using UnityEngine; + +namespace DCFApixels.DragonECS.Unity.Editors +{ + internal static class Generator + { + private const string PATH = "Assets/Generated/" + EcsUnityConsts.UNITY_PACKAGE_NAME; + + + [InitializeOnLoadMethod] + public static void OnLoad() + { + CompilationPipeline.compilationStarted -= CompilationPipeline_compilationStarted; + CompilationPipeline.compilationStarted += CompilationPipeline_compilationStarted; + CompilationPipeline.compilationFinished -= CompilationPipeline_compilationFinished; + CompilationPipeline.compilationFinished += CompilationPipeline_compilationFinished; + } + + private static void CompilationPipeline_compilationStarted(object obj) + { + Debug.Log("compilationStarted"); + } + private static void CompilationPipeline_compilationFinished(object obj) + { + Debug.Log("compilationFinished"); + } + + + + private static void OnCompilationFinished(object obj) + { + if (EditorUtility.scriptCompilationFailed) + { + CleanupFail(); + } + + + var componentMetas = UnityEditorUtility._serializableTypeWithMetaIDs.Where(o => o.IsComponent); + } + + private static void CleanupFail() + { + var guids = FindGeneratedAssets(); + } + private static string[] FindGeneratedAssets() + { + string[] guids = AssetDatabase.FindAssets($" t:MonoScript", new[] { PATH }); + return guids; + } + + + + + + private static void Generate(IEnumerable types) + { + + } + + + + } +} +#endif \ No newline at end of file diff --git a/src/Tools/ComponentTamplateGenerator/Generator.cs.meta b/src/Tools/ComponentTamplateGenerator/Generator.cs.meta new file mode 100644 index 0000000..040e876 --- /dev/null +++ b/src/Tools/ComponentTamplateGenerator/Generator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b862679ef65a6f24ab1ac3cba1fc9b46 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Tools/RefRepairer/Editor/MetaIDRegistry.cs b/src/Tools/RefRepairer/Editor/MetaIDRegistry.cs index a107a8f..13696f7 100644 --- a/src/Tools/RefRepairer/Editor/MetaIDRegistry.cs +++ b/src/Tools/RefRepairer/Editor/MetaIDRegistry.cs @@ -55,7 +55,7 @@ namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors } private void Update() { - var typeMetas = UnityEditorUtility._serializableTypeWithMetaIDMetas; + var typeMetas = UnityEditorUtility._serializableTypeWithMetaIDs; foreach (var meta in typeMetas) { var key = new TypeData(meta.Type);