GZDoomBuilder 1.04:

Added "Dynamic light size" slider, which matches GZDoom's "Light size" option.
Added "Dynamic light intensity" slider, which matches GZDoom's "Light intensity" option.
Fixed Vavoom light rendering (was rendered as additive light, light radius was twise smaller than in GZDoom)
Fixed bug in light rendering introduced in v1.03 (light radius was set to -1 when switching from 2D to 3D mode).
This commit is contained in:
MaxED 2012-04-25 11:44:36 +00:00
parent dcf899a3c4
commit a9fd8d33b2
10 changed files with 200 additions and 93 deletions

View file

@ -103,6 +103,8 @@ namespace CodeImp.DoomBuilder.Config
private bool gzDrawFog;
private bool gzToolbarGZDoom;
private int gzMaxDynamicLights;
private float gzDynamicLightRadius;
private float gzDynamicLightIntensity;
// These are not stored in the configuration, only used at runtime
private string defaulttexture;
@ -175,6 +177,8 @@ namespace CodeImp.DoomBuilder.Config
public bool GZDrawFog { get { return gzDrawFog; } internal set { gzDrawFog = value; } }
public bool GZToolbarGZDoom { get { return gzToolbarGZDoom; } internal set { gzToolbarGZDoom = value; } }
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 string DefaultTexture { get { return defaulttexture; } set { defaulttexture = value; } }
public string DefaultFloorTexture { get { return defaultfloortexture; } set { defaultfloortexture = value; } }
@ -264,6 +268,8 @@ namespace CodeImp.DoomBuilder.Config
gzDrawFog = cfg.ReadSetting("gzdrawfog", false);
gzToolbarGZDoom = cfg.ReadSetting("gztoolbargzdoom", true);
gzMaxDynamicLights = cfg.ReadSetting("gzmaxdynamiclights", 16);
gzDynamicLightRadius = cfg.ReadSetting("gzdynamiclightradius", 1.0f);
gzDynamicLightIntensity = cfg.ReadSetting("gzdynamiclightintensity", 1.0f);
// Success
return true;
@ -334,6 +340,8 @@ namespace CodeImp.DoomBuilder.Config
cfg.WriteSetting("gzanimatelights", gzAnimateLights);
cfg.WriteSetting("gzdrawfog", gzDrawFog);
cfg.WriteSetting("gzmaxdynamiclights", gzMaxDynamicLights);
cfg.WriteSetting("gzdynamiclightradius", gzDynamicLightRadius);
cfg.WriteSetting("gzdynamiclightintensity", gzDynamicLightIntensity);
// Save settings configuration
General.WriteLogLine("Saving program configuration...");

View file

@ -28,7 +28,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data
//divide these by 100 to get light color alpha
public enum GZDoomLightRenderStyle : int
{
NORMAL = 75,
NORMAL = 99,
VAVOOM = 50,
ADDITIVE = 25,
NEGATIVE = 100
}

View file

@ -30,7 +30,7 @@ namespace CodeImp.DoomBuilder.GZBuilder
public static int[] GZ_LIGHT_TYPES { get { return gz_lightTypes; } }
//version
public const string Version = "1.03";
public const string Version = "1.04";
//debug form
#if DEBUG

View file

