private void GetRenderingIndexValues(Camera camera, out int firstVertIndex, out int lastVertIndex, out int indexStart, out int numberOfTriangles) { firstVertIndex = 0; lastVertIndex = mVertices.Length; float tileWidth = mVertices[1].Position.X - mVertices[0].Position.X; if (mSortAxis == SortAxis.X) { float minX = camera.AbsoluteLeftXEdgeAt(this.Z); float maxX = camera.AbsoluteRightXEdgeAt(this.Z); minX -= this.X; maxX -= this.X; firstVertIndex = GetFirstAfterX(mVertices, minX - tileWidth); lastVertIndex = GetFirstAfterX(mVertices, maxX) + 4; } else if (mSortAxis == SortAxis.Y) { float minY = camera.AbsoluteBottomYEdgeAt(this.Z); float maxY = camera.AbsoluteTopYEdgeAt(this.Z); minY -= this.Y; maxY -= this.Y; firstVertIndex = GetFirstAfterY(mVertices, minY - tileWidth); lastVertIndex = GetFirstAfterY(mVertices, maxY) + 4; } lastVertIndex = System.Math.Min(lastVertIndex, mVertices.Length); indexStart = 0;// (firstVertIndex * 3) / 2; int indexEndExclusive = ((lastVertIndex - firstVertIndex) * 3) / 2; numberOfTriangles = (indexEndExclusive - indexStart) / 3; }