public static void Draw(GraphicsDevice graphicsDevice, Matrix viewProjection) { if (!GameSettings.h_DrawLines) { return; } //Shaders.LineEffectParameter_WorldViewProj.SetValue(viewProjection); // _vbuffer = new VertexBuffer(graphicsDevice, typeof(VertexPositionColor), Lines.Count*2, BufferUsage.WriteOnly); // _ibuffer = new IndexBuffer(graphicsDevice, IndexElementSize.SixteenBits, Lines.Count*2, BufferUsage.WriteOnly); for (int i = 0; i < Lines.Count; i++) { LineHelper line = Lines[i]; if (line != null) { Shaders.LineEffect.CurrentTechnique.Passes[0].Apply(); //Gather graphicsDevice.DrawUserIndexedPrimitives(PrimitiveType.LineList, line.Verts, 0, 2, line.Indices, 0, 1); line.Timer--; if (line.Timer <= 0) { Lines.RemoveAt(i); i--; } } else { Lines.RemoveAt(i); } } AdjustTempVertsPoolSize(); }
public static void AddLineStartDir(Vector3 start, Vector3 dir, short timer, Color startColor, Color endColor) { LineHelper lineHelper = new LineHelper(start, start + dir, timer, startColor, endColor); Lines.Add(lineHelper); }
public static void AddLineStartEnd(Vector3 start, Vector3 end, short timer) { LineHelper lineHelper = new LineHelper(start, end, timer); Lines.Add(lineHelper); }