void ChangeElement(int index, int newType) { var p = powders[index]; PowderSystemUtils.SchdeduleRemovePowder(ref toDeleteEntities, index); PowderGame.Spawn(ref cmdBuffer, p.coord.x, p.coord.y, newType); }
public void Execute() { if (PowderTypes.values[type].IsGenerator()) { if (!isPainting) { for (var x = coord.x - PowderGame.brushSize; x <= coord.x + PowderGame.brushSize; ++x) { if (!PowderSystemUtils.IsOccupied(ref hashMap, x, coord.y)) { PowderGame.Spawn(ref cmdBuffer, x, coord.y, type); } } } } else { var size = 0; for (var y = coord.y - PowderGame.brushSize; y <= coord.y + PowderGame.brushSize; ++y) { for (var x = coord.x - size; x <= coord.x + size; ++x) { if (!PowderSystemUtils.IsOccupied(ref hashMap, x, y)) { PowderGame.Spawn(ref cmdBuffer, x, y, type); } } size += y < coord.y ? 1 : -1; } } }
void Generate(ref Powder p, ref Neighbors n) { var generatedType = PowderTypes.values[p.type].generatedElementType; if (PowderTypes.values[generatedType].state == PowderState.Liquid || PowderTypes.values[generatedType].state == PowderState.Powder) { if (n.TopEmpty()) { var generatedPowder = PowderTypes.values[generatedType].creator(new Vector2Int(p.coord.x, p.coord.y - 1)); PowderGame.Spawn(ref cmdBuffer, generatedPowder); } } else if (n.BottomEmpty()) { var generatedPowder = PowderTypes.values[generatedType].creator(new Vector2Int(p.coord.x, p.coord.y + 1)); PowderGame.Spawn(ref cmdBuffer, generatedPowder); } }