2010-09-02 20:42:38 +00:00
|
|
|
#region === Copyright (c) 2010 Pascal van der Heiden ===
|
|
|
|
|
|
|
|
using System;
|
|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Globalization;
|
|
|
|
using System.Text;
|
|
|
|
using CodeImp.DoomBuilder.Geometry;
|
2010-09-03 15:12:07 +00:00
|
|
|
using CodeImp.DoomBuilder.Map;
|
|
|
|
using CodeImp.DoomBuilder.Rendering;
|
2010-09-02 20:42:38 +00:00
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
namespace CodeImp.DoomBuilder.GZDoomEditing
|
|
|
|
{
|
2010-09-03 15:12:07 +00:00
|
|
|
internal class SectorLevel : IComparable<SectorLevel>
|
2010-09-02 20:42:38 +00:00
|
|
|
{
|
2010-09-03 15:12:07 +00:00
|
|
|
// Center of sector to use for plane comparison
|
2010-09-04 11:19:37 +00:00
|
|
|
public Vector2D center;
|
2010-09-03 15:12:07 +00:00
|
|
|
|
2010-09-02 20:42:38 +00:00
|
|
|
// Type of level
|
|
|
|
public SectorLevelType type;
|
|
|
|
|
2010-09-04 14:51:35 +00:00
|
|
|
// Original sector
|
|
|
|
public Sector sector;
|
|
|
|
|
2010-09-02 20:42:38 +00:00
|
|
|
// Plane in the sector
|
|
|
|
public Plane plane;
|
2010-09-03 15:12:07 +00:00
|
|
|
|
2010-09-10 15:59:47 +00:00
|
|
|
// Alpha transparency
|
|
|
|
public int alpha;
|
|
|
|
|
2010-09-03 15:12:07 +00:00
|
|
|
// Color of the plane (includes brightness)
|
2010-09-06 06:09:22 +00:00
|
|
|
// When this is 0, it takes the color from the sector above
|
2010-09-02 20:42:38 +00:00
|
|
|
public int color;
|
2010-09-03 15:12:07 +00:00
|
|
|
|
|
|
|
// Color and brightness below the plane
|
2010-09-06 06:09:22 +00:00
|
|
|
// When this is 0, it takes the color from the sector above
|
2010-09-03 15:12:07 +00:00
|
|
|
public int brightnessbelow;
|
|
|
|
public PixelColor colorbelow;
|
|
|
|
|
|
|
|
// Constructor
|
|
|
|
public SectorLevel(Sector s, SectorLevelType type)
|
|
|
|
{
|
2010-09-04 14:51:35 +00:00
|
|
|
this.sector = s;
|
2010-09-03 15:12:07 +00:00
|
|
|
this.type = type;
|
2010-09-04 11:19:37 +00:00
|
|
|
this.center = new Vector2D(s.BBox.Left + s.BBox.Width / 2, s.BBox.Top + s.BBox.Height / 2);
|
2010-09-10 15:59:47 +00:00
|
|
|
this.alpha = 255;
|
2010-09-03 15:12:07 +00:00
|
|
|
}
|
|
|
|
|
2010-09-06 06:09:22 +00:00
|
|
|
// Copy constructor
|
|
|
|
public SectorLevel(SectorLevel source)
|
|
|
|
{
|
|
|
|
this.center = source.center;
|
|
|
|
this.type = source.type;
|
|
|
|
this.sector = source.sector;
|
|
|
|
this.plane = source.plane;
|
|
|
|
this.color = source.color;
|
|
|
|
this.brightnessbelow = source.brightnessbelow;
|
|
|
|
this.colorbelow = source.colorbelow;
|
2010-09-10 15:59:47 +00:00
|
|
|
this.alpha = 255;
|
2010-09-06 06:09:22 +00:00
|
|
|
}
|
|
|
|
|
2010-09-03 15:12:07 +00:00
|
|
|
// Comparer
|
|
|
|
public int CompareTo(SectorLevel other)
|
|
|
|
{
|
2010-09-04 11:19:37 +00:00
|
|
|
float delta = this.plane.GetZ(center) - other.plane.GetZ(center);
|
2010-09-03 15:12:07 +00:00
|
|
|
|
|
|
|
if(delta > 0.0f)
|
|
|
|
return 1;
|
|
|
|
else if(delta < 0.0f)
|
|
|
|
return -1;
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
2010-09-02 20:42:38 +00:00
|
|
|
}
|
|
|
|
}
|