mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-11-22 11:51:25 +00:00
GZDoom Builder 1.12d:
TEXTURES patches can now be loaded from anywhere inside resource. Configs: things from "Cameras and Interpolation" and "Boom Items" categories weren't rendered in Visual modes. Configs: several new icons are now used for things. Reverted sectors rendering from 1.12b, because it was done in too hackish way and was causing more and more problems. Models rendered height is now 25% lower instead. Models rendering height can be toggled between normal and 85% in Preferences->Appearance->"Scale models in Visual modes" Fixed several small bugs here and there.
This commit is contained in:
parent
508a3f2772
commit
eb86ab60af
26 changed files with 1703 additions and 1679 deletions
|
@ -4,9 +4,11 @@ boom
|
|||
color = 8; // Grey
|
||||
arrow = 1;
|
||||
title = "Boom Items";
|
||||
width = 0;
|
||||
width = 8;
|
||||
height = 16;
|
||||
sort = 1;
|
||||
fixedsize = true;
|
||||
sprite = "internal:action";
|
||||
|
||||
5001 = "Pusher";
|
||||
5002 = "Puller";
|
||||
|
|
|
@ -273,6 +273,7 @@ zdoom
|
|||
hangs = 0;
|
||||
blocking = 0;
|
||||
error = 1;
|
||||
sprite = "internal:bridge";
|
||||
|
||||
5064
|
||||
{
|
||||
|
@ -331,13 +332,14 @@ zdoom
|
|||
color = 7; // Light Grey
|
||||
arrow = 1;
|
||||
title = "Cameras and Interpolation";
|
||||
width = 16;
|
||||
width = 8;
|
||||
height = 16;
|
||||
sort = 1;
|
||||
height = 0;
|
||||
hangs = 0;
|
||||
blocking = 0;
|
||||
error = 1;
|
||||
fixedsize = true;
|
||||
sprite = "internal:camera";
|
||||
|
||||
9025
|
||||
{
|
||||
|
@ -595,10 +597,11 @@ zdoom
|
|||
title = "Slopes";
|
||||
width = 8;
|
||||
sort = 1;
|
||||
height = 0;
|
||||
height = 16;
|
||||
hangs = 0;
|
||||
blocking = 0;
|
||||
fixedsize = true;
|
||||
sprite = "internal:slope";
|
||||
|
||||
9511
|
||||
{
|
||||
|
@ -793,9 +796,9 @@ zdoom
|
|||
color = 7;
|
||||
arrow = 0;
|
||||
title = "Portals";
|
||||
width = 0;
|
||||
width = 8;
|
||||
sort = 1;
|
||||
height = 0;
|
||||
height = 16;
|
||||
hangs = 0;
|
||||
blocking = 0;
|
||||
fixedsize = true;
|
||||
|
@ -803,6 +806,7 @@ zdoom
|
|||
9077
|
||||
{
|
||||
title = "Upper Sector";
|
||||
sprite = "internal:portal_upper";
|
||||
arg0
|
||||
{
|
||||
title = "Flat Transparency";
|
||||
|
@ -813,6 +817,7 @@ zdoom
|
|||
9078
|
||||
{
|
||||
title = "Lower Sector";
|
||||
sprite = "internal:portal_lower";
|
||||
arg0
|
||||
{
|
||||
title = "Flat Transparency";
|
||||
|
|
|
@ -346,6 +346,7 @@ keywords
|
|||
StartConversation = "StartConversation(tid, facing)";
|
||||
Str = "Str expression";
|
||||
strlen = "strlen(string)";
|
||||
StrParam = "int StrParam(item(s))";
|
||||
Suspend = "Suspend";
|
||||
Switch = "Switch(expression)";
|
||||
TagWait = "TagWait(tag)";
|
||||
|
|
BIN
Build/Sprites/Bridge.png
Normal file
BIN
Build/Sprites/Bridge.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 361 B |
BIN
Build/Sprites/Camera.png
Normal file
BIN
Build/Sprites/Camera.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 595 B |
BIN
Build/Sprites/Portal_lower.png
Normal file
BIN
Build/Sprites/Portal_lower.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 337 B |
BIN
Build/Sprites/Portal_upper.png
Normal file
BIN
Build/Sprites/Portal_upper.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 360 B |
BIN
Build/Sprites/Slope.png
Normal file
BIN
Build/Sprites/Slope.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 331 B |
|
@ -107,6 +107,7 @@ namespace CodeImp.DoomBuilder.Config
|
|||
private float gzDynamicLightRadius;
|
||||
private float gzDynamicLightIntensity;
|
||||
private bool gzTestFromCurrentPosition;
|
||||
private bool gzStretchModels;
|
||||
|
||||
// These are not stored in the configuration, only used at runtime
|
||||
private string defaulttexture;
|
||||
|
@ -183,6 +184,7 @@ namespace CodeImp.DoomBuilder.Config
|
|||
public int GZMaxDynamicLights { get { return gzMaxDynamicLights; } internal set { gzMaxDynamicLights = value; } }
|
||||
public float GZDynamicLightRadius { get { return gzDynamicLightRadius; } internal set { gzDynamicLightRadius = value; } }
|
||||
public float GZDynamicLightIntensity { get { return gzDynamicLightIntensity; } internal set { gzDynamicLightIntensity = value; } }
|
||||
public bool GZStretchModels { get { return gzStretchModels; } internal set { gzStretchModels = value; } }
|
||||
|
||||
public string DefaultTexture { get { return defaulttexture; } set { defaulttexture = value; } }
|
||||
public string DefaultFloorTexture { get { return defaultfloortexture; } set { defaultfloortexture = value; } }
|
||||
|
@ -275,6 +277,7 @@ namespace CodeImp.DoomBuilder.Config
|
|||
gzMaxDynamicLights = cfg.ReadSetting("gzmaxdynamiclights", 16);
|
||||
gzDynamicLightRadius = cfg.ReadSetting("gzdynamiclightradius", 1.0f);
|
||||
gzDynamicLightIntensity = cfg.ReadSetting("gzdynamiclightintensity", 1.0f);
|
||||
gzStretchModels = cfg.ReadSetting("gzstretchmodels", true);
|
||||
|
||||
// Success
|
||||
return true;
|
||||
|
@ -349,6 +352,7 @@ namespace CodeImp.DoomBuilder.Config
|
|||
cfg.WriteSetting("gzmaxdynamiclights", gzMaxDynamicLights);
|
||||
cfg.WriteSetting("gzdynamiclightradius", gzDynamicLightRadius);
|
||||
cfg.WriteSetting("gzdynamiclightintensity", gzDynamicLightIntensity);
|
||||
cfg.WriteSetting("gzstretchmodels", gzStretchModels);
|
||||
|
||||
// Save settings configuration
|
||||
General.WriteLogLine("Saving program configuration...");
|
||||
|
|
|
@ -88,8 +88,11 @@ namespace CodeImp.DoomBuilder.Data
|
|||
try
|
||||
{
|
||||
// Find in patches directory
|
||||
string path = Path.Combine(PATCHES_DIR, Path.GetDirectoryName(pname));
|
||||
string filename = FindFirstFile(path, Path.GetFileName(pname), true);
|
||||
//string path = Path.Combine(PATCHES_DIR, Path.GetDirectoryName(pname));
|
||||
//string filename = FindFirstFile(path, Path.GetFileName(pname), true);
|
||||
|
||||
//mxd. ZDoom can load them from anywhere, so shall we
|
||||
string filename = FindFirstFile(Path.GetDirectoryName(pname), Path.GetFileName(pname), true);
|
||||
if((filename != null) && FileExists(filename))
|
||||
{
|
||||
return LoadFile(filename);
|
||||
|
|
|
@ -128,7 +128,8 @@ namespace CodeImp.DoomBuilder.Data
|
|||
}
|
||||
|
||||
// Find in patches directory
|
||||
string filename = FindFirstFile(PATCHES_DIR, pname, true);
|
||||
//string filename = FindFirstFile(PATCHES_DIR, pname, true);
|
||||
string filename = FindFirstFile("", pname, true); //mxd. ZDoom can load them from anywhere, so shall we
|
||||
if((filename != null) && FileExists(filename))
|
||||
{
|
||||
return LoadFile(filename);
|
||||
|
|
|
@ -270,7 +270,8 @@ namespace CodeImp.DoomBuilder.Data
|
|||
|
||||
//no need to search in wads...
|
||||
// Find in patches directory
|
||||
string filename = FindFirstFile(PATCHES_DIR, pname, true);
|
||||
//string filename = FindFirstFile(PATCHES_DIR, pname, true);
|
||||
string filename = FindFirstFile("", pname, true); //mxd. ZDoom can load them from anywhere, so shall we
|
||||
if ((filename != null) && FileExists(filename))
|
||||
return filename;
|
||||
|
||||
|
@ -419,8 +420,14 @@ namespace CodeImp.DoomBuilder.Data
|
|||
|
||||
if(filename.IndexOf('.') > -1)
|
||||
{
|
||||
allfilenames = new string[1];
|
||||
allfilenames[0] = Path.Combine(pathname, filename);
|
||||
string fullName = Path.Combine(pathname, filename);
|
||||
if(FileExists(fullName)) {
|
||||
allfilenames = new string[1];
|
||||
allfilenames[0] = Path.Combine(pathname, filename);
|
||||
} else {
|
||||
allfilenames = new string[0];
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Unable to load DECORATE file '" + fullName + "'");
|
||||
}
|
||||
}
|
||||
else
|
||||
allfilenames = GetAllFilesWithTitle(pathname, filename, false);
|
||||
|
|
|
@ -33,7 +33,7 @@ namespace CodeImp.DoomBuilder.GZBuilder
|
|||
|
||||
//version
|
||||
public const float Version = 1.12f;
|
||||
public const char Revision = 'b';
|
||||
public const char Revision = 'd';
|
||||
|
||||
//debug console
|
||||
#if DEBUG
|
||||
|
|
|
@ -20,7 +20,9 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
|||
{
|
||||
internal static class ModelReader
|
||||
{
|
||||
public static void Parse(ref ModeldefEntry mde, PK3StructuredReader reader, Device D3DDevice) {
|
||||
private const float VERTICAL_STRETCH = 1 / 1.2f;
|
||||
|
||||
public static void Parse(ref ModeldefEntry mde, PK3StructuredReader reader, Device D3DDevice) {
|
||||
string[] modelNames = new string[mde.ModelNames.Count];
|
||||
string[] textureNames = new string[mde.TextureNames.Count];
|
||||
|
||||
|
@ -234,7 +236,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
|||
//scale it
|
||||
v.y *= mde.Scale.X;
|
||||
v.x *= mde.Scale.Y;
|
||||
v.z *= mde.Scale.Z;
|
||||
v.z *= mde.Scale.Z;
|
||||
if(General.Settings.GZStretchModels) v.z *= VERTICAL_STRETCH; //GZDoom vertical stretch hack
|
||||
|
||||
//add zOffset
|
||||
v.z += mde.zOffset;
|
||||
|
@ -362,7 +365,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
|||
//scale it
|
||||
v.x *= mde.Scale.X;
|
||||
v.y *= mde.Scale.Y;
|
||||
v.z *= mde.Scale.Z;
|
||||
v.z *= mde.Scale.Z;
|
||||
if(General.Settings.GZStretchModels) v.z *= VERTICAL_STRETCH; //GZDoom vertical stretch hack
|
||||
|
||||
//add zOffset
|
||||
v.z += mde.zOffset;
|
||||
|
|
|
@ -216,29 +216,6 @@ namespace CodeImp.DoomBuilder.Map
|
|||
{
|
||||
//mxd
|
||||
sector = map.GetSectorByCoordinates(pos);
|
||||
|
||||
/*Linedef nl;
|
||||
|
||||
// Find the nearest linedef on the map
|
||||
nl = map.NearestLinedef(pos);
|
||||
if(nl != null)
|
||||
{
|
||||
// Check what side of line we are at
|
||||
if(nl.SideOfLine(pos) < 0f)
|
||||
{
|
||||
// Front side
|
||||
if(nl.Front != null) sector = nl.Front.Sector; else sector = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Back side
|
||||
if(nl.Back != null) sector = nl.Back.Sector; else sector = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sector = null;
|
||||
}*/
|
||||
}
|
||||
|
||||
// This determines which sector the thing is in and links it
|
||||
|
|
|
@ -513,7 +513,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
// This ends rendering world geometry
|
||||
public void FinishGeometry()
|
||||
{
|
||||
//mxd. sort lights
|
||||
//mxd. sort lights
|
||||
if (General.Settings.GZDrawLights && !fullbrightness && thingsWithLight.Count > 0)
|
||||
updateLights();
|
||||
|
||||
|
@ -527,8 +527,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
graphics.Shaders.World3D.Begin();
|
||||
|
||||
// SOLID PASS
|
||||
//world = Matrix.Identity;
|
||||
world = Matrix.Scaling(new Vector3(1.0f, 1.0f, 1.2f)); //mxd. GZDoom vertical scale hack
|
||||
world = Matrix.Identity;
|
||||
ApplyMatrices3D();
|
||||
RenderSinglePass((int)RenderPass.Solid);
|
||||
|
||||
|
@ -539,14 +538,12 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
graphics.Device.SetRenderState(RenderState.CullMode, Cull.Counterclockwise);
|
||||
|
||||
// MASK PASS
|
||||
//world = Matrix.Identity;
|
||||
world = Matrix.Scaling(new Vector3(1.0f, 1.0f, 1.2f)); //mxd. GZDoom vertical scale hack
|
||||
world = Matrix.Identity;
|
||||
ApplyMatrices3D();
|
||||
RenderSinglePass((int)RenderPass.Mask);
|
||||
|
||||
// ALPHA PASS
|
||||
//world = Matrix.Identity;
|
||||
world = Matrix.Scaling(new Vector3(1.0f, 1.0f, 1.2f)); //mxd. GZDoom vertical scale hack
|
||||
world = Matrix.Identity;
|
||||
ApplyMatrices3D();
|
||||
graphics.Device.SetRenderState(RenderState.AlphaBlendEnable, true);
|
||||
graphics.Device.SetRenderState(RenderState.AlphaTestEnable, false);
|
||||
|
@ -559,15 +556,13 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
if(renderthingcages) RenderThingCages();
|
||||
|
||||
// ADDITIVE PASS
|
||||
//world = Matrix.Identity;
|
||||
world = Matrix.Scaling(new Vector3(1.0f, 1.0f, 1.2f)); //mxd. GZDoom vertical scale hack
|
||||
world = Matrix.Identity;
|
||||
ApplyMatrices3D();
|
||||
graphics.Device.SetRenderState(RenderState.DestinationBlend, Blend.One);
|
||||
RenderSinglePass((int)RenderPass.Additive);
|
||||
|
||||
//mxd. LIGHT PASS
|
||||
if (General.Settings.GZDrawLights && !fullbrightness && thingsWithLight.Count > 0 && litGeometry.Count > 0) {
|
||||
world = Matrix.Scaling(new Vector3(1.0f, 1.0f, 1.2f)); //mxd. GZDoom vertical scale hack
|
||||
RenderLights(litGeometry, thingsWithLight);
|
||||
}
|
||||
|
||||
|
@ -629,7 +624,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
|
||||
foreach (VisualThing t in thingsbydistance) {
|
||||
// Setup matrix
|
||||
world = Matrix.Multiply(t.CageScales, t.ScaledPosition); //mxd. GZDoom vertical scale hack
|
||||
world = Matrix.Multiply(t.CageScales, t.Position);
|
||||
ApplyMatrices3D();
|
||||
|
||||
// Setup color
|
||||
|
@ -650,7 +645,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
//and arrow
|
||||
float sx = t.CageScales.M11;
|
||||
Matrix arrowScaler = Matrix.Scaling(sx, sx, sx); //scale arrow evenly based on thing width\depth
|
||||
world = Matrix.Multiply(arrowScaler, t.ScaledPosition * Matrix.Translation(0.0f, 0.0f, t.CageScales.M33 / 2)); //mxd. GZDoom vertical scale hack
|
||||
world = Matrix.Multiply(arrowScaler, t.Position * Matrix.Translation(0.0f, 0.0f, t.CageScales.M33 / 2));
|
||||
Matrix rot = Matrix.RotationZ(t.Thing.Angle - Angle2D.PI / 2);
|
||||
world = Matrix.Multiply(rot, world);
|
||||
ApplyMatrices3D();
|
||||
|
@ -860,7 +855,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
// Create the matrix for positioning / rotation
|
||||
world = t.Orientation;
|
||||
if (t.Billboard) world = Matrix.Multiply(world, billboard);
|
||||
world = Matrix.Multiply(world, t.ScaledPosition); //mxd. GZDoom vertical scale hack
|
||||
world = Matrix.Multiply(world, t.Position);
|
||||
ApplyMatrices3D();
|
||||
|
||||
//mxd. set variables for fog rendering
|
||||
|
@ -896,7 +891,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
|
||||
//mxd. Dynamic lights pass!
|
||||
private void RenderLights(Dictionary<Texture, List<VisualGeometry>> geometry_to_lit, List<VisualThing> lights) {
|
||||
graphics.Shaders.World3D.World = world;
|
||||
graphics.Shaders.World3D.World = Matrix.Identity;
|
||||
graphics.Shaders.World3D.BeginPass(17);
|
||||
|
||||
int i, count;
|
||||
|
@ -921,7 +916,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
|
||||
for (i = 0; i < count; i++) {
|
||||
if (checkBBoxIntersection(g.BoundingBox, lights[i].BoundingBox)) {
|
||||
lpr = new Vector4(lights[i].Center,lights[i].LightRadius) ;
|
||||
lpr = new Vector4(lights[i].Center, lights[i].LightRadius);
|
||||
if (lpr.W == 0)
|
||||
continue;
|
||||
graphics.Shaders.World3D.LightColor = lights[i].LightColor;
|
||||
|
@ -1023,7 +1018,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
|
||||
// Create the matrix for positioning / rotation
|
||||
world = Matrix.Multiply(t.Orientation, Matrix.RotationZ(t.Thing.Angle));
|
||||
world = Matrix.Multiply(world, t.ScaledPosition); //mxd. GZDoom vertical scale hack
|
||||
world = Matrix.Multiply(world, t.Position);
|
||||
ApplyMatrices3D();
|
||||
|
||||
//mxd. set variables for fog rendering
|
||||
|
@ -1160,7 +1155,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
//t.CameraDistance3D is actually squared distance, hence (t.LightRadius * t.LightRadius)
|
||||
if (t.CameraDistance3D < (t.LightRadius * t.LightRadius) || isThingOnScreen(t.BoundingBox)) { //always render light if camera is within it's radius
|
||||
if (Array.IndexOf(GZBuilder.GZGeneral.GZ_ANIMATED_LIGHT_TYPES, t.LightType) != -1)
|
||||
t.UpdateBoundingBox();//t.UpdateBoundingBox(t.LightRadius, t.LightRadius * 2);
|
||||
t.UpdateBoundingBox();
|
||||
thingsWithLight.Add(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ namespace CodeImp.DoomBuilder.Types
|
|||
|
||||
private EnumList list;
|
||||
private int value;
|
||||
private int defaultValue; //mxd
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -61,6 +62,7 @@ namespace CodeImp.DoomBuilder.Types
|
|||
// When set up for an argument
|
||||
public override void SetupArgument(TypeHandlerAttribute attr, ArgumentInfo arginfo)
|
||||
{
|
||||
defaultValue = (int)arginfo.DefaultValue;//mxd
|
||||
base.SetupArgument(attr, arginfo);
|
||||
|
||||
// Keep enum list reference
|
||||
|
@ -105,6 +107,11 @@ namespace CodeImp.DoomBuilder.Types
|
|||
}
|
||||
}
|
||||
|
||||
//mxd
|
||||
public override void SetDefaultValue() {
|
||||
value = defaultValue;
|
||||
}
|
||||
|
||||
public override object GetValue()
|
||||
{
|
||||
return this.value;
|
||||
|
|
|
@ -42,6 +42,7 @@ namespace CodeImp.DoomBuilder.Types
|
|||
|
||||
private EnumList list;
|
||||
private EnumItem value;
|
||||
private EnumItem defaultValue; //mxd
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -57,6 +58,7 @@ namespace CodeImp.DoomBuilder.Types
|
|||
// When set up for an argument
|
||||
public override void SetupArgument(TypeHandlerAttribute attr, ArgumentInfo arginfo)
|
||||
{
|
||||
defaultValue = new EnumItem(arginfo.DefaultValue.ToString(), arginfo.DefaultValue.ToString());//mxd
|
||||
base.SetupArgument(attr, arginfo);
|
||||
|
||||
// Keep enum list reference
|
||||
|
@ -144,6 +146,11 @@ namespace CodeImp.DoomBuilder.Types
|
|||
}
|
||||
}
|
||||
|
||||
//mxd
|
||||
public override void SetDefaultValue() {
|
||||
value = defaultValue;
|
||||
}
|
||||
|
||||
public override object GetValue()
|
||||
{
|
||||
return GetIntValue();
|
||||
|
|
|
@ -42,6 +42,7 @@ namespace CodeImp.DoomBuilder.Types
|
|||
|
||||
private EnumList list;
|
||||
private EnumItem value;
|
||||
private EnumItem defaultValue; //mxd
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -57,6 +58,7 @@ namespace CodeImp.DoomBuilder.Types
|
|||
// When set up for an argument
|
||||
public override void SetupArgument(TypeHandlerAttribute attr, ArgumentInfo arginfo)
|
||||
{
|
||||
defaultValue = new EnumItem(arginfo.DefaultValue.ToString(), arginfo.DefaultValue.ToString()); //mxd
|
||||
base.SetupArgument(attr, arginfo);
|
||||
|
||||
// Keep enum list reference
|
||||
|
@ -126,6 +128,11 @@ namespace CodeImp.DoomBuilder.Types
|
|||
}
|
||||
}
|
||||
|
||||
//mxd
|
||||
public override void SetDefaultValue() {
|
||||
value = defaultValue;
|
||||
}
|
||||
|
||||
public override object GetValue()
|
||||
{
|
||||
if(this.value != null) return this.value.Value; else return "";
|
||||
|
|
|
@ -91,6 +91,7 @@ namespace CodeImp.DoomBuilder.Types
|
|||
}
|
||||
}
|
||||
|
||||
//mxd
|
||||
public override void SetDefaultValue() {
|
||||
value = defaultValue;
|
||||
}
|
||||
|
|
|
@ -46,7 +46,6 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
#region ================== Constants
|
||||
|
||||
private const float MOVE_SPEED_MULTIPLIER = 0.001f;
|
||||
private const float SCALE_OFFSET = 1f / 1.2f; //mxd GZDoom vertical scale hack
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -645,23 +644,9 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
|
||||
#region ================== Object Picking
|
||||
|
||||
//mxd
|
||||
public VisualPickResult PickObject(Vector3D from, Vector3D to) {
|
||||
return PickObject(from, to, true);
|
||||
}
|
||||
|
||||
// This picks an object from the scene
|
||||
public VisualPickResult PickObject(Vector3D from, Vector3D to, bool scaleHack)
|
||||
public VisualPickResult PickObject(Vector3D from, Vector3D to)
|
||||
{
|
||||
//mxd GZDoom vertical scale hack
|
||||
Vector3D from_orig = from;
|
||||
Vector3D to_orig = to;
|
||||
|
||||
if(scaleHack) {
|
||||
to.z *= SCALE_OFFSET;
|
||||
from.z *= SCALE_OFFSET;
|
||||
}
|
||||
|
||||
VisualPickResult result = new VisualPickResult();
|
||||
Line2D ray2d = new Line2D(from, to);
|
||||
Vector3D delta = to - from;
|
||||
|
@ -823,10 +808,6 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
// Setup final result
|
||||
result.hitpos = from + to * result.u_ray;
|
||||
|
||||
//mxd. Hackish way to select Things correctly
|
||||
if(scaleHack && result.picked is VisualThing)
|
||||
return PickObject(from_orig, to_orig, false);
|
||||
|
||||
// Done
|
||||
return result;
|
||||
}
|
||||
|
@ -1035,8 +1016,7 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
delta = delta.GetFixedLength(General.Settings.ViewDistance * 0.98f);
|
||||
VisualPickResult target = PickObject(start, start + delta);
|
||||
|
||||
//not appropriate way to do this, but...
|
||||
if (target.picked != null && target.picked.GetType().Name.IndexOf("Thing") == -1) {
|
||||
if(target.picked != null && target.picked is VisualGeometry) {
|
||||
VisualGeometry vg = (VisualGeometry)target.picked;
|
||||
if (vg.Sector != null)
|
||||
return vg;
|
||||
|
|
|
@ -83,7 +83,6 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
//mxd
|
||||
private int cameraDistance3D;
|
||||
private int thingHeight;
|
||||
private Matrix scaledPosition; //mxd GZDoom vertical scale hack
|
||||
|
||||
//mxd. light properties
|
||||
private int lightType;
|
||||
|
@ -125,7 +124,6 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
}
|
||||
}
|
||||
public Vector3 PositionV3 { get { return position_v3; } }
|
||||
public Matrix ScaledPosition { get { return scaledPosition; } } //mxd GZDoom vertical scale hack
|
||||
public Vector3[] BoundingBox { get { return boundingBox; } }
|
||||
//mxd. light properties
|
||||
public int LightType { get { return lightType; } }
|
||||
|
@ -187,7 +185,6 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
lightInterval = -1;
|
||||
lightColor = new Color4();
|
||||
boundingBox = new Vector3[9];
|
||||
scaledPosition = position; //mxd GZDoom vertical scale hack
|
||||
|
||||
// Register as resource
|
||||
General.Map.Graphics.RegisterResource(this);
|
||||
|
@ -223,7 +220,7 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
|
||||
//mxd
|
||||
internal void CalculateCameraDistance3D(Vector3 campos) {
|
||||
cameraDistance3D = (int)Vector3.DistanceSquared(D3DDevice.V3(thing.Position), campos);
|
||||
cameraDistance3D = (int)Vector3.DistanceSquared(PositionV3, campos);
|
||||
}
|
||||
|
||||
// This is called before a device is reset
|
||||
|
@ -271,7 +268,6 @@ namespace CodeImp.DoomBuilder.VisualModes
|
|||
//mxd
|
||||
position_v3 = D3DDevice.V3(pos);
|
||||
position = Matrix.Translation(position_v3);
|
||||
scaledPosition = Matrix.Translation(position_v3.X, position_v3.Y, position_v3.Z * 1.2f); //mxd GZDoom vertical scale hack
|
||||
|
||||
//mxd. update bounding box
|
||||
if (thing.IsModel) {
|
||||
|
|
|
@ -2344,6 +2344,9 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
[BeginAction("preferences")]
|
||||
internal void ShowPreferences()
|
||||
{
|
||||
//mxd
|
||||
bool stretchModels = General.Settings.GZStretchModels;
|
||||
|
||||
// Show preferences dialog
|
||||
PreferencesForm prefform = new PreferencesForm();
|
||||
if(prefform.ShowDialog(this) == DialogResult.OK)
|
||||
|
@ -2363,6 +2366,8 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
General.Map.Graphics.SetupSettings();
|
||||
General.Map.UpdateConfiguration();
|
||||
if(prefform.ReloadResources) General.Actions.InvokeAction("builder_reloadresources");
|
||||
//mxd
|
||||
if(stretchModels != General.Settings.GZStretchModels) General.Map.Data.ReloadModeldef();
|
||||
}
|
||||
|
||||
// Redraw display
|
||||
|
|
3209
Source/Core/Windows/PreferencesForm.Designer.cs
generated
3209
Source/Core/Windows/PreferencesForm.Designer.cs
generated
File diff suppressed because it is too large
Load diff
|
@ -103,6 +103,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
labelDynLightSize.Text = General.Settings.GZDynamicLightRadius.ToString();
|
||||
tbDynLightIntensity.Value = General.Clamp((int)(General.Settings.GZDynamicLightIntensity * 10), tbDynLightIntensity.Minimum, tbDynLightIntensity.Maximum);
|
||||
labelDynLightIntensity.Text = General.Settings.GZDynamicLightIntensity.ToString();
|
||||
cbStretchModels.Checked = General.Settings.GZStretchModels;
|
||||
|
||||
// Fill fonts list
|
||||
scriptfontname.BeginUpdate();
|
||||
|
@ -274,6 +275,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
General.Settings.GZMaxDynamicLights = tbDynLightCount.Value;
|
||||
General.Settings.GZDynamicLightRadius = ((float)tbDynLightSize.Value / 10.0f);
|
||||
General.Settings.GZDynamicLightIntensity = ((float)tbDynLightIntensity.Value / 10.0f);
|
||||
General.Settings.GZStretchModels = cbStretchModels.Checked;
|
||||
|
||||
// Paste options
|
||||
General.Settings.PasteOptions = pasteoptions.GetOptions();
|
||||
|
|
|
@ -141,4 +141,7 @@
|
|||
<metadata name="label21.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
Loading…
Reference in a new issue