Panda3D
somethingToEggConverter.h
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 somethingToEggConverter.h
10  * @author drose
11  * @date 2001-04-17
12  */
13 
14 #ifndef SOMETHINGTOEGGCONVERTER_H
15 #define SOMETHINGTOEGGCONVERTER_H
16 
17 #include "pandatoolbase.h"
18 
19 #include "filename.h"
20 #include "config_putil.h" // for get_model_path()
21 #include "animationConvert.h"
22 #include "pathReplace.h"
23 #include "pointerTo.h"
24 #include "distanceUnit.h"
25 #include "pandaNode.h"
26 
27 class EggData;
28 class EggGroupNode;
29 class LoaderOptions;
30 
31 /**
32  * This is a base class for a family of converter classes that manage a
33  * conversion from some file type to egg format.
34  *
35  * Classes of this type can be used to implement xxx2egg converter programs,
36  * as well as LoaderFileTypeXXX run-time loaders.
37  */
39 public:
42  virtual ~SomethingToEggConverter();
43 
44  virtual SomethingToEggConverter *make_copy()=0;
45 
46  INLINE void clear_error();
47  INLINE bool had_error() const;
48 
49  INLINE void set_path_replace(PathReplace *path_replace);
50  INLINE PathReplace *get_path_replace();
51  INLINE const PathReplace *get_path_replace() const;
52 
53  // These methods dealing with animation and frame rate are only relevant to
54  // converter types that understand animation.
55  INLINE void set_animation_convert(AnimationConvert animation_convert);
57 
58  INLINE void set_character_name(const std::string &character_name);
59  INLINE const std::string &get_character_name() const;
60 
61  INLINE void set_start_frame(double start_frame);
62  INLINE bool has_start_frame() const;
63  INLINE double get_start_frame() const;
64  INLINE void clear_start_frame();
65 
66  INLINE void set_end_frame(double end_frame);
67  INLINE bool has_end_frame() const;
68  INLINE double get_end_frame() const;
69  INLINE void clear_end_frame();
70 
71  INLINE void set_frame_inc(double frame_inc);
72  INLINE bool has_frame_inc() const;
73  INLINE double get_frame_inc() const;
74  INLINE void clear_frame_inc();
75 
76  INLINE void set_neutral_frame(double neutral_frame);
77  INLINE bool has_neutral_frame() const;
78  INLINE double get_neutral_frame() const;
79  INLINE void clear_neutral_frame();
80 
81  INLINE void set_input_frame_rate(double input_frame_rate);
82  INLINE bool has_input_frame_rate() const;
83  INLINE double get_input_frame_rate() const;
84  INLINE void clear_input_frame_rate();
85 
86  INLINE void set_output_frame_rate(double output_frame_rate);
87  INLINE bool has_output_frame_rate() const;
88  INLINE double get_output_frame_rate() const;
89  INLINE void clear_output_frame_rate();
90 
91  INLINE static double get_default_frame_rate();
92 
93  INLINE void set_merge_externals(bool merge_externals);
94  INLINE bool get_merge_externals() const;
95 
96  void set_egg_data(EggData *egg_data);
97  INLINE void clear_egg_data();
98  INLINE EggData *get_egg_data();
99 
100  virtual std::string get_name() const=0;
101  virtual std::string get_extension() const=0;
102  virtual std::string get_additional_extensions() const;
103  virtual bool supports_compressed() const;
104  virtual bool supports_convert_to_node(const LoaderOptions &options) const;
105 
106  virtual bool convert_file(const Filename &filename)=0;
107  virtual PT(PandaNode) convert_to_node(const LoaderOptions &options, const Filename &filename);
108  virtual DistanceUnit get_input_units();
109 
110  bool handle_external_reference(EggGroupNode *egg_parent,
111  const Filename &ref_filename);
112 
113  INLINE Filename convert_model_path(const Filename &orig_filename);
114 
115  // Set this true to treat errors as warnings and generate output anyway.
116  bool _allow_errors;
117 
118 protected:
119  PT(PathReplace) _path_replace;
120 
121  AnimationConvert _animation_convert;
122  std::string _character_name;
123  double _start_frame;
124  double _end_frame;
125  double _frame_inc;
126  double _neutral_frame;
127  double _input_frame_rate; // frames per second
128  double _output_frame_rate; // frames per second
129  enum ControlFlags {
130  CF_start_frame = 0x0001,
131  CF_end_frame = 0x0002,
132  CF_frame_inc = 0x0004,
133  CF_neutral_frame = 0x0008,
134  CF_input_frame_rate = 0x0010,
135  CF_output_frame_rate = 0x0020,
136  };
137  int _control_flags;
138 
139  bool _merge_externals;
140 
141  PT(EggData) _egg_data;
142 
143  bool _error;
144 };
145 
146 #include "somethingToEggConverter.I"
147 
148 #endif
SomethingToEggConverter::has_output_frame_rate
bool has_output_frame_rate() const
Returns true if the frame rate has been explicitly specified via set_output_frame_rate(),...
Definition: somethingToEggConverter.I:316
SomethingToEggConverter::get_default_frame_rate
static double get_default_frame_rate()
Returns the default frame rate if nothing is specified for input_frame_rate or output_frame_rate,...
Definition: somethingToEggConverter.I:345
SomethingToEggConverter::clear_start_frame
void clear_start_frame()
Removes the value previously set by set_start_frame().
Definition: somethingToEggConverter.I:133
SomethingToEggConverter::had_error
bool had_error() const
Returns true if an error was detected during the conversion process (unless _allow_errors is true),...
Definition: somethingToEggConverter.I:28
SomethingToEggConverter::clear_frame_inc
void clear_frame_inc()
Removes the value previously set by set_frame_inc().
Definition: somethingToEggConverter.I:216
SomethingToEggConverter::get_end_frame
double get_end_frame() const
Returns the value set by a previous call to set_end_frame().
Definition: somethingToEggConverter.I:165
SomethingToEggConverter::supports_compressed
virtual bool supports_compressed() const
Returns true if this file type can transparently load compressed files (with a .pz extension),...
Definition: somethingToEggConverter.cxx:84
SomethingToEggConverter::set_frame_inc
void set_frame_inc(double frame_inc)
Specifies the increment between frames to extract.
Definition: somethingToEggConverter.I:187
pandaNode.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
config_putil.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
SomethingToEggConverter::clear_output_frame_rate
void clear_output_frame_rate()
Removes the value previously set by set_output_frame_rate().
Definition: somethingToEggConverter.I:334
SomethingToEggConverter::handle_external_reference
bool handle_external_reference(EggGroupNode *egg_parent, const Filename &ref_filename)
Handles an external reference in the source file.
Definition: somethingToEggConverter.cxx:135
SomethingToEggConverter::has_frame_inc
bool has_frame_inc() const
Returns true if the frame increment has been explicitly specified via set_frame_inc(),...
Definition: somethingToEggConverter.I:198
SomethingToEggConverter::clear_input_frame_rate
void clear_input_frame_rate()
Removes the value previously set by set_input_frame_rate().
Definition: somethingToEggConverter.I:295
SomethingToEggConverter::has_neutral_frame
bool has_neutral_frame() const
Returns true if the neutral frame has been explicitly specified via set_neutral_frame(),...
Definition: somethingToEggConverter.I:236
AnimationConvert
AnimationConvert
This enumerated type lists the methods by which animation from an animation package might be represen...
Definition: animationConvert.h:23
SomethingToEggConverter::get_path_replace
PathReplace * get_path_replace()
Returns a pointer to the PathReplace object associated with this converter.
Definition: somethingToEggConverter.I:47
SomethingToEggConverter::set_character_name
void set_character_name(const std::string &character_name)
Specifies the name of the character generated.
Definition: somethingToEggConverter.I:85
SomethingToEggConverter::supports_convert_to_node
virtual bool supports_convert_to_node(const LoaderOptions &options) const
Returns true if this converter can directly convert the model type to internal Panda memory structure...
Definition: somethingToEggConverter.cxx:96
SomethingToEggConverter::set_neutral_frame
void set_neutral_frame(double neutral_frame)
Specifies the frame of animation to represent the neutral pose of the model.
Definition: somethingToEggConverter.I:226
SomethingToEggConverter::get_egg_data
EggData * get_egg_data()
Returns the EggData structure.
Definition: somethingToEggConverter.I:380
SomethingToEggConverter::set_start_frame
void set_start_frame(double start_frame)
Specifies the starting frame of the animation to convert, in the units specified by set_input_frame_r...
Definition: somethingToEggConverter.I:104
EggGroupNode
A base class for nodes in the hierarchy that are not leaf nodes.
Definition: eggGroupNode.h:46
filename.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
somethingToEggConverter.I
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
SomethingToEggConverter::has_start_frame
bool has_start_frame() const
Returns true if the starting frame has been explicitly specified via set_start_frame(),...
Definition: somethingToEggConverter.I:115
SomethingToEggConverter::set_end_frame
void set_end_frame(double end_frame)
Specifies the ending frame of the animation to convert, in the units specified by set_input_frame_rat...
Definition: somethingToEggConverter.I:145
LoaderOptions
Specifies parameters that may be passed to the loader.
Definition: loaderOptions.h:23
SomethingToEggConverter::has_input_frame_rate
bool has_input_frame_rate() const
Returns true if the frame rate has been explicitly specified via set_input_frame_rate(),...
Definition: somethingToEggConverter.I:277
animationConvert.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
SomethingToEggConverter::get_additional_extensions
virtual std::string get_additional_extensions() const
Returns a space-separated list of extension, in addition to the one returned by get_extension(),...
Definition: somethingToEggConverter.cxx:75
EggData
This is the primary interface into all the egg data, and the root of the egg file structure.
Definition: eggData.h:37
SomethingToEggConverter::set_path_replace
void set_path_replace(PathReplace *path_replace)
Replaces the PathReplace object (which specifies how to mangle paths from the source to the destinati...
Definition: somethingToEggConverter.I:37
SomethingToEggConverter::get_character_name
const std::string & get_character_name() const
Returns the name of the character generated.
Definition: somethingToEggConverter.I:93
SomethingToEggConverter::get_neutral_frame
double get_neutral_frame() const
Returns the value set by a previous call to set_neutral_frame().
Definition: somethingToEggConverter.I:245
SomethingToEggConverter::clear_neutral_frame
void clear_neutral_frame()
Removes the value previously set by set_neutral_frame().
Definition: somethingToEggConverter.I:254
SomethingToEggConverter
This is a base class for a family of converter classes that manage a conversion from some file type t...
Definition: somethingToEggConverter.h:38
SomethingToEggConverter::clear_egg_data
void clear_egg_data()
Sets the EggData to NULL and makes the converter invalid.
Definition: somethingToEggConverter.I:372
SomethingToEggConverter::get_input_frame_rate
double get_input_frame_rate() const
Returns the value set by a previous call to set_input_frame_rate().
Definition: somethingToEggConverter.I:286
SomethingToEggConverter::get_animation_convert
AnimationConvert get_animation_convert() const
Returns how source animation will be converted into egg structures.
Definition: somethingToEggConverter.I:75
distanceUnit.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
SomethingToEggConverter::clear_error
void clear_error()
Resets the error flag to the no-error state.
Definition: somethingToEggConverter.I:19
PathReplace
This encapsulates the user's command-line request to replace existing, incorrect pathnames to models ...
Definition: pathReplace.h:36
SomethingToEggConverter::set_animation_convert
void set_animation_convert(AnimationConvert animation_convert)
Specifies how source animation will be converted into egg structures.
Definition: somethingToEggConverter.I:67
SomethingToEggConverter::has_end_frame
bool has_end_frame() const
Returns true if the ending frame has been explicitly specified via set_end_frame(),...
Definition: somethingToEggConverter.I:156
SomethingToEggConverter::set_egg_data
void set_egg_data(EggData *egg_data)
Sets the egg data that will be filled in when convert_file() is called.
Definition: somethingToEggConverter.cxx:66
SomethingToEggConverter::set_output_frame_rate
void set_output_frame_rate(double output_frame_rate)
Specifies the number of frames per second that the resulting animation should be played at.
Definition: somethingToEggConverter.I:306
SomethingToEggConverter::get_merge_externals
bool get_merge_externals() const
Returns the current state of the merge_externals flag.
Definition: somethingToEggConverter.I:364
SomethingToEggConverter::set_merge_externals
void set_merge_externals(bool merge_externals)
Sets the merge_externals flag.
Definition: somethingToEggConverter.I:355
SomethingToEggConverter::get_frame_inc
double get_frame_inc() const
Returns the value set by a previous call to set_frame_inc().
Definition: somethingToEggConverter.I:207
DistanceUnit
DistanceUnit
This enumerated type lists all the kinds of units we're likely to come across in model conversion pro...
Definition: distanceUnit.h:23
SomethingToEggConverter::get_output_frame_rate
double get_output_frame_rate() const
Returns the value set by a previous call to set_output_frame_rate().
Definition: somethingToEggConverter.I:325
pandatoolbase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pathReplace.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
SomethingToEggConverter::set_input_frame_rate
void set_input_frame_rate(double input_frame_rate)
Specifies the number of frames per second that is represented by the "frame" unit in the animation pa...
Definition: somethingToEggConverter.I:267
SomethingToEggConverter::get_start_frame
double get_start_frame() const
Returns the value set by a previous call to set_start_frame().
Definition: somethingToEggConverter.I:124
SomethingToEggConverter::convert_model_path
Filename convert_model_path(const Filename &orig_filename)
Converts the indicated model filename to a relative or absolute or whatever filename,...
Definition: somethingToEggConverter.I:389
PandaNode
A basic node of the scene graph or data graph.
Definition: pandaNode.h:64
pointerTo.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Filename
The name of a file, such as a texture file or an Egg file.
Definition: filename.h:39
SomethingToEggConverter::clear_end_frame
void clear_end_frame()
Removes the value previously set by set_end_frame().
Definition: somethingToEggConverter.I:174
SomethingToEggConverter::get_input_units
virtual DistanceUnit get_input_units()
This may be called after convert_file() has been called and returned true, indicating a successful co...
Definition: somethingToEggConverter.cxx:107