Fixed: voxels were incorrectly loaded from WADs.

Fixed, Draw Geometry modes: fixed a crash when moving the mouse cursor over a vertex while holding Alt-Shift keys when there were no new points drawn in current mode.
This commit is contained in:
MaxED 2016-07-17 21:38:29 +00:00
parent 94dedf9aa9
commit 7772ebbb52
2 changed files with 19 additions and 18 deletions

View file

@ -988,7 +988,10 @@ namespace CodeImp.DoomBuilder.Data
if(lump != null)
{
voxellocation = location.GetDisplayName();
return lump.Stream;
// Copy stream, because model/voxel streams are expected to be disposed
lump.Stream.Seek(0, SeekOrigin.Begin); // Rewind before use
return new MemoryStream(lump.Stream.ReadAllBytes());
}
}

View file

@ -308,10 +308,11 @@ namespace CodeImp.DoomBuilder.BuilderModes
DrawnVertex p = new DrawnVertex();
p.stitch = true; //mxd. Setting these to false seems to be a good way to create invalid geometry...
p.stitchline = true; //mxd
snaptocardinal = (snaptocardinal && points.Count > 0); //mxd. Don't snap to cardinal when there are no points
//mxd. If snap to cardinal directions is enabled and we have points, modify mouse position
Vector2D vm, gridoffset;
if(snaptocardinal && points.Count > 0)
if(snaptocardinal)
{
Vector2D offset = mousemappos - points[points.Count - 1].pos;
@ -354,7 +355,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
if(nv != null)
{
//mxd. Line angle must stay the same
if(snaptocardinal) //mxd
if(snaptocardinal)
{
Line2D ourline = new Line2D(points[points.Count - 1].pos, vm);
if(Math.Round(ourline.GetSideOfLine(nv.Position), 1) == 0)
@ -376,8 +377,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
{
//mxd. Line angle must stay the same
if(snaptocardinal)
{
if(points.Count > 0)
{
Line2D ourline = new Line2D(points[points.Count - 1].pos, vm);
Line2D nearestline = new Line2D(nl.Start.Position, nl.End.Position);
@ -396,7 +395,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
}
}
}
}
// Snap to grid?
else if(snaptogrid)
{