@ -598,8 +598,8 @@ namespace CodeImp.DoomBuilder.Rendering
thingsWithLight.Sort(sortThingsByLightRenderStyle);
lightOffsets = new int[3];
foreach (VisualThing t in thingsWithLight) {
//add light to apropriate array. can't clear lights now, since it's Count is used to check if dynamic light rendering pass is needed and I don't want to add special variable for that...
if (t.LightRenderStyle == (int)GZDoomLightRenderStyle.NORMAL)
//add light to apropriate array.
if (t.LightRenderStyle == (int)GZDoomLightRenderStyle.NORMAL || t.LightRenderStyle == (int)GZDoomLightRenderStyle.VAVOOM)
lightOffsets[0]++;
else if (t.LightRenderStyle == (int)GZDoomLightRenderStyle.ADDITIVE)
lightOffsets[1]++;
@ -906,9 +906,6 @@ namespace CodeImp.DoomBuilder.Rendering
for (i = 0; i < count; i++) {
if (checkBBoxIntersection(g.BoundingBox, lights[i].BoundingBox)) {
//dbg
//totalGeo++;
lpr = lights[i].LightPositionAndRadius;
if (lpr.W == 0)
continue;
@ -927,9 +924,6 @@ namespace CodeImp.DoomBuilder.Rendering
for (i = lightOffsets[0]; i < count; i++) {
if (checkBBoxIntersection(g.BoundingBox, lights[i].BoundingBox)) {
//dbg
//totalGeo++;
lpr = lights[i].LightPositionAndRadius;
if (lpr.W == 0)
continue;
@ -948,14 +942,11 @@ namespace CodeImp.DoomBuilder.Rendering
for (i = lightOffsets[0] + lightOffsets[1]; i < count; i++) {
if (checkBBoxIntersection(g.BoundingBox, lights[i].BoundingBox)) {
//dbg
//totalGeo++;
lpr = lights[i].LightPositionAndRadius;
if (lpr.W == 0)
continue;
Color4 lc = lights[i].LightColor;
graphics.Shaders.World3D.LightColor = new Color4(1.0f, (lc.Green + lc.Blue) / 2, (lc.Red + lc.Blue) / 2, (lc.Green + lc.Red) / 2);
graphics.Shaders.World3D.LightColor = new Color4(lc.Alpha, (lc.Green + lc.Blue) / 2, (lc.Red + lc.Blue) / 2, (lc.Green + lc.Red) / 2);
graphics.Shaders.World3D.LightPositionAndRadius = lights[i].LightPositionAndRadius;
graphics.Shaders.World3D.ApplySettings();
graphics.Device.DrawPrimitives(PrimitiveType.TriangleList, g.VertexOffset, g.Triangles);
@ -1036,8 +1027,8 @@ namespace CodeImp.DoomBuilder.Rendering
//so use visualThing.PositionV3 instead
private Color4 getLitColor(Vector3 thingPosition) {
Color4 litColor = new Color4();
float distSquared, scaler;
int radius, radiusSquared, sign;
float radius, radiusSquared, distSquared, scaler;
int sign;
for (int i = 0; i < thingsWithLight.Count; i++ ) {
distSquared = Vector3.DistanceSquared(thingsWithLight[i].Center, thingPosition);
@ -1045,7 +1036,7 @@ namespace CodeImp.DoomBuilder.Rendering
radiusSquared = radius * radius;
if (distSquared < radiusSquared) {
sign = thingsWithLight[i].LightRenderStyle == (int)GZDoomLightRenderStyle.NEGATIVE ? -1 : 1;
scaler = 1 - distSquared / radiusSquared;
scaler = 1 - distSquared / radiusSquared * thingsWithLight[i].LightColor.Alpha;
litColor.Red += thingsWithLight[i].LightColor.Red * scaler * sign;
litColor.Green += thingsWithLight[i].LightColor.Green * scaler * sign;
litColor.Blue += thingsWithLight[i].LightColor.Blue * scaler * sign;
@ -1209,39 +1200,39 @@ namespace CodeImp.DoomBuilder.Rendering
public void RenderCrosshair()
{
// Set renderstates
graphics.Device.SetRenderState(RenderState.CullMode, Cull.None);
graphics.Device.SetRenderState(RenderState.ZEnable, false);
graphics.Device.SetRenderState(RenderState.AlphaBlendEnable, true);
graphics.Device.SetRenderState(RenderState.AlphaTestEnable, false);
graphics.Device.SetRenderState(RenderState.SourceBlend, Blend.SourceAlpha);
graphics.Device.SetRenderState(RenderState.DestinationBlend, Blend.InverseSourceAlpha);
graphics.Device.SetRenderState(RenderState.TextureFactor, -1);
graphics.Device.SetTransform(TransformState.World, Matrix.Identity);
graphics.Device.SetTransform(TransformState.Projection, Matrix.Identity);
ApplyMatrices2D();
graphics.Device.SetRenderState(RenderState.CullMode, Cull.None);
graphics.Device.SetRenderState(RenderState.ZEnable, false);
graphics.Device.SetRenderState(RenderState.AlphaBlendEnable, true);
graphics.Device.SetRenderState(RenderState.AlphaTestEnable, false);
graphics.Device.SetRenderState(RenderState.SourceBlend, Blend.SourceAlpha);
graphics.Device.SetRenderState(RenderState.DestinationBlend, Blend.InverseSourceAlpha);
graphics.Device.SetRenderState(RenderState.TextureFactor, -1);
graphics.Device.SetTransform(TransformState.World, Matrix.Identity);
graphics.Device.SetTransform(TransformState.Projection, Matrix.Identity);
ApplyMatrices2D();
// Texture
if(crosshairbusy)
{
if(General.Map.Data.CrosshairBusy3D.Texture == null) General.Map.Data.CrosshairBusy3D.CreateTexture();
graphics.Device.SetTexture(0, General.Map.Data.CrosshairBusy3D.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.CrosshairBusy3D.Texture;
}
else
{
if(General.Map.Data.Crosshair3D.Texture == null) General.Map.Data.Crosshair3D.CreateTexture();
graphics.Device.SetTexture(0, General.Map.Data.Crosshair3D.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.Crosshair3D.Texture;
}
// Texture
if(crosshairbusy)
{
if(General.Map.Data.CrosshairBusy3D.Texture == null) General.Map.Data.CrosshairBusy3D.CreateTexture();
graphics.Device.SetTexture(0, General.Map.Data.CrosshairBusy3D.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.CrosshairBusy3D.Texture;
}
else
{
if(General.Map.Data.Crosshair3D.Texture == null) General.Map.Data.Crosshair3D.CreateTexture();
graphics.Device.SetTexture(0, General.Map.Data.Crosshair3D.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.Crosshair3D.Texture;
}
// Draw
graphics.Shaders.Display2D.Begin();
graphics.Shaders.Display2D.SetSettings(1.0f, 1.0f, 0.0f, 1.0f, true);
graphics.Shaders.Display2D.BeginPass(1);
graphics.Device.DrawUserPrimitives<FlatVertex>(PrimitiveType.TriangleStrip, 0, 2, crosshairverts);
graphics.Shaders.Display2D.EndPass();
graphics.Shaders.Display2D.End();
}
// Draw
graphics.Shaders.Display2D.Begin();
graphics.Shaders.Display2D.SetSettings(1.0f, 1.0f, 0.0f, 1.0f, true);
graphics.Shaders.Display2D.BeginPass(1);
graphics.Device.DrawUserPrimitives<FlatVertex>(PrimitiveType.TriangleStrip, 0, 2, crosshairverts);
graphics.Shaders.Display2D.EndPass();
graphics.Shaders.Display2D.End();
}
// This switches fog on and off
public void SetFogMode(bool usefog)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 141 KiB

View file

@ -153,9 +153,9 @@ float4 ps_constant_color(PixelData pd) : COLOR {
//mxd. dynamic light pixel shader pass, dood!
float4 ps_lightpass(LitPixelData pd) : COLOR {
//is face facing away from light source?
if(dot(pd.normal, (lightPosAndRadius.xyz - pd.pos_w)) <= 0) // (lightPosAndRadius.xyz - pd.pos_w) == direction from light to current pixel
if(dot(pd.normal, (lightPosAndRadius.xyz - pd.pos_w)) < -0.1f) // (lightPosAndRadius.xyz - pd.pos_w) == direction from light to current pixel
clip(-1);
//is pixel in light range?
float dist = distance(pd.pos_w, lightPosAndRadius.xyz);
if(dist > lightPosAndRadius.w)
@ -171,11 +171,9 @@ float4 ps_lightpass(LitPixelData pd) : COLOR {
lightColorMod.rgb = lightColor.rgb * max(lightPosAndRadius.w - dist, 0.0f) / lightPosAndRadius.w;
if(lightColorMod.r > 0.0f || lightColorMod.g > 0.0f || lightColorMod.b > 0.0f){
if(lightColor.a == 1.0f){ //Normal or negative light
lightColorMod.rgb *= 0.9f;
lightColorMod.rgb *= lightColor.a;
if(lightColor.a > 0.4f) //Normal, vavoom or negative light
return tcolor * lightColorMod;
}
lightColorMod.rgb *= 0.25f;
return lightColorMod; //Additive light
}
clip(-1);
@ -226,7 +224,7 @@ technique SM20 {
VertexShader = compile vs_2_0 vs_customvertexcolor();
PixelShader = compile ps_2_0 ps_main_highlight();
}
// Full brightness mode with highlight
pass p7 {
VertexShader = compile vs_2_0 vs_customvertexcolor();

View file

@ -87,9 +87,9 @@ namespace CodeImp.DoomBuilder.VisualModes
private int lightType;
private int lightRenderStyle;
private Color4 lightColor;
private int lightRadius; //current radius. used in light animation
private int lightRadiusMin;
private int lightRadiusMax;
private float lightRadius; //current radius. used in light animation
private float lightRadiusMin;
private float lightRadiusMax;
private Vector3 position_v3;
private float lightDelta; //used in light animation
private Vector3[] boundingBox;
@ -119,7 +119,7 @@ namespace CodeImp.DoomBuilder.VisualModes
public Vector3[] BoundingBox { get { return boundingBox; } }
//mxd. light properties
public int LightType { get { return lightType; } }
public int LightRadius { get { return lightRadius; } }
public float LightRadius { get { return lightRadius; } }
public int LightRenderStyle { get { return lightRenderStyle; } }
public Color4 LightColor { get { return lightColor; } }
public Vector4 LightPositionAndRadius { get { return new Vector4(Center, lightRadius);} }
@ -353,45 +353,48 @@ namespace CodeImp.DoomBuilder.VisualModes
//mxd update light info
private void updateLight(int light_id) {
float scaled_intensity = 255.0f / General.Settings.GZDynamicLightIntensity;
if (light_id < GZBuilder.GZGeneral.GZ_LIGHT_TYPES[2]) { //if it's gzdoom light
int n;
if (light_id < GZBuilder.GZGeneral.GZ_LIGHT_TYPES[0]) {
n = 0;
lightRenderStyle = (int)GZDoomLightRenderStyle.NORMAL;
//lightColor.Alpha used in shader to perform some calculations based on light type
lightColor = new Color4(1.0f, (float)thing.Args[0] / 255, (float)thing.Args[1] / 255, (float)thing.Args[2] / 255);
lightColor = new Color4((float)lightRenderStyle / 100.0f, (float)thing.Args[0] / scaled_intensity, (float)thing.Args[1] / scaled_intensity, (float)thing.Args[2] / scaled_intensity);
} else if (light_id < GZBuilder.GZGeneral.GZ_LIGHT_TYPES[1]) {
n = 10;
lightRenderStyle = (int)GZDoomLightRenderStyle.ADDITIVE;
lightColor = new Color4(0.0f, (float)thing.Args[0] / 255, (float)thing.Args[1] / 255, (float)thing.Args[2] / 255);
lightColor = new Color4((float)lightRenderStyle / 100.0f, (float)thing.Args[0] / scaled_intensity, (float)thing.Args[1] / scaled_intensity, (float)thing.Args[2] / scaled_intensity);
} else {
n = 20;
lightRenderStyle = (int)GZDoomLightRenderStyle.NEGATIVE;
lightColor = new Color4(1.0f, (float)thing.Args[0] / 255, (float)thing.Args[1] / 255, (float)thing.Args[2] / 255);
lightColor = new Color4((float)lightRenderStyle / 100.0f, (float)thing.Args[0] / scaled_intensity, (float)thing.Args[1] / scaled_intensity, (float)thing.Args[2] / scaled_intensity);
}
lightType = thing.Type - 9800 - n;
if (lightType == (int)GZDoomLightType.SECTOR) {
lightRadiusMin = thing.Args[3] * 4;
lightRadiusMin = (float)(thing.Args[3] * 4) * General.Settings.GZDynamicLightRadius;
} else {
lightRadiusMin = thing.Args[3] * 2; //works... that.. way in GZDoom
if (lightType > 0)
lightRadiusMax = thing.Args[4] * 2;
lightRadiusMin = (float)(thing.Args[3] * 2) * General.Settings.GZDynamicLightRadius; //works... that.. way in GZDoom
if (lightType > 0) {
lightRadiusMax = (float)(thing.Args[4] * 2) * General.Settings.GZDynamicLightRadius;
if (lightRadiusMin > lightRadiusMax) { //swap them
int lrm = lightRadiusMin;
lightRadiusMin = lightRadiusMax;
lightRadiusMax = lrm;
if (lightRadiusMin > lightRadiusMax) { //swap them
float lrm = lightRadiusMin;
lightRadiusMin = lightRadiusMax;
lightRadiusMax = lrm;
}
}
}
} else { //it's one of vavoom lights
lightRenderStyle = (int)GZDoomLightRenderStyle.NORMAL;
lightRenderStyle = (int)GZDoomLightRenderStyle.VAVOOM;
lightType = thing.Type;
if (lightType == (int)GZDoomLightType.VAVOOM_COLORED)
lightColor = new Color4((float)lightRenderStyle / 100.0f, (float)thing.Args[1] / 255, (float)thing.Args[2] / 255, (float)thing.Args[3] / 255);
lightColor = new Color4((float)lightRenderStyle / 100.0f, (float)thing.Args[1] / scaled_intensity, (float)thing.Args[2] / scaled_intensity, (float)thing.Args[3] / scaled_intensity);
else
lightColor = new Color4((float)lightRenderStyle / 100.0f, 1.0f, 1.0f, 1.0f);
lightRadiusMin = thing.Args[0] * 4;
lightColor = new Color4((float)lightRenderStyle / 100.0f, General.Settings.GZDynamicLightIntensity, General.Settings.GZDynamicLightIntensity, General.Settings.GZDynamicLightIntensity);
lightRadiusMin = (float)(thing.Args[0] * 8) * General.Settings.GZDynamicLightRadius;
}
UpdateLightRadius();
}
@ -411,9 +414,8 @@ namespace CodeImp.DoomBuilder.VisualModes
return;
}
//if (lightRadiusMax < lightRadiusMin) lightRadiusMax = lightRadiusMin;
double time = General.Clock.GetCurrentTime();
int diff = lightRadiusMax - lightRadiusMin;
float diff = lightRadiusMax - lightRadiusMin;
//pulse
if (lightType == (int)GZDoomLightType.PULSE) {
@ -436,16 +438,16 @@ namespace CodeImp.DoomBuilder.VisualModes
} else if (lightType == (int)GZDoomLightType.RANDOM) {
float delta = (float)Math.Sin(time / (100.0f * thing.Angle * 4.6f)); //just playing by the eye here...
if (Math.Sign(delta) != Math.Sign(lightDelta))
lightRadius = lightRadiusMin + new Random().Next(0, diff);
lightRadius = lightRadiusMin + (float)(new Random().Next(0, (int)(diff * 10))) / 10.0f;
lightDelta = delta;
}
}
//mxd. update bounding box
public void UpdateBoundingBox(int width, int height) {
public void UpdateBoundingBox(float width, float height) {
boundingBox = new Vector3[9];
boundingBox[0] = Center;
int h2 = height / 2;
float h2 = height / 2.0f;
boundingBox[1] = new Vector3(position_v3.X - width, position_v3.Y - width, Center.Z - h2);
boundingBox[2] = new Vector3(position_v3.X + width, position_v3.Y - width, Center.Z - h2);

View file

@ -35,6 +35,8 @@ namespace CodeImp.DoomBuilder.Windows
System.Windows.Forms.GroupBox groupBox1;
System.Windows.Forms.Label label1;
System.Windows.Forms.Label label18;
System.Windows.Forms.Label label20;
System.Windows.Forms.Label label21;
this.showtexturesizes = new System.Windows.Forms.CheckBox();
this.scriptontop = new System.Windows.Forms.CheckBox();
this.zoomfactor = new Dotnetrix.Controls.TrackBar();
@ -113,6 +115,8 @@ namespace CodeImp.DoomBuilder.Windows
this.actiondescription = new System.Windows.Forms.Label();
this.tabcolors = new System.Windows.Forms.TabPage();
this.appearancegroup1 = new System.Windows.Forms.GroupBox();
this.labelDynLightSize = new System.Windows.Forms.Label();
this.tbDynLightSize = new Dotnetrix.Controls.TrackBar();
this.labelDynLightCount = new System.Windows.Forms.Label();
this.tbDynLightCount = new Dotnetrix.Controls.TrackBar();
this.animatevisualselection = new System.Windows.Forms.CheckBox();
@ -142,12 +146,16 @@ namespace CodeImp.DoomBuilder.Windows
this.tabpasting = new System.Windows.Forms.TabPage();
this.label16 = new System.Windows.Forms.Label();
this.pasteoptions = new CodeImp.DoomBuilder.Controls.PasteOptionsControl();
this.labelDynLightIntensity = new System.Windows.Forms.Label();
this.tbDynLightIntensity = new Dotnetrix.Controls.TrackBar();
label7 = new System.Windows.Forms.Label();
label6 = new System.Windows.Forms.Label();
label5 = new System.Windows.Forms.Label();
groupBox1 = new System.Windows.Forms.GroupBox();
label1 = new System.Windows.Forms.Label();
label18 = new System.Windows.Forms.Label();
label20 = new System.Windows.Forms.Label();
label21 = new System.Windows.Forms.Label();
groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.zoomfactor)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.autoscrollspeed)).BeginInit();
@ -167,11 +175,13 @@ namespace CodeImp.DoomBuilder.Windows
this.actioncontrolpanel.SuspendLayout();
this.tabcolors.SuspendLayout();
this.appearancegroup1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.tbDynLightSize)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.tbDynLightCount)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.imagebrightness)).BeginInit();
this.colorsgroup3.SuspendLayout();
this.panel1.SuspendLayout();
this.tabpasting.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.tbDynLightIntensity)).BeginInit();
this.SuspendLayout();
//
// label7
@ -358,7 +368,7 @@ namespace CodeImp.DoomBuilder.Windows
// label1
//
label1.AutoSize = true;
label1.Location = new System.Drawing.Point(22, 40);
label1.Location = new System.Drawing.Point(28, 30);
label1.Name = "label1";
label1.Size = new System.Drawing.Size(147, 14);
label1.TabIndex = 20;
@ -368,13 +378,23 @@ namespace CodeImp.DoomBuilder.Windows
// label18
//
label18.AutoSize = true;
label18.Location = new System.Drawing.Point(22, 91);
label18.Location = new System.Drawing.Point(22, 78);
label18.Name = "label18";
label18.Size = new System.Drawing.Size(151, 14);
label18.TabIndex = 25;
label18.Text = "Max. dynamic lights to render:";
label18.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// label20
//
label20.AutoSize = true;
label20.Location = new System.Drawing.Point(76, 126);
label20.Name = "label20";
label20.Size = new System.Drawing.Size(96, 14);
label20.TabIndex = 28;
label20.Text = "Dynamic light size:";
label20.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// keyusedlabel
//
this.keyusedlabel.AutoSize = true;
@ -407,7 +427,7 @@ namespace CodeImp.DoomBuilder.Windows
this.colorsgroup1.Controls.Add(this.colorlinedefs);
this.colorsgroup1.Location = new System.Drawing.Point(8, 8);
this.colorsgroup1.Name = "colorsgroup1";
this.colorsgroup1.Size = new System.Drawing.Size(203, 472);
this.colorsgroup1.Size = new System.Drawing.Size(203, 493);
this.colorsgroup1.TabIndex = 0;
this.colorsgroup1.TabStop = false;
this.colorsgroup1.Text = " Display ";
@ -1140,6 +1160,12 @@ namespace CodeImp.DoomBuilder.Windows
this.appearancegroup1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.appearancegroup1.Controls.Add(label21);
this.appearancegroup1.Controls.Add(this.labelDynLightIntensity);
this.appearancegroup1.Controls.Add(this.tbDynLightIntensity);
this.appearancegroup1.Controls.Add(label20);
this.appearancegroup1.Controls.Add(this.labelDynLightSize);
this.appearancegroup1.Controls.Add(this.tbDynLightSize);
this.appearancegroup1.Controls.Add(label18);
this.appearancegroup1.Controls.Add(this.labelDynLightCount);
this.appearancegroup1.Controls.Add(this.tbDynLightCount);
@ -1150,17 +1176,39 @@ namespace CodeImp.DoomBuilder.Windows
this.appearancegroup1.Controls.Add(this.classicbilinear);
this.appearancegroup1.Controls.Add(this.imagebrightnesslabel);
this.appearancegroup1.Controls.Add(this.imagebrightness);
this.appearancegroup1.Location = new System.Drawing.Point(217, 251);
this.appearancegroup1.Location = new System.Drawing.Point(217, 236);
this.appearancegroup1.Name = "appearancegroup1";
this.appearancegroup1.Size = new System.Drawing.Size(457, 229);
this.appearancegroup1.Size = new System.Drawing.Size(457, 265);
this.appearancegroup1.TabIndex = 24;
this.appearancegroup1.TabStop = false;
this.appearancegroup1.Text = " Additional Options ";
//
// labelDynLightSize
//
this.labelDynLightSize.AutoSize = true;
this.labelDynLightSize.Location = new System.Drawing.Point(337, 126);
this.labelDynLightSize.Name = "labelDynLightSize";
this.labelDynLightSize.Size = new System.Drawing.Size(22, 14);
this.labelDynLightSize.TabIndex = 29;
this.labelDynLightSize.Text = "1.0";
//
// tbDynLightSize
//
this.tbDynLightSize.LargeChange = 1;
this.tbDynLightSize.Location = new System.Drawing.Point(176, 113);
this.tbDynLightSize.Maximum = 20;
this.tbDynLightSize.Minimum = 1;
this.tbDynLightSize.Name = "tbDynLightSize";
this.tbDynLightSize.Size = new System.Drawing.Size(154, 45);
this.tbDynLightSize.TabIndex = 27;
this.tbDynLightSize.TickStyle = System.Windows.Forms.TickStyle.Both;
this.tbDynLightSize.Value = 10;
this.tbDynLightSize.ValueChanged += new System.EventHandler(this.tbDynLightSize_ValueChanged);
//
// labelDynLightCount
//
this.labelDynLightCount.AutoSize = true;
this.labelDynLightCount.Location = new System.Drawing.Point(337, 91);
this.labelDynLightCount.Location = new System.Drawing.Point(337, 78);
this.labelDynLightCount.Name = "labelDynLightCount";
this.labelDynLightCount.Size = new System.Drawing.Size(19, 14);
this.labelDynLightCount.TabIndex = 26;
@ -1169,7 +1217,7 @@ namespace CodeImp.DoomBuilder.Windows
// tbDynLightCount
//
this.tbDynLightCount.LargeChange = 3;
this.tbDynLightCount.Location = new System.Drawing.Point(176, 78);
this.tbDynLightCount.Location = new System.Drawing.Point(176, 65);
this.tbDynLightCount.Maximum = 32;
this.tbDynLightCount.Minimum = 1;
this.tbDynLightCount.Name = "tbDynLightCount";
@ -1183,7 +1231,7 @@ namespace CodeImp.DoomBuilder.Windows
// animatevisualselection
//
this.animatevisualselection.AutoSize = true;
this.animatevisualselection.Location = new System.Drawing.Point(244, 165);
this.animatevisualselection.Location = new System.Drawing.Point(244, 236);
this.animatevisualselection.Name = "animatevisualselection";
this.animatevisualselection.Size = new System.Drawing.Size(188, 18);
this.animatevisualselection.TabIndex = 23;
@ -1193,7 +1241,7 @@ namespace CodeImp.DoomBuilder.Windows
// blackbrowsers
//
this.blackbrowsers.AutoSize = true;
this.blackbrowsers.Location = new System.Drawing.Point(244, 135);
this.blackbrowsers.Location = new System.Drawing.Point(244, 212);
this.blackbrowsers.Name = "blackbrowsers";
this.blackbrowsers.Size = new System.Drawing.Size(199, 18);
this.blackbrowsers.TabIndex = 4;
@ -1203,7 +1251,7 @@ namespace CodeImp.DoomBuilder.Windows
// visualbilinear
//
this.visualbilinear.AutoSize = true;
this.visualbilinear.Location = new System.Drawing.Point(25, 165);
this.visualbilinear.Location = new System.Drawing.Point(25, 236);
this.visualbilinear.Name = "visualbilinear";
this.visualbilinear.Size = new System.Drawing.Size(176, 18);
this.visualbilinear.TabIndex = 6;
@ -1213,7 +1261,7 @@ namespace CodeImp.DoomBuilder.Windows
// classicbilinear
//
this.classicbilinear.AutoSize = true;
this.classicbilinear.Location = new System.Drawing.Point(25, 135);
this.classicbilinear.Location = new System.Drawing.Point(25, 212);
this.classicbilinear.Name = "classicbilinear";
this.classicbilinear.Size = new System.Drawing.Size(182, 18);
this.classicbilinear.TabIndex = 5;
@ -1223,7 +1271,7 @@ namespace CodeImp.DoomBuilder.Windows
// imagebrightnesslabel
//
this.imagebrightnesslabel.AutoSize = true;
this.imagebrightnesslabel.Location = new System.Drawing.Point(337, 40);
this.imagebrightnesslabel.Location = new System.Drawing.Point(337, 30);
this.imagebrightnesslabel.Name = "imagebrightnesslabel";
this.imagebrightnesslabel.Size = new System.Drawing.Size(31, 14);
this.imagebrightnesslabel.TabIndex = 22;
@ -1232,7 +1280,7 @@ namespace CodeImp.DoomBuilder.Windows
// imagebrightness
//
this.imagebrightness.LargeChange = 3;
this.imagebrightness.Location = new System.Drawing.Point(176, 27);
this.imagebrightness.Location = new System.Drawing.Point(176, 17);
this.imagebrightness.Name = "imagebrightness";
this.imagebrightness.Size = new System.Drawing.Size(154, 45);
this.imagebrightness.TabIndex = 3;
@ -1261,7 +1309,7 @@ namespace CodeImp.DoomBuilder.Windows
this.colorsgroup3.Controls.Add(this.colorplaintext);
this.colorsgroup3.Location = new System.Drawing.Point(217, 8);
this.colorsgroup3.Name = "colorsgroup3";
this.colorsgroup3.Size = new System.Drawing.Size(457, 237);
this.colorsgroup3.Size = new System.Drawing.Size(457, 222);
this.colorsgroup3.TabIndex = 1;
this.colorsgroup3.TabStop = false;
this.colorsgroup3.Text = " Script editor ";
@ -1503,6 +1551,37 @@ namespace CodeImp.DoomBuilder.Windows
this.pasteoptions.Size = new System.Drawing.Size(666, 427);
this.pasteoptions.TabIndex = 0;
//
// label21
//
label21.AutoSize = true;
label21.Location = new System.Drawing.Point(55, 174);
label21.Name = "label21";
label21.Size = new System.Drawing.Size(116, 14);
label21.TabIndex = 31;
label21.Text = "Dynamic light intensity:";
label21.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// labelDynLightIntensity
//
this.labelDynLightIntensity.AutoSize = true;
this.labelDynLightIntensity.Location = new System.Drawing.Point(337, 174);
this.labelDynLightIntensity.Name = "labelDynLightIntensity";
this.labelDynLightIntensity.Size = new System.Drawing.Size(22, 14);
this.labelDynLightIntensity.TabIndex = 32;
this.labelDynLightIntensity.Text = "1.0";
//
// tbDynLightIntensity
//
this.tbDynLightIntensity.LargeChange = 1;
this.tbDynLightIntensity.Location = new System.Drawing.Point(176, 161);
this.tbDynLightIntensity.Minimum = 1;
this.tbDynLightIntensity.Name = "tbDynLightIntensity";
this.tbDynLightIntensity.Size = new System.Drawing.Size(154, 45);
this.tbDynLightIntensity.TabIndex = 30;
this.tbDynLightIntensity.TickStyle = System.Windows.Forms.TickStyle.Both;
this.tbDynLightIntensity.Value = 10;
this.tbDynLightIntensity.ValueChanged += new System.EventHandler(this.tbDynLightIntensity_ValueChanged);
//
// PreferencesForm
//
this.AcceptButton = this.apply;
@ -1551,12 +1630,14 @@ namespace CodeImp.DoomBuilder.Windows
this.tabcolors.ResumeLayout(false);
this.appearancegroup1.ResumeLayout(false);
this.appearancegroup1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.tbDynLightSize)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.tbDynLightCount)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.imagebrightness)).EndInit();
this.colorsgroup3.ResumeLayout(false);
this.colorsgroup3.PerformLayout();
this.panel1.ResumeLayout(false);
this.tabpasting.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.tbDynLightIntensity)).EndInit();
this.ResumeLayout(false);
}
@ -1670,5 +1751,9 @@ namespace CodeImp.DoomBuilder.Windows
private System.Windows.Forms.CheckBox toolbar_gzdoom;
private System.Windows.Forms.Label labelDynLightCount;
private Dotnetrix.Controls.TrackBar tbDynLightCount;
private System.Windows.Forms.Label labelDynLightSize;
private Dotnetrix.Controls.TrackBar tbDynLightSize;
private System.Windows.Forms.Label labelDynLightIntensity;
private Dotnetrix.Controls.TrackBar tbDynLightIntensity;
}
}

