https://github.com/simulation-tree/data-systems
https://github.com/simulation-tree/data-systems
csharp dotnet
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/simulation-tree/data-systems
- Owner: simulation-tree
- Created: 2024-07-04T22:52:28.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-09-24T03:03:50.000Z (9 months ago)
- Last Synced: 2025-10-27T09:41:37.956Z (8 months ago)
- Topics: csharp, dotnet
- Language: C#
- Size: 87.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Data Systems
Implements the `data` project with a system that loads data from various sources.
### Loading from an entity
```cs
DataSource source = new(world, "fileA");
source.WriteUTF8("Some data here!");
DataRequest request = new(world, "fileA");
simulator.Update();
using ByteReader reader = new(request.CreateByteReader());
Span dataBuffer = stackalloc char[32];
uint textLength = reader.ReadUTF8Span(dataBuffer);
string loadedData = dataBuffer.Slice(0, textLength).ToString();
Console.WriteLine($"Loaded data from an entity {loadedData}");
```
### Loading from file on disk
```cs
DataRequest request = new(world, "C:/fileB.txt");
simulator.Update();
using ByteReader reader = new(request.CreateByteReader());
Span dataBuffer = stackalloc char[32];
uint textLength = reader.ReadUTF8Span(dataBuffer);
string loadedData = dataBuffer.Slice(0, textLength).ToString();
Console.WriteLine($"Loaded data from a file {loadedData}");
```
### Loading from an embedded resource
Embedded resources in a project can be loaded if their address is registered:
```cs
public readonly struct MyEmbeddedResources : IEmbeddedResourceBank
{
void IEmbeddedResourceBank.Load(Register register)
{
register.Invoke("Assets/test.txt");
}
}
EmbeddedResourceRegistry.Load();
DataRequest request = new(world, "Assets/test.txt");
simulator.Update();
using ByteReader reader = new(request.CreateByteReader());
Span dataBuffer = stackalloc char[32];
uint textLength = reader.ReadUTF8Span(dataBuffer);
string loadedData = dataBuffer.Slice(0, textLength).ToString();
Console.WriteLine($"Loaded data from an embedded resource {loadedData}");
```
### Loading through a message
Data can be loaded by another system through the `LoadData` message:
```cs
LoadData message = new("Assets/test.txt");
simulator.Broadcast(ref message);
if (message.TryConsume(out ByteReader data))
{
Span dataBuffer = stackalloc char[32];
uint textLength = data.ReadUTF8Span(dataBuffer);
string loadedData = dataBuffer.Slice(0, textLength).ToString();
Console.WriteLine($"Loaded data through a message {loadedData}");
data.Dispose();
}
else
{
Console.WriteLine("Failed to load data through a message");
}
```