mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
ptloader-units
This commit is contained in:
parent
a06e9f2e01
commit
d9b6585a78
@ -23,6 +23,8 @@
|
|||||||
#include "config_util.h"
|
#include "config_util.h"
|
||||||
#include "textNode.h"
|
#include "textNode.h"
|
||||||
#include "multiplexStream.h"
|
#include "multiplexStream.h"
|
||||||
|
#include "distanceUnit.h"
|
||||||
|
#include "configVariableEnum.h"
|
||||||
|
|
||||||
// We must define this to prevent Maya from doubly-declaring its
|
// We must define this to prevent Maya from doubly-declaring its
|
||||||
// MApiVersion string in this file as well as in libmayaegg.
|
// 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
|
// Now the converter has filled up our egg structure with data, so
|
||||||
// convert this egg data to Panda data for immediate viewing.
|
// 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);
|
egg_data->set_coordinate_system(CS_default);
|
||||||
PT(PandaNode) result = load_egg_data(egg_data);
|
PT(PandaNode) result = load_egg_data(egg_data);
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "distanceUnit.h"
|
#include "distanceUnit.h"
|
||||||
|
#include "config_pandatoolbase.h"
|
||||||
#include "string_utils.h"
|
#include "string_utils.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
|
||||||
@ -114,6 +114,22 @@ operator << (ostream &out, DistanceUnit unit) {
|
|||||||
return out << format_abbrev_unit(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
|
// Function: string_distance_unit
|
||||||
// Description: Converts from a string, as might be input by the
|
// 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);
|
string format_long_unit(DistanceUnit unit);
|
||||||
|
|
||||||
ostream &operator << (ostream &out, DistanceUnit unit);
|
ostream &operator << (ostream &out, DistanceUnit unit);
|
||||||
|
istream &operator >> (istream &in, DistanceUnit &unit);
|
||||||
DistanceUnit string_distance_unit(const string &str);
|
DistanceUnit string_distance_unit(const string &str);
|
||||||
|
|
||||||
double convert_units(DistanceUnit from, DistanceUnit to);
|
double convert_units(DistanceUnit from, DistanceUnit to);
|
||||||
|
@ -39,7 +39,11 @@ ConfigureFn(config_ptloader) {
|
|||||||
init_libptloader();
|
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
|
// Function: init_libptloader
|
||||||
@ -57,15 +61,6 @@ init_libptloader() {
|
|||||||
}
|
}
|
||||||
initialized = true;
|
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();
|
LoaderFileTypePandatool::init_type();
|
||||||
|
|
||||||
LoaderFileTypeRegistry *reg = LoaderFileTypeRegistry::get_global_ptr();
|
LoaderFileTypeRegistry *reg = LoaderFileTypeRegistry::get_global_ptr();
|
||||||
|
@ -23,11 +23,12 @@
|
|||||||
|
|
||||||
#include "dconfig.h"
|
#include "dconfig.h"
|
||||||
#include "distanceUnit.h"
|
#include "distanceUnit.h"
|
||||||
|
#include "configVariableEnum.h"
|
||||||
|
|
||||||
ConfigureDecl(config_ptloader, EXPCL_PTLOADER, EXPTP_PTLOADER);
|
ConfigureDecl(config_ptloader, EXPCL_PTLOADER, EXPTP_PTLOADER);
|
||||||
NotifyCategoryDecl(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();
|
extern EXPCL_PTLOADER void init_libptloader();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user