From 93e2ca05fbf60f95707ecae86ad77b4a491cea79 Mon Sep 17 00:00:00 2001 From: Sorata <39014375+q8X@users.noreply.github.com> Date: Tue, 11 Aug 2026 18:22:03 +0300 Subject: [PATCH] fix editor opening and saving old race maps --- [editor]/edf/edf.lua | 11 ++++------- [editor]/edf/edf_client.lua | 9 +++------ [editor]/editor_main/server/saveloadtest_server.lua | 4 ++++ 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/[editor]/edf/edf.lua b/[editor]/edf/edf.lua index 80f8c8a08..8f1ebf00e 100644 --- a/[editor]/edf/edf.lua +++ b/[editor]/edf/edf.lua @@ -858,7 +858,7 @@ function edfGetElementPosition(element) end end ---Returns an element's rotation, or its rotX/Y/Z element data, or false +--Returns an element's rotation, or its rotX/Y/Z element data, or 0,0,0 function edfGetElementRotation(element) local etype = getElementType(element) local rx, ry, rz @@ -871,15 +871,12 @@ function edfGetElementRotation(element) else rx = tonumber(getElementData(element,"rotX")) ry = tonumber(getElementData(element,"rotY")) - rz = tonumber(getElementData(element,"rotZ")) + -- old race maps use rotation="360" instead of rotX/Y/Z + rz = tonumber(getElementData(element,"rotZ")) or tonumber(getElementData(element,"rotation")) end end - if rx and ry and rz then - return rx, ry, rz - else - return false - end + return rx or 0, ry or 0, rz or 0 end --Returns an element's scale, or its scale element data, or false diff --git a/[editor]/edf/edf_client.lua b/[editor]/edf/edf_client.lua index 3d4903d85..537e457fc 100644 --- a/[editor]/edf/edf_client.lua +++ b/[editor]/edf/edf_client.lua @@ -112,15 +112,12 @@ function edfGetElementRotation(element) else rx = tonumber(getElementData(element,"rotX")) ry = tonumber(getElementData(element,"rotY")) - rz = tonumber(getElementData(element,"rotZ")) + -- old race maps use rotation="360" instead of rotX/Y/Z + rz = tonumber(getElementData(element,"rotZ")) or tonumber(getElementData(element,"rotation")) end end - if rx and ry and rz then - return rx, ry, rz - else - return false - end + return rx or 0, ry or 0, rz or 0 end --Returns an element's scale, or its scale element data, or 1 diff --git a/[editor]/editor_main/server/saveloadtest_server.lua b/[editor]/editor_main/server/saveloadtest_server.lua index 5e82cd74b..f970d00c0 100644 --- a/[editor]/editor_main/server/saveloadtest_server.lua +++ b/[editor]/editor_main/server/saveloadtest_server.lua @@ -723,6 +723,10 @@ function createElementAttributesForSaving(xmlNode, element) xmlNodeSetAttribute(elementNode, "posZ", toAttribute(round(dataValue[3], 5))) posSetX, posSetY, posSetZ = true, true, true elseif ( dataName == "rotation" ) then + -- old race maps rotation isn't a table, so we need to convert it to a table + if type(dataValue) ~= "table" then + dataValue = { 0, 0, tonumber(dataValue) or 0 } + end if dataValue[4] == "ZYX" then local skipConversion = getElementType(element) == "vehicle" if not skipConversion then