diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index 080df7a520a5829b9e90b5f2a344fa4fa3a0c20d..45e7891c91c4e289fa7b9cb19120a126d6b367fd 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -1108,23 +1108,32 @@ namespace CodeImp.DoomBuilder.BuilderModes case "srb2_fofwater": case "srb2_fofsolidopaque": case "srb2_fofcrumbling": - case "srb2_foflight": - case "srb2_foffog": case "srb2_fofintangible": - case "srb2_fofintangibleinvisible": case "srb2_fofbustable": case "srb2_foflaser": case "srb2_fofcustom": - if (l.Front != null) + if (l.Front != null && sectortags.ContainsKey(l.Args[0])) { - if (sectortags.ContainsKey(l.Args[0])) + List<Sector> sectors = sectortags[l.Args[0]]; + foreach (Sector s in sectors) { - List<Sector> sectors = sectortags[l.Args[0]]; - foreach (Sector s in sectors) - { - SectorData sd = GetSectorData(s); - sd.AddEffect3DFloor(l); - } + SectorData sd = GetSectorData(s); + sd.AddEffect3DFloor(l); + } + } + break; + + case "srb2_foflight": + case "srb2_foffog": + case "srb2_fofintangibleinvisible": + if (l.Front != null && sectortags.ContainsKey(l.Args[0])) + { + List<Sector> sectors = sectortags[l.Args[0]]; + foreach (Sector s in sectors) + { + SectorData sd = GetSectorData(s); + //sd.AddEffectBrightnessLevel(l); + sd.AddEffect3DFloor(l); } } break; @@ -1220,121 +1229,125 @@ namespace CodeImp.DoomBuilder.BuilderModes } } - // Find interesting things (such as sector slopes) - // Pass one of slope things, and determine which one are for pass two - //TODO: rewrite using classnames instead of numbers - foreach (Thing t in General.Map.Map.Things) + // Disable loops that are not relevant to SRB2 + if (false) { - switch (t.Type) + // Find interesting things (such as sector slopes) + // Pass one of slope things, and determine which one are for pass two + //TODO: rewrite using classnames instead of numbers + foreach (Thing t in General.Map.Map.Things) { - // ========== Copy slope ========== - case 9511: - case 9510: - slopethingpass[1].Add(t); - break; - - // ========== Thing line slope ========== - case 9501: - case 9500: - if(linetags.ContainsKey(t.Args[0])) - { - // Only slope each sector once, even when multiple lines of the same sector are tagged. See https://github.com/jewalky/UltimateDoomBuilder/issues/491 - List<Sector> slopedsectors = new List<Sector>(); + switch (t.Type) + { + // ========== Copy slope ========== + case 9511: + case 9510: + slopethingpass[1].Add(t); + break; - foreach(Linedef ld in linetags[t.Args[0]]) + // ========== Thing line slope ========== + case 9501: + case 9500: + if (linetags.ContainsKey(t.Args[0])) { - if (ld.Line.GetSideOfLine(t.Position) < 0.0f) + // Only slope each sector once, even when multiple lines of the same sector are tagged. See https://github.com/jewalky/UltimateDoomBuilder/issues/491 + List<Sector> slopedsectors = new List<Sector>(); + + foreach (Linedef ld in linetags[t.Args[0]]) { - if (ld.Front != null && !slopedsectors.Contains(ld.Front.Sector)) + if (ld.Line.GetSideOfLine(t.Position) < 0.0f) { - GetSectorData(ld.Front.Sector).AddEffectThingLineSlope(t, ld.Front); - slopedsectors.Add(ld.Front.Sector); + if (ld.Front != null && !slopedsectors.Contains(ld.Front.Sector)) + { + GetSectorData(ld.Front.Sector).AddEffectThingLineSlope(t, ld.Front); + slopedsectors.Add(ld.Front.Sector); + } + } + else if (ld.Back != null && !slopedsectors.Contains(ld.Back.Sector)) + { + GetSectorData(ld.Back.Sector).AddEffectThingLineSlope(t, ld.Back); + slopedsectors.Add(ld.Back.Sector); } - } - else if (ld.Back != null && !slopedsectors.Contains(ld.Back.Sector)) - { - GetSectorData(ld.Back.Sector).AddEffectThingLineSlope(t, ld.Back); - slopedsectors.Add(ld.Back.Sector); } } - } - break; + break; - // ========== Thing slope ========== - case 9503: - case 9502: - t.DetermineSector(blockmap); - if (t.Sector != null) - { - SectorData sd = GetSectorData(t.Sector); - sd.AddEffectThingSlope(t); - } - break; + // ========== Thing slope ========== + case 9503: + case 9502: + t.DetermineSector(blockmap); + if (t.Sector != null) + { + SectorData sd = GetSectorData(t.Sector); + sd.AddEffectThingSlope(t); + } + break; + } } - } - // Pass two of slope things - //TODO: rewrite using classnames instead of numbers - foreach (Thing t in slopethingpass[1]) - { - switch (t.Type) + // Pass two of slope things + //TODO: rewrite using classnames instead of numbers + foreach (Thing t in slopethingpass[1]) { - // ========== Copy slope ========== - case 9511: - case 9510: - t.DetermineSector(blockmap); - if (t.Sector != null) - { - SectorData sd = GetSectorData(t.Sector); - sd.AddEffectCopySlope(t); - } - break; + switch (t.Type) + { + // ========== Copy slope ========== + case 9511: + case 9510: + t.DetermineSector(blockmap); + if (t.Sector != null) + { + SectorData sd = GetSectorData(t.Sector); + sd.AddEffectCopySlope(t); + } + break; + } } - } - // Find sectors with 3 vertices, because they can be sloped - foreach (Sector s in General.Map.Map.Sectors) - { - // ========== Thing vertex slope, vertices with UDMF vertex offsets ========== - if (s.Sidedefs.Count == 3) + // Find sectors with 3 vertices, because they can be sloped + foreach (Sector s in General.Map.Map.Sectors) { - if (General.Map.UDMF) GetSectorData(s).AddEffectVertexOffset(); //mxd - List<Thing> slopeceilingthings = new List<Thing>(3); - List<Thing> slopefloorthings = new List<Thing>(3); - - foreach (Sidedef sd in s.Sidedefs) + // ========== Thing vertex slope, vertices with UDMF vertex offsets ========== + if (s.Sidedefs.Count == 3) { - Vertex v = sd.IsFront ? sd.Line.End : sd.Line.Start; + if (General.Map.UDMF) GetSectorData(s).AddEffectVertexOffset(); //mxd + List<Thing> slopeceilingthings = new List<Thing>(3); + List<Thing> slopefloorthings = new List<Thing>(3); - // Check if a thing is at this vertex - foreach (VisualBlockEntry block in blockmap.GetBlocks(v.Position)) - { - foreach (Thing t in block.Things) - { - if ((Vector2D)t.Position == v.Position) - { - switch (t.Type) - { - case 1504: slopefloorthings.Add(t); break; - case 1505: slopeceilingthings.Add(t); break; - } - } - } - } - } + foreach (Sidedef sd in s.Sidedefs) + { + Vertex v = sd.IsFront ? sd.Line.End : sd.Line.Start; - // Slope any floor vertices? - if (slopefloorthings.Count > 0) - { - SectorData sd = GetSectorData(s); - sd.AddEffectThingVertexSlope(slopefloorthings, true); - } + // Check if a thing is at this vertex + foreach (VisualBlockEntry block in blockmap.GetBlocks(v.Position)) + { + foreach (Thing t in block.Things) + { + if ((Vector2D)t.Position == v.Position) + { + switch (t.Type) + { + case 1504: slopefloorthings.Add(t); break; + case 1505: slopeceilingthings.Add(t); break; + } + } + } + } + } - // Slope any ceiling vertices? - if (slopeceilingthings.Count > 0) - { - SectorData sd = GetSectorData(s); - sd.AddEffectThingVertexSlope(slopeceilingthings, false); + // Slope any floor vertices? + if (slopefloorthings.Count > 0) + { + SectorData sd = GetSectorData(s); + sd.AddEffectThingVertexSlope(slopefloorthings, true); + } + + // Slope any ceiling vertices? + if (slopeceilingthings.Count > 0) + { + SectorData sd = GetSectorData(s); + sd.AddEffectThingVertexSlope(slopeceilingthings, false); + } } } }