public static void Init() { if (s_inited) { return; } List <VertexPN> vertList = new List <VertexPN>(); List <Vector3> spherePositions = new List <Vec3F>(); List <Vector3> sphereNormals = new List <Vec3F>(); List <uint> sphereIndices = new List <uint>(); GeometryHelper.CreateSphere(0.5f, FastSphereSlices, FastSphereStacks, spherePositions , sphereNormals, null, sphereIndices); GeometryHelper.AssembleVertexPN(spherePositions, sphereNormals, vertList); s_sphereVertId = GameEngine.CreateVertexBuffer(vertList.ToArray()); s_sphereIndexId = GameEngine.CreateIndexBuffer(sphereIndices.ToArray()); s_sphereIndexCount = (uint)sphereIndices.Count; List <Vec3F> conePos = new List <Vec3F>(); List <uint> coneIndices = new List <uint>(); List <Vec3F> coneNorms = new List <Vec3F>(); GeometryHelper.CreateCylinder(1.0f, 0.0f, 1.0f, 16, 1, conePos, coneNorms, coneIndices); s_coneIndexCount = (uint)coneIndices.Count; GeometryHelper.AssembleVertexPN(conePos, coneNorms, vertList); s_coneVertId = GameEngine.CreateVertexBuffer(vertList.ToArray()); s_coneIndexId = GameEngine.CreateIndexBuffer(coneIndices.ToArray()); // create unit cylinder List <Vec3F> cyPos = new List <Vec3F>(); List <uint> cyIndices = new List <uint>(); List <Vec3F> cyNorms = new List <Vec3F>(); GeometryHelper.CreateCylinder(0.5f, 0.5f, 1.0f, 16, 2, cyPos, cyNorms, cyIndices); GeometryHelper.AssembleVertexPN(cyPos, cyNorms, vertList); s_cylinderVertId = GameEngine.CreateVertexBuffer(vertList.ToArray()); s_cylinderIndexId = GameEngine.CreateIndexBuffer(cyIndices.ToArray()); s_cylinderIndexCount = (uint)cyIndices.Count; // create slim unit torus. List <Vec3F> torPos = new List <Vec3F>(); List <Vec3F> torNorms = new List <Vec3F>(); List <uint> torIndices = new List <uint>(); GeometryHelper.CreateTorus(RingInnerRadias, RingOuterRadias, 40, 6, torPos, torNorms, null, torIndices); GeometryHelper.AssembleVertexPN(torPos, torNorms, vertList); s_torusVertId = GameEngine.CreateVertexBuffer(vertList.ToArray()); s_torusIndexId = GameEngine.CreateIndexBuffer(torIndices.ToArray()); s_torusIndexCount = (uint)torIndices.Count; List <Vector3> cubePos = new List <Vector3>(); List <Vector3> cubeNormals = new List <Vector3>(); List <uint> cubeIndices = new List <uint>(); GeometryHelper.CreateUnitCube(cubePos, cubeNormals, null, cubeIndices); GeometryHelper.AssembleVertexPN(cubePos, cubeNormals, vertList); s_cubeVertId = GameEngine.CreateVertexBuffer(vertList.ToArray()); s_cubeIndexId = GameEngine.CreateIndexBuffer(cubeIndices.ToArray()); s_cubeIndexCount = (uint)cubeIndices.Count; var linePos = new List <Vec3F>(); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(1, 0, 0)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(0, 1, 0)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(0, 0, 1)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(-1, 0, 0)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(0, -1, 0)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(0, 0, -1)); s_axisStartVertex = 0; s_axisVertexCount = (uint)linePos.Count; // rect pos; linePos.Add(new Vector3(1, 1, 0)); linePos.Add(new Vector3(-1, 1, 0)); linePos.Add(new Vector3(-1, 1, 0)); linePos.Add(new Vector3(-1, -1, 0)); linePos.Add(new Vector3(-1, -1, 0)); linePos.Add(new Vector3(1, -1, 0)); linePos.Add(new Vector3(1, -1, 0)); linePos.Add(new Vector3(1, 1, 0)); s_rectVertexCount = 8; s_rectStartVertex = (uint)linePos.Count - s_rectVertexCount; // unit square linePos.Add(new Vector3(0.5f, 0.5f, 0)); linePos.Add(new Vector3(-0.5f, 0.5f, 0)); linePos.Add(new Vector3(-0.5f, 0.5f, 0)); linePos.Add(new Vector3(-0.5f, -0.5f, 0)); linePos.Add(new Vector3(-0.5f, -0.5f, 0)); linePos.Add(new Vector3(0.5f, -0.5f, 0)); linePos.Add(new Vector3(0.5f, -0.5f, 0)); linePos.Add(new Vector3(0.5f, 0.5f, 0)); s_unitSquareVertexCount = 8; s_unitSquareStartVertex = (uint)linePos.Count - s_unitSquareVertexCount; s_linesVertId = GameEngine.CreateVertexBuffer(linePos.ToArray()); List <Vec3F> circlePos = new List <Vec3F>(); GeometryHelper.CreateCircle(1.0f, 32, circlePos); s_circleVertexCount = (uint)circlePos.Count; s_circleVerts = GameEngine.CreateVertexBuffer(circlePos.ToArray()); List <Vec3F> boxVerts = new List <Vec3F>(); List <uint> boxIndices = new List <uint>(); GeometryHelper.CreateUnitBox(boxVerts, boxIndices); s_boxVertsId = GameEngine.CreateVertexBuffer(boxVerts.ToArray()); s_boxIndicesId = GameEngine.CreateIndexBuffer(boxIndices.ToArray()); s_boxIndicesCount = (uint)boxIndices.Count; List <Vec3F> arrowCapVerts = new List <Vec3F>(); List <Vec3F> arrowCapNormals = new List <Vec3F>(); List <uint> arrowCapIndices = new List <uint>(); GeometryHelper.CreateArrowCap(arrowCapVerts, arrowCapNormals, arrowCapIndices); GeometryHelper.AssembleVertexPN(arrowCapVerts, arrowCapNormals, vertList); s_arrowCapVertId = GameEngine.CreateVertexBuffer(vertList.ToArray()); s_arrowCapIndexId = GameEngine.CreateIndexBuffer(arrowCapIndices.ToArray()); s_arrowCapIndexCount = (uint)arrowCapIndices.Count; List <Vec3F> pivotVerts = new List <Vec3F>(); GeometryHelper.CreateCircle(0.5f, 16, pivotVerts); GeometryHelper.CreateCircle(0.375f, 16, pivotVerts); GeometryHelper.CreateCircle(0.25f, 16, pivotVerts); GeometryHelper.CreateCircle(0.125f, 16, pivotVerts); s_pivotVerts = GameEngine.CreateVertexBuffer(pivotVerts.ToArray()); s_pivotVertexCount = (uint)pivotVerts.Count; s_captionFont = GameEngine.CreateFont("Arial", 14, FontStyle.BOLD); s_inited = true; }
public static void Init() { if (s_inited) { return; } List <Vector3> sphereVerts = new List <Vec3F>(); List <Vector3> sphereNormals = new List <Vec3F>(); List <uint> sphereIndices = new List <uint>(); GeometryHelper.CreateSphere(0.5f, FastSphereSlices, FastSphereStacks, sphereVerts , sphereNormals, null, sphereIndices); s_triLisVbId = GameEngine.CreateVertexBuffer(sphereVerts.ToArray()); s_triListIbid = GameEngine.CreateIndexBuffer(sphereIndices.ToArray()); s_sphereIndexCount = (uint)sphereIndices.Count; s_sphereStartVertex = 0; s_sphereStartVertex = 0; List <Vec3F> conePos = new List <Vec3F>(); List <uint> coneIndices = new List <uint>(); List <Vec3F> coneNorms = new List <Vec3F>(); GeometryHelper.CreateCylinder(1.0f, 0.0f, 1.0f, 16, 1, conePos, coneNorms, coneIndices); s_coneIndexCount = (uint)coneIndices.Count; VertexPN[] conveVB = new VertexPN[conePos.Count]; for (int i = 0; i < conveVB.Length; i++) { conveVB[i].Position = conePos[i]; conveVB[i].Normal = coneNorms[i]; } s_coneVertId = GameEngine.CreateVertexBuffer(conveVB); s_coneIndexId = GameEngine.CreateIndexBuffer(coneIndices.ToArray()); List <Vector3> cubePos = new List <Vector3>(); List <Vector3> cubeNormals = new List <Vector3>(); List <Vector2> cubeTex = new List <Vector2>(); List <uint> cubeIndices = new List <uint>(); GeometryHelper.CreateUnitCube(cubePos, cubeNormals, cubeTex, cubeIndices); VertexPN[] cubeVerts = new VertexPN[cubePos.Count]; for (int i = 0; i < cubeVerts.Length; i++) { cubeVerts[i].Position = cubePos[i]; cubeVerts[i].Normal = cubeNormals[i]; } s_cubeVertId = GameEngine.CreateVertexBuffer(cubeVerts); s_cubeIndexId = GameEngine.CreateIndexBuffer(cubeIndices.ToArray()); s_cubeIndexCount = (uint)cubeIndices.Count; var linePos = new List <Vec3F>(); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(1, 0, 0)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(0, 1, 0)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(0, 0, 1)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(-1, 0, 0)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(0, -1, 0)); linePos.Add(new Vector3(0, 0, 0)); linePos.Add(new Vector3(0, 0, -1)); s_axisStartVertex = 0; s_axisVertexCount = (uint)linePos.Count; // rect pos; linePos.Add(new Vector3(1, 1, 0)); linePos.Add(new Vector3(-1, 1, 0)); linePos.Add(new Vector3(-1, 1, 0)); linePos.Add(new Vector3(-1, -1, 0)); linePos.Add(new Vector3(-1, -1, 0)); linePos.Add(new Vector3(1, -1, 0)); linePos.Add(new Vector3(1, -1, 0)); linePos.Add(new Vector3(1, 1, 0)); s_rectVertexCount = 8; s_rectStartVertex = (uint)linePos.Count - s_rectVertexCount; // unit square linePos.Add(new Vector3(0.5f, 0.5f, 0)); linePos.Add(new Vector3(-0.5f, 0.5f, 0)); linePos.Add(new Vector3(-0.5f, 0.5f, 0)); linePos.Add(new Vector3(-0.5f, -0.5f, 0)); linePos.Add(new Vector3(-0.5f, -0.5f, 0)); linePos.Add(new Vector3(0.5f, -0.5f, 0)); linePos.Add(new Vector3(0.5f, -0.5f, 0)); linePos.Add(new Vector3(0.5f, 0.5f, 0)); s_unitSquareVertexCount = 8; s_unitSquareStartVertex = (uint)linePos.Count - s_unitSquareVertexCount; s_linesVertId = GameEngine.CreateVertexBuffer(linePos.ToArray()); List <Vec3F> circlePos = new List <Vec3F>(); GeometryHelper.CreateCircle(1.0f, 32, circlePos); s_circleVertexCount = (uint)circlePos.Count; s_circleVerts = GameEngine.CreateVertexBuffer(circlePos.ToArray()); RenderFlag = BasicRendererFlags.WireFrame; List <Vec3F> boxVerts = new List <Vec3F>(); List <uint> boxIndices = new List <uint>(); GeometryHelper.CreateUnitBox(boxVerts, boxIndices); s_boxVertsId = GameEngine.CreateVertexBuffer(boxVerts.ToArray()); s_boxIndicesId = GameEngine.CreateIndexBuffer(boxIndices.ToArray()); s_boxIndicesCount = (uint)boxIndices.Count; List <Vec3F> pivotVerts = new List <Vec3F>(); GeometryHelper.CreateCircle(1.0f, 16, pivotVerts); GeometryHelper.CreateCircle(0.75f, 16, pivotVerts); GeometryHelper.CreateCircle(0.5f, 16, pivotVerts); GeometryHelper.CreateCircle(0.25f, 16, pivotVerts); s_pivotVerts = GameEngine.CreateVertexBuffer(pivotVerts.ToArray()); s_pivotVertexCount = (uint)pivotVerts.Count; s_captionFont = GameEngine.CreateFont("Arial", 14, FontStyle.BOLD); s_inited = true; }