From bddb71faf12c3fdd04f3ea4ebf8a1401f9ae0505 Mon Sep 17 00:00:00 2001 From: DCFApixels <99481254+DCFApixels@users.noreply.github.com> Date: Fri, 6 Dec 2024 19:41:09 +0800 Subject: [PATCH] rework EcsWorldProvider.BuildWorld --- src/Buildin/EcsDefaultWorldProvider.cs | 5 ++++- src/Buildin/EcsDefaultWorldSingletonProvider.cs | 1 + src/Buildin/EcsWorldProvider.cs | 5 ++++- src/Connectors/EcsWorldProvider.cs | 15 ++++++++------- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/Buildin/EcsDefaultWorldProvider.cs b/src/Buildin/EcsDefaultWorldProvider.cs index dcd6b34..4892e3f 100644 --- a/src/Buildin/EcsDefaultWorldProvider.cs +++ b/src/Buildin/EcsDefaultWorldProvider.cs @@ -3,5 +3,8 @@ namespace DCFApixels.DragonECS { [CreateAssetMenu(fileName = nameof(EcsDefaultWorldProvider), menuName = EcsConsts.FRAMEWORK_NAME + "/WorldProviders/" + nameof(EcsDefaultWorldProvider), order = 1)] - public class EcsDefaultWorldProvider : EcsWorldProvider { } + public class EcsDefaultWorldProvider : EcsWorldProvider + { + protected override EcsDefaultWorld BuildWorld(ConfigContainer configs) { return new EcsDefaultWorld(configs, WorldID); } + } } diff --git a/src/Buildin/EcsDefaultWorldSingletonProvider.cs b/src/Buildin/EcsDefaultWorldSingletonProvider.cs index cccf86b..fbd0b25 100644 --- a/src/Buildin/EcsDefaultWorldSingletonProvider.cs +++ b/src/Buildin/EcsDefaultWorldSingletonProvider.cs @@ -14,5 +14,6 @@ return _instance; } } + protected override EcsDefaultWorld BuildWorld(ConfigContainer configs) { return new EcsDefaultWorld(configs, WorldID); } } } diff --git a/src/Buildin/EcsWorldProvider.cs b/src/Buildin/EcsWorldProvider.cs index bf6d06f..45e2735 100644 --- a/src/Buildin/EcsWorldProvider.cs +++ b/src/Buildin/EcsWorldProvider.cs @@ -3,5 +3,8 @@ namespace DCFApixels.DragonECS { [CreateAssetMenu(fileName = nameof(EcsWorldProvider), menuName = EcsConsts.FRAMEWORK_NAME + "/WorldProviders/" + nameof(EcsWorldProvider), order = 1)] - public class EcsWorldProvider : EcsWorldProvider { } + public class EcsWorldProvider : EcsWorldProvider + { + protected override EcsWorld BuildWorld(ConfigContainer configs) { return new EcsWorld(configs, WorldID); } + } } diff --git a/src/Connectors/EcsWorldProvider.cs b/src/Connectors/EcsWorldProvider.cs index c9623a8..480291d 100644 --- a/src/Connectors/EcsWorldProvider.cs +++ b/src/Connectors/EcsWorldProvider.cs @@ -46,6 +46,10 @@ namespace DCFApixels.DragonECS { get { return _world == null; } } + public short WorldID + { + get { return _worldID; } + } public int EntitiesCapacity { get { return _entitiesCapacity; } @@ -89,7 +93,9 @@ namespace DCFApixels.DragonECS { if (_world == null || _world.IsDestroyed) { - Set(BuildWorld()); + EcsWorldConfig config = new EcsWorldConfig(_entitiesCapacity, _groupCapacity, _poolsCapacity, _poolComponentsCapacity, _poolRecycledComponentsCapacity); + ConfigContainer configs = new ConfigContainer().Set(config); + Set(BuildWorld(configs)); OnWorldCreated(_world); } return _world; @@ -119,12 +125,7 @@ namespace DCFApixels.DragonECS #endregion #region Events - protected virtual TWorld BuildWorld() - { - EcsWorldConfig config = new EcsWorldConfig(_entitiesCapacity, _groupCapacity, _poolsCapacity, _poolComponentsCapacity, _poolRecycledComponentsCapacity); - ConfigContainer configs = new ConfigContainer().Set(config); - return (TWorld)Activator.CreateInstance(typeof(TWorld), new object[] { configs, _worldID }); - } + protected abstract TWorld BuildWorld(ConfigContainer configs); protected virtual void OnWorldCreated(TWorld world) { } #endregion }