EG/pandatool/src/ptloader/config_ptloader.cxx

117 lines
3.7 KiB
C++

/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file config_ptloader.cxx
* @author drose
* @date 2001-04-26
*/
#include "config_ptloader.h"
// This needs to be included first to work around a bug in OSX 10.4.
#if defined(HAVE_FCOLLADA) && defined(IS_OSX)
#include "daeToEggConverter.h"
#endif
#include "loaderFileTypePandatool.h"
#include "config_flt.h"
#include "fltToEggConverter.h"
#include "config_lwo.h"
#include "lwoToEggConverter.h"
#include "dxfToEggConverter.h"
#include "vrmlToEggConverter.h"
//#include "objToEggConverter.h"
//#include "eggToObjConverter.h"
#include "config_xfile.h"
#include "xFileToEggConverter.h"
// Windows freaks out if this input is placed earlier.
#if defined(HAVE_FCOLLADA) && !defined(IS_OSX)
#include "daeToEggConverter.h"
#endif
#include "dconfig.h"
#include "loaderFileTypeRegistry.h"
#include "eggData.h"
ConfigureDef(config_ptloader);
NotifyCategoryDef(ptloader, "");
ConfigureFn(config_ptloader) {
init_libptloader();
}
ConfigVariableEnum<DistanceUnit> ptloader_units
("ptloader-units", DU_invalid,
PRC_DESC("Specifies the preferred units into which models will be converted "
"when using libptloader to automatically convert files to Panda "
"at load time, via e.g. \"pview myMayaFile.mb\"."));
ConfigVariableBool ptloader_load_node
("ptloader-load-node", true,
PRC_DESC("Specify true to allow libptloader to invoke the more efficient "
"but possibly-experimental code to load model files directly into "
"PandaNode when possible. Specify false to force the loading to "
"always go through the egg library, which is more likely to be "
"reliable."));
/**
* Initializes the library. This must be called at least once before any of
* the functions or classes in this library can be used. Normally it will be
* called by the static initializers and need not be called explicitly, but
* special cases exist.
*/
void
init_libptloader() {
static bool initialized = false;
if (initialized) {
return;
}
initialized = true;
LoaderFileTypePandatool::init_type();
LoaderFileTypeRegistry *reg = LoaderFileTypeRegistry::get_global_ptr();
init_liblwo();
init_libflt();
FltToEggConverter *flt = new FltToEggConverter;
reg->register_type(new LoaderFileTypePandatool(flt));
LwoToEggConverter *lwo = new LwoToEggConverter;
reg->register_type(new LoaderFileTypePandatool(lwo));
DXFToEggConverter *dxf = new DXFToEggConverter;
reg->register_type(new LoaderFileTypePandatool(dxf));
VRMLToEggConverter *vrml = new VRMLToEggConverter;
reg->register_type(new LoaderFileTypePandatool(vrml));
init_libxfile();
XFileToEggConverter *xfile = new XFileToEggConverter;
reg->register_type(new LoaderFileTypePandatool(xfile));
//ObjToEggConverter *obj_egg = new ObjToEggConverter;
//EggToObjConverter *egg_obj = new EggToObjConverter;
//reg->register_type(new LoaderFileTypePandatool(obj_egg, egg_obj));
// #ifdef HAVE_FCOLLADA DAEToEggConverter *dae = new DAEToEggConverter;
// reg->register_type(new LoaderFileTypePandatool(dae)); #endif
#ifdef HAVE_MAYA
// Register the Maya converter as a deferred type. We don't compile it in
// directly, because it's big and bulky; we don't need to force people to
// load up libmayaloader (and, along with it, all of the Maya API libraries)
// until they actually try to load a Maya file.
reg->register_deferred_type("mb", "mayaloader");
reg->register_deferred_type("ma", "mayaloader");
#endif
}