diff --git a/Ragon/Sources/Entity/Entity.cs b/Ragon/Sources/Entity/Entity.cs index 061a275..7180aed 100644 --- a/Ragon/Sources/Entity/Entity.cs +++ b/Ragon/Sources/Entity/Entity.cs @@ -10,6 +10,7 @@ public class Entity public ushort EntityType { get; private set; } public RagonAuthority Authority { get; private set; } public EntityState State { get; private set; } + public EntityState Payload { get; private set; } public Entity(uint ownerId, ushort entityType, RagonAuthority stateAuthority, RagonAuthority eventAuthority) { @@ -17,6 +18,7 @@ public class Entity EntityType = entityType; EntityId = _idGenerator++; State = new EntityState(stateAuthority); + Payload = new EntityState(stateAuthority); Authority = eventAuthority; } } \ No newline at end of file diff --git a/Ragon/Sources/Entity/EntityState.cs b/Ragon/Sources/Entity/EntityState.cs index ab2a011..fa1d849 100644 --- a/Ragon/Sources/Entity/EntityState.cs +++ b/Ragon/Sources/Entity/EntityState.cs @@ -8,27 +8,31 @@ public class EntityState { public bool isDirty { get; private set; } public RagonAuthority Authority { get; private set; } - - public byte[] Data - { - get => _data; - set - { - _data = value; - isDirty = true; - } - } - - private byte[] _data = Array.Empty(); + public int Size => _size; + + private int _size = 0; + private byte[] _data = new byte[2048]; public EntityState(RagonAuthority ragonAuthority) { Authority = ragonAuthority; - isDirty = true; + isDirty = false; } - public void Clear() + public ReadOnlySpan Read() { + return _data.AsSpan().Slice(0, _size); + } + + public void Write(ref ReadOnlySpan src) + { + src.CopyTo(_data); + _size = src.Length; isDirty = true; } + + public void Clear() + { + isDirty = false; + } } \ No newline at end of file