mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 17:35:34 -04:00
ptloader-units
This commit is contained in:
parent
a06e9f2e01
commit
d9b6585a78
@ -23,6 +23,8 @@
|
||||
#include "config_util.h"
|
||||
#include "textNode.h"
|
||||
#include "multiplexStream.h"
|
||||
#include "distanceUnit.h"
|
||||
#include "configVariableEnum.h"
|
||||
|
||||
// We must define this to prevent Maya from doubly-declaring its
|
||||
// MApiVersion string in this file as well as in libmayaegg.
|
||||
@ -182,6 +184,19 @@ convert(const NodePath &parent, bool animate) {
|
||||
|
||||
// Now the converter has filled up our egg structure with data, so
|
||||
// convert this egg data to Panda data for immediate viewing.
|
||||
DistanceUnit input_units = converter.get_input_units();
|
||||
ConfigVariableEnum<DistanceUnit> ptloader_units("ptloader-units", DU_invalid);
|
||||
if (input_units != DU_invalid && ptloader_units != DU_invalid &&
|
||||
input_units != ptloader_units) {
|
||||
// Convert the file to the units specified by the ptloader-units
|
||||
// Configrc variable.
|
||||
nout
|
||||
<< "Converting from " << format_long_unit(input_units)
|
||||
<< " to " << format_long_unit(ptloader_units) << "\n";
|
||||
double scale = convert_units(input_units, ptloader_units);
|
||||
egg_data->transform(LMatrix4d::scale_mat(scale));
|
||||
}
|
||||
|
||||
egg_data->set_coordinate_system(CS_default);
|
||||
PT(PandaNode) result = load_egg_data(egg_data);
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "distanceUnit.h"
|
||||
|
||||
#include "config_pandatoolbase.h"
|
||||
#include "string_utils.h"
|
||||
#include "notify.h"
|
||||
|
||||
@ -114,6 +114,22 @@ operator << (ostream &out, DistanceUnit unit) {
|
||||
return out << format_abbrev_unit(unit);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: DistanceUnit input operator
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
istream &
|
||||
operator >> (istream &in, DistanceUnit &unit) {
|
||||
string word;
|
||||
in >> word;
|
||||
unit = string_distance_unit(word);
|
||||
if (unit == DU_invalid) {
|
||||
pandatoolbase_cat->error()
|
||||
<< "Invalid distance unit: " << word << "\n";
|
||||
}
|
||||
return in;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: string_distance_unit
|
||||
// Description: Converts from a string, as might be input by the
|
||||
|
@ -44,6 +44,7 @@ string format_abbrev_unit(DistanceUnit unit);
|
||||
string format_long_unit(DistanceUnit unit);
|
||||
|
||||
ostream &operator << (ostream &out, DistanceUnit unit);
|
||||
istream &operator >> (istream &in, DistanceUnit &unit);
|
||||
DistanceUnit string_distance_unit(const string &str);
|
||||
|
||||
double convert_units(DistanceUnit from, DistanceUnit to);
|
||||
|
@ -39,7 +39,11 @@ ConfigureFn(config_ptloader) {
|
||||
init_libptloader();
|
||||
}
|
||||
|
||||
DistanceUnit ptloader_units = DU_invalid;
|
||||
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\"."));
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: init_libptloader
|
||||
@ -57,15 +61,6 @@ init_libptloader() {
|
||||
}
|
||||
initialized = true;
|
||||
|
||||
string units = config_ptloader.GetString("ptloader-units", "feet");
|
||||
if (!units.empty()) {
|
||||
ptloader_units = string_distance_unit(units);
|
||||
if (ptloader_units == DU_invalid) {
|
||||
ptloader_cat->warning()
|
||||
<< "Invalid ptloader-units: " << units << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
LoaderFileTypePandatool::init_type();
|
||||
|
||||
LoaderFileTypeRegistry *reg = LoaderFileTypeRegistry::get_global_ptr();
|
||||
|
@ -23,11 +23,12 @@
|
||||
|
||||
#include "dconfig.h"
|
||||
#include "distanceUnit.h"
|
||||
#include "configVariableEnum.h"
|
||||
|
||||
ConfigureDecl(config_ptloader, EXPCL_PTLOADER, EXPTP_PTLOADER);
|
||||
NotifyCategoryDecl(ptloader, EXPCL_PTLOADER, EXPTP_PTLOADER);
|
||||
|
||||
extern DistanceUnit ptloader_units;
|
||||
extern ConfigVariableEnum<DistanceUnit> ptloader_units;
|
||||
|
||||
extern EXPCL_PTLOADER void init_libptloader();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user