View file

@ -98,6 +98,10 @@ namespace CodeImp.DoomBuilder.Windows
showtexturesizes.Checked = General.Settings.ShowTextureSizes;
tbDynLightCount.Value = General.Settings.GZMaxDynamicLights;
labelDynLightCount.Text = General.Settings.GZMaxDynamicLights.ToString();
tbDynLightSize.Value = (int)(General.Settings.GZDynamicLightRadius * 10);
labelDynLightSize.Text = General.Settings.GZDynamicLightRadius.ToString();
tbDynLightIntensity.Value = (int)(General.Settings.GZDynamicLightIntensity * 10);
labelDynLightIntensity.Text = General.Settings.GZDynamicLightIntensity.ToString();
// Fill fonts list
scriptfontname.BeginUpdate();
@ -265,6 +269,8 @@ namespace CodeImp.DoomBuilder.Windows
//mxd
General.Settings.GZMaxDynamicLights = tbDynLightCount.Value;
General.Settings.GZDynamicLightRadius = ((float)tbDynLightSize.Value / 10.0f);
General.Settings.GZDynamicLightIntensity = ((float)tbDynLightIntensity.Value / 10.0f);
// Paste options
General.Settings.PasteOptions = pasteoptions.GetOptions();
@ -757,6 +763,16 @@ namespace CodeImp.DoomBuilder.Windows
labelDynLightCount.Text = tbDynLightCount.Value.ToString();
}
//mxd
private void tbDynLightSize_ValueChanged(object sender, EventArgs e) {
labelDynLightSize.Text = ((float)tbDynLightSize.Value / 10).ToString();
}
//mxd
private void tbDynLightIntensity_ValueChanged(object sender, EventArgs e) {
labelDynLightIntensity.Text = ((float)tbDynLightIntensity.Value / 10).ToString();
}
#endregion
// Help

View file

@ -135,4 +135,10 @@
<metadata name="label18.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label20.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label21.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
</root>