using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Content; namespace PlayerTrace { public class Trace { private VertexDeclaration vertexDeclaration; VertexPositionColor[] vertices; public Vector3 position; public Vector3 rotation; Texture2D texture; public Trace(string traceData, GraphicsDevice gd, ContentManager content) { int start = 0; int end = traceData.IndexOf("\t"); position.X = float.Parse(traceData.Substring(start, end - start)); start = end+1; end = traceData.IndexOf("\t", start); position.Y = float.Parse(traceData.Substring(start, end - start)); start = end + 1; end = traceData.IndexOf("\t", start); position.Z = float.Parse(traceData.Substring(start, end - start)); start = end + 1; end = traceData.IndexOf("\t", start); rotation.X = float.Parse(traceData.Substring(start, end - start)); start = end + 1; end = traceData.IndexOf("\t", start); rotation.Y = float.Parse(traceData.Substring(start, end - start)); start = end + 1; end = traceData.IndexOf("\t", start); rotation.Z = float.Parse(traceData.Substring(start, end - start)); vertices = new VertexPositionColor[3]; vertices[0].Position = position; vertices[0].Color = Color.Orange; vertices[1].Position = position + Vector3.Forward * 10; vertices[1].Color = Color.Red; vertices[2].Position = position + Vector3.Left * 10; vertices[2].Color = Color.Violet; texture = content.Load("CreditScreen"); vertexDeclaration = new VertexDeclaration(gd, VertexPositionColor.VertexElements); } public void Draw(GraphicsDevice device, Effect effect) { Matrix worldMatrix = Matrix.Identity; effect.CurrentTechnique = effect.Techniques["Colored"]; effect.Parameters["World"].SetValue(worldMatrix); //effect.Parameters["modelTexture1"].SetValue(texture); effect.Begin(); foreach (EffectPass pass in effect.CurrentTechnique.Passes) { pass.Begin(); device.VertexDeclaration = vertexDeclaration; device.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 1); pass.End(); } effect.End(); } } }