panda3d/panda/src/grutil/config_grutil.cxx
2010-07-26 14:09:12 +00:00

119 lines
3.7 KiB
C++

// Filename: config_grutil.cxx
// Created by: drose (24May00)
//
////////////////////////////////////////////////////////////////////
//
// 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."
//
////////////////////////////////////////////////////////////////////
#include "config_grutil.h"
#include "frameRateMeter.h"
#include "sceneGraphAnalyzerMeter.h"
#include "meshDrawer.h"
#include "meshDrawer2D.h"
#include "geoMipTerrain.h"
#include "ffmpegTexture.h"
#include "movieTexture.h"
#include "pandaSystem.h"
#include "texturePool.h"
#include "nodeVertexTransform.h"
#include "rigidBodyCombiner.h"
#include "pipeOcclusionCullTraverser.h"
#include "dconfig.h"
Configure(config_grutil);
NotifyCategoryDef(grutil, "");
ConfigureFn(config_grutil) {
init_libgrutil();
}
ConfigVariableDouble frame_rate_meter_update_interval
("frame-rate-meter-update-interval", 1.5);
ConfigVariableString frame_rate_meter_text_pattern
("frame-rate-meter-text-pattern", "%0.1f fps");
ConfigVariableInt frame_rate_meter_layer_sort
("frame-rate-meter-layer-sort", 1000);
ConfigVariableDouble frame_rate_meter_scale
("frame-rate-meter-scale", 0.05);
ConfigVariableDouble frame_rate_meter_side_margins
("frame-rate-meter-side-margins", 0.5);
ConfigVariableDouble scene_graph_analyzer_meter_update_interval
("scene-graph-analyzer-meter-update-interval", 2.0);
ConfigVariableInt scene_graph_analyzer_meter_layer_sort
("scene-graph-analyzer-meter-layer-sort", 1000);
ConfigVariableDouble scene_graph_analyzer_meter_scale
("scene-graph-analyzer-meter-scale", 0.05);
ConfigVariableDouble scene_graph_analyzer_meter_side_margins
("scene-graph-analyzer-meter-side-margins", 0.5);
////////////////////////////////////////////////////////////////////
// Function: init_libgrutil
// Description: 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_libgrutil() {
ConfigVariableBool use_movietexture
("use-movietexture", false,
PRC_DESC("Panda contains a new animated texture class, MovieTexture. "
"Because it is not yet fully tested, the texture loader "
"will not use it unless this variable is set. Eventually, "
"this config variable will go away and the new code will "
"be enabled all the time."));
static bool initialized = false;
if (initialized) {
return;
}
initialized = true;
FrameRateMeter::init_type();
MeshDrawer::init_type();
MeshDrawer2D::init_type();
GeoMipTerrain::init_type();
NodeVertexTransform::init_type();
RigidBodyCombiner::init_type();
PipeOcclusionCullTraverser::init_type();
SceneGraphAnalyzerMeter::init_type();
#ifdef HAVE_AUDIO
MovieTexture::init_type();
MovieTexture::register_with_read_factory();
#endif // HAVE_AUDIO
#ifdef HAVE_FFMPEG
av_register_all();
FFMpegTexture::init_type();
FFMpegTexture::register_with_read_factory();
#endif
#if defined(HAVE_FFMPEG)
TexturePool *ts = TexturePool::get_global_ptr();
if (use_movietexture) {
ts->register_texture_type(MovieTexture::make_texture, "avi mov mpg mpeg mp4 wmv asf flv nut ogm mkv");
} else {
ts->register_texture_type(FFMpegTexture::make_texture, "avi mov mpg mpeg mp4 wmv asf flv nut ogm mkv");
}
#endif
}