public bool Add(LinkPos pos) { _desc.Add(pos); if (!pos.IsSurrounded()) { _outer.Add(pos); } return(true); }
public override bool RemoveAt(int _index, ref LinkPos _remove) { base.RemoveAt(_index, ref _remove); // spawn a loot on this pos SpawnLoot(_remove); // for rebuild _removed.Add(_remove); // for generic debug _debugRemove.Add(_remove); return(true); }
private void AddNeighboor(int x, int y, int z, LinkPos.Neighbor where, ref LinkPos pos) { if (IsValidCoord(x, y, z) && IsValideNoise(x, y, z)) { pos.Add(where, new UnitPos(x, y, z)); // remove from open list, and add if (_openList.Remove(new Vector3Int(x, y, z))) { // add in current object Add(x, y, z); } } }
private void Add(int x, int y, int z) { LinkPos newpos = new LinkPos(new UnitPos(x, y, z), RockAttribut.Life); // all neighboor AddNeighboor(x, y + 1, z, LinkPos.Neighbor.Top, ref newpos); AddNeighboor(x, y - 1, z, LinkPos.Neighbor.Bottom, ref newpos); AddNeighboor(x + 1, y, z, LinkPos.Neighbor.Right, ref newpos); AddNeighboor(x - 1, y, z, LinkPos.Neighbor.Left, ref newpos); AddNeighboor(x, y, z + 1, LinkPos.Neighbor.Back, ref newpos); AddNeighboor(x, y, z - 1, LinkPos.Neighbor.Front, ref newpos); _objects[_objects.Count - 1].Add(newpos); }
public override void Generate() { _openList = new List <Vector3Int>(); for (int x = (int)Bornx.x; x <= (int)Bornx.y; ++x) { for (int y = (int)Borny.x; y <= (int)Borny.y; ++y) { for (int z = (int)Bornz.x; z <= (int)Bornz.y; ++z) { if (IsValideNoise(x, y, z)) { _openList.Add(new Vector3Int(x, y, z)); } } } } while (_openList.Count != 0) { int x = _openList[0].x; int y = _openList[0].y; int z = _openList[0].z; LinkPos newpos = new LinkPos(new UnitPos(x, y, z), RockAttribut.Life); _openList.RemoveAt(0); // create new object _objects.Add(new BuildingObject(ParamRock)); // all neighboor AddNeighboor(x, y + 1, z, LinkPos.Neighbor.Top, ref newpos); AddNeighboor(x, y - 1, z, LinkPos.Neighbor.Bottom, ref newpos); AddNeighboor(x + 1, y, z, LinkPos.Neighbor.Right, ref newpos); AddNeighboor(x - 1, y, z, LinkPos.Neighbor.Left, ref newpos); AddNeighboor(x, y, z + 1, LinkPos.Neighbor.Back, ref newpos); AddNeighboor(x, y, z - 1, LinkPos.Neighbor.Front, ref newpos); _objects[_objects.Count - 1].Add(newpos); } }
private void SpawnLoot(LinkPos pos) { Vector3 worldPos = transform.TransformPoint(new Vector3(pos.Center.x, pos.Center.y, pos.Center.z)); LootManager.Instance.AddLoot(worldPos, ParamAttribut.Life); }