Example #1
0
 public bool Add(LinkPos pos)
 {
     _desc.Add(pos);
     if (!pos.IsSurrounded())
     {
         _outer.Add(pos);
     }
     return(true);
 }
Example #2
0
    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);
    }
Example #3
0
 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);
         }
     }
 }
Example #4
0
        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);
        }
Example #5
0
        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);
            }
        }
Example #6
0
    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);
    }