mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2025-02-17 01:22:18 +00:00
- remove DataStream class
This commit is contained in:
parent
c665bfca86
commit
690a4d2e83
9 changed files with 32 additions and 190 deletions
|
@ -12,6 +12,7 @@ using CodeImp.DoomBuilder.Data;
|
|||
using CodeImp.DoomBuilder.Rendering;
|
||||
using CodeImp.DoomBuilder.GZBuilder.Data;
|
||||
using CodeImp.DoomBuilder.Geometry;
|
||||
using System.Linq;
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -988,19 +989,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
|||
}
|
||||
|
||||
//mesh
|
||||
Mesh mesh = new Mesh(polyIndecesList.Count / 3, vertList.Count, MeshFlags.Use32Bit | MeshFlags.IndexBufferManaged | MeshFlags.VertexBufferManaged, vertexElements);
|
||||
|
||||
using(DataStream stream = mesh.VertexBuffer.Lock(LockFlags.None))
|
||||
{
|
||||
stream.WriteRange(vertList.ToArray());
|
||||
}
|
||||
mesh.VertexBuffer.Unlock();
|
||||
|
||||
using(DataStream stream = mesh.IndexBuffer.Lock(LockFlags.None))
|
||||
{
|
||||
stream.WriteRange(polyIndecesList.ToArray());
|
||||
}
|
||||
mesh.IndexBuffer.Unlock();
|
||||
Mesh mesh = new Mesh(vertexElements, vertList.ToArray(), polyIndecesList.ToArray());
|
||||
|
||||
//store in result
|
||||
result.Meshes.Add(mesh);
|
||||
|
@ -1183,23 +1172,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
|||
mde.Model.Textures.Add(texture);
|
||||
|
||||
// Create mesh
|
||||
MeshFlags meshflags = MeshFlags.Managed;
|
||||
if(indices.Count > ushort.MaxValue - 1) meshflags |= MeshFlags.Use32Bit;
|
||||
|
||||
Mesh mesh = new Mesh(facescount, verts.Count, meshflags, vertexElements);
|
||||
|
||||
DataStream mstream = mesh.VertexBuffer.Lock(LockFlags.None);
|
||||
mstream.WriteRange(verts.ToArray());
|
||||
mesh.VertexBuffer.Unlock();
|
||||
|
||||
mstream = mesh.IndexBuffer.Lock(LockFlags.None);
|
||||
|
||||
if(indices.Count > ushort.MaxValue - 1)
|
||||
mstream.WriteRange(indices.ToArray());
|
||||
else
|
||||
foreach(int index in indices) mstream.Write((ushort)index);
|
||||
|
||||
mesh.IndexBuffer.Unlock();
|
||||
Mesh mesh = new Mesh(vertexElements, verts.ToArray(), indices.ToArray());
|
||||
|
||||
// Add mesh
|
||||
mde.Model.Meshes.Add(mesh);
|
||||
|
@ -1718,19 +1691,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
|||
private static void CreateMesh(ref MD3LoadResult result, List<WorldVertex> verts, List<int> indices)
|
||||
{
|
||||
//create mesh
|
||||
Mesh mesh = new Mesh(indices.Count / 3, verts.Count, MeshFlags.Use32Bit | MeshFlags.IndexBufferManaged | MeshFlags.VertexBufferManaged, vertexElements);
|
||||
|
||||
using (DataStream stream = mesh.VertexBuffer.Lock(LockFlags.None))
|
||||
{
|
||||
stream.WriteRange(verts.ToArray());
|
||||
}
|
||||
mesh.VertexBuffer.Unlock();
|
||||
|
||||
using(DataStream stream = mesh.IndexBuffer.Lock(LockFlags.None))
|
||||
{
|
||||
stream.WriteRange(indices.ToArray());
|
||||
}
|
||||
mesh.IndexBuffer.Unlock();
|
||||
Mesh mesh = new Mesh(vertexElements, verts.ToArray(), indices.ToArray());
|
||||
|
||||
//store in result
|
||||
result.Meshes.Add(mesh);
|
||||
|
|
|
@ -30,10 +30,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
#region High level mesh rendering
|
||||
public class Mesh
|
||||
{
|
||||
public Mesh(int indexCount, int vertexCount, MeshFlags flags, VertexElement[] elements) { }
|
||||
|
||||
public VertexBuffer VertexBuffer { get; private set; }
|
||||
public IndexBuffer IndexBuffer { get; private set; }
|
||||
public Mesh(VertexElement[] vertexDecl, Array vertexData, Array indexData) { }
|
||||
|
||||
public void DrawSubset(int index) { }
|
||||
|
||||
|
@ -81,33 +78,13 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
{
|
||||
public VertexBuffer(int sizeInBytes) { }
|
||||
|
||||
public DataStream Lock(LockFlags flags) { return null; }
|
||||
public DataStream Lock(int offset, int size, LockFlags flags) { return null; }
|
||||
public void Unlock() { }
|
||||
|
||||
public object Tag { get; set; }
|
||||
public void SetBufferData(Array data) { }
|
||||
public void SetBufferSubdata(long destOffset, Array data) { }
|
||||
public void SetBufferSubdata(long destOffset, Array data, long offset, long size) { }
|
||||
|
||||
public bool Disposed { get; private set; }
|
||||
public void Dispose() { Disposed = true; }
|
||||
}
|
||||
|
||||
public class IndexBuffer
|
||||
{
|
||||
public DataStream Lock(LockFlags flags) { return null; }
|
||||
public void Unlock() { }
|
||||
|
||||
public bool Disposed { get; private set; }
|
||||
public void Dispose() { Disposed = true; }
|
||||
}
|
||||
|
||||
public class DataStream : IDisposable
|
||||
{
|
||||
public void Seek(long offset, System.IO.SeekOrigin origin) { }
|
||||
public void Write(ushort v) { }
|
||||
public void WriteRange(Array data) { }
|
||||
public void WriteRange(Array data, long offset, long size) { }
|
||||
public void Dispose() { }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Textures
|
||||
|
@ -188,8 +165,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
public enum SamplerState { AddressU, AddressV, AddressW }
|
||||
public enum TextureAddress { Wrap, Clamp }
|
||||
public enum Format { Unknown, A8R8G8B8 }
|
||||
public enum LockFlags { None, Discard }
|
||||
public enum MeshFlags { Use32Bit, IndexBufferManaged, VertexBufferManaged, Managed }
|
||||
public enum ShaderFlags { None, Debug }
|
||||
public enum PrimitiveType { LineList, TriangleList, TriangleStrip }
|
||||
public enum CubeMapFace { PositiveX, PositiveY, PositiveZ, NegativeX, NegativeY, NegativeZ }
|
||||
|
|
|
@ -391,11 +391,8 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
thingsvertices = new VertexBuffer(THING_BUFFER_SIZE * 12 * sizeof(FlatVertex));
|
||||
|
||||
// Make screen vertices
|
||||
DataStream stream = screenverts.Lock(LockFlags.Discard);
|
||||
FlatVertex[] verts = CreateScreenVerts(structsize);
|
||||
stream.WriteRange(verts);
|
||||
screenverts.Unlock();
|
||||
stream.Dispose();
|
||||
screenverts.SetBufferData(verts);
|
||||
|
||||
// Force update of view
|
||||
lastgridscale = -1f;
|
||||
|
@ -1203,8 +1200,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
// Anything to render?
|
||||
if(things.Count > 0)
|
||||
{
|
||||
DataStream stream;
|
||||
|
||||
// Make alpha color
|
||||
Color4 alphacolor = new Color4(alpha, 1.0f, 1.0f, 1.0f);
|
||||
bool isthingsmode = (General.Editing.Mode.GetType().Name == "ThingsMode");
|
||||
|
@ -1272,10 +1267,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
if(buffercount == locksize)
|
||||
{
|
||||
// Write to buffer
|
||||
stream = thingsvertices.Lock(0, locksize * 6 * FlatVertex.Stride, LockFlags.Discard);
|
||||
stream.WriteRange(verts, 0, buffercount * 6);
|
||||
thingsvertices.Unlock();
|
||||
stream.Dispose();
|
||||
thingsvertices.SetBufferSubdata(0, verts, 0, buffercount * 6);
|
||||
|
||||
// Draw!
|
||||
graphics.DrawPrimitives(PrimitiveType.TriangleList, 0, buffercount * 2);
|
||||
|
@ -1287,10 +1279,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
}
|
||||
|
||||
// Write to buffer
|
||||
stream = thingsvertices.Lock(0, locksize * 6 * FlatVertex.Stride, LockFlags.Discard);
|
||||
if(buffercount > 0) stream.WriteRange(verts, 0, buffercount * 6);
|
||||
thingsvertices.Unlock();
|
||||
stream.Dispose();
|
||||
if(buffercount > 0) thingsvertices.SetBufferSubdata(0, verts, 0, buffercount * 6);
|
||||
|
||||
// Draw what's still remaining
|
||||
if(buffercount > 0)
|
||||
|
@ -1421,10 +1410,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
if(buffercount == locksize)
|
||||
{
|
||||
// Write to buffer
|
||||
stream = thingsvertices.Lock(0, locksize * 6 * FlatVertex.Stride, LockFlags.Discard);
|
||||
stream.WriteRange(verts, 0, buffercount * 6);
|
||||
thingsvertices.Unlock();
|
||||
stream.Dispose();
|
||||
thingsvertices.SetBufferSubdata(0, verts, 0, buffercount * 6);
|
||||
|
||||
// Draw!
|
||||
graphics.DrawPrimitives(PrimitiveType.TriangleList, 0, buffercount * 2);
|
||||
|
@ -1437,10 +1423,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
}
|
||||
|
||||
// Write to buffer
|
||||
stream = thingsvertices.Lock(0, locksize * 6 * FlatVertex.Stride, LockFlags.Discard);
|
||||
if(buffercount > 0) stream.WriteRange(verts, 0, buffercount * 6);
|
||||
thingsvertices.Unlock();
|
||||
stream.Dispose();
|
||||
thingsvertices.SetBufferSubdata(0, verts, 0, buffercount * 6);
|
||||
|
||||
// Draw what's still remaining
|
||||
if(buffercount > 0) graphics.DrawPrimitives(PrimitiveType.TriangleList, 0, buffercount * 2);
|
||||
|
@ -1474,10 +1457,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
if(buffercount == locksize)
|
||||
{
|
||||
// Write to buffer
|
||||
stream = thingsvertices.Lock(0, locksize * 6 * FlatVertex.Stride, LockFlags.Discard);
|
||||
stream.WriteRange(verts, 0, buffercount * 6);
|
||||
thingsvertices.Unlock();
|
||||
stream.Dispose();
|
||||
thingsvertices.SetBufferSubdata(0, verts, 0, buffercount * 6);
|
||||
|
||||
// Draw!
|
||||
graphics.DrawPrimitives(PrimitiveType.TriangleList, 0, buffercount * 2);
|
||||
|
@ -1489,10 +1469,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
}
|
||||
|
||||
// Write to buffer
|
||||
stream = thingsvertices.Lock(0, locksize * 6 * FlatVertex.Stride, LockFlags.Discard);
|
||||
if(buffercount > 0) stream.WriteRange(verts, 0, buffercount * 6);
|
||||
thingsvertices.Unlock();
|
||||
stream.Dispose();
|
||||
if(buffercount > 0) thingsvertices.SetBufferSubdata(0, verts, 0, buffercount * 6);
|
||||
|
||||
// Draw what's still remaining
|
||||
if(buffercount > 0)
|
||||
|
@ -1997,10 +1974,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
|
||||
// Write to buffer
|
||||
VertexBuffer vb = new VertexBuffer(FlatVertex.Stride * verts.Length);
|
||||
DataStream s = vb.Lock(LockFlags.Discard);
|
||||
s.WriteRange(verts);
|
||||
vb.Unlock();
|
||||
s.Dispose();
|
||||
vb.SetBufferData(verts);
|
||||
|
||||
// Set renderstates for rendering
|
||||
graphics.SetRenderState(RenderState.CullMode, Cull.None);
|
||||
|
|
|
@ -720,10 +720,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
}
|
||||
|
||||
VertexBuffer vb = new VertexBuffer(WorldVertex.Stride * verts.Length);
|
||||
DataStream s = vb.Lock(LockFlags.Discard);
|
||||
s.WriteRange(verts);
|
||||
vb.Unlock();
|
||||
s.Dispose();
|
||||
vb.SetBufferData(verts);
|
||||
|
||||
//begin rendering
|
||||
graphics.SetRenderState(RenderState.AlphaBlendEnable, true);
|
||||
|
|
|
@ -142,22 +142,15 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
VertexBuffer b = new VertexBuffer(FlatVertex.Stride * set.Value.buffersizes[i]);
|
||||
|
||||
// Start refilling the buffer with sector geometry
|
||||
DataStream bstream = b.Lock(LockFlags.Discard);
|
||||
foreach(SurfaceEntry e in set.Value.entries)
|
||||
{
|
||||
if(e.bufferindex == i)
|
||||
{
|
||||
// Fill buffer
|
||||
bstream.Seek(e.vertexoffset * FlatVertex.Stride, SeekOrigin.Begin);
|
||||
bstream.WriteRange(e.floorvertices);
|
||||
bstream.WriteRange(e.ceilvertices);
|
||||
b.SetBufferSubdata(e.vertexoffset * FlatVertex.Stride, e.floorvertices);
|
||||
b.SetBufferSubdata((e.vertexoffset + e.floorvertices.Length) * FlatVertex.Stride, e.ceilvertices);
|
||||
}
|
||||
}
|
||||
|
||||
// Unlock buffer
|
||||
b.Unlock();
|
||||
bstream.Dispose();
|
||||
|
||||
// Add to list
|
||||
set.Value.buffers[i] = b;
|
||||
}
|
||||
|
@ -246,7 +239,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
// This ensures there is enough space for a given number of free entries (also adds new bufers if needed)
|
||||
private void EnsureFreeBufferSpace(SurfaceBufferSet set, int freeentries)
|
||||
{
|
||||
DataStream bstream = null;
|
||||
VertexBuffer vb = null;
|
||||
|
||||
// Check if we have to add entries
|
||||
|
@ -301,15 +293,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
// Reallocate a buffer
|
||||
else
|
||||
{
|
||||
// Trash the old buffer
|
||||
if(set.buffers[bufferindex].Tag != null)
|
||||
{
|
||||
bstream = (DataStream)set.buffers[bufferindex].Tag;
|
||||
set.buffers[bufferindex].Unlock();
|
||||
bstream.Dispose();
|
||||
set.buffers[bufferindex].Tag = null;
|
||||
}
|
||||
|
||||
if((set.buffers[bufferindex] != null) && !resourcesunloaded)
|
||||
set.buffers[bufferindex].Dispose();
|
||||
|
||||
|
@ -331,7 +314,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
{
|
||||
// Make the new buffer and lock it
|
||||
vb = new VertexBuffer(FlatVertex.Stride * buffernumvertices);
|
||||
bstream = vb.Lock(LockFlags.Discard);
|
||||
}
|
||||
|
||||
// Start refilling the buffer with sector geometry
|
||||
|
@ -340,9 +322,9 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
{
|
||||
if(!resourcesunloaded)
|
||||
{
|
||||
// Fill buffer
|
||||
bstream.WriteRange(e.floorvertices);
|
||||
bstream.WriteRange(e.ceilvertices);
|
||||
// Fill buffer
|
||||
set.buffers[bufferindex].SetBufferSubdata(vertexoffset * FlatVertex.Stride, e.floorvertices);
|
||||
set.buffers[bufferindex].SetBufferSubdata((vertexoffset + e.floorvertices.Length) * FlatVertex.Stride, e.ceilvertices);
|
||||
}
|
||||
|
||||
// Set the new location in the buffer
|
||||
|
@ -354,9 +336,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
|
||||
if(!resourcesunloaded)
|
||||
{
|
||||
// Unlock buffer
|
||||
vb.Unlock();
|
||||
bstream.Dispose();
|
||||
set.buffers[bufferindex] = vb;
|
||||
}
|
||||
else
|
||||
|
@ -465,26 +444,9 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
|
||||
if(!resourcesunloaded)
|
||||
{
|
||||
// Lock the buffer
|
||||
DataStream bstream;
|
||||
VertexBuffer vb = set.buffers[e.bufferindex];
|
||||
if(vb.Tag == null)
|
||||
{
|
||||
// Note: DirectX warns me that I am not using LockFlags.Discard or LockFlags.NoOverwrite here,
|
||||
// but we don't have much of a choice since we want to update our data and not destroy other data
|
||||
bstream = vb.Lock(0, set.buffersizes[e.bufferindex] * FlatVertex.Stride, LockFlags.None);
|
||||
vb.Tag = bstream;
|
||||
lockedbuffers.Add(vb);
|
||||
}
|
||||
else
|
||||
{
|
||||
bstream = (DataStream)vb.Tag;
|
||||
}
|
||||
|
||||
// Write the vertices to buffer
|
||||
bstream.Seek(e.vertexoffset * FlatVertex.Stride, SeekOrigin.Begin);
|
||||
bstream.WriteRange(e.floorvertices);
|
||||
bstream.WriteRange(e.ceilvertices);
|
||||
vb.SetBufferSubdata(e.vertexoffset * FlatVertex.Stride, e.floorvertices);
|
||||
vb.SetBufferSubdata((e.vertexoffset + e.floorvertices.Length) * FlatVertex.Stride, e.ceilvertices);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -511,17 +473,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
{
|
||||
if(!resourcesunloaded)
|
||||
{
|
||||
foreach(VertexBuffer vb in lockedbuffers)
|
||||
{
|
||||
if(vb.Tag != null)
|
||||
{
|
||||
DataStream bstream = (DataStream)vb.Tag;
|
||||
vb.Unlock();
|
||||
bstream.Dispose();
|
||||
vb.Tag = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Clear list
|
||||
lockedbuffers = new List<VertexBuffer>();
|
||||
}
|
||||
|
|
|
@ -344,15 +344,8 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
textbuffer = new VertexBuffer(4 * FlatVertex.Stride);
|
||||
}
|
||||
|
||||
//mxd. Lock the buffer
|
||||
using(DataStream stream = textbuffer.Lock(LockFlags.Discard))
|
||||
{
|
||||
FlatQuad quad = new FlatQuad(PrimitiveType.TriangleStrip, beginx, beginy, beginx + texturesize.Width, beginy + texturesize.Height);
|
||||
stream.WriteRange(quad.Vertices);
|
||||
}
|
||||
|
||||
// Done filling the vertex buffer
|
||||
textbuffer.Unlock();
|
||||
FlatQuad quad = new FlatQuad(PrimitiveType.TriangleStrip, beginx, beginy, beginx + texturesize.Width, beginy + texturesize.Height);
|
||||
textbuffer.SetBufferData(quad.Vertices);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -85,8 +85,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
v3, v0 };
|
||||
|
||||
upper = new VertexBuffer(WorldVertex.Stride * vu.Length);
|
||||
upper.Lock(LockFlags.None).WriteRange(vu);
|
||||
upper.Unlock();
|
||||
upper.SetBufferData(vu);
|
||||
|
||||
WorldVertex[] vl = new[]{ c, v4,
|
||||
c, v5,
|
||||
|
@ -99,8 +98,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
v7, v4 };
|
||||
|
||||
lower = new VertexBuffer(WorldVertex.Stride * vl.Length);
|
||||
lower.Lock(LockFlags.None).WriteRange(vl);
|
||||
lower.Unlock();
|
||||
lower.SetBufferData(vl);
|
||||
}
|
||||
|
||||
// This is called before a device is reset
|
||||
|
|
|
@ -140,18 +140,15 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
geobuffer = new VertexBuffer(WorldVertex.Stride * numverts);
|
||||
|
||||
// Fill the buffer
|
||||
DataStream bufferstream = geobuffer.Lock(LockFlags.Discard);
|
||||
foreach(VisualGeometry g in allgeometry)
|
||||
{
|
||||
if((g.Vertices != null) && (g.Vertices.Length > 0))
|
||||
{
|
||||
bufferstream.WriteRange(g.Vertices);
|
||||
geobuffer.SetBufferSubdata(v * WorldVertex.Stride, g.Vertices);
|
||||
g.VertexOffset = v;
|
||||
v += g.Vertices.Length;
|
||||
}
|
||||
}
|
||||
geobuffer.Unlock();
|
||||
bufferstream.Dispose();
|
||||
}
|
||||
|
||||
this.sector.UpdateFogColor(); //mxd
|
||||
|
|
|
@ -527,11 +527,8 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
// Make a new buffer
|
||||
geobuffers[i] = new VertexBuffer(WorldVertex.Stride * vertices[i].Length);
|
||||
|
||||
// Fill the buffer
|
||||
DataStream bufferstream = geobuffers[i].Lock(LockFlags.Discard);
|
||||
bufferstream.WriteRange(vertices[i]);
|
||||
geobuffers[i].Unlock();
|
||||
bufferstream.Dispose();
|
||||
// Fill the buffer
|
||||
geobuffers[i].SetBufferData(vertices[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -616,8 +613,7 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
WorldVertex[] cv = cageverts.ToArray();
|
||||
cagelength = cv.Length / 2;
|
||||
cagebuffer = new VertexBuffer(WorldVertex.Stride * cv.Length);
|
||||
cagebuffer.Lock(LockFlags.None).WriteRange(cv);
|
||||
cagebuffer.Unlock();
|
||||
cagebuffer.SetBufferData(cv);
|
||||
|
||||
// Done
|
||||
updatecage = false;
|
||||
|
|
Loading…
Reference in a new issue