From c865955e8bab5259b0a0c0fb092e83f2db8e321c Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sun, 10 Mar 2024 09:50:20 +0800 Subject: [PATCH] update connect --- ...ameObject.cs => UnityGameObjectConnect.cs} | 16 ++++------ ...cs.meta => UnityGameObjectConnect.cs.meta} | 0 src/Connectors/AutoEntityCreator.cs | 3 +- src/Connectors/EcsEntityConnect.cs | 32 ++++++++----------- 4 files changed, 22 insertions(+), 29 deletions(-) rename src/Buildin/{UnityGameObject.cs => UnityGameObjectConnect.cs} (87%) rename src/Buildin/{UnityGameObject.cs.meta => UnityGameObjectConnect.cs.meta} (100%) diff --git a/src/Buildin/UnityGameObject.cs b/src/Buildin/UnityGameObjectConnect.cs similarity index 87% rename from src/Buildin/UnityGameObject.cs rename to src/Buildin/UnityGameObjectConnect.cs index be8159c..8b96b2a 100644 --- a/src/Buildin/UnityGameObject.cs +++ b/src/Buildin/UnityGameObjectConnect.cs @@ -7,21 +7,19 @@ using UnityEditor; namespace DCFApixels.DragonECS { [MetaColor(MetaColor.Cyan)] - public readonly struct UnityGameObject : IEcsComponent + public readonly struct UnityGameObjectConnect : IEcsComponent { - public readonly GameObject gameObject; + public readonly EcsEntityConnect connect; public readonly Transform transform; - public string Name { [MethodImpl(MethodImplOptions.AggressiveInlining)] - get => gameObject.name; + get => connect.name; } - - public UnityGameObject(GameObject gameObject) + public UnityGameObjectConnect(EcsEntityConnect connect) { - this.gameObject = gameObject; - transform = gameObject.transform; + this.connect = connect; + transform = connect.transform; } } @@ -64,7 +62,7 @@ namespace DCFApixels.DragonECS { entlong result = self.NewEntityLong(); GameObject newGameObject = new GameObject(name); - newGameObject.AddComponent().ConnectWith(result); + newGameObject.AddComponent().ConnectWith(result, false); #if UNITY_EDITOR if (icon != GameObjectIcon.NONE) { diff --git a/src/Buildin/UnityGameObject.cs.meta b/src/Buildin/UnityGameObjectConnect.cs.meta similarity index 100% rename from src/Buildin/UnityGameObject.cs.meta rename to src/Buildin/UnityGameObjectConnect.cs.meta diff --git a/src/Connectors/AutoEntityCreator.cs b/src/Connectors/AutoEntityCreator.cs index 86db544..90d3945 100644 --- a/src/Connectors/AutoEntityCreator.cs +++ b/src/Connectors/AutoEntityCreator.cs @@ -58,8 +58,7 @@ namespace DCFApixels.DragonECS } private void InitConnect(EcsEntityConnect connect, EcsWorld world) { - connect.ConnectWith(world.NewEntityLong()); - connect.ApplyTemplates(); + connect.ConnectWith(world.NewEntityLong(), true); } #endregion diff --git a/src/Connectors/EcsEntityConnect.cs b/src/Connectors/EcsEntityConnect.cs index 895b867..cc48f06 100644 --- a/src/Connectors/EcsEntityConnect.cs +++ b/src/Connectors/EcsEntityConnect.cs @@ -11,10 +11,10 @@ namespace DCFApixels.DragonECS { private sealed class Aspect : EcsAspect { - public EcsPool unityGameObjects; + public EcsPool unityGameObjects; protected override void Init(Builder b) { - unityGameObjects = b.Include(); + unityGameObjects = b.Include(); } } @@ -35,12 +35,12 @@ namespace DCFApixels.DragonECS public EcsWorld World { [MethodImpl(MethodImplOptions.AggressiveInlining)] - get => _world; + get { return _world; } } public bool IsConected { [MethodImpl(MethodImplOptions.AggressiveInlining)] - get => _entity.IsAlive; + get { return _entity.IsAlive; } } public IEnumerable ScriptableTemplates { @@ -57,7 +57,7 @@ namespace DCFApixels.DragonECS #endregion #region Connect - public void ConnectWith(entlong entity, bool applyTemplates = false) + public void ConnectWith(entlong entity, bool applyTemplates) { if (_entity.TryGetID(out int oldEntityID) && _world != null) { @@ -66,18 +66,18 @@ namespace DCFApixels.DragonECS } _world = null; - if (entity.TryGetID(out int newEntityID)) + if (entity.TryUnpack(out int newEntityID, out EcsWorld world)) { _entity = entity; - _world = _entity.World; + _world = world; var a = _world.GetAspect(); - if (!a.unityGameObjects.Has(newEntityID)) + if (a.unityGameObjects.Has(newEntityID) == false) { - a.unityGameObjects.Add(newEntityID) = new UnityGameObject(gameObject); + a.unityGameObjects.Add(newEntityID) = new UnityGameObjectConnect(this); } if (applyTemplates) { - ApplyTemplates(); + ApplyTemplatesFor(world.id, newEntityID); } } else @@ -88,19 +88,15 @@ namespace DCFApixels.DragonECS #endregion #region ApplyTemplates - public void ApplyTemplates() - { - ApplyTemplatesFor(_entity.ID); - } - public void ApplyTemplatesFor(int entityID) + public void ApplyTemplatesFor(short worldID, int entityID) { foreach (var template in _scriptableTemplates) { - template.Apply(_world.id, entityID); + template.Apply(worldID, entityID); } foreach (var template in _monoTemplates) { - template.Apply(_world.id, entityID); + template.Apply(worldID, entityID); } } #endregion @@ -123,7 +119,7 @@ namespace DCFApixels.DragonECS [ContextMenu("Unlink Entity")] internal void UnlinkEntity_Editor() { - ConnectWith(entlong.NULL); + ConnectWith(entlong.NULL, false); } [ContextMenu("Delete Entity")] internal void DeleteEntity_Editor()