UltimateZoneBuilder/Source/Plugins/BuilderModes/VisualModes/SectorLevel.cs
MaxED abfcd8e53b Added, Preferences -> Appearance: added "Anisotropic filtering" and "Edge Antialiasing" settings. Also regrouped some settings.
Added, "Check polyobjects" error check: added a check for matching Polyobject and Mirror Polyobject numbers of Polyobj_StartLine action.
Changed, Visual mode: anisotropic filtering is now always applied (previously it was applied only when bilinear filtering was enabled).
Fixed, Visual mode: in some cases light values were incorrectly transferred between 3d floors and regular floors/ceilings.
Fixed, ACS parser: includes for each library must be stored separately (fixes inability to compile a script with an included library, which in turn includes files already included by the script).
2016-03-25 14:06:00 +00:00

113 lines
3.4 KiB
C#

#region === Copyright (c) 2010 Pascal van der Heiden ===
using CodeImp.DoomBuilder.Geometry;
using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering;
#endregion
namespace CodeImp.DoomBuilder.BuilderModes
{
internal class SectorLevel
{
// Type of level
public SectorLevelType type;
//mxd. Type of extralight
public LightLevelType lighttype = LightLevelType.UNKNOWN;
// Sector where this level originates from
public Sector sector;
// Plane in the sector
public Plane plane;
// Alpha for translucency (255=opaque)
public int alpha;
// Color of the plane (includes brightness)
// When this is 0, it takes the color from the sector above
public int color;
// Color and brightness below the plane
// When this is 0, it takes the color from the sector above
public int brightnessbelow;
public PixelColor colorbelow;
public bool disablelighting; //mxd
public bool restrictlighting; //mxd
public bool resetlighting; //mxd
public bool affectedbyglow; //mxd
public bool extrafloor; //mxd
public bool splitsides; //mxd
// Constructor
public SectorLevel(Sector s, SectorLevelType type)
{
this.type = type;
this.sector = s;
this.alpha = 255;
this.splitsides = true; //mxd
}
// Copy constructor
public SectorLevel(SectorLevel source)
{
source.CopyProperties(this);
}
// Copy properties
public void CopyProperties(SectorLevel target)
{
target.sector = this.sector;
target.type = this.type;
target.lighttype = this.lighttype; //mxd
target.plane = this.plane;
target.alpha = this.alpha;
target.color = this.color;
target.brightnessbelow = this.brightnessbelow;
target.colorbelow = this.colorbelow;
target.affectedbyglow = this.affectedbyglow; //mxd
target.disablelighting = this.disablelighting; //mxd
target.restrictlighting = this.restrictlighting; //mxd
target.resetlighting = this.resetlighting; //mxd
target.splitsides = this.splitsides; //mxd
}
//mxd. Compare light properties
public bool LightPropertiesMatch(SectorLevel other)
{
return (this.type == other.type && this.lighttype == other.lighttype && this.alpha == other.alpha && this.splitsides == other.splitsides
&& this.color == other.color && this.brightnessbelow == other.brightnessbelow && this.colorbelow.ToInt() == other.colorbelow.ToInt()
&& this.disablelighting == other.disablelighting && this.restrictlighting == other.restrictlighting
&& this.resetlighting == other.resetlighting);
}
#if DEBUG
//mxd. Handy when debugging
public override string ToString()
{
switch(type)
{
case SectorLevelType.Ceiling: return (extrafloor ? "ExtraCeiling" : "Ceiling");
case SectorLevelType.Floor: return (extrafloor ? "ExtraFloor" : "Floor");
case SectorLevelType.Glow: return "Glow Level";
case SectorLevelType.Light: return "Light Level (" + GetLightType() + ")";
default: return "Unknown Level Type!!!";
}
}
//mxd. Handy when debugging
private string GetLightType()
{
switch(lighttype)
{
case LightLevelType.TYPE0: return "Type 0";
case LightLevelType.TYPE1: return "Type 1";
case LightLevelType.TYPE1_BOTTOM: return "Type 1 (bottom)";
case LightLevelType.TYPE2: return "Type 2";
default: return "Unknown";
}
}
#endif
}
}