int CLuaEngineDefs::EngineLoadDFF ( lua_State* luaVM ) { SString strFile = ""; CScriptArgReader argStream ( luaVM ); // Grab the DFF filename or data (model ID ignored after 1.3.1) argStream.ReadString ( strFile ); if ( !argStream.HasErrors ( ) ) { // Grab our virtual machine and grab our resource from that. CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine ( luaVM ); if ( pLuaMain ) { // Get this resource CResource* pResource = pLuaMain->GetResource (); if ( pResource ) { bool bIsRawData = CClientDFF::IsDFFData( strFile ); SString strPath; // Is this a legal filepath? if ( bIsRawData || CResourceManager::ParseResourcePathInput( strFile, pResource, &strPath ) ) { // Grab the resource root entity CClientEntity* pRoot = pResource->GetResourceDFFRoot (); // Create a DFF element CClientDFF* pDFF = new CClientDFF ( m_pManager, INVALID_ELEMENT_ID ); // Try to load the DFF file if ( pDFF->LoadDFF ( bIsRawData ? strFile : strPath, bIsRawData ) ) { // Success loading the file. Set parent to DFF root pDFF->SetParent ( pRoot ); // Return the DFF lua_pushelement ( luaVM, pDFF ); return 1; } else { // Delete it again delete pDFF; argStream.SetCustomError( bIsRawData ? "raw data" : strFile, "Error loading DFF" ); } } else argStream.SetCustomError( bIsRawData ? "raw data" : strFile, "Bad file path" ); } } } if ( argStream.HasErrors ( ) ) m_pScriptDebugging->LogCustom ( luaVM, argStream.GetFullErrorMessage() ); // We failed lua_pushboolean ( luaVM, false ); return 1; }