diff --git a/EXE_GeomDB.cpp b/EXE_GeomDB.cpp index 0cf68ea..139e5f4 100644 --- a/EXE_GeomDB.cpp +++ b/EXE_GeomDB.cpp @@ -439,14 +439,13 @@ ExeSaveObjToFile( int nId, const string& sFilePath, int nFlag) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) - // se ero in CAM, esco - int nCurrMachGroup = ExeGetCurrMachGroup() ; + // se ero in CAM, esco dopo averne salvato lo stato + CamStatus CurrCamStatus ; ExeResetCurrMachGroup() ; // copio l'oggetto nel file bool bOk = pGeomDB->Save( nId, sFilePath, nFlag) ; - // ripristino eventuale precedente CAM - if ( nCurrMachGroup != GDB_ID_NULL) - ExeSetCurrMachGroup( nCurrMachGroup) ; + // eventuale ripristino precedente CAM + CurrCamStatus.Restore() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { string sLua = "EgtSaveObjToFile('" + StringToLuaString( sFilePath) + "'," + diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 1e47122..ead5caf 100644 Binary files a/EgtExecutor.rc and b/EgtExecutor.rc differ diff --git a/PhotoObj.cpp b/PhotoObj.cpp index d017d33..d5ab93d 100644 --- a/PhotoObj.cpp +++ b/PhotoObj.cpp @@ -14,6 +14,7 @@ //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "PhotoObj.h" +#include "GseContext.h" #include "/EgtDev/Include/EXeExecutor.h" #include "/EgtDev/Include/EXeConst.h" #include "/EgtDev/Include/EGrScene.h" @@ -135,24 +136,45 @@ PhotoObj::Load( const STRVECTOR& vString, int nBaseGdbId) return false ; if ( ! GetVal( vString[5], KEY_DIMY, m_dDimY)) return false ; - // verifico l'esistenza della texture - if ( ExeExistsTexture( m_sName)) - return true ; - // recupero nome e direttorio del progetto corrente - string sFilePath ; - ExeGetCurrFilePath( sFilePath) ; - string sFileDir = GetDirectory( sFilePath) ; - string sFileTitle = GetFileTitleEgt( sFilePath) ; - // sostituzione dell'eventuale riferimento al direttorio del progetto nella path - ReplaceString( m_sPath, SUB_PROJECT_DIR, sFileDir) ; - // sostituzione dell'eventuale riferimento al nome del progetto nella path - ReplaceString( m_sPath, SUB_PROJECT_TITLE, sFileTitle) ; - // carico la texture dalla path indicata - if ( ExistsFile( m_sPath)) - return ExeLoadTexture( m_sName, m_sPath, 0, m_dDimX, m_dDimY, TXR_CLAMP) ; - // provo dalla path del progetto corrente - string sName = GetFileName( m_sPath) ; - return ExeLoadTexture( m_sName, sFileDir + "\\" + sName, 0, m_dDimX, m_dDimY, TXR_CLAMP) ; + // se caricata scena, carico la texture + if ( GetCurrScene() != nullptr) { + // verifico l'esistenza della texture + if ( ExeExistsTexture( m_sName)) + return true ; + // recupero nome e direttorio del progetto corrente + string sFilePath ; + ExeGetCurrFilePath( sFilePath) ; + string sFileDir = GetDirectory( sFilePath) ; + string sFileTitle = GetFileTitleEgt( sFilePath) ; + // sostituzione dell'eventuale riferimento al direttorio del progetto nella path + ReplaceString( m_sPath, SUB_PROJECT_DIR, sFileDir) ; + // sostituzione dell'eventuale riferimento al nome del progetto nella path + ReplaceString( m_sPath, SUB_PROJECT_TITLE, sFileTitle) ; + // carico la texture dalla path indicata + if ( ExistsFile( m_sPath)) + return ExeLoadTexture( m_sName, m_sPath, 0, m_dDimX, m_dDimY, TXR_CLAMP) ; + // provo dalla path del progetto corrente + string sName = GetFileName( m_sPath) ; + return ExeLoadTexture( m_sName, sFileDir + "\\" + sName, 0, m_dDimX, m_dDimY, TXR_CLAMP) ; + } + // altrimenti ne verifico solo l'esistenza + else { + // recupero nome e direttorio del progetto corrente + string sFilePath ; + ExeGetCurrFilePath( sFilePath) ; + string sFileDir = GetDirectory( sFilePath) ; + string sFileTitle = GetFileTitleEgt( sFilePath) ; + // sostituzione dell'eventuale riferimento al direttorio del progetto nella path + ReplaceString( m_sPath, SUB_PROJECT_DIR, sFileDir) ; + // sostituzione dell'eventuale riferimento al nome del progetto nella path + ReplaceString( m_sPath, SUB_PROJECT_TITLE, sFileTitle) ; + // carico la texture dalla path indicata + if ( ExistsFile( m_sPath)) + return true ; + // provo dalla path del progetto corrente + string sName = GetFileName( m_sPath) ; + return ExistsFile( sFileDir + "\\" + sName) ; + } } //----------------------------------------------------------------------------