From 2e222ab21ba957e9672506e7541051072f27c3f1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Apr 2026 20:59:09 +0000 Subject: [PATCH 1/9] Initial plan From 0457fefa4414baf773eee7414c716a765de495cb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:05:34 +0000 Subject: [PATCH 2/9] Guard corner smoothing against missing sectors Agent-Logs-Url: https://github.com/TombEngine/Tomb-Editor/sessions/c0329567-576d-4e94-be74-c2b46e121f4c Co-authored-by: Nickelony <20436882+Nickelony@users.noreply.github.com> --- TombEditor/EditorActions.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/TombEditor/EditorActions.cs b/TombEditor/EditorActions.cs index a595f46c8..f2e6f73fb 100644 --- a/TombEditor/EditorActions.cs +++ b/TombEditor/EditorActions.cs @@ -193,10 +193,21 @@ void smoothEdit(RoomSectorPair pair, SectorEdge edge) case ArrowType.CornerNW: origin = SectorEdge.XnZp; break; case ArrowType.CornerSE: origin = SectorEdge.XpZn; break; } + var originSector = room.GetSectorTryThroughPortal(startCoord); - var originHeight = originSector.Sector.GetHeight(vertical, origin) + originSector.Room.Position.Y; - for (int i = 0; i < 4; i++) - corners[i] = originHeight == cornerSectors[i].Sector.GetHeight(vertical, (SectorEdge)i) + cornerSectors[i].Room.Position.Y; + if (originSector.Sector != null && originSector.Room != null) + { + var originHeight = originSector.Sector.GetHeight(vertical, origin) + originSector.Room.Position.Y; + + for (int i = 0; i < 4; i++) + corners[i] = cornerSectors[i].Sector != null && cornerSectors[i].Room != null && + originHeight == cornerSectors[i].Sector.GetHeight(vertical, (SectorEdge)i) + cornerSectors[i].Room.Position.Y; + } + else + { + for (int i = 0; i < corners.Length; i++) + corners[i] = false; + } } // Smoothly change sectors on the corners From 9e881852b77e8745459cb8d819685ae51d256795 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:06:14 +0000 Subject: [PATCH 3/9] Apply review feedback for corner smoothing guard Agent-Logs-Url: https://github.com/TombEngine/Tomb-Editor/sessions/c0329567-576d-4e94-be74-c2b46e121f4c Co-authored-by: Nickelony <20436882+Nickelony@users.noreply.github.com> --- TombEditor/EditorActions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TombEditor/EditorActions.cs b/TombEditor/EditorActions.cs index f2e6f73fb..2550e6f34 100644 --- a/TombEditor/EditorActions.cs +++ b/TombEditor/EditorActions.cs @@ -199,7 +199,7 @@ void smoothEdit(RoomSectorPair pair, SectorEdge edge) { var originHeight = originSector.Sector.GetHeight(vertical, origin) + originSector.Room.Position.Y; - for (int i = 0; i < 4; i++) + for (int i = 0; i < corners.Length; i++) corners[i] = cornerSectors[i].Sector != null && cornerSectors[i].Room != null && originHeight == cornerSectors[i].Sector.GetHeight(vertical, (SectorEdge)i) + cornerSectors[i].Room.Position.Y; } From 20964b4c94c695fae2f219f9ce735c734615c8b8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:06:58 +0000 Subject: [PATCH 4/9] Clarify null-safe corner smoothing loop Agent-Logs-Url: https://github.com/TombEngine/Tomb-Editor/sessions/c0329567-576d-4e94-be74-c2b46e121f4c Co-authored-by: Nickelony <20436882+Nickelony@users.noreply.github.com> --- TombEditor/EditorActions.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/TombEditor/EditorActions.cs b/TombEditor/EditorActions.cs index 2550e6f34..ff0eeedc3 100644 --- a/TombEditor/EditorActions.cs +++ b/TombEditor/EditorActions.cs @@ -199,9 +199,17 @@ void smoothEdit(RoomSectorPair pair, SectorEdge edge) { var originHeight = originSector.Sector.GetHeight(vertical, origin) + originSector.Room.Position.Y; - for (int i = 0; i < corners.Length; i++) - corners[i] = cornerSectors[i].Sector != null && cornerSectors[i].Room != null && - originHeight == cornerSectors[i].Sector.GetHeight(vertical, (SectorEdge)i) + cornerSectors[i].Room.Position.Y; + for (int i = 0; i < 4; i++) + { + var cornerSector = cornerSectors[i]; + if (cornerSector.Sector == null || cornerSector.Room == null) + { + corners[i] = false; + continue; + } + + corners[i] = originHeight == cornerSector.Sector.GetHeight(vertical, (SectorEdge)i) + cornerSector.Room.Position.Y; + } } else { From b87e1eec9f8357f30621d99068b3e336a4b09b09 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:07:36 +0000 Subject: [PATCH 5/9] Use Array.Fill for missing corner fallback Agent-Logs-Url: https://github.com/TombEngine/Tomb-Editor/sessions/c0329567-576d-4e94-be74-c2b46e121f4c Co-authored-by: Nickelony <20436882+Nickelony@users.noreply.github.com> --- TombEditor/EditorActions.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/TombEditor/EditorActions.cs b/TombEditor/EditorActions.cs index ff0eeedc3..e7d16d7e7 100644 --- a/TombEditor/EditorActions.cs +++ b/TombEditor/EditorActions.cs @@ -212,10 +212,7 @@ void smoothEdit(RoomSectorPair pair, SectorEdge edge) } } else - { - for (int i = 0; i < corners.Length; i++) - corners[i] = false; - } + Array.Fill(corners, false); } // Smoothly change sectors on the corners From 40bb72065623d017d670d4d45f2abf52c660b0f8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:08:27 +0000 Subject: [PATCH 6/9] Extract corner height comparison helper Agent-Logs-Url: https://github.com/TombEngine/Tomb-Editor/sessions/c0329567-576d-4e94-be74-c2b46e121f4c Co-authored-by: Nickelony <20436882+Nickelony@users.noreply.github.com> --- TombEditor/EditorActions.cs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/TombEditor/EditorActions.cs b/TombEditor/EditorActions.cs index e7d16d7e7..123ccd19b 100644 --- a/TombEditor/EditorActions.cs +++ b/TombEditor/EditorActions.cs @@ -195,24 +195,23 @@ void smoothEdit(RoomSectorPair pair, SectorEdge edge) } var originSector = room.GetSectorTryThroughPortal(startCoord); - if (originSector.Sector != null && originSector.Room != null) + if (originSector.Sector == null || originSector.Room == null) + Array.Fill(corners, false); + else { var originHeight = originSector.Sector.GetHeight(vertical, origin) + originSector.Room.Position.Y; - for (int i = 0; i < 4; i++) + bool isCornerAtSameHeight(RoomSectorPair cornerSector, SectorEdge edge) { - var cornerSector = cornerSectors[i]; if (cornerSector.Sector == null || cornerSector.Room == null) - { - corners[i] = false; - continue; - } + return false; - corners[i] = originHeight == cornerSector.Sector.GetHeight(vertical, (SectorEdge)i) + cornerSector.Room.Position.Y; + return originHeight == cornerSector.Sector.GetHeight(vertical, edge) + cornerSector.Room.Position.Y; } + + for (int i = 0; i < 4; i++) + corners[i] = isCornerAtSameHeight(cornerSectors[i], (SectorEdge)i); } - else - Array.Fill(corners, false); } // Smoothly change sectors on the corners From 06e1d0470b25ff66ffe4bb8fcf3099c87e054470 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:08:55 +0000 Subject: [PATCH 7/9] Use PascalCase for local corner helper Agent-Logs-Url: https://github.com/TombEngine/Tomb-Editor/sessions/c0329567-576d-4e94-be74-c2b46e121f4c Co-authored-by: Nickelony <20436882+Nickelony@users.noreply.github.com> --- TombEditor/EditorActions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TombEditor/EditorActions.cs b/TombEditor/EditorActions.cs index 123ccd19b..eeb37410e 100644 --- a/TombEditor/EditorActions.cs +++ b/TombEditor/EditorActions.cs @@ -201,7 +201,7 @@ void smoothEdit(RoomSectorPair pair, SectorEdge edge) { var originHeight = originSector.Sector.GetHeight(vertical, origin) + originSector.Room.Position.Y; - bool isCornerAtSameHeight(RoomSectorPair cornerSector, SectorEdge edge) + bool IsCornerAtSameHeight(RoomSectorPair cornerSector, SectorEdge edge) { if (cornerSector.Sector == null || cornerSector.Room == null) return false; @@ -210,7 +210,7 @@ bool isCornerAtSameHeight(RoomSectorPair cornerSector, SectorEdge edge) } for (int i = 0; i < 4; i++) - corners[i] = isCornerAtSameHeight(cornerSectors[i], (SectorEdge)i); + corners[i] = IsCornerAtSameHeight(cornerSectors[i], (SectorEdge)i); } } From d7f6ff93875c8302f1d61d4e6f9e7b1a45ab6b1b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:09:30 +0000 Subject: [PATCH 8/9] Make corner helper inputs explicit Agent-Logs-Url: https://github.com/TombEngine/Tomb-Editor/sessions/c0329567-576d-4e94-be74-c2b46e121f4c Co-authored-by: Nickelony <20436882+Nickelony@users.noreply.github.com> --- TombEditor/EditorActions.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/TombEditor/EditorActions.cs b/TombEditor/EditorActions.cs index eeb37410e..2226aca4e 100644 --- a/TombEditor/EditorActions.cs +++ b/TombEditor/EditorActions.cs @@ -201,16 +201,16 @@ void smoothEdit(RoomSectorPair pair, SectorEdge edge) { var originHeight = originSector.Sector.GetHeight(vertical, origin) + originSector.Room.Position.Y; - bool IsCornerAtSameHeight(RoomSectorPair cornerSector, SectorEdge edge) + bool IsCornerAtSameHeight(RoomSectorPair cornerSector, SectorEdge edge, SectorVerticalPart cornerVertical, int referenceHeight) { if (cornerSector.Sector == null || cornerSector.Room == null) return false; - return originHeight == cornerSector.Sector.GetHeight(vertical, edge) + cornerSector.Room.Position.Y; + return referenceHeight == cornerSector.Sector.GetHeight(cornerVertical, edge) + cornerSector.Room.Position.Y; } for (int i = 0; i < 4; i++) - corners[i] = IsCornerAtSameHeight(cornerSectors[i], (SectorEdge)i); + corners[i] = IsCornerAtSameHeight(cornerSectors[i], (SectorEdge)i, vertical, originHeight); } } From f1662892ac8303a70efc2e731baf64471d023b8f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:10:03 +0000 Subject: [PATCH 9/9] Clarify null-safe corner helper name Agent-Logs-Url: https://github.com/TombEngine/Tomb-Editor/sessions/c0329567-576d-4e94-be74-c2b46e121f4c Co-authored-by: Nickelony <20436882+Nickelony@users.noreply.github.com> --- TombEditor/EditorActions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TombEditor/EditorActions.cs b/TombEditor/EditorActions.cs index 2226aca4e..e784f078f 100644 --- a/TombEditor/EditorActions.cs +++ b/TombEditor/EditorActions.cs @@ -201,7 +201,7 @@ void smoothEdit(RoomSectorPair pair, SectorEdge edge) { var originHeight = originSector.Sector.GetHeight(vertical, origin) + originSector.Room.Position.Y; - bool IsCornerAtSameHeight(RoomSectorPair cornerSector, SectorEdge edge, SectorVerticalPart cornerVertical, int referenceHeight) + bool IsCornerValidAndAtSameHeight(RoomSectorPair cornerSector, SectorEdge edge, SectorVerticalPart cornerVertical, int referenceHeight) { if (cornerSector.Sector == null || cornerSector.Room == null) return false; @@ -210,7 +210,7 @@ bool IsCornerAtSameHeight(RoomSectorPair cornerSector, SectorEdge edge, SectorVe } for (int i = 0; i < 4; i++) - corners[i] = IsCornerAtSameHeight(cornerSectors[i], (SectorEdge)i, vertical, originHeight); + corners[i] = IsCornerValidAndAtSameHeight(cornerSectors[i], (SectorEdge)i, vertical, originHeight); } }