mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-12-18 08:01:36 +00:00
16b97e1c83
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.
82 lines
2.4 KiB
C#
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,
|
|
}
|
|
}
|