public Obj3DFloor(int nUnits) { // center tile FCenter = new Object3D(); float[] verts = { -1, 1, 0, 0, 0, 1, 1, 0, 1, 0, -1, -1, 0, 0, 1, 1, -1, 0, 1, 1, }; ScaleVerts(verts); uint[] inds = { 0, 2, 1, 2, 3, 1 }; FCenter.Init(Shader.ShadingType.Textured3D, verts, inds, "GridCenter"); // ruler tiles FRuler = new Object3D(); float[] vertsr = { 1, 1, 0, 0, 0, 1 + 2 * nUnits, 1, 0, nUnits, 0, 1, -1, 0, 0, 1, 1 + 2 * nUnits, -1, 0, nUnits, 1, -1, 1 + 2 * nUnits, 0, nUnits, 1, 1, 1 + 2 * nUnits, 0, nUnits, 0, -1, 1, 0, 0, 1, -1 - 2 * nUnits, 1, 0, nUnits, 1, -1 - 2 * nUnits, -1, 0, nUnits, 0, -1, -1, 0, 0, 0, -1, -1 - 2 * nUnits, 0, nUnits, 0, 1, -1 - 2 * nUnits, 0, nUnits, 1, }; ScaleVerts(vertsr); uint[] indsr = { 0, 2, 1, 2, 3, 1, 6, 5, 4, 6, 0, 5, 8, 6, 7, 8, 9, 6, 10, 2, 9, 10, 11, 2 }; FRuler.Init(Shader.ShadingType.Textured3D, vertsr, indsr, "GridRuler"); // empty tiles FRest = new Object3D(); float[] vertse = { 1, 1, 0, 0, nUnits, 1 + 2 * nUnits, 1, 0, nUnits, nUnits, 1, -1, 0, 0, 0, 1 + 2 * nUnits, -1, 0, nUnits, 0, -1, 1 + 2 * nUnits, 0, nUnits, 0, 1, 1 + 2 * nUnits, 0, 0, 0, -1, 1, 0, nUnits, nUnits, -1 - 2 * nUnits, 1, 0, 0, nUnits, -1 - 2 * nUnits, -1, 0, 0, 0, -1, -1, 0, nUnits, 0, -1, -1 - 2 * nUnits, 0, nUnits, nUnits, 1, -1 - 2 * nUnits, 0, 0, nUnits, 1 + 2 * nUnits, 1 + 2 * nUnits, 0, nUnits, 0, -1 - 2 * nUnits, 1 + 2 * nUnits, 0, 0, 0, -1 - 2 * nUnits, -1 - 2 * nUnits, 0, 0, nUnits, 1 + 2 * nUnits, -1 - 2 * nUnits, 0, nUnits, nUnits, }; ScaleVerts(vertse); uint[] indse = { 0, 1, 2, 0, 12, 5, 0, 1, 12, 7, 4, 13, 7, 6, 4, 14, 9, 8, 14, 10, 9, 11, 3, 2, 11, 15, 3 }; FRest.Init(Shader.ShadingType.Textured3D, vertse, indse, "GridEmpty"); }