39 lines
1.1 KiB
C#
39 lines
1.1 KiB
C#
|
using System.Collections.Generic;
|
||
|
using GamecraftModdingAPI.Engines;
|
||
|
using RobocraftX.Blocks;
|
||
|
using RobocraftX.Common;
|
||
|
using Svelto.DataStructures;
|
||
|
using Svelto.ECS;
|
||
|
using Svelto.ECS.EntityStructs;
|
||
|
using Unity.Mathematics;
|
||
|
|
||
|
namespace GamecraftModdingAPI.Blocks
|
||
|
{
|
||
|
public class BlockEngine : IApiEngine
|
||
|
{
|
||
|
public string Name { get; } = "GamecraftModdingAPIBlockGameEngine";
|
||
|
|
||
|
public EntitiesDB entitiesDB { set; private get; }
|
||
|
|
||
|
public bool isRemovable => false;
|
||
|
|
||
|
public void Dispose()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public void Ready()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public Block[] GetConnectedBlocks(uint blockID)
|
||
|
{
|
||
|
Stack<uint> cubeStack = new Stack<uint>();
|
||
|
FasterList<uint> cubesToProcess = new FasterList<uint>();
|
||
|
ConnectedCubesUtility.TreeTraversal.GetConnectedCubes(entitiesDB, blockID, cubeStack, cubesToProcess, (in GridConnectionsEntityStruct g) => { return false; });
|
||
|
var ret = new Block[cubesToProcess.count];
|
||
|
for (int i = 0; i < cubesToProcess.count; i++)
|
||
|
ret[i] = new Block(cubesToProcess[i]);
|
||
|
return ret;
|
||
|
}
|
||
|
}
|
||
|
}
|