diff --git a/src/Templates/EntityTemplate/Templates/ComponentTemplateBase.cs b/src/Templates/EntityTemplate/Templates/ComponentTemplateBase.cs index 06450d3..7c0e3ca 100644 --- a/src/Templates/EntityTemplate/Templates/ComponentTemplateBase.cs +++ b/src/Templates/EntityTemplate/Templates/ComponentTemplateBase.cs @@ -1,6 +1,7 @@ #if DISABLE_DEBUG #undef DEBUG #endif +using DCFApixels.DragonECS.Core; using System; using System.Collections.Generic; using System.Linq; @@ -60,12 +61,29 @@ namespace DCFApixels.DragonECS [StructLayout(LayoutKind.Sequential)] public abstract class ComponentTemplateBase : ComponentTemplateBase { - protected static TypeMeta Meta = EcsDebugUtility.GetTypeMeta(); + protected static readonly TypeMeta Meta = EcsDebugUtility.GetTypeMeta(); + protected static readonly bool _isHasIEcsComponentLifecycle; + protected static readonly IEcsComponentLifecycle _iEcsComponentLifecycle; + static ComponentTemplateBase() + { + _isHasIEcsComponentLifecycle = EcsComponentLifecycleHandler.isHasHandler; + _iEcsComponentLifecycle = EcsComponentLifecycleHandler.instance; + } + private static T InitComponent() + { + T result = default; + if (_isHasIEcsComponentLifecycle) + { + _iEcsComponentLifecycle.Enable(ref result); + } + return result; + } + [SerializeField] - protected T component; + protected T component = InitComponent(); [SerializeField] [HideInInspector] - private byte _offset; // Fucking Unity drove me crazy with the error "Cannot get managed reference index with out bounds offset". This workaround helps avoid that error. + private byte _offset; // Avoids the error "Cannot get managed reference index with out bounds offset" #region Properties public sealed override ITypeMeta BaseMeta { get { return Meta; } } diff --git a/src/Templates/EcsPipelineTemplate.meta b/src/Templates/PipelineTemplate.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate.meta rename to src/Templates/PipelineTemplate.meta diff --git a/src/Templates/EcsPipelineTemplate/Editor.meta b/src/Templates/PipelineTemplate/Editor.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate/Editor.meta rename to src/Templates/PipelineTemplate/Editor.meta diff --git a/src/Templates/EcsPipelineTemplate/Editor/PipelineTemplateEditor.cs b/src/Templates/PipelineTemplate/Editor/PipelineTemplateEditor.cs similarity index 100% rename from src/Templates/EcsPipelineTemplate/Editor/PipelineTemplateEditor.cs rename to src/Templates/PipelineTemplate/Editor/PipelineTemplateEditor.cs diff --git a/src/Templates/EcsPipelineTemplate/Editor/PipelineTemplateEditor.cs.meta b/src/Templates/PipelineTemplate/Editor/PipelineTemplateEditor.cs.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate/Editor/PipelineTemplateEditor.cs.meta rename to src/Templates/PipelineTemplate/Editor/PipelineTemplateEditor.cs.meta diff --git a/src/Templates/EcsPipelineTemplate/Editor/PipelineTemplateUtilityRecordDrawer.cs b/src/Templates/PipelineTemplate/Editor/PipelineTemplateUtilityRecordDrawer.cs similarity index 100% rename from src/Templates/EcsPipelineTemplate/Editor/PipelineTemplateUtilityRecordDrawer.cs rename to src/Templates/PipelineTemplate/Editor/PipelineTemplateUtilityRecordDrawer.cs diff --git a/src/Templates/EcsPipelineTemplate/Editor/PipelineTemplateUtilityRecordDrawer.cs.meta b/src/Templates/PipelineTemplate/Editor/PipelineTemplateUtilityRecordDrawer.cs.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate/Editor/PipelineTemplateUtilityRecordDrawer.cs.meta rename to src/Templates/PipelineTemplate/Editor/PipelineTemplateUtilityRecordDrawer.cs.meta diff --git a/src/Templates/EcsPipelineTemplate/MonoBehaviourSystemWrapper.cs b/src/Templates/PipelineTemplate/MonoBehaviourSystemWrapper.cs similarity index 100% rename from src/Templates/EcsPipelineTemplate/MonoBehaviourSystemWrapper.cs rename to src/Templates/PipelineTemplate/MonoBehaviourSystemWrapper.cs diff --git a/src/Templates/EcsPipelineTemplate/MonoBehaviourSystemWrapper.cs.meta b/src/Templates/PipelineTemplate/MonoBehaviourSystemWrapper.cs.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate/MonoBehaviourSystemWrapper.cs.meta rename to src/Templates/PipelineTemplate/MonoBehaviourSystemWrapper.cs.meta diff --git a/src/Templates/EcsPipelineTemplate/PipelineTemplateUtility.cs b/src/Templates/PipelineTemplate/PipelineTemplateUtility.cs similarity index 100% rename from src/Templates/EcsPipelineTemplate/PipelineTemplateUtility.cs rename to src/Templates/PipelineTemplate/PipelineTemplateUtility.cs diff --git a/src/Templates/EcsPipelineTemplate/PipelineTemplateUtility.cs.meta b/src/Templates/PipelineTemplate/PipelineTemplateUtility.cs.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate/PipelineTemplateUtility.cs.meta rename to src/Templates/PipelineTemplate/PipelineTemplateUtility.cs.meta diff --git a/src/Templates/EcsPipelineTemplate/ScriptableObjectSystemWrapper.cs b/src/Templates/PipelineTemplate/ScriptableObjectSystemWrapper.cs similarity index 100% rename from src/Templates/EcsPipelineTemplate/ScriptableObjectSystemWrapper.cs rename to src/Templates/PipelineTemplate/ScriptableObjectSystemWrapper.cs diff --git a/src/Templates/EcsPipelineTemplate/ScriptableObjectSystemWrapper.cs.meta b/src/Templates/PipelineTemplate/ScriptableObjectSystemWrapper.cs.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate/ScriptableObjectSystemWrapper.cs.meta rename to src/Templates/PipelineTemplate/ScriptableObjectSystemWrapper.cs.meta diff --git a/src/Templates/EcsPipelineTemplate/Templates.meta b/src/Templates/PipelineTemplate/Templates.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate/Templates.meta rename to src/Templates/PipelineTemplate/Templates.meta diff --git a/src/Templates/EcsPipelineTemplate/Templates/MonoPipelineTemplate.cs b/src/Templates/PipelineTemplate/Templates/MonoPipelineTemplate.cs similarity index 100% rename from src/Templates/EcsPipelineTemplate/Templates/MonoPipelineTemplate.cs rename to src/Templates/PipelineTemplate/Templates/MonoPipelineTemplate.cs diff --git a/src/Templates/EcsPipelineTemplate/Templates/MonoPipelineTemplate.cs.meta b/src/Templates/PipelineTemplate/Templates/MonoPipelineTemplate.cs.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate/Templates/MonoPipelineTemplate.cs.meta rename to src/Templates/PipelineTemplate/Templates/MonoPipelineTemplate.cs.meta diff --git a/src/Templates/EcsPipelineTemplate/Templates/ScriptablePipelineTemplate.cs b/src/Templates/PipelineTemplate/Templates/ScriptablePipelineTemplate.cs similarity index 100% rename from src/Templates/EcsPipelineTemplate/Templates/ScriptablePipelineTemplate.cs rename to src/Templates/PipelineTemplate/Templates/ScriptablePipelineTemplate.cs diff --git a/src/Templates/EcsPipelineTemplate/Templates/ScriptablePipelineTemplate.cs.meta b/src/Templates/PipelineTemplate/Templates/ScriptablePipelineTemplate.cs.meta similarity index 100% rename from src/Templates/EcsPipelineTemplate/Templates/ScriptablePipelineTemplate.cs.meta rename to src/Templates/PipelineTemplate/Templates/ScriptablePipelineTemplate.cs.meta