完善NetDatabase
This commit is contained in:
1 parent
098cbfb696
commit
88125fc128
28 files changed
+771
-39
No files matched your search
@@ -0,0 +1,74 @@
|
||||
using System;
|
||||
using Unity.Burst;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
using Unity.Mathematics;
|
||||
using UnityEngine;
|
||||
|
||||
namespace GameCore.Network.Test
|
||||
{
|
||||
public class TestNetDatabase : MonoBehaviour
|
||||
{
|
||||
public struct Troop
|
||||
{
|
||||
public float2 position;
|
||||
}
|
||||
|
||||
public struct Soldier
|
||||
{
|
||||
public int id;
|
||||
public int2 coord;
|
||||
}
|
||||
|
||||
private TypeMetaDatabase typeMetaDatabase;
|
||||
private NetDatabase netDatabase;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
typeMetaDatabase = new TypeMetaDatabase(Allocator.Persistent);
|
||||
typeMetaDatabase.RegisterType<Troop>();
|
||||
typeMetaDatabase.RegisterType<Soldier>();
|
||||
|
||||
netDatabase = new NetDatabase(typeMetaDatabase, 16, Allocator.Persistent);
|
||||
|
||||
var handle = new UpdateJob()
|
||||
{
|
||||
typeMetaDatabase = typeMetaDatabase,
|
||||
netDatabase = netDatabase,
|
||||
frameId = 1,
|
||||
}.Schedule();
|
||||
handle.Complete();
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
typeMetaDatabase.Dispose();
|
||||
netDatabase.Dispose();
|
||||
}
|
||||
|
||||
[BurstCompile]
|
||||
private struct UpdateJob : IJob
|
||||
{
|
||||
public TypeMetaDatabase typeMetaDatabase;
|
||||
public NetDatabase netDatabase;
|
||||
public int frameId;
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
var troop = new Troop() {position = new float2(1, 2)};
|
||||
var troopIndex = netDatabase.Add(troop, frameId, 0, out var gen0, typeMetaDatabase);
|
||||
Debug.Log($"Troop {troopIndex} added, generation {gen0}");
|
||||
|
||||
var soldier = new Soldier() {id = 1, coord = new int2(1, 1)};
|
||||
var soldierIndex = netDatabase.Add(soldier, frameId, 0, out var gen1, typeMetaDatabase);
|
||||
Debug.Log($"Soldier {soldierIndex} added, generation {gen1}");
|
||||
|
||||
ref readonly var soldierData = ref netDatabase.Get<Soldier>(soldierIndex, typeMetaDatabase);
|
||||
Debug.Log($"Soldier id: {soldierData.id}, coord: {soldierData.coord}");
|
||||
soldier.coord = new int2(2, 2);
|
||||
var ok = netDatabase.Update(soldierIndex, soldier, frameId, typeMetaDatabase);
|
||||
Debug.Log($"Soldier update: {ok}, id: {soldierData.id}, coord: {soldierData.coord}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dae5c80c53134e4689ce1b03af81f96e
|
||||
timeCreated: 1767162806
|
||||
Reference in new issue
Block a user