From 7b31c7d0ba757a173966e88afd8497335383cb71 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sun, 10 Mar 2024 19:23:05 +0800 Subject: [PATCH] update --- src/Connectors/EcsEntityConnect.cs | 7 +++++++ src/Connectors/UnityGameObjectConnect.cs | 22 +++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/Connectors/EcsEntityConnect.cs b/src/Connectors/EcsEntityConnect.cs index 3fab46f..0f08c57 100644 --- a/src/Connectors/EcsEntityConnect.cs +++ b/src/Connectors/EcsEntityConnect.cs @@ -147,6 +147,13 @@ namespace DCFApixels.DragonECS } #endregion + #region UnityEvents + private void OnDestroy() + { + Disconnect(); + } + #endregion + #region Editor #if UNITY_EDITOR [ContextMenu("Autoset")] diff --git a/src/Connectors/UnityGameObjectConnect.cs b/src/Connectors/UnityGameObjectConnect.cs index be3fdeb..e92b602 100644 --- a/src/Connectors/UnityGameObjectConnect.cs +++ b/src/Connectors/UnityGameObjectConnect.cs @@ -7,7 +7,7 @@ using UnityEditor; namespace DCFApixels.DragonECS { [MetaColor(MetaColor.Cyan)] - public readonly struct UnityGameObjectConnect : IEcsComponent + public readonly struct UnityGameObjectConnect : IEcsComponent, IEcsComponentLifecycle { public readonly EcsEntityConnect connect; public readonly Transform transform; @@ -16,21 +16,29 @@ namespace DCFApixels.DragonECS [MethodImpl(MethodImplOptions.AggressiveInlining)] get { return connect.name; } } - public bool IsUnidirectional - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get { return connect == null; } - } public bool IsConnected { [MethodImpl(MethodImplOptions.AggressiveInlining)] - get { return transform != null; } + get { return connect != null; } } internal UnityGameObjectConnect(EcsEntityConnect connect) { this.connect = connect; transform = connect.transform; } + + void IEcsComponentLifecycle.Enable(ref UnityGameObjectConnect component) + { + component = default; + } + void IEcsComponentLifecycle.Disable(ref UnityGameObjectConnect component) + { + if (component.connect != null) + { + component.connect.Disconnect(); + } + component = default; + } } public enum GameObjectIcon : byte