UltimateZoneBuilder/Source/Plugins/BuilderModes/VisualModes/EffectCopySlope.cs
2017-01-15 00:35:40 +02:00

62 lines
1.5 KiB
C#
Executable file

#region === Copyright (c) 2010 Pascal van der Heiden ===
using CodeImp.DoomBuilder.Map;
#endregion
namespace CodeImp.DoomBuilder.BuilderModes
{
internal class EffectCopySlope : SectorEffect
{
// Thing used to create this effect
// The thing is in the sector that must receive the slope and the
// Thing's arg 0 indicates the sector to copy the slope from.
private Thing thing;
// Constructor
public EffectCopySlope(SectorData data, Thing sourcething) : base(data)
{
thing = sourcething;
// New effect added: This sector needs an update!
if(data.Mode.VisualSectorExists(data.Sector))
{
BaseVisualSector vs = (BaseVisualSector)data.Mode.GetVisualSector(data.Sector);
vs.UpdateSectorGeometry(true);
}
}
// This makes sure we are updated with the source linedef information
public override void Update()
{
// Find tagged sector
Sector sourcesector = null;
foreach(Sector s in General.Map.Map.Sectors)
{
if(s.Tags.Contains(thing.Args[0]))
{
sourcesector = s;
break;
}
}
if(sourcesector != null)
{
SectorData sourcesectordata = data.Mode.GetSectorData(sourcesector);
if(!sourcesectordata.Updated) sourcesectordata.Update();
switch(thing.Type)
{
case 9510:
data.Floor.plane = sourcesectordata.Floor.plane;
break;
case 9511:
data.Ceiling.plane = sourcesectordata.Ceiling.plane;
break;
}
sourcesectordata.AddUpdateSector(data.Sector, true);
}
}
}
}