32 extern int eggyyparse();
54 return vfs->
exists(egg_filename);
69 if (display_name.empty()) {
70 display_name = filename;
76 if (vfile ==
nullptr) {
77 egg_cat.error() <<
"Could not find " << display_name <<
"\n";
82 istream *file = vfile->open_read_file(
true);
83 if (file ==
nullptr) {
84 egg_cat.error() <<
"Unable to open " << display_name <<
"\n";
89 <<
"Reading " << display_name <<
"\n";
91 bool read_ok =
read(*file);
92 vfile->close_read_file(file);
122 egg_cleanup_parser();
123 error_count = egg_error_count();
131 return (error_count == 0);
217 if (file ==
nullptr) {
218 egg_cat.error() <<
"Unable to open " << filename <<
" for writing.\n";
234 if (egg_precision > 0) {
236 std::streamsize orig_precision = out.precision();
237 out.precision((std::streamsize)egg_precision);
239 out.precision(orig_precision);
254 if (new_coordsys == CS_default) {
255 new_coordsys = get_default_coordinate_system();
257 if (new_coordsys != _coordsys &&
258 (_coordsys != CS_default && _coordsys != CS_invalid)) {
260 LMatrix4d mat = LMatrix4d::convert_mat(_coordsys, new_coordsys);
261 LMatrix4d inv = LMatrix4d::convert_mat(new_coordsys, _coordsys);
263 r_transform(mat, inv, new_coordsys);
264 r_transform_vertices(mat);
271 _coordsys = new_coordsys;
278 write(ostream &out,
int indent_level)
const {
280 ecs->write(out, indent_level);
292 CoordinateSystem old_coordsys = _coordsys;
293 _coordsys = find_coordsys_entry();
295 if (_coordsys == CS_default) {
298 _coordsys = CS_yup_right;
300 }
else if (_coordsys == CS_invalid) {
302 <<
"Contradictory <CoordinateSystem> entries encountered.\n";
303 _coordsys = CS_yup_right;
306 r_mark_coordsys(_coordsys);
308 if (old_coordsys != CS_default) {
359 iterator ci = begin();
360 while (ci != end() && (*ci)->is_of_type(EggComment::get_class_type())) {
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void sort_by_mref()
Sorts all the materials into alphabetical order by MRef name.
void sort_by_tref()
Sorts all the textures into alphabetical order by TRef name.
int collapse_equivalent_textures()
Removes duplicate references to the same texture image with the same properties.
static bool resolve_egg_filename(Filename &egg_filename, const DSearchPath &searchpath=DSearchPath())
Looks for the indicated filename, first along the indicated searchpath, and then along the model_path...
int collapse_equivalent_textures(int eq, EggGroupNode *node)
Walks through the collection and collapses together any separate textures that are equivalent accordi...
void uniquify_trefs()
Guarantees that each texture in the collection has a unique TRef name.
void uniquify_mrefs()
Guarantees that each material in the collection has a unique MRef name.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
The <CoordinateSystem> entry at the top of an egg file.
bool write_egg(Filename filename)
The main interface for writing complete egg files.
This is a collection of materials by MRef name.
A hierarchy of directories and files that appears to be one continuous file system, even though the files may originate from several different sources that may not be related to the actual OS's file system.
void remove_unused_textures(EggNode *node)
Removes any textures from the collection that aren't referenced by any primitives in the indicated eg...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void set_text()
Indicates that the filename represents a text file.
get_egg_filename
Returns the directory in which the egg file is considered to reside.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
set_egg_filename
Sets the filename–especially the directory part–in which the egg file is considered to reside...
This is a collection of textures by TRef name.
int collapse_equivalent_materials(int eq, EggGroupNode *node)
Walks through the collection and collapses together any separate materials that are equivalent accord...
bool resolve_filename(Filename &filename, const DSearchPath &searchpath, const std::string &default_extension=std::string()) const
Searches the given search path for the filename.
set_egg_timestamp
Sets the timestamp of the egg file on disk, at the time it was opened for reading.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void append_directory(const Filename &directory)
Adds a new directory to the end of the search list.
This is the primary interface into all the egg data, and the root of the egg file structure...
int extract_textures(EggGroupNode *node)
Walks the egg hierarchy beginning at the indicated node, and removes any EggTextures encountered in t...
The abstract base class for a file or directory within the VirtualFileSystem.
EggGroupNode::iterator insert_materials(EggGroupNode *node)
Adds a series of EggMaterial nodes to the beginning of the indicated node to reflect each of the mate...
bool is_fully_qualified() const
Returns true if the filename is fully qualified, e.g.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
bool read(Filename filename, std::string display_name=std::string())
Opens the indicated filename and reads the egg data contents from it.
virtual void write(std::ostream &out, int indent_level) const
Writes the group and all of its children to the indicated output stream in Egg format.
bool exists(const Filename &filename) const
Convenience function; returns true if the named file exists.
This is a specialization of EggNameUniquifier to generate unique names for textures, materials, and vertex pools prior to writing out an egg file.
EggGroupNode::iterator insert_textures(EggGroupNode *node)
Adds a series of EggTexture nodes to the beginning of the indicated node to reflect each of the textu...
The name of a file, such as a texture file or an Egg file.
An instance of this class is written to the front of a Bam or Txo file to make the file a cached inst...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Similar to MutexHolder, but for a light mutex.
bool load_externals(const DSearchPath &searchpath=DSearchPath())
Loads up all the egg files referenced by <File> entries within the egg structure, and inserts their c...
void steal_children(EggGroupNode &other)
Moves all the children from the other node to this one.
static VirtualFileSystem * get_global_ptr()
Returns the default global VirtualFileSystem.
int extract_materials(EggGroupNode *node)
Walks the egg hierarchy beginning at the indicated node, and removes any EggMaterials encountered in ...
PointerTo< VirtualFile > get_file(const Filename &filename, bool status_only=false) const
Looks up the file by the indicated name in the file system.
void uniquify(EggNode *node)
Begins the traversal from the indicated node.
int find_used_textures(EggNode *node)
Walks the egg hierarchy beginning at the indicated node, looking for textures that are referenced by ...
void remove_unused_materials(EggNode *node)
Removes any materials from the collection that aren't referenced by any primitives in the indicated e...
static void close_write_file(std::ostream *stream)
Closes a file opened by a previous call to open_write_file().
std::ostream * open_write_file(const Filename &filename, bool auto_wrap, bool truncate)
Convenience function; returns a newly allocated ostream if the file exists and can be written...
set_coordinate_system
Changes the coordinate system of the EggData.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
get_auto_resolve_externals
Indicates whether the EggData object will automatically resolve any external references when read() i...
This class stores a list of directories that can be searched, in order, to locate a particular file...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
get_coordinate_system
Returns the coordinate system in which the egg file is defined.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
bool delete_file(const Filename &filename)
Attempts to delete the indicated file or directory.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
TypeHandle is the identifier used to differentiate C++ class types.
bool has_absolute_pathnames() const
Returns true if any nodes at this level and below include a reference to a file via an absolute pathn...
int find_used_materials(EggNode *node)
Walks the egg hierarchy beginning at the indicated node, looking for materials that are referenced by...
int collapse_equivalent_materials()
Removes duplicate references to the same material with the same properties.
void resolve_filenames(const DSearchPath &searchpath)
Walks the tree and attempts to resolve any filenames encountered.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void merge(EggData &other)
Appends the other egg structure to the end of this one.