public CxBillboard CreateVertices(bool randomize = true) { if (_items==null || !_items.Any()) return this; var billboardVertices = new CxBillboardVertex[_items.Count]; var i = 0; var random = new Random(); foreach (var t in _items) createOne( ref i, billboardVertices, t.Item1 + World.TranslationVector, t.Item2, randomize ? 0.0001f + (float) random.NextDouble() : 0.5f); _items = null; _vertexBuffer = Buffer.Vertex.New(Effect.GraphicsDevice, billboardVertices); _vertexInputLayout = VertexInputLayout.FromBuffer(0, _vertexBuffer); return this; }
private void createOne( ref int i, CxBillboardVertex[] bv, Vector3 p, Vector3 n, float rnd) { bv[i++] = new CxBillboardVertex(p, Vector3.Normalize(n), rnd); }