UltimateZoneBuilder/Source/Core/GZBuilder/Data/GZDoomLight.cs
MaxED 16b97e1c83 Added GLDEFS and (Z)MAPINFO parsers.
Dynamic lights defined in GLDEFS are now rendered in Visual modes (currently only one light per Thing is supported).
Several values from (Z)MAPINFO are now used in Visual modes.
Added "Reload GLDEFS", "Reload (Z)MAPINFO" and "Reload MODELDEF" menu options (in "Tools" section).
MODELDEF parser now checks which model(s) is/are used in first frame.
Dynamic lights are now created with more meaningful default parameters.
Added errors and warnings indicator to main window.
2012-06-01 10:17:47 +00:00

82 lines
2.4 KiB
C#

using System;
using SlimDX;
namespace CodeImp.DoomBuilder.GZBuilder.Data
{
public class GZDoomLight {
public int Type; //holds GZDoomLightType
public Color3 Color;
public int PrimaryRadius;
public int SecondaryRadius;
public int Interval;
public Vector3 Offset;
public bool Subtractive;
public bool DontLightSelf;
public GZDoomLight() {
Color = new Color3();
Offset = new Vector3();
}
public static int[] GetDefaultLightSettings(int type) {
int light_id = Array.IndexOf(GZBuilder.GZGeneral.GZ_LIGHTS, type);
if (light_id != -1) {
int[] args = new int[5];
if (light_id == (int)GZDoomLightType.VAVOOM_COLORED) {
args[0] = 16;
args[1] = 255;
args[2] = 255;
args[3] = 255;
} else if (light_id == (int)GZDoomLightType.VAVOOM) {
args[0] = 16;
} else {
int n;
if (light_id < GZBuilder.GZGeneral.GZ_LIGHT_TYPES[0]) {
n = 0;
} else if (light_id < GZBuilder.GZGeneral.GZ_LIGHT_TYPES[1]) {
n = 10;
} else {
n = 20;
}
light_id = type - 9800 - n;
args[0] = 255;
args[1] = 255;
args[2] = 255;
if (light_id == (int)GZDoomLightType.SECTOR)
args[3] = 4;
else
args[3] = 64;
if (Array.IndexOf(GZBuilder.GZGeneral.GZ_ANIMATED_LIGHT_TYPES, light_id) != -1) {
args[4] = 32;
}
}
return args;
}
return null;
}
}
public enum GZDoomLightType : int
{
NORMAL = 0,
PULSE = 1,
FLICKER = 2,
SECTOR = 3,
RANDOM = 4,
VAVOOM = 1502,
VAVOOM_COLORED = 1503,
}
//divide these by 100 to get light color alpha
public enum GZDoomLightRenderStyle : int
{
NORMAL = 99,
VAVOOM = 50,
ADDITIVE = 25,
NEGATIVE = 100,
}
}