mirror of
https://git.do.srb2.org/STJr/ZoneBuilder.git
synced 2024-11-10 06:41:49 +00:00
Merged in GZDB r2496.
This commit is contained in:
parent
7a82022239
commit
264a883e47
6 changed files with 80 additions and 62 deletions
|
@ -2682,6 +2682,8 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
// Set render settings...
|
// Set render settings...
|
||||||
device.SetRenderState(RenderState.ZEnable, false);
|
device.SetRenderState(RenderState.ZEnable, false);
|
||||||
device.SetRenderState(RenderState.CullMode, Cull.None);
|
device.SetRenderState(RenderState.CullMode, Cull.None);
|
||||||
|
device.SetSamplerState(0, SamplerState.AddressU, TextureAddress.Clamp);
|
||||||
|
device.SetSamplerState(0, SamplerState.AddressV, TextureAddress.Clamp);
|
||||||
|
|
||||||
// Setup matrices
|
// Setup matrices
|
||||||
Vector3 offset = new Vector3(0f, 0f, -1.8f); // Sphere size is 10 mu
|
Vector3 offset = new Vector3(0f, 0f, -1.8f); // Sphere size is 10 mu
|
||||||
|
@ -3026,14 +3028,17 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
|
|
||||||
private static Texture TextureFromBitmap(Device device, Image image)
|
private static Texture TextureFromBitmap(Device device, Image image)
|
||||||
{
|
{
|
||||||
MemoryStream ms = new MemoryStream();
|
using (MemoryStream ms = new MemoryStream())
|
||||||
|
{
|
||||||
image.Save(ms, ImageFormat.Png);
|
image.Save(ms, ImageFormat.Png);
|
||||||
ms.Seek(0, SeekOrigin.Begin);
|
ms.Seek(0, SeekOrigin.Begin);
|
||||||
Texture result = Texture.FromStream(device, ms);
|
|
||||||
ms.Close();
|
|
||||||
ms.Dispose();
|
|
||||||
|
|
||||||
return result;
|
// Classic skies textures can be NPo2 (and D3D Texture is resized to Po2 by default),
|
||||||
|
// so we need to explicitly specify the size
|
||||||
|
return Texture.FromStream(device, ms, (int)ms.Length,
|
||||||
|
image.Size.Width, image.Size.Height, 0, Usage.None, Format.Unknown,
|
||||||
|
Pool.Managed, Filter.None, Filter.None, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -421,9 +421,6 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Offset it slightly to avoid shading glitches
|
|
||||||
if (light.Offset.Z == 0.0f) light.Offset.Z = 0.1f;
|
|
||||||
|
|
||||||
// Add to the collection?
|
// Add to the collection?
|
||||||
if (!skip) lightsbyname[lightname] = light;
|
if (!skip) lightsbyname[lightname] = light;
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
device.SetRenderState(RenderState.CullMode, Cull.None);
|
device.SetRenderState(RenderState.CullMode, Cull.None);
|
||||||
device.SetRenderState(RenderState.DestinationBlend, Blend.InverseSourceAlpha);
|
device.SetRenderState(RenderState.DestinationBlend, Blend.InverseSourceAlpha);
|
||||||
device.SetRenderState(RenderState.DiffuseMaterialSource, ColorSource.Color1);
|
device.SetRenderState(RenderState.DiffuseMaterialSource, ColorSource.Color1);
|
||||||
device.SetRenderState(RenderState.DitherEnable, true);
|
//device.SetRenderState(RenderState.DitherEnable, true);
|
||||||
device.SetRenderState(RenderState.FillMode, FillMode.Solid);
|
device.SetRenderState(RenderState.FillMode, FillMode.Solid);
|
||||||
device.SetRenderState(RenderState.FogEnable, false);
|
device.SetRenderState(RenderState.FogEnable, false);
|
||||||
device.SetRenderState(RenderState.FogTableMode, FogMode.Linear);
|
device.SetRenderState(RenderState.FogTableMode, FogMode.Linear);
|
||||||
|
@ -154,6 +154,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
device.SetRenderState(RenderState.NormalizeNormals, false);
|
device.SetRenderState(RenderState.NormalizeNormals, false);
|
||||||
device.SetRenderState(RenderState.PointSpriteEnable, false);
|
device.SetRenderState(RenderState.PointSpriteEnable, false);
|
||||||
device.SetRenderState(RenderState.RangeFogEnable, false);
|
device.SetRenderState(RenderState.RangeFogEnable, false);
|
||||||
|
device.SetRenderState(RenderState.ShadeMode, ShadeMode.Flat); //mxd
|
||||||
device.SetRenderState(RenderState.SourceBlend, Blend.SourceAlpha);
|
device.SetRenderState(RenderState.SourceBlend, Blend.SourceAlpha);
|
||||||
device.SetRenderState(RenderState.SpecularEnable, false);
|
device.SetRenderState(RenderState.SpecularEnable, false);
|
||||||
device.SetRenderState(RenderState.StencilEnable, false);
|
device.SetRenderState(RenderState.StencilEnable, false);
|
||||||
|
|
|
@ -237,7 +237,7 @@ float4 ps_vertex_color(PixelData pd) : COLOR
|
||||||
float4 ps_lightpass(LitPixelData pd) : COLOR
|
float4 ps_lightpass(LitPixelData pd) : COLOR
|
||||||
{
|
{
|
||||||
//is face facing away from light source?
|
//is face facing away from light source?
|
||||||
if(dot(pd.normal, (lightPosAndRadius.xyz - pd.pos_w)) < -0.1f) // (lightPosAndRadius.xyz - pd.pos_w) == direction from light to current pixel
|
if(dot(pd.normal, normalize(lightPosAndRadius.xyz - pd.pos_w)) < -0.1f) // (lightPosAndRadius.xyz - pd.pos_w) == direction from light to current pixel
|
||||||
clip(-1);
|
clip(-1);
|
||||||
|
|
||||||
//is pixel in light range?
|
//is pixel in light range?
|
||||||
|
|
|
@ -54,7 +54,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
private readonly Vector2D dragstartmappos;
|
private readonly Vector2D dragstartmappos;
|
||||||
|
|
||||||
//mxd. Offset from nearest grid intersection to dragstartmappos
|
//mxd. Offset from nearest grid intersection to dragstartmappos
|
||||||
private Vector2D dragstartoffset;
|
private readonly Vector2D dragstartoffset;
|
||||||
|
|
||||||
// Item used as reference for snapping to the grid
|
// Item used as reference for snapping to the grid
|
||||||
private readonly Thing dragitem;
|
private readonly Thing dragitem;
|
||||||
|
@ -63,6 +63,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
// List of old thing positions
|
// List of old thing positions
|
||||||
private readonly List<Vector2D> oldpositions;
|
private readonly List<Vector2D> oldpositions;
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
private bool makeundo;
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
private class AlignData
|
private class AlignData
|
||||||
{
|
{
|
||||||
|
@ -111,11 +114,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
#region ================== Constructor / Disposer
|
#region ================== Constructor / Disposer
|
||||||
|
|
||||||
// Constructor to start dragging immediately
|
// Constructor to start dragging immediately
|
||||||
public DragThingsMode(EditMode basemode, Vector2D dragstartmappos)
|
public DragThingsMode(EditMode basemode, Vector2D dragstartmappos, bool makeundo)
|
||||||
{
|
{
|
||||||
// Initialize
|
// Initialize
|
||||||
this.dragstartmappos = dragstartmappos;
|
this.dragstartmappos = dragstartmappos;
|
||||||
this.basemode = basemode;
|
this.basemode = basemode;
|
||||||
|
this.makeundo = makeundo; //mxd
|
||||||
|
|
||||||
Cursor.Current = Cursors.AppStarting;
|
Cursor.Current = Cursors.AppStarting;
|
||||||
|
|
||||||
|
@ -371,11 +375,11 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
dragitem.Move(dragitem.Position.x, dragitem.Position.y, aligndata.InitialHeight);
|
dragitem.Move(dragitem.Position.x, dragitem.Position.y, aligndata.InitialHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make undo for the dragging
|
if (makeundo) //mxd
|
||||||
General.Map.UndoRedo.CreateUndo((selectedthings.Count == 1 ? "Drag thing" : "Drag " + selectedthings.Count + " things"));
|
General.Map.UndoRedo.CreateUndo((selectedthings.Count == 1 ? "Drag thing" : "Drag " + selectedthings.Count + " things"));
|
||||||
|
|
||||||
// Move selected geometry to final position
|
// Move selected geometry to final position
|
||||||
if(aligndata != null && aligndata.Active) //mxd. Apply aligning
|
if (aligndata != null && aligndata.Active) //mxd. Apply aligning
|
||||||
{
|
{
|
||||||
if(!aligndata.Position.IsEmpty)
|
if(!aligndata.Position.IsEmpty)
|
||||||
dragitem.Move(aligndata.Position.X, aligndata.Position.Y, aligndata.CurrentHeight);
|
dragitem.Move(aligndata.Position.X, aligndata.Position.Y, aligndata.CurrentHeight);
|
||||||
|
|
|
@ -598,10 +598,17 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
if(!BuilderPlug.Me.DontMoveGeometryOutsideMapBoundary || CanDrag()) //mxd
|
if(!BuilderPlug.Me.DontMoveGeometryOutsideMapBoundary || CanDrag()) //mxd
|
||||||
{
|
{
|
||||||
// Shift pressed? Clone things!
|
// Shift pressed? Clone things!
|
||||||
if(General.Interface.ShiftState)
|
bool thingscloned = false;
|
||||||
|
if (General.Interface.ShiftState)
|
||||||
{
|
{
|
||||||
ICollection<Thing> selection = General.Map.Map.GetSelectedThings(true);
|
ICollection<Thing> selection = General.Map.Map.GetSelectedThings(true);
|
||||||
foreach(Thing t in selection)
|
if (selection.Count > 0)
|
||||||
|
{
|
||||||
|
// Make undo
|
||||||
|
General.Map.UndoRedo.CreateUndo((selection.Count == 1 ? "Clone-drag thing" : "Clone-drag " + selection.Count + " things"));
|
||||||
|
|
||||||
|
// Clone things
|
||||||
|
foreach (Thing t in selection)
|
||||||
{
|
{
|
||||||
Thing clone = InsertThing(t.Position);
|
Thing clone = InsertThing(t.Position);
|
||||||
t.CopyPropertiesTo(clone);
|
t.CopyPropertiesTo(clone);
|
||||||
|
@ -611,7 +618,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
int nextpointtagargnum = -1;
|
int nextpointtagargnum = -1;
|
||||||
|
|
||||||
// Thing type can be changed in MAPINFO DoomEdNums block...
|
// Thing type can be changed in MAPINFO DoomEdNums block...
|
||||||
switch(info.ClassName.ToLowerInvariant())
|
switch (info.ClassName.ToLowerInvariant())
|
||||||
{
|
{
|
||||||
case "interpolationpoint":
|
case "interpolationpoint":
|
||||||
nextpointtagargnum = 3;
|
nextpointtagargnum = 3;
|
||||||
|
@ -623,18 +630,22 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply changes?
|
// Apply changes?
|
||||||
if(nextpointtagargnum != -1)
|
if (nextpointtagargnum != -1)
|
||||||
{
|
{
|
||||||
if(t.Tag == 0) t.Tag = General.Map.Map.GetNewTag();
|
if (t.Tag == 0) t.Tag = General.Map.Map.GetNewTag();
|
||||||
t.Args[nextpointtagargnum] = clone.Tag = General.Map.Map.GetNewTag();
|
t.Args[nextpointtagargnum] = clone.Tag = General.Map.Map.GetNewTag();
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Selected = false;
|
t.Selected = false;
|
||||||
clone.Selected = true;
|
clone.Selected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We'll want to skip creating additional Undo in DragThingsMode
|
||||||
|
thingscloned = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
General.Editing.ChangeMode(new DragThingsMode(new ThingsMode(), mousedownmappos));
|
General.Editing.ChangeMode(new DragThingsMode(new ThingsMode(), mousedownmappos, !thingscloned));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue