using System.Collections.Generic; using RobocraftX.Blocks; using RobocraftX.Common; using Svelto.DataStructures; using Svelto.ECS; using GamecraftModdingAPI.Engines; 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 cubeStack = new Stack(); FasterList cubesToProcess = new FasterList(); 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; } public ref T GetBlockInfo(EGID blockID) where T : struct, IEntityComponent { return ref entitiesDB.QueryEntity(blockID); } } }