You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.3 KiB

using GameCore.TinyECS;
using Unity.Burst;
using Unity.Collections;
using Unity.Jobs;
using Unity.Mathematics;
using UnityEngine;
using Random = Unity.Mathematics.Random;
namespace ECSTest.Server
{
[BurstCompile]
public struct TestWorldJob : IJob
{
public World world;
public void Execute()
{
// var componentId = ComponentId<BulletData>.Get();
// Debug.LogError($"XXXX bulletData id: {componentId}");
// var componentId2 = ComponentId<CannonData>.Get();
// Debug.LogError($"xxxx2222 CannonData id: {componentId2}");
}
}
[BurstCompile]
public struct GetDeferred : IJob
{
public World world;
public void Execute()
{
// var componentId = ComponentId<BulletData>.Get();
// Debug.LogError($"XXXX bulletData id: {componentId}");
// var componentId2 = ComponentId<CannonData>.Get();
// Debug.LogError($"xxxx2222 CannonData id: {componentId2}");
}
}
[BurstCompile]
public struct SpawnCannonJob : IJob
{
public World world;
public NativeList<bool> deferList;
public uint seed;
public int maxCount;
public int spawnCountPerFrame;
public Rect rect;
public int initHealth;
public void Execute()
{
ref var database = ref world.cannonDatabase;
if (database.Count >= maxCount)
return;
var random = new Random(seed);
for (int i = 0; i < spawnCountPerFrame; i++)
{
var pos = random.NextFloat2(rect.min, rect.max);
var dir = random.NextFloat(math.PI2);
math.sincos(dir, out var s, out var c);
var velocity = new float2(c, s);
var entity = database.AddEntity();
ref var cannonData = ref database.GetDataRef<CannonData>(entity);
cannonData.position = pos;
cannonData.velocity = velocity;
cannonData.direction = dir;
cannonData.health = initHealth;
}
}
}
[BurstCompile]
public struct SpawnBulletJob : IJob
{
public World World;
public void Execute()
{
}
}
}