Exemplo n.º 1
0
 public void InsertedAt(BlocIndex pos)
 {
     indexInMap = pos;
     transform.parent = Map.GetMapRefTransform();
     transform.position = Map.IndexToPosition(pos);
     gameObject.transform.FindChild("GUI").gameObject.transform.position = transform.position;
 }
Exemplo n.º 2
0
 public static Vector3 IndexToPosition(BlocIndex index)
 {
     return IndexToPosition(index.x, index.y, index.z);
 }
Exemplo n.º 3
0
    public static List<Bloc> FetchNeighbors(BlocIndex index, int range, bool volumetricSearch = false, bool includeStartBloc = false)
    {
        List<Bloc> list = new List<Bloc>();

        int minX = Mathf.Max(0, index.x - range);
        int maxX = Mathf.Min(_width-1, index.x + range);
        int minY = Mathf.Max(0, index.y - range);
        int maxY = Mathf.Min(_length-1, index.y + range);
        int minZ = index.z;
        int maxZ = index.z;

        if(volumetricSearch)
        {
            minZ = Mathf.Max(0, index.z - range);
            maxZ = index.z + range;
        }

        for(int x = minX; x <= maxX; ++x)
        {
            for(int y = minY; y <= maxY; ++y)
            {
                for(int z = minZ; z <= maxZ; ++z)
                {
                    /*if(x != index.x && y != index.y) //discard corners
                        continue;*/

                    Bloc bloc = GetBlocAt(x, y, z);

                    if(bloc == null)
                        continue;

                    if(bloc.indexInMap == index && !includeStartBloc) //discard starting bloc
                        continue;

                    list.Add(bloc);
                }
            }
        }

        return list;
    }
Exemplo n.º 4
0
    public static List<Bloc> FetchNeighbors2D(BlocIndex index, int range, bool includeStartBloc = false)
    {
        List<Bloc> list = new List<Bloc>();

        int minX = Mathf.Max(0, index.x - range);
        int maxX = Mathf.Min(_width-1, index.x + range);
        int minY = Mathf.Max(0, index.y - range);
        int maxY = Mathf.Min(_length-1, index.y + range);

        for(int x = minX; x <= maxX; ++x)
        {
            for(int y = minY; y <= maxY; ++y)
            {
                if(x != index.x && y != index.y)
                    continue;

                Bloc bloc = GetBlocAt(x, y);//get the one on top

                if(bloc == null)
                    continue;

                if(bloc.indexInMap == index && !includeStartBloc) //discard starting bloc
                    continue;

                list.Add(bloc);
            }
        }

        return list;
    }