diff --git a/Assets/Scripts/EntityType.cs b/Assets/Scripts/EntityType.cs index a9fcee7..e736fbc 100644 --- a/Assets/Scripts/EntityType.cs +++ b/Assets/Scripts/EntityType.cs @@ -2,8 +2,7 @@ namespace ECSTest { public enum EntityType { - Unit, - Monster, + Cannon, Bullet, } diff --git a/Assets/Scripts/Server/WorldManager.cs b/Assets/Scripts/Server/WorldManager.cs index e5a40a2..d2beba7 100644 --- a/Assets/Scripts/Server/WorldManager.cs +++ b/Assets/Scripts/Server/WorldManager.cs @@ -4,7 +4,6 @@ namespace ECSTest.Server { public struct WorldManager { - public EntityCollection entities; - public EntityDataBlockChain chain; + public EntityDatabase bulletDatabase; } } \ No newline at end of file diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.cs.meta b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.cs.meta deleted file mode 100644 index 26e07fa..0000000 --- a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 24392c1216204b6ea64acd57bb43441b -timeCreated: 1668251924 \ No newline at end of file diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.gen.cs.meta b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.gen.cs.meta deleted file mode 100644 index 0f7795a..0000000 --- a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.gen.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: c9227b743e78463b8df770cefc98fb18 -timeCreated: 1668274486 \ No newline at end of file diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataSet.cs b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataSet.cs deleted file mode 100644 index 292f144..0000000 --- a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataSet.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using Unity.Collections; -using Unity.Mathematics; - -namespace GameCore.TinyECS -{ - public struct EntityDataSet : IDisposable - { - public void Dispose() - { - //TODO - } - } -} \ No newline at end of file diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.cs b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.cs similarity index 98% rename from LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.cs rename to LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.cs index c13670e..7fccb7f 100644 --- a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.cs +++ b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.cs @@ -13,7 +13,7 @@ namespace GameCore.TinyECS public int elementAlign; } - public unsafe struct EntityDataBlockChain : IDisposable + public unsafe struct EntityDataBlockChain : IEntityDataStruct { public readonly EntityDataBlockMeta blockMeta; private FixedList512Bytes blockPtrList; diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.cs.meta b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.cs.meta new file mode 100644 index 0000000..13c2320 --- /dev/null +++ b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b0b5bb1c56f2114ba60d9154d447872 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.gen.cs b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.gen.cs similarity index 100% rename from LocalPackages/com.nimin.tinyecs/Runtime/EntityDataBlock.gen.cs rename to LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.gen.cs diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.gen.cs.meta b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.gen.cs.meta new file mode 100644 index 0000000..c43ca48 --- /dev/null +++ b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.Block.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 747b2bec360ee8141b0b46886b09f92d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.cs b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.cs new file mode 100644 index 0000000..91311dc --- /dev/null +++ b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.cs @@ -0,0 +1,10 @@ +using System; + +namespace GameCore.TinyECS +{ + public interface IEntityDataStruct : IDisposable + { + void Add(); + void Remove(int index); + } +} \ No newline at end of file diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.cs.meta b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.cs.meta new file mode 100644 index 0000000..8a3e971 --- /dev/null +++ b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataStruct.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 933c4528e6cf415dbfb79a148896839d +timeCreated: 1765943532 \ No newline at end of file diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDatabase.cs b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDatabase.cs new file mode 100644 index 0000000..8f0e839 --- /dev/null +++ b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDatabase.cs @@ -0,0 +1,35 @@ +using System; +using Unity.Collections; +using Unity.Mathematics; + +namespace GameCore.TinyECS +{ + public struct EntityDatabase : IDisposable where TEnum : unmanaged where TData : unmanaged, IEntityDataStruct + { + public TData dataStruct; + public EntityGenerator generator; + public EntityCollection collection; + + public Entity AddEntity() + { + var entity = generator.Create(); + collection.Add(entity); + dataStruct.Add(); + return entity; + } + + public void RemoveEntity(Entity entity) + { + generator.Delete(entity); + if (collection.Remove(entity, out var index, out var _)) + dataStruct.Remove(index); + } + + public void Dispose() + { + generator.Dispose(); + collection.Dispose(); + dataStruct.Dispose(); + } + } +} \ No newline at end of file diff --git a/LocalPackages/com.nimin.tinyecs/Runtime/EntityDataSet.cs.meta b/LocalPackages/com.nimin.tinyecs/Runtime/EntityDatabase.cs.meta similarity index 100% rename from LocalPackages/com.nimin.tinyecs/Runtime/EntityDataSet.cs.meta rename to LocalPackages/com.nimin.tinyecs/Runtime/EntityDatabase.cs.meta