public Doom3Map(Doom3MapData map) { Surfaces=new List<Surface>(); int verts = 0; int indices = 0; foreach(Doom3MapData.Model m in map.Models) { foreach(Doom3MapData.Surface s in m.Surfaces) { VertexBuffer vb = Root.Instance.UserInterface.Renderer.CreateStaticVertexBuffer( s.Vertices, s.Vertices.Length*4*(3+2+3) ); vb.Format = VertexFormat.VF_P3T2N3; IndexBuffer ib = new IndexBuffer(); ib.buffer = new int[s.Indices.Length]; for (int i = 0; i < ib.buffer.Length; ++i) ib.buffer[i] = s.Indices[i]; Surface s2 = new Surface(); s2.Ibuffer = ib; s2.Vbuffer = vb; verts += s.Vertices.Length; indices += s.Indices.Length; Texture t=null; try { t = Root.Instance.ResourceManager.LoadTexture(s.Name + ".tga"); } catch (Exception) { try { t = Root.Instance.ResourceManager.LoadTexture(s.Name + "_add.tga"); } catch (Exception) { try { t = Root.Instance.ResourceManager.LoadTexture(s.Name + "_d.tga"); } catch (Exception ) { System.Console.WriteLine("warning: cant load "+s.Name); } } } s2.Material=Material.CreateSimpleMaterial(t); //s2.Material.Additive = true; Surfaces.Add(s2); } } System.Console.WriteLine("surfaces: "+Surfaces.Count.ToString()); System.Console.WriteLine("verts: " + verts.ToString()); System.Console.WriteLine("indices: " + indices.ToString()); GC.Collect(); BBox = new BoundingBox(map.BBoxMin, map.BBoxMax); }
public IResource Load(FileSystemNode n) { Doom3MapData d = new Doom3MapData(); d.Load(n.getStream()); Doom3Map m = new Doom3Map(d); return(m); }
public IResource Load(FileSystemNode n) { Doom3MapData d = new Doom3MapData(); d.Load(n.getStream()); Doom3Map m = new Doom3Map(d); return m; }
public Doom3Map(Doom3MapData map) { Surfaces = new List <Surface>(); int verts = 0; int indices = 0; foreach (Doom3MapData.Model m in map.Models) { foreach (Doom3MapData.Surface s in m.Surfaces) { VertexBuffer vb = Root.Instance.UserInterface.Renderer.CreateStaticVertexBuffer( s.Vertices, s.Vertices.Length * 4 * (3 + 2 + 3) ); vb.Format = VertexFormat.VF_P3T2N3; IndexBuffer ib = new IndexBuffer(); ib.buffer = new int[s.Indices.Length]; for (int i = 0; i < ib.buffer.Length; ++i) { ib.buffer[i] = s.Indices[i]; } Surface s2 = new Surface(); s2.Ibuffer = ib; s2.Vbuffer = vb; verts += s.Vertices.Length; indices += s.Indices.Length; Texture t = null; try { t = Root.Instance.ResourceManager.LoadTexture(s.Name + ".tga"); } catch (Exception) { try { t = Root.Instance.ResourceManager.LoadTexture(s.Name + "_add.tga"); } catch (Exception) { try { t = Root.Instance.ResourceManager.LoadTexture(s.Name + "_d.tga"); } catch (Exception) { System.Console.WriteLine("warning: cant load " + s.Name); } } } s2.Material = Material.CreateSimpleMaterial(t); //s2.Material.Additive = true; Surfaces.Add(s2); } } System.Console.WriteLine("surfaces: " + Surfaces.Count.ToString()); System.Console.WriteLine("verts: " + verts.ToString()); System.Console.WriteLine("indices: " + indices.ToString()); GC.Collect(); BBox = new BoundingBox(map.BBoxMin, map.BBoxMax); }