From 5f1a5df50b92df3a3d720b7d77147095a0e43957 Mon Sep 17 00:00:00 2001
From: codeimp <codeimp@e0d998f2-2e9b-42fe-843d-47128df60a06>
Date: Thu, 16 Sep 2010 12:09:17 +0000
Subject: [PATCH] @ Fixed raising/lowering of floor/ceiling on Vavoom type 3D
 floors (they were reversed)

---
 .../VisualModes/BaseVisualGeometrySector.cs            |  7 +++++--
 .../GZDoomEditing/VisualModes/BaseVisualSector.cs      |  8 ++++----
 .../Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs | 10 +++++-----
 .../Plugins/GZDoomEditing/VisualModes/VisualFloor.cs   | 10 +++++-----
 4 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs
index 1abb9e52..493587cd 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs
@@ -54,6 +54,7 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		protected bool changed;
 
 		protected SectorLevel level;
+		protected Effect3DFloor extrafloor;
 		
 		#endregion
 
@@ -62,6 +63,7 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		new public BaseVisualSector Sector { get { return (BaseVisualSector)base.Sector; } }
 		public bool Changed { get { return changed; } set { changed = value; } }
 		public SectorLevel Level { get { return level; } }
+		public Effect3DFloor ExtraFloor { get { return extrafloor; } }
 
 		#endregion
 
@@ -102,10 +104,11 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		public virtual void ApplyLowerUnpegged(bool set) { }
 
 		// Setup this plane
-		public bool Setup() { return this.Setup(this.level); }
-		public virtual bool Setup(SectorLevel level)
+		public bool Setup() { return this.Setup(this.level, this.extrafloor); }
+		public virtual bool Setup(SectorLevel level, Effect3DFloor extrafloor)
 		{
 			this.level = level;
+			this.extrafloor = extrafloor;
 			return false;
 		}
 
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualSector.cs b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualSector.cs
index d0973b8b..a7f8405a 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualSector.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualSector.cs
@@ -182,12 +182,12 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 			
 			// Create floor
 			floor = floor ?? new VisualFloor(mode, this);
-			if(floor.Setup(data.Floor))
+			if(floor.Setup(data.Floor, null))
 				base.AddGeometry(floor);
 			
 			// Create ceiling
 			ceiling = ceiling ?? new VisualCeiling(mode, this);
-			if(ceiling.Setup(data.Ceiling))
+			if(ceiling.Setup(data.Ceiling, null))
 				base.AddGeometry(ceiling);
 			
 			// Create 3D floors
@@ -197,14 +197,14 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 				
 				// Create a floor
 				VisualFloor vf = (i < extrafloors.Count) ? extrafloors[i] : new VisualFloor(mode, this);
-				if(vf.Setup(ef.Floor))
+				if(vf.Setup(ef.Floor, ef))
 					base.AddGeometry(vf);
 				if(i >= extrafloors.Count)
 					extrafloors.Add(vf);
 
 				// Create a ceiling
 				VisualCeiling vc = (i < extraceilings.Count) ? extraceilings[i] : new VisualCeiling(mode, this);
-				if(vc.Setup(ef.Ceiling))
+				if(vc.Setup(ef.Ceiling, ef))
 					base.AddGeometry(vc);
 				if(i >= extraceilings.Count)
 					extraceilings.Add(vc);
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs
index df5886d6..ce3ca8f7 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs
@@ -65,15 +65,15 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		}
 
 		// This builds the geometry. Returns false when no geometry created.
-		public override bool Setup(SectorLevel level)
+		public override bool Setup(SectorLevel level, Effect3DFloor extrafloor)
 		{
 			WorldVertex[] verts;
 			WorldVertex v;
 			Sector s = level.sector;
 			Vector2D texscale;
-
-			base.Setup(level);
-
+			
+			base.Setup(level, extrafloor);
+			
 			// Fetch ZDoom fields
 			float rotate = Angle2D.DegToRad(s.Fields.GetValue("rotationceiling", 0.0f));
 			Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningceiling", 0.0f),
@@ -165,7 +165,7 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		// This changes the height
 		protected override void ChangeHeight(int amount)
 		{
-			if(level.sector == Sector.Sector)
+			if((extrafloor == null) || extrafloor.VavoomType)
 			{
 				mode.CreateUndo("Change ceiling height", UndoGroup.CeilingHeightChange, level.sector.FixedIndex);
 				level.sector.CeilHeight += amount;
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualFloor.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualFloor.cs
index 258cd4f5..90b33e48 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/VisualFloor.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualFloor.cs
@@ -65,14 +65,14 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		}
 
 		// This builds the geometry. Returns false when no geometry created.
-		public override bool Setup(SectorLevel level)
+		public override bool Setup(SectorLevel level, Effect3DFloor extrafloor)
 		{
 			WorldVertex[] verts;
 			Sector s = level.sector;
 			Vector2D texscale;
-
-			base.Setup(level);
-
+			
+			base.Setup(level, extrafloor);
+			
 			// Fetch ZDoom fields
 			float rotate = Angle2D.DegToRad(s.Fields.GetValue("rotationfloor", 0.0f));
 			Vector2D offset = new Vector2D(s.Fields.GetValue("xpanningfloor", 0.0f),
@@ -152,7 +152,7 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		// This changes the height
 		protected override void ChangeHeight(int amount)
 		{
-			if(level.sector == Sector.Sector)
+			if((extrafloor == null) || extrafloor.VavoomType)
 			{
 				mode.CreateUndo("Change floor height", UndoGroup.FloorHeightChange, level.sector.FixedIndex);
 				level.sector.FloorHeight += amount;