feat: added spawn payload in snapshot, reduce allocations in entity state
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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<byte>();
|
||||
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<byte> Read()
|
||||
{
|
||||
return _data.AsSpan().Slice(0, _size);
|
||||
}
|
||||
|
||||
public void Write(ref ReadOnlySpan<byte> src)
|
||||
{
|
||||
src.CopyTo(_data);
|
||||
_size = src.Length;
|
||||
isDirty = true;
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
isDirty = false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user