mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2025-02-12 15:05:55 +00:00
Merge remote-tracking branch 'udb/master'
This commit is contained in:
commit
f4506b22dc
23 changed files with 349 additions and 54 deletions
|
@ -1,10 +1,10 @@
|
||||||
gzdoom_lights
|
gzdoom_lights
|
||||||
{
|
{
|
||||||
staticlights
|
lightmaplights
|
||||||
{
|
{
|
||||||
color = 7;
|
color = 7;
|
||||||
arrow = 0;
|
arrow = 0;
|
||||||
title = "Static Lights";
|
title = "Lightmap Lights";
|
||||||
sort = 1;
|
sort = 1;
|
||||||
width = 0;
|
width = 0;
|
||||||
height = 0;
|
height = 0;
|
||||||
|
@ -15,8 +15,8 @@ gzdoom_lights
|
||||||
|
|
||||||
9876
|
9876
|
||||||
{
|
{
|
||||||
title = "Static Point Light";
|
title = "Lightmap Point Light";
|
||||||
class = "StaticPointLight"; // Fake class name
|
class = "pointlighttraceattenuated";
|
||||||
arg0
|
arg0
|
||||||
{
|
{
|
||||||
title = "Red";
|
title = "Red";
|
||||||
|
@ -39,10 +39,103 @@ gzdoom_lights
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
9877
|
||||||
|
{
|
||||||
|
title = "Lightmap Point Light (Pulsing)";
|
||||||
|
class = "pointlightpulsetraceattenuated";
|
||||||
|
arg0
|
||||||
|
{
|
||||||
|
title = "Red";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg1
|
||||||
|
{
|
||||||
|
title = "Green";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
|
{
|
||||||
|
title = "Blue";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg3
|
||||||
|
{
|
||||||
|
title = "Start intensity";
|
||||||
|
default = 64;
|
||||||
|
}
|
||||||
|
arg4
|
||||||
|
{
|
||||||
|
title = "End intensity";
|
||||||
|
default = 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
9878
|
||||||
|
{
|
||||||
|
title = "Lightmap Point Light (Flickering)";
|
||||||
|
class = "pointlightflickertraceattenuated";
|
||||||
|
arg0
|
||||||
|
{
|
||||||
|
title = "Red";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg1
|
||||||
|
{
|
||||||
|
title = "Green";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
|
{
|
||||||
|
title = "Blue";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg3
|
||||||
|
{
|
||||||
|
title = "Primary intensity";
|
||||||
|
default = 64;
|
||||||
|
}
|
||||||
|
arg4
|
||||||
|
{
|
||||||
|
title = "Secondary intensity";
|
||||||
|
default = 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
9879
|
||||||
|
{
|
||||||
|
title = "Lightmap Point Light (Random Flickering)";
|
||||||
|
class = "pointlightflickerrandomtraceattenuated";
|
||||||
|
arg0
|
||||||
|
{
|
||||||
|
title = "Red";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg1
|
||||||
|
{
|
||||||
|
title = "Green";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
|
{
|
||||||
|
title = "Blue";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg3
|
||||||
|
{
|
||||||
|
title = "Primary intensity";
|
||||||
|
default = 64;
|
||||||
|
}
|
||||||
|
arg4
|
||||||
|
{
|
||||||
|
title = "Secondary intensity";
|
||||||
|
default = 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
9881
|
9881
|
||||||
{
|
{
|
||||||
title = "Static Spotlight";
|
title = "Lightmap Spotlight";
|
||||||
class = "StaticSpotLight"; // Fake class name
|
class = "spotlighttraceattenuated";
|
||||||
arg0
|
arg0
|
||||||
{
|
{
|
||||||
title = "Color";
|
title = "Color";
|
||||||
|
@ -66,6 +159,102 @@ gzdoom_lights
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
9882
|
||||||
|
{
|
||||||
|
title = "Lightmap Spotlight (Pulsing)";
|
||||||
|
class = "spotlightpulsetraceattenuated";
|
||||||
|
arg0
|
||||||
|
{
|
||||||
|
title = "Color";
|
||||||
|
default = 16777215;
|
||||||
|
str = true;
|
||||||
|
}
|
||||||
|
arg1
|
||||||
|
{
|
||||||
|
title = "Inner angle";
|
||||||
|
default = 8;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
|
{
|
||||||
|
title = "Outer angle";
|
||||||
|
default = 32;
|
||||||
|
}
|
||||||
|
arg3
|
||||||
|
{
|
||||||
|
title = "Start intensity";
|
||||||
|
default = 64;
|
||||||
|
}
|
||||||
|
arg4
|
||||||
|
{
|
||||||
|
title = "End intensity";
|
||||||
|
default = 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
9883
|
||||||
|
{
|
||||||
|
title = "Lightmap Spotlight (Flickering)";
|
||||||
|
class = "spotlightflickertraceattenuated";
|
||||||
|
arg0
|
||||||
|
{
|
||||||
|
title = "Color";
|
||||||
|
default = 16777215;
|
||||||
|
str = true;
|
||||||
|
}
|
||||||
|
arg1
|
||||||
|
{
|
||||||
|
title = "Inner angle";
|
||||||
|
default = 8;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
|
{
|
||||||
|
title = "Outer angle";
|
||||||
|
default = 32;
|
||||||
|
}
|
||||||
|
arg3
|
||||||
|
{
|
||||||
|
title = "Primary intensity";
|
||||||
|
default = 64;
|
||||||
|
}
|
||||||
|
arg4
|
||||||
|
{
|
||||||
|
title = "Secondary intensity";
|
||||||
|
default = 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
9884
|
||||||
|
{
|
||||||
|
title = "Lightmap Spotlight (Random Flickering)";
|
||||||
|
class = "spotlightflickerrandomtraceattenuated";
|
||||||
|
arg0
|
||||||
|
{
|
||||||
|
title = "Color";
|
||||||
|
default = 16777215;
|
||||||
|
str = true;
|
||||||
|
}
|
||||||
|
arg1
|
||||||
|
{
|
||||||
|
title = "Inner angle";
|
||||||
|
default = 8;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
|
{
|
||||||
|
title = "Outer angle";
|
||||||
|
default = 32;
|
||||||
|
}
|
||||||
|
arg3
|
||||||
|
{
|
||||||
|
title = "Primary intensity";
|
||||||
|
default = 64;
|
||||||
|
}
|
||||||
|
arg4
|
||||||
|
{
|
||||||
|
title = "Secondary intensity";
|
||||||
|
default = 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
9890
|
9890
|
||||||
{
|
{
|
||||||
title = "ZDRayInfo";
|
title = "ZDRayInfo";
|
||||||
|
@ -73,7 +262,7 @@ gzdoom_lights
|
||||||
adduniversalfields
|
adduniversalfields
|
||||||
{
|
{
|
||||||
lm_suncolor;
|
lm_suncolor;
|
||||||
lm_sampledistance;
|
lm_sampledist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -377,7 +377,7 @@ universalfields
|
||||||
default = "";
|
default = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
lm_sampledist_line
|
lm_sampledist
|
||||||
{
|
{
|
||||||
type = 0;
|
type = 0;
|
||||||
default = 0;
|
default = 0;
|
||||||
|
@ -529,6 +529,30 @@ universalfields
|
||||||
type = 3;
|
type = 3;
|
||||||
default = false;
|
default = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lm_sampledist
|
||||||
|
{
|
||||||
|
type = 0;
|
||||||
|
default = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
lm_sampledist_top
|
||||||
|
{
|
||||||
|
type = 0;
|
||||||
|
default = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
lm_sampledist_mid
|
||||||
|
{
|
||||||
|
type = 0;
|
||||||
|
default = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
lm_sampledist_bot
|
||||||
|
{
|
||||||
|
type = 0;
|
||||||
|
default = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
thing
|
thing
|
||||||
|
@ -744,7 +768,7 @@ universalfields
|
||||||
thingtypespecific = true;
|
thingtypespecific = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
lm_sampledistance
|
lm_sampledist
|
||||||
{
|
{
|
||||||
type = 0;
|
type = 0;
|
||||||
default = 16;
|
default = 16;
|
||||||
|
|
|
@ -584,7 +584,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data
|
||||||
color = new PixelColor((byte)linealpha, (byte)t.Args[1], (byte)t.Args[2], (byte)t.Args[3]);
|
color = new PixelColor((byte)linealpha, (byte)t.Args[1], (byte)t.Args[2], (byte)t.Args[3]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GZGeneral.LightDef.POINT_STATIC:
|
case GZGeneral.LightDef.POINT_LIGHTMAP:
|
||||||
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
||||||
double intensity = t.Fields.GetValue("alpha", 1.0);
|
double intensity = t.Fields.GetValue("alpha", 1.0);
|
||||||
byte r = (byte)General.Clamp(t.Args[0] * intensity, 0.0, 255.0);
|
byte r = (byte)General.Clamp(t.Args[0] * intensity, 0.0, 255.0);
|
||||||
|
@ -627,7 +627,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data
|
||||||
else color = new PixelColor((byte)linealpha, (byte)((t.Args[0] & 0xFF0000) >> 16), (byte)((t.Args[0] & 0x00FF00) >> 8), (byte)((t.Args[0] & 0x0000FF)));
|
else color = new PixelColor((byte)linealpha, (byte)((t.Args[0] & 0xFF0000) >> 16), (byte)((t.Args[0] & 0x00FF00) >> 8), (byte)((t.Args[0] & 0x0000FF)));
|
||||||
|
|
||||||
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
||||||
if (t.DynamicLightType.LightDef == GZGeneral.LightDef.SPOT_STATIC)
|
if (t.DynamicLightType.LightDef == GZGeneral.LightDef.SPOT_LIGHTMAP)
|
||||||
{
|
{
|
||||||
double intensity = t.Fields.GetValue("alpha", 1.0);
|
double intensity = t.Fields.GetValue("alpha", 1.0);
|
||||||
if (intensity != 1.0)
|
if (intensity != 1.0)
|
||||||
|
|
|
@ -120,17 +120,17 @@ namespace CodeImp.DoomBuilder.GZBuilder
|
||||||
[LightDefClass("vavoomlightcolor")]
|
[LightDefClass("vavoomlightcolor")]
|
||||||
VAVOOM_COLORED,
|
VAVOOM_COLORED,
|
||||||
|
|
||||||
[LightDefRenderStyle(LightRenderStyle.STATIC)]
|
[LightDefRenderStyle(LightRenderStyle.LIGHTMAP)]
|
||||||
[LightDefNum(9876)]
|
[LightDefNum(9876, 9877, 9878, 9879)]
|
||||||
[LightDefClass("staticpointlight")]
|
[LightDefClass("pointlighttraceattenuated", "pointlightpulsetraceattenuated", "pointlightflickertraceattenuated", "pointlightflickerrandomtraceattenuated")]
|
||||||
[LightDefModifier(LightModifier.NORMAL)]
|
[LightDefModifier(LightModifier.NORMAL, LightModifier.PULSE, LightModifier.FLICKER, LightModifier.FLICKERRANDOM)]
|
||||||
POINT_STATIC,
|
POINT_LIGHTMAP,
|
||||||
|
|
||||||
[LightDefRenderStyle(LightRenderStyle.STATIC)]
|
[LightDefRenderStyle(LightRenderStyle.LIGHTMAP)]
|
||||||
[LightDefNum(9881)]
|
[LightDefNum(9881, 9882, 9883, 9884)]
|
||||||
[LightDefClass("staticspotlight")]
|
[LightDefClass("spotlighttraceattenuated", "spotlightpulsetraceattenuated", "spotlightflickertraceattenuated", "spotlightflickerrandomtraceattenuated")]
|
||||||
[LightDefModifier(LightModifier.NORMAL)]
|
[LightDefModifier(LightModifier.NORMAL, LightModifier.PULSE, LightModifier.FLICKER, LightModifier.FLICKERRANDOM)]
|
||||||
SPOT_STATIC,
|
SPOT_LIGHTMAP,
|
||||||
|
|
||||||
[LightDefRenderStyle(LightRenderStyle.NONE)]
|
[LightDefRenderStyle(LightRenderStyle.NONE)]
|
||||||
[LightDefNum(9890)]
|
[LightDefNum(9890)]
|
||||||
|
@ -150,7 +150,7 @@ namespace CodeImp.DoomBuilder.GZBuilder
|
||||||
ATTENUATED = 98,
|
ATTENUATED = 98,
|
||||||
VAVOOM = 50,
|
VAVOOM = 50,
|
||||||
ADDITIVE = 25,
|
ADDITIVE = 25,
|
||||||
STATIC = 98, // Same as attenuated
|
LIGHTMAP = 98, // Same as attenuated
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,14 +232,14 @@ namespace CodeImp.DoomBuilder.GZBuilder
|
||||||
case LightDef.POINT_ADDITIVE:
|
case LightDef.POINT_ADDITIVE:
|
||||||
case LightDef.POINT_SUBTRACTIVE:
|
case LightDef.POINT_SUBTRACTIVE:
|
||||||
case LightDef.POINT_ATTENUATED:
|
case LightDef.POINT_ATTENUATED:
|
||||||
case LightDef.POINT_STATIC:
|
case LightDef.POINT_LIGHTMAP:
|
||||||
LightType = LightType.POINT;
|
LightType = LightType.POINT;
|
||||||
break;
|
break;
|
||||||
case LightDef.SPOT_NORMAL:
|
case LightDef.SPOT_NORMAL:
|
||||||
case LightDef.SPOT_ADDITIVE:
|
case LightDef.SPOT_ADDITIVE:
|
||||||
case LightDef.SPOT_SUBTRACTIVE:
|
case LightDef.SPOT_SUBTRACTIVE:
|
||||||
case LightDef.SPOT_ATTENUATED:
|
case LightDef.SPOT_ATTENUATED:
|
||||||
case LightDef.SPOT_STATIC:
|
case LightDef.SPOT_LIGHTMAP:
|
||||||
LightType = LightType.SPOT;
|
LightType = LightType.SPOT;
|
||||||
break;
|
break;
|
||||||
case LightDef.VAVOOM_GENERIC:
|
case LightDef.VAVOOM_GENERIC:
|
||||||
|
|
|
@ -593,7 +593,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
color = new PixelColor(255, (byte)((t.Args[0] & 0xFF0000) >> 16), (byte)((t.Args[0] & 0x00FF00) >> 8), (byte)((t.Args[0] & 0x0000FF)));
|
color = new PixelColor(255, (byte)((t.Args[0] & 0xFF0000) >> 16), (byte)((t.Args[0] & 0x00FF00) >> 8), (byte)((t.Args[0] & 0x0000FF)));
|
||||||
|
|
||||||
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
||||||
if (t.DynamicLightType.LightDef == GZGeneral.LightDef.SPOT_STATIC)
|
if (t.DynamicLightType.LightDef == GZGeneral.LightDef.SPOT_LIGHTMAP)
|
||||||
{
|
{
|
||||||
double intensity = t.Fields.GetValue("alpha", 1.0);
|
double intensity = t.Fields.GetValue("alpha", 1.0);
|
||||||
if (intensity != 1.0)
|
if (intensity != 1.0)
|
||||||
|
@ -609,7 +609,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
}
|
}
|
||||||
|
|
||||||
// Point light
|
// Point light
|
||||||
if (t.DynamicLightType.LightDef == GZGeneral.LightDef.POINT_STATIC)
|
if (t.DynamicLightType.LightDef == GZGeneral.LightDef.POINT_LIGHTMAP)
|
||||||
{
|
{
|
||||||
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
||||||
double intensity = t.Fields.GetValue("alpha", 1.0);
|
double intensity = t.Fields.GetValue("alpha", 1.0);
|
||||||
|
|
|
@ -608,7 +608,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
case GZGeneral.LightRenderStyle.VAVOOM: lightOffsets[0]++; break;
|
case GZGeneral.LightRenderStyle.VAVOOM: lightOffsets[0]++; break;
|
||||||
case GZGeneral.LightRenderStyle.ADDITIVE: lightOffsets[2]++; break;
|
case GZGeneral.LightRenderStyle.ADDITIVE: lightOffsets[2]++; break;
|
||||||
case GZGeneral.LightRenderStyle.SUBTRACTIVE: lightOffsets[3]++; break;
|
case GZGeneral.LightRenderStyle.SUBTRACTIVE: lightOffsets[3]++; break;
|
||||||
case GZGeneral.LightRenderStyle.STATIC: // Static lights look the same as attenuated lights
|
case GZGeneral.LightRenderStyle.LIGHTMAP: // Static lights look the same as attenuated lights
|
||||||
default: lightOffsets[1]++; break; // attenuated
|
default: lightOffsets[1]++; break; // attenuated
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,15 @@ namespace CodeImp.DoomBuilder.Types
|
||||||
list = arginfo.Enum;
|
list = arginfo.Enum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When set up for an UDMF field
|
||||||
|
public override void SetupField(TypeHandlerAttribute attr, UniversalFieldInfo fieldinfo)
|
||||||
|
{
|
||||||
|
defaultvalue = (int)fieldinfo.Default;
|
||||||
|
base.SetupField(attr, fieldinfo);
|
||||||
|
|
||||||
|
// Keep enum list reference
|
||||||
|
list = fieldinfo.Enum;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== Methods
|
#region ================== Methods
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
#region ================== Namespaces
|
#region ================== Namespaces
|
||||||
|
|
||||||
|
using CodeImp.DoomBuilder.Config;
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
|
||||||
|
@ -33,6 +34,7 @@ namespace CodeImp.DoomBuilder.Types
|
||||||
#region ================== Variables
|
#region ================== Variables
|
||||||
|
|
||||||
private double value;
|
private double value;
|
||||||
|
private double defaultvalue;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -42,6 +44,18 @@ namespace CodeImp.DoomBuilder.Types
|
||||||
|
|
||||||
#region ================== Methods
|
#region ================== Methods
|
||||||
|
|
||||||
|
public override void SetupArgument(TypeHandlerAttribute attr, ArgumentInfo arginfo)
|
||||||
|
{
|
||||||
|
defaultvalue = (double)arginfo.DefaultValue;
|
||||||
|
base.SetupArgument(attr, arginfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void SetupField(TypeHandlerAttribute attr, UniversalFieldInfo fieldinfo)
|
||||||
|
{
|
||||||
|
defaultvalue = (fieldinfo == null || fieldinfo.Default == null) ? 0.0 : (double)fieldinfo.Default;
|
||||||
|
base.SetupField(attr, fieldinfo);
|
||||||
|
}
|
||||||
|
|
||||||
public override void SetValue(object value)
|
public override void SetValue(object value)
|
||||||
{
|
{
|
||||||
// Null?
|
// Null?
|
||||||
|
@ -87,7 +101,7 @@ namespace CodeImp.DoomBuilder.Types
|
||||||
|
|
||||||
public override object GetDefaultValue()
|
public override object GetDefaultValue()
|
||||||
{
|
{
|
||||||
return 0.0;
|
return defaultvalue;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -51,6 +51,12 @@ namespace CodeImp.DoomBuilder.Types
|
||||||
base.SetupArgument(attr, arginfo);
|
base.SetupArgument(attr, arginfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void SetupField(TypeHandlerAttribute attr, UniversalFieldInfo fieldinfo)
|
||||||
|
{
|
||||||
|
defaultvalue = (fieldinfo == null || fieldinfo.Default == null) ? 0 : (int)fieldinfo.Default;
|
||||||
|
base.SetupField(attr, fieldinfo);
|
||||||
|
}
|
||||||
|
|
||||||
public override void SetValue(object value)
|
public override void SetValue(object value)
|
||||||
{
|
{
|
||||||
// Null?
|
// Null?
|
||||||
|
|
|
@ -681,7 +681,7 @@ namespace CodeImp.DoomBuilder.VisualModes
|
||||||
if (ld.LightDef != GZGeneral.LightDef.POINT_SUBTRACTIVE) // normal, additive, attenuated
|
if (ld.LightDef != GZGeneral.LightDef.POINT_SUBTRACTIVE) // normal, additive, attenuated
|
||||||
{
|
{
|
||||||
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
||||||
float intensity = ld.LightRenderStyle == GZGeneral.LightRenderStyle.STATIC ? (float)thing.Fields.GetValue("alpha", 1.0) : 1.0f;
|
float intensity = ld.LightRenderStyle == GZGeneral.LightRenderStyle.LIGHTMAP ? (float)thing.Fields.GetValue("alpha", 1.0) : 1.0f;
|
||||||
|
|
||||||
//lightColor.Alpha used in shader to perform some calculations based on light type
|
//lightColor.Alpha used in shader to perform some calculations based on light type
|
||||||
lightColor = new Color4(
|
lightColor = new Color4(
|
||||||
|
@ -720,7 +720,7 @@ namespace CodeImp.DoomBuilder.VisualModes
|
||||||
if (ld.LightDef != GZGeneral.LightDef.SPOT_SUBTRACTIVE)
|
if (ld.LightDef != GZGeneral.LightDef.SPOT_SUBTRACTIVE)
|
||||||
{
|
{
|
||||||
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
// ZDRay static lights have an intensity that's set through the thing's alpha value
|
||||||
float intensity = ld.LightRenderStyle == GZGeneral.LightRenderStyle.STATIC ? (float)thing.Fields.GetValue("alpha", 1.0) : 1.0f;
|
float intensity = ld.LightRenderStyle == GZGeneral.LightRenderStyle.LIGHTMAP ? (float)thing.Fields.GetValue("alpha", 1.0) : 1.0f;
|
||||||
|
|
||||||
lightColor = new Color4(
|
lightColor = new Color4(
|
||||||
c1 / DYNLIGHT_INTENSITY_SCALER * intensity,
|
c1 / DYNLIGHT_INTENSITY_SCALER * intensity,
|
||||||
|
|
|
@ -258,6 +258,11 @@ namespace CodeImp.DoomBuilder.ZDoom
|
||||||
// Skip entire line
|
// Skip entire line
|
||||||
char c4 = c3;
|
char c4 = c3;
|
||||||
while((c4 != '\n') && (datastream.Position < datastream.Length)) { c4 = (char)datareader.ReadByte(); }
|
while((c4 != '\n') && (datastream.Position < datastream.Length)) { c4 = (char)datareader.ReadByte(); }
|
||||||
|
|
||||||
|
// Reached end of file?
|
||||||
|
if (datastream.Position == datastream.Length)
|
||||||
|
return true;
|
||||||
|
|
||||||
c = c4;
|
c = c4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -30,6 +30,7 @@ namespace CodeImp.DoomBuilder.ZDoom
|
||||||
LineComment, // // blablabla
|
LineComment, // // blablabla
|
||||||
BlockComment, // /* blablabla */
|
BlockComment, // /* blablabla */
|
||||||
Whitespace, // whitespace is a legit token.
|
Whitespace, // whitespace is a legit token.
|
||||||
|
Region, // #region, #endregion
|
||||||
|
|
||||||
// invalid token
|
// invalid token
|
||||||
Invalid,
|
Invalid,
|
||||||
|
@ -199,7 +200,7 @@ namespace CodeImp.DoomBuilder.ZDoom
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
ZScriptToken tok = ExpectToken(ZScriptTokenType.Newline, ZScriptTokenType.BlockComment, ZScriptTokenType.LineComment, ZScriptTokenType.Whitespace);
|
ZScriptToken tok = ExpectToken(ZScriptTokenType.Newline, ZScriptTokenType.BlockComment, ZScriptTokenType.LineComment, ZScriptTokenType.Whitespace, ZScriptTokenType.Region);
|
||||||
if (tok == null || !tok.IsValid) break;
|
if (tok == null || !tok.IsValid) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -460,7 +461,7 @@ namespace CodeImp.DoomBuilder.ZDoom
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ZScriptToken TryReadStringOrComment(bool allowstring, bool allowname, bool allowblock, bool allowline)
|
private ZScriptToken TryReadStringOrComment(bool allowstring, bool allowname, bool allowblock, bool allowline, bool allowregion)
|
||||||
{
|
{
|
||||||
long cpos = LastPosition = reader.BaseStream.Position;
|
long cpos = LastPosition = reader.BaseStream.Position;
|
||||||
char c;
|
char c;
|
||||||
|
@ -552,7 +553,41 @@ namespace CodeImp.DoomBuilder.ZDoom
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case '#': // #region and #endregion
|
||||||
|
{
|
||||||
|
if (!allowregion) break;
|
||||||
|
char cnext;
|
||||||
|
SB.Length = 0;
|
||||||
|
|
||||||
|
// Read until the end of the line
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
cnext = reader.ReadChar();
|
||||||
|
}
|
||||||
|
catch(EndOfStreamException)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(cnext == '\n')
|
||||||
|
{
|
||||||
|
reader.BaseStream.Position--;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
SB.Append(cnext);
|
||||||
|
}
|
||||||
|
|
||||||
|
string line = SB.ToString();
|
||||||
|
|
||||||
|
// GZDoom actually doesn't care what's coming after #region or #endregion, so something like #regionlalala is valid.
|
||||||
|
// But they have to be in lower case
|
||||||
|
if (line.StartsWith("region") || line.StartsWith("endregion"))
|
||||||
|
return new ZScriptToken() { Position = cpos, Type = ZScriptTokenType.Region, Value = "" };
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
case '"':
|
case '"':
|
||||||
case '\'':
|
case '\'':
|
||||||
{
|
{
|
||||||
|
@ -586,7 +621,6 @@ namespace CodeImp.DoomBuilder.ZDoom
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reader.BaseStream.Position = cpos;
|
reader.BaseStream.Position = cpos;
|
||||||
|
@ -642,11 +676,12 @@ namespace CodeImp.DoomBuilder.ZDoom
|
||||||
bool bblockcomment = oneof.Contains(ZScriptTokenType.BlockComment);
|
bool bblockcomment = oneof.Contains(ZScriptTokenType.BlockComment);
|
||||||
bool bstring = oneof.Contains(ZScriptTokenType.String);
|
bool bstring = oneof.Contains(ZScriptTokenType.String);
|
||||||
bool bname = oneof.Contains(ZScriptTokenType.Name);
|
bool bname = oneof.Contains(ZScriptTokenType.Name);
|
||||||
|
bool bregion = oneof.Contains(ZScriptTokenType.Region);
|
||||||
|
|
||||||
if (bstring || bname || bblockcomment || blinecomment)
|
if (bstring || bname || bblockcomment || blinecomment || bregion)
|
||||||
{
|
{
|
||||||
// try to expect a string
|
// try to expect a string
|
||||||
ZScriptToken tok = TryReadStringOrComment(bstring, bname, bblockcomment, blinecomment);
|
ZScriptToken tok = TryReadStringOrComment(bstring, bname, bblockcomment, blinecomment, bregion);
|
||||||
if (tok != null) return tok;
|
if (tok != null) return tok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -721,7 +756,7 @@ namespace CodeImp.DoomBuilder.ZDoom
|
||||||
if (tok != null) return tok;
|
if (tok != null) return tok;
|
||||||
}
|
}
|
||||||
|
|
||||||
tok = TryReadStringOrComment(true, true, true, true);
|
tok = TryReadStringOrComment(true, true, true, true, true);
|
||||||
if (tok != null) return tok;
|
if (tok != null) return tok;
|
||||||
|
|
||||||
if (!short_circuit)
|
if (!short_circuit)
|
||||||
|
|
|
@ -513,11 +513,13 @@ namespace CodeImp.DoomBuilder.BuilderModes.IO
|
||||||
foreach(VisualMiddle3D m3d in part.middle3d)
|
foreach(VisualMiddle3D m3d in part.middle3d)
|
||||||
{
|
{
|
||||||
if(m3d.Vertices == null) continue;
|
if(m3d.Vertices == null) continue;
|
||||||
texture = m3d.GetControlLinedef().Front.MiddleTexture;
|
texture = m3d.GetTextureName();
|
||||||
if (!skipTextures.Contains(texture))
|
if (!skipTextures.Contains(texture))
|
||||||
{
|
{
|
||||||
CheckTextureName(ref texturegeo, ref texture);
|
CheckTextureName(ref texturegeo, ref texture);
|
||||||
texturegeo[texture].AddRange(OptimizeGeometry(m3d.Vertices, m3d.GeometryType));
|
// 3D floor sides are cut so that there are only triangles for the visible parts. Some of those might be
|
||||||
|
// triangles and not rectangles, so we can't optimize them into rectangles
|
||||||
|
texturegeo[texture].AddRange(OptimizeGeometry(m3d.Vertices, m3d.GeometryType, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -848,15 +848,15 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
}
|
}
|
||||||
|
|
||||||
// Texture offset change
|
// Texture offset change
|
||||||
public virtual void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection)
|
public virtual bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection)
|
||||||
{
|
{
|
||||||
if(horizontal == 0 && vertical == 0) return; //mxd
|
if(horizontal == 0 && vertical == 0) return false; //mxd
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
if(!General.Map.UDMF)
|
if(!General.Map.UDMF)
|
||||||
{
|
{
|
||||||
General.Interface.DisplayStatus(StatusType.Warning, "Floor/ceiling texture offsets cannot be changed in this map format!");
|
General.Interface.DisplayStatus(StatusType.Warning, "Floor/ceiling texture offsets cannot be changed in this map format!");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((General.Map.UndoRedo.NextUndo == null) || (General.Map.UndoRedo.NextUndo.TicketID != undoticket))
|
if((General.Map.UndoRedo.NextUndo == null) || (General.Map.UndoRedo.NextUndo.TicketID != undoticket))
|
||||||
|
@ -914,6 +914,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
}
|
}
|
||||||
|
|
||||||
if(vs != null) vs.UpdateSectorGeometry(false);
|
if(vs != null) vs.UpdateSectorGeometry(false);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
|
|
|
@ -1660,7 +1660,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
}
|
}
|
||||||
|
|
||||||
// Texture offset change
|
// Texture offset change
|
||||||
public virtual void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection)
|
public virtual bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection)
|
||||||
{
|
{
|
||||||
if((General.Map.UndoRedo.NextUndo == null) || (General.Map.UndoRedo.NextUndo.TicketID != undoticket))
|
if((General.Map.UndoRedo.NextUndo == null) || (General.Map.UndoRedo.NextUndo.TicketID != undoticket))
|
||||||
undoticket = mode.CreateUndo("Change texture offsets");
|
undoticket = mode.CreateUndo("Change texture offsets");
|
||||||
|
@ -1695,6 +1695,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
//mxd. Update linked effects
|
//mxd. Update linked effects
|
||||||
SectorData sd = mode.GetSectorDataEx(Sector.Sector);
|
SectorData sd = mode.GetSectorDataEx(Sector.Sector);
|
||||||
if(sd != null) sd.Reset(true);
|
if(sd != null) sd.Reset(true);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
|
|
|
@ -111,7 +111,7 @@ namespace CodeImp.DoomBuilder.VisualModes
|
||||||
public void OnSelectBegin() { }
|
public void OnSelectBegin() { }
|
||||||
public void OnEditBegin() { }
|
public void OnEditBegin() { }
|
||||||
public void OnChangeTargetBrightness(bool up, bool local) { }
|
public void OnChangeTargetBrightness(bool up, bool local) { }
|
||||||
public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { }
|
public bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { return true; }
|
||||||
public void OnSelectTexture() { }
|
public void OnSelectTexture() { }
|
||||||
public void OnCopyTexture() { }
|
public void OnCopyTexture() { }
|
||||||
public void OnPasteTexture() { }
|
public void OnPasteTexture() { }
|
||||||
|
|
|
@ -704,7 +704,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
public void OnSelectBegin() { }
|
public void OnSelectBegin() { }
|
||||||
public void OnEditBegin() { }
|
public void OnEditBegin() { }
|
||||||
public void OnChangeTargetBrightness(bool up, bool local) { }
|
public void OnChangeTargetBrightness(bool up, bool local) { }
|
||||||
public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { }
|
public bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { return true; }
|
||||||
public void OnSelectTexture() { }
|
public void OnSelectTexture() { }
|
||||||
public void OnCopyTexture() { }
|
public void OnCopyTexture() { }
|
||||||
public void OnPasteTexture() { }
|
public void OnPasteTexture() { }
|
||||||
|
|
2
Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs
Executable file → Normal file
2
Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs
Executable file → Normal file
|
@ -241,7 +241,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
public void OnEditBegin() { }
|
public void OnEditBegin() { }
|
||||||
public void OnMouseMove(MouseEventArgs e) { }
|
public void OnMouseMove(MouseEventArgs e) { }
|
||||||
public void OnChangeTargetBrightness(bool up, bool local) { }
|
public void OnChangeTargetBrightness(bool up, bool local) { }
|
||||||
public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { }
|
public bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { return true; }
|
||||||
public void OnChangeScale(int incrementX, int incrementY) { }
|
public void OnChangeScale(int incrementX, int incrementY) { }
|
||||||
public void OnSelectTexture() { }
|
public void OnSelectTexture() { }
|
||||||
public void OnCopyTexture() { }
|
public void OnCopyTexture() { }
|
||||||
|
|
2
Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs
Executable file → Normal file
2
Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs
Executable file → Normal file
|
@ -35,7 +35,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
void OnMouseMove(MouseEventArgs e);
|
void OnMouseMove(MouseEventArgs e);
|
||||||
void OnChangeTargetHeight(int amount);
|
void OnChangeTargetHeight(int amount);
|
||||||
void OnChangeTargetBrightness(bool up, bool local);
|
void OnChangeTargetBrightness(bool up, bool local);
|
||||||
void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection);
|
bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection);
|
||||||
void OnChangeScale(int incrementX, int incrementY); //mxd
|
void OnChangeScale(int incrementX, int incrementY); //mxd
|
||||||
void OnResetTextureOffset();
|
void OnResetTextureOffset();
|
||||||
void OnResetLocalTextureOffset(); //mxd. This should reset upper/middle/lower offsets (UDMF only)
|
void OnResetLocalTextureOffset(); //mxd. This should reset upper/middle/lower offsets (UDMF only)
|
||||||
|
|
2
Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs
Executable file → Normal file
2
Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs
Executable file → Normal file
|
@ -34,7 +34,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
public void OnMouseMove(MouseEventArgs e) { }
|
public void OnMouseMove(MouseEventArgs e) { }
|
||||||
public void OnChangeTargetHeight(int amount) { }
|
public void OnChangeTargetHeight(int amount) { }
|
||||||
public void OnChangeTargetBrightness(bool up, bool local) { }
|
public void OnChangeTargetBrightness(bool up, bool local) { }
|
||||||
public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { }
|
public bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { return true; }
|
||||||
public void OnChangeScale(int incrementX, int incrementY) { } //mxd
|
public void OnChangeScale(int incrementX, int incrementY) { } //mxd
|
||||||
public void OnResetTextureOffset() { }
|
public void OnResetTextureOffset() { }
|
||||||
public void OnResetLocalTextureOffset() { } //mxd
|
public void OnResetLocalTextureOffset() { } //mxd
|
||||||
|
|
|
@ -279,16 +279,19 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
public override void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection)
|
public override bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection)
|
||||||
{
|
{
|
||||||
|
bool appliedoffset = false;
|
||||||
|
|
||||||
// Only do this when not done yet in this call
|
// Only do this when not done yet in this call
|
||||||
// Because we may be able to select the same 3D floor multiple times through multiple sectors
|
// Because we may be able to select the same 3D floor multiple times through multiple sectors
|
||||||
SectorData sd = mode.GetSectorData(level.sector);
|
SectorData sd = mode.GetSectorData(level.sector);
|
||||||
if(!sd.CeilingChanged)
|
if(!sd.CeilingChanged)
|
||||||
{
|
{
|
||||||
sd.CeilingChanged = true;
|
sd.CeilingChanged = appliedoffset = base.OnChangeTextureOffset(horizontal, vertical, doSurfaceAngleCorrection);
|
||||||
base.OnChangeTextureOffset(horizontal, vertical, doSurfaceAngleCorrection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return appliedoffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move texture coordinates
|
// Move texture coordinates
|
||||||
|
|
|
@ -233,16 +233,19 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
public override void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection)
|
public override bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection)
|
||||||
{
|
{
|
||||||
|
bool appliedoffset = false;
|
||||||
|
|
||||||
// Only do this when not done yet in this call
|
// Only do this when not done yet in this call
|
||||||
// Because we may be able to select the same 3D floor multiple times through multiple sectors
|
// Because we may be able to select the same 3D floor multiple times through multiple sectors
|
||||||
SectorData sd = mode.GetSectorData(level.sector);
|
SectorData sd = mode.GetSectorData(level.sector);
|
||||||
if(!sd.FloorChanged)
|
if(!sd.FloorChanged)
|
||||||
{
|
{
|
||||||
sd.FloorChanged = true;
|
sd.FloorChanged = appliedoffset = base.OnChangeTextureOffset(horizontal, vertical, doSurfaceAngleCorrection);
|
||||||
base.OnChangeTextureOffset(horizontal, vertical, doSurfaceAngleCorrection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return appliedoffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move texture coordinates
|
// Move texture coordinates
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
cd "$(dirname "$0")"
|
||||||
mono Builder.exe
|
mono Builder.exe
|
||||||
|
|
Loading…
Reference in a new issue