mirror of
https://github.com/DCFApixels/DragonECS.git
synced 2025-09-18 09:54:35 +08:00
update world constructor
This commit is contained in:
parent
e0a3d54979
commit
04691e1716
@ -305,7 +305,6 @@ namespace DCFApixels.DragonECS
|
|||||||
return obj is IEcsTypeMetaProvider intr ? intr.MetaSource : obj;
|
return obj is IEcsTypeMetaProvider intr ? intr.MetaSource : obj;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ITypeMeta
|
public interface ITypeMeta
|
||||||
|
@ -33,7 +33,7 @@ namespace DCFApixels.DragonECS
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(name))
|
if (string.IsNullOrEmpty(name))
|
||||||
{
|
{
|
||||||
Name = string.Empty;
|
Name = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
name = name.Replace('\\', '/');
|
name = name.Replace('\\', '/');
|
||||||
|
@ -8,25 +8,6 @@ namespace DCFApixels.DragonECS
|
|||||||
{
|
{
|
||||||
public partial class EcsWorld : IEntityStorage
|
public partial class EcsWorld : IEntityStorage
|
||||||
{
|
{
|
||||||
[StructLayout(LayoutKind.Explicit, Pack = 4, Size = 4 * 3)]
|
|
||||||
private struct EntitySlot
|
|
||||||
{
|
|
||||||
public static readonly EntitySlot Empty = new EntitySlot(SLEEPING_GEN_FLAG, 0, false);
|
|
||||||
[FieldOffset(0)]
|
|
||||||
public short gen;
|
|
||||||
[FieldOffset(2)]
|
|
||||||
public short componentsCount;
|
|
||||||
[FieldOffset(4)]
|
|
||||||
public bool isUsed;
|
|
||||||
//[FieldOffset(5)]
|
|
||||||
//public bool isLocked;
|
|
||||||
public EntitySlot(short gen, short componentsCount, bool isUsed)
|
|
||||||
{
|
|
||||||
this.gen = gen;
|
|
||||||
this.componentsCount = componentsCount;
|
|
||||||
this.isUsed = isUsed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public readonly short id;
|
public readonly short id;
|
||||||
private IEcsWorldConfig _config;
|
private IEcsWorldConfig _config;
|
||||||
|
|
||||||
@ -120,9 +101,14 @@ namespace DCFApixels.DragonECS
|
|||||||
{
|
{
|
||||||
config = EcsWorldConfig.Empty;
|
config = EcsWorldConfig.Empty;
|
||||||
}
|
}
|
||||||
|
bool nullWorld = this is NullWorld;
|
||||||
|
if(nullWorld == false && worldID == NULL_WORLD_ID)
|
||||||
|
{
|
||||||
|
EcsDebug.PrintWarning($"The world identifier cannot be {NULL_WORLD_ID}");
|
||||||
|
}
|
||||||
_config = config;
|
_config = config;
|
||||||
|
|
||||||
if (worldID < 0)
|
if (worldID < 0 || (worldID == NULL_WORLD_ID && nullWorld == false))
|
||||||
{
|
{
|
||||||
worldID = (short)_worldIdDispenser.UseFree();
|
worldID = (short)_worldIdDispenser.UseFree();
|
||||||
}
|
}
|
||||||
@ -686,6 +672,28 @@ namespace DCFApixels.DragonECS
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region EntitySlot
|
||||||
|
[StructLayout(LayoutKind.Explicit, Pack = 4, Size = 4 * 3)]
|
||||||
|
private struct EntitySlot
|
||||||
|
{
|
||||||
|
public static readonly EntitySlot Empty = new EntitySlot(SLEEPING_GEN_FLAG, 0, false);
|
||||||
|
[FieldOffset(0)]
|
||||||
|
public short gen;
|
||||||
|
[FieldOffset(2)]
|
||||||
|
public short componentsCount;
|
||||||
|
[FieldOffset(4)]
|
||||||
|
public bool isUsed;
|
||||||
|
//[FieldOffset(5)]
|
||||||
|
//public bool isLocked;
|
||||||
|
public EntitySlot(short gen, short componentsCount, bool isUsed)
|
||||||
|
{
|
||||||
|
this.gen = gen;
|
||||||
|
this.componentsCount = componentsCount;
|
||||||
|
this.isUsed = isUsed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Callbacks Interface
|
#region Callbacks Interface
|
||||||
|
@ -16,6 +16,8 @@ namespace DCFApixels.DragonECS
|
|||||||
}
|
}
|
||||||
public partial class EcsWorld
|
public partial class EcsWorld
|
||||||
{
|
{
|
||||||
|
private const short NULL_WORLD_ID = 0;
|
||||||
|
|
||||||
private const short GEN_MASK = 0x7fff;
|
private const short GEN_MASK = 0x7fff;
|
||||||
private const short SLEEPING_GEN_FLAG = short.MinValue;
|
private const short SLEEPING_GEN_FLAG = short.MinValue;
|
||||||
private const int DEL_ENT_BUFFER_SIZE_OFFSET = 5;
|
private const int DEL_ENT_BUFFER_SIZE_OFFSET = 5;
|
||||||
@ -29,7 +31,7 @@ namespace DCFApixels.DragonECS
|
|||||||
|
|
||||||
static EcsWorld()
|
static EcsWorld()
|
||||||
{
|
{
|
||||||
_worlds[0] = new NullWorld();
|
_worlds[NULL_WORLD_ID] = new NullWorld();
|
||||||
}
|
}
|
||||||
private static void ReleaseData(int worldID)
|
private static void ReleaseData(int worldID)
|
||||||
{
|
{
|
||||||
@ -78,8 +80,7 @@ namespace DCFApixels.DragonECS
|
|||||||
public static ref T GetForWorldUnchecked(int worldID)
|
public static ref T GetForWorldUnchecked(int worldID)
|
||||||
{
|
{
|
||||||
#if (DEBUG && !DISABLE_DEBUG)
|
#if (DEBUG && !DISABLE_DEBUG)
|
||||||
if (_mapping[worldID] <= 0)
|
if (_mapping[worldID] <= 0) { Throw.UndefinedException(); }
|
||||||
throw new Exception();
|
|
||||||
#endif
|
#endif
|
||||||
return ref _items[_mapping[worldID]];
|
return ref _items[_mapping[worldID]];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user