public Sprite FindSpriteAt(double x, double y, double z) { int xIndex; int yIndex; x = Blueprint.x + (int)(Math.Round( (x - Blueprint.x)/GridSpacing)) * GridSpacing; if(yOrZ == 'y') { y = Blueprint.y + (int)(Math.Round( (y - Blueprint.y)/GridSpacing)) * GridSpacing; yIndex = (int)((y - (visibleSprites[0][0].y - GridSpacing/2))/GridSpacing); } else { y = Blueprint.z + (int)(Math.Round( (z - Blueprint.z)/GridSpacing)) * GridSpacing; yIndex = (int)((z - (visibleSprites[0][0].z - GridSpacing/2))/GridSpacing); } if(yIndex > -1 && yIndex < visibleSprites.Count) { xIndex = (int)((x - (visibleSprites[yIndex][0].x - GridSpacing/2))/GridSpacing); if(xIndex < visibleSprites[yIndex].Count && xIndex > -1) return visibleSprites[yIndex][xIndex]; else return null; } else { return null; } }