// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. ////////////// // INCLUDES // ////////////// #include "stdpch.h" // Misc. #include "nel/misc/debug.h" #include "nel/misc/displayer.h" #include "nel/misc/path.h" #include "nel/misc/log.h" #include "nel/misc/sheet_id.h" #include "nel/ligo/ligo_config.h" #include "nel/ligo/primitive.h" // Application #include "sheets_packer_init.h" #include "sheets_packer_cfg.h" #include "sheet_manager.h" #include "continent_manager_build.h" /////////// // USING // /////////// using namespace NLMISC; //using namespace NL3D; using namespace std; ///////////// // GLOBALS // ///////////// CFileDisplayer *fd = NULL; NLLIGO::CLigoConfig LigoConfig; /////////////// // FUNCTIONS // /////////////// //--------------------------------------------------- // init : // Initialize the application. // Return false if the init fails. //--------------------------------------------------- bool init() { // Add a displayer for Debug Infos. createDebug(); fd = new CFileDisplayer(getLogDirectory() + "sheets_packer.log", true, "SHEETS_PACKER.LOG"); // register ligo 'standard' class NLLIGO::Register(); DebugLog->addDisplayer (fd); InfoLog->addDisplayer (fd); WarningLog->addDisplayer (fd); ErrorLog->addDisplayer (fd); AssertLog->addDisplayer (fd); // Load the application configuration. nlinfo("Loading config file..."); AppCfg.init(ConfigFileName); // Define the root path that contains all data needed for the application. nlinfo("Adding search paths..."); for(uint i = 0; i < AppCfg.DataPath.size(); i++) CPath::addSearchPath(AppCfg.DataPath[i], true, false); // Initialize Sheet IDs. nlinfo("Init SheetId..."); CSheetId::init(true); // load packed sheets nlinfo("Loading sheets..."); IProgressCallback callback; SheetMngr.setOutputDataPath(AppCfg.OutputDataPath); SheetMngr.load (callback, true, true); // Make the lmconts.packed file if (!LigoConfig.readPrimitiveClass (AppCfg.LigoPrimitiveClass.c_str(), false)) nlwarning ("Can't load primitive class file %s", AppCfg.LigoPrimitiveClass.c_str()); NLLIGO::CPrimitiveContext::instance().CurrentLigoConfig = &LigoConfig; buildLMConts(AppCfg.WorldSheet, AppCfg.PrimitivesPath, AppCfg.OutputDataPath); // The init is a success. return true; }// init // //--------------------------------------------------- // release : // Release all the memory. //--------------------------------------------------- void release() { DebugLog->removeDisplayer ("SHEETS_PACKER.LOG"); InfoLog->removeDisplayer ("SHEETS_PACKER.LOG"); WarningLog->removeDisplayer ("SHEETS_PACKER.LOG"); ErrorLog->removeDisplayer ("SHEETS_PACKER.LOG"); AssertLog->removeDisplayer ("SHEETS_PACKER.LOG"); delete fd; fd = NULL; }// release // void outputSomeDebugInfoForPackedSheetCrash() { }