Panda3D
fltToEgg.cxx
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file fltToEgg.cxx
10  * @author drose
11  * @date 2001-04-17
12  */
13 
14 #include "fltToEgg.h"
15 
16 #include "fltToEggConverter.h"
17 #include "config_flt.h"
18 
19 /**
20  *
21  */
22 FltToEgg::
23 FltToEgg() :
24  SomethingToEgg("MultiGen", ".flt")
25 {
26  add_path_replace_options();
27  add_path_store_options();
28  add_units_options();
29  add_normals_options();
30  add_transform_options();
31  add_merge_externals_options();
32 
33  set_program_brief("convert a MultiGen .flt file to .egg");
34  set_program_description
35  ("This program converts MultiGen OpenFlight (.flt) files to egg. Most "
36  "features of MultiGen that are also recognized by egg are supported.");
37 
38  redescribe_option
39  ("cs",
40  "Specify the coordinate system of the input " + _format_name +
41  " file. Normally, this is z-up.");
42 
43  // Does anyone really care about this option? It's mainly useful for
44  // debugging the flt2egg logic.
45  /*
46  add_option
47  ("C", "", 0,
48  "Compose node transforms into a single matrix before writing them to "
49  "the egg file, instead of writing them as individual scale, rotate, and "
50  "translate operations.",
51  &FltToEgg::dispatch_none, &_compose_transforms);
52  */
53  _compose_transforms = false;
54 
55  _coordinate_system = CS_zup_right;
56 }
57 
58 /**
59  *
60  */
61 void FltToEgg::
62 run() {
63  _data->set_coordinate_system(_coordinate_system);
64 
65  FltToEggConverter converter;
66  converter.set_merge_externals(_merge_externals);
67  converter.set_egg_data(_data);
68  converter._compose_transforms = _compose_transforms;
69  converter._allow_errors = _allow_errors;
70 
71  apply_parameters(converter);
72 
73 
74  PT(FltHeader) header = new FltHeader(_path_replace);
75 
76  nout << "Reading " << _input_filename << "\n";
77  FltError result = header->read_flt(_input_filename);
78  if (result != FE_ok) {
79  nout << "Unable to read: " << result << "\n";
80  exit(1);
81  }
82 
83  header->check_version();
84 
85 
86  if (!converter.convert_flt(header)) {
87  nout << "Errors in conversion.\n";
88  exit(1);
89  }
90 
91  if (_input_units == DU_invalid) {
92  _input_units = converter.get_input_units();
93  }
94 
96  nout << "\n";
97 }
98 
99 
100 int main(int argc, char *argv[]) {
101  init_libflt();
102  FltToEgg prog;
103  prog.parse_command_line(argc, argv);
104  prog.run();
105  return 0;
106 }
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual void parse_command_line(int argc, char **argv)
Dispatches on each of the options on the command line, and passes the remaining parameters to handle_...
void init_libflt()
Initializes the library.
Definition: config_flt.cxx:74
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class supervises the construction of an EggData structure from the data represented by the FltHe...
This is the first bead in the file, the top of the bead hierarchy, and the primary interface to readi...
Definition: fltHeader.h:44
virtual DistanceUnit get_input_units()
This may be called after convert_file() has been called and returned true, indicating a successful co...
void set_egg_data(EggData *egg_data)
Sets the egg data that will be filled in when convert_file() is called.
void write_egg_file()
Writes out the egg file as the normal result of the program.
Definition: eggWriter.cxx:177
bool convert_flt(const FltHeader *flt_header)
Fills up the egg_data structure according to the indicated lwo structure.
A program to read a flt file and generate an egg file.
Definition: fltToEgg.h:27
void set_merge_externals(bool merge_externals)
Sets the merge_externals flag.
This is the general base class for a file-converter program that reads some model file format and gen...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.