示例#1
0
    public Pixel FindClosestStreetPixel(Pixel activeBuilding)
    {
        Pixel             outPix;
        List <PixelScore> tempPixels = new List <PixelScore>();

        Vector3Int activePos = activeBuilding.Position;

        for (int i = 0; i < mapHeight; i++)
        {
            for (int j = 0; j < mapWidth; j++)
            {
                var pix = mapPixels[i, j];

                //if is street
                if (pix.IsActive)
                {
                    var dist   = Vector3.Distance(activePos, pix.Position);
                    var scored = new PixelScore(pix, dist);
                    tempPixels.Add(scored);
                }
            }
        }

        var sortedPix = tempPixels.OrderBy(d => d.getScore).ToList();

        outPix = sortedPix[0].getPixel;
        return(outPix);
    }
示例#2
0
    public List <Pixel> FindClosestStreetPixels(Pixel activeBuilding, int index)
    {
        List <Pixel>      outPix     = new List <Pixel>();
        List <PixelScore> tempPixels = new List <PixelScore>();

        var bldgChild = activeBuilding.DisplayBuilding.transform.GetChild(index);
        var localPos  = bldgChild.transform.localPosition;

        var combinedPos = localPos + activeBuilding.WorldPosition;

        Vector3 activePos = activeBuilding.Position;

        for (int i = 0; i < mapHeight; i++)
        {
            for (int j = 0; j < mapWidth; j++)
            {
                var pix = mapPixels[i, j];

                //if is street
                if (pix.IsActive)
                {
                    var dist   = Vector3.Distance(combinedPos, pix.WorldPosition);
                    var scored = new PixelScore(pix, dist);
                    tempPixels.Add(scored);
                }
            }
        }

        var sortedPix = tempPixels.OrderBy(d => d.getScore).ToList();

        List <PixelScore> selectedPix = new List <PixelScore>();

        selectedPix = sortedPix.GetRange(0, 2);

        for (int i = 0; i < selectedPix.Count; i++)
        {
            var pix = selectedPix[i].getPixel;
            outPix.Add(pix);
        }

        return(outPix);
    }