fix(core): Fixes generic persistence (#544)

- [X] Fixes generic persistence, making the API for writing from a static class much easier.

Example:
```cs
namespace Server
{
    public static class ExampleSystem
    {
        public static void Configure()
        {
            GenericPersistence.Register("ExampleSystem", Serialize, Deserialize);
        }
        
        public static void Serialize(IGenericWriter writer)
        {
            // Do serialization here
            writer.WriteEncodedInt(0); // version
        }

        public static void Deserialize(IGenericReader reader)
        {
            // Do deserialization here
            var version = reader.ReadEncodedInt();
        }
    }
}
```
This commit is contained in:
Kamron Batman 2021-03-09 23:41:54 -08:00 • committed by GitHub
parent 3c88331607
commit 432f8d2b70
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 56 additions and 25 deletions

View file

@ -276,10 +276,12 @@ namespace Server
private static void SerializeTo(this ISerializable entity, IGenericWriter writer)
{
var saveBuffer = entity.SaveBuffer;
writer.Write(saveBuffer.Buffer.AsSpan(0, (int)saveBuffer.Position));
// Resize to exact buffer size
entity.SaveBuffer.Resize((int)entity.SaveBuffer.Position);
// Resize to the exact size
saveBuffer.Resize((int)saveBuffer.Position);
// Write that amount
writer.Write(saveBuffer.Buffer);
}
}
}