From 384709661283526a34e4833706b45a865f1a2a85 Mon Sep 17 00:00:00 2001 From: D-AIRY <admin@ds-servers.com> Date: Tue, 24 Dec 2024 14:05:45 +0300 Subject: [PATCH] Prevent spawning proxy object when target is not found --- source/terrax/terrax.cpp | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/source/terrax/terrax.cpp b/source/terrax/terrax.cpp index 56df65475..3c256fea7 100644 --- a/source/terrax/terrax.cpp +++ b/source/terrax/terrax.cpp @@ -1278,28 +1278,33 @@ int main(int argc, char **argv) } CProxyObject *pProxy = new CProxyObject(guid); - pProxy->setDstObject(guidTarget); - - for(UINT k = 0, kl = pSArr->size(); k < kl; ++k) + if(pProxy->setDstObject(guidTarget)) { - szGUID = pSArr->at(k)->getString(); - if(!szGUID || !XGUIDFromString(&guid, szGUID)) + for(UINT k = 0, kl = pSArr->size(); k < kl; ++k) { - LibReport(REPORT_MSG_LEVEL_ERROR, "Invalid model '%u' guid in proxy '%u' in '%s'. '%s'\n", k, j, szFile, szGUID ? szGUID : ""); - continue; + szGUID = pSArr->at(k)->getString(); + if(!szGUID || !XGUIDFromString(&guid, szGUID)) + { + LibReport(REPORT_MSG_LEVEL_ERROR, "Invalid model '%u' guid in proxy '%u' in '%s'. '%s'\n", k, j, szFile, szGUID ? szGUID : ""); + continue; + } + + pProxy->addSrcModel(guid); } - pProxy->addSrcModel(guid); - } - - g_apProxies.push_back(pProxy); + g_apProxies.push_back(pProxy); - //pProxy->build(); + //pProxy->build(); - add_ref(pProxy); - g_pLevelObjects.push_back(pProxy); + add_ref(pProxy); + g_pLevelObjects.push_back(pProxy); - isLoaded = true; + isLoaded = true; + } + else + { + mem_release(pProxy); + } } } } @@ -1849,7 +1854,7 @@ void XRender3D() pvData = NULL; XEnumerateObjects([&](IXEditorObject *pObj, bool isProxy, ICompoundObject *pParent){ - float3_t vPos = pObj->getPos(); + //float3_t vPos = pObj->getPos(); TODO("Add visibility check"); /*if(fViewportBorders.x > vPos.x || fViewportBorders.z < vPos.x || fViewportBorders.y < vPos.z) // not visible { -- GitLab