private void BuildFireModel(RTSRenderer renderer, int div)
{
VertexPositionTexture[] verts = new VertexPositionTexture[4 * div];
short[] inds = new short[6 * div];
double dTheta = Math.PI / div;
for (int i = 0, ii = 0, vi = 0; i < div; i++)
{
inds[ii++] = (short)(vi + 0);
inds[ii++] = (short)(vi + 1);
inds[ii++] = (short)(vi + 2);
inds[ii++] = (short)(vi + 2);
inds[ii++] = (short)(vi + 1);
inds[ii++] = (short)(vi + 3);
float x = (float)Math.Cos(i * dTheta);
float z = -(float)Math.Sin(i * dTheta);
verts[vi++] = new VertexPositionTexture(new Vector3(-x, 1, -z), Vector2.Zero);
verts[vi++] = new VertexPositionTexture(new Vector3(x, 1, z), Vector2.UnitX);
verts[vi++] = new VertexPositionTexture(new Vector3(-x, 0, -z), Vector2.UnitY);
verts[vi++] = new VertexPositionTexture(new Vector3(x, 0, z), Vector2.One);
}
plFires.VBuffer = renderer.CreateVertexBuffer(VertexPositionTexture.VertexDeclaration, verts.Length, BufferUsage.WriteOnly);
plFires.VBuffer.SetData(verts);
plFires.IBuffer = renderer.CreateIndexBuffer(IndexElementSize.SixteenBits, inds.Length, BufferUsage.WriteOnly);
plFires.IBuffer.SetData(inds);
}