14 #ifndef EGGGROUPNODE_H 15 #define EGGGROUPNODE_H 66 virtual void write(std::ostream &out,
int indent_level)
const;
73 #if defined(WIN32_VC) || defined(WIN64_VC) 74 typedef const PT(
EggNode) *pointer;
75 typedef const PT(
EggNode) *const_pointer;
77 typedef Children::const_pointer pointer;
78 typedef Children::const_pointer const_pointer;
80 typedef Children::const_reference reference;
81 typedef Children::const_reference const_reference;
82 typedef Children::const_iterator iterator;
83 typedef Children::const_iterator const_iterator;
84 typedef Children::const_reverse_iterator reverse_iterator;
85 typedef Children::const_reverse_iterator const_reverse_iterator;
86 typedef Children::size_type size_type;
87 typedef Children::difference_type difference_type;
89 iterator begin()
const;
91 reverse_iterator rbegin()
const;
92 reverse_iterator rend()
const;
94 iterator insert(iterator position, PT(
EggNode) x);
95 iterator erase(iterator position);
96 iterator erase(iterator first, iterator last);
97 void replace(iterator position, PT(
EggNode) x);
101 size_type size()
const;
111 EXTENSION(PyObject *get_children()
const);
112 MAKE_PROPERTY(children, get_children);
118 EggNode *find_child(
const std::string &name)
const;
120 bool has_absolute_pathnames()
const;
121 void resolve_filenames(
const DSearchPath &searchpath);
122 void force_filenames(
const Filename &directory);
123 void reverse_vertex_ordering();
125 void recompute_vertex_normals(
double threshold, CoordinateSystem cs = CS_default);
126 void recompute_polygon_normals(CoordinateSystem cs = CS_default);
127 void strip_normals();
129 bool recompute_tangent_binormal(
const GlobPattern &uv_name);
130 bool recompute_tangent_binormal(
const vector_string &names);
131 bool recompute_tangent_binormal_auto();
133 enum TriangulateFlags {
138 T_flat_shaded = 0x010,
141 int triangulate_polygons(
int flags);
142 void mesh_triangles(
int flags);
143 void make_point_primitives();
145 int rename_nodes(vector_string strip_prefix,
bool recurse);
147 int remove_unused_vertices(
bool recurse);
148 int remove_invalid_primitives(
bool recurse);
149 void clear_connected_shading();
150 void get_connected_shading();
151 void unify_attributes(
bool use_connected_shading,
bool allow_per_primitive,
153 void apply_last_attribute(
bool recurse);
154 void apply_first_attribute(
bool recurse);
155 void post_apply_flat_attribute(
bool recurse);
156 virtual bool has_primitives()
const;
157 virtual bool joint_has_primitives()
const;
158 virtual bool has_normals()
const;
162 unsigned int max_vertices,
166 virtual void update_under(
int depth_offset);
168 virtual void r_transform(
const LMatrix4d &mat,
const LMatrix4d &inv,
169 CoordinateSystem to_cs);
170 virtual void r_transform_vertices(
const LMatrix4d &mat);
171 virtual void r_mark_coordsys(CoordinateSystem cs);
172 virtual void r_flatten_transforms();
176 CoordinateSystem find_coordsys_entry();
179 bool r_load_externals(
const DSearchPath &searchpath,
180 CoordinateSystem coordsys,
184 INLINE
static bool is_right(
const LVector2d &v1,
const LVector2d &v2);
188 const_iterator _gnc_iterator;
193 void prepare_add_child(
EggNode *node);
194 void prepare_remove_child(
EggNode *node);
197 class NVertexReference {
207 double threshold, CoordinateSystem cs);
208 void do_compute_vertex_normals(
const NVertexGroup &group);
211 class TBNVertexReference {
218 class TBNVertexValue {
220 INLINE
bool operator < (
const TBNVertexValue &other)
const;
223 std::string _uv_name;
230 void r_collect_tangent_binormal(
const GlobPattern &uv_name,
232 void do_compute_tangent_binormal(
const TBNVertexValue &value,
239 static void init_type() {
240 EggNode::init_type();
242 EggNode::get_class_type());
245 return get_class_type();
247 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
This is our own Panda specialization on the default STL map.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A base class for nodes in the hierarchy that are not leaf nodes.
This is a collection of materials by MRef name.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is a collection of textures by TRef name.
This is our own Panda specialization on the default STL list.
This is our own Panda specialization on the default STL vector.
bool is_right(const LVector2 &v1, const LVector2 &v2)
Returns true if the 2-d v1 is to the right of v2.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
The name of a file, such as a texture file or an Egg file.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
An instance of this class is written to the front of a Bam or Txo file to make the file a cached inst...
Any one-, two-, three-, or four-component vertex, possibly with attributes such as a normal.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A base class for things that may be directly added into the egg hierarchy.
This class stores a list of directories that can be searched, in order, to locate a particular file.
TypeHandle is the identifier used to differentiate C++ class types.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A collection of vertices.
This class can be used to test for string matches against standard Unix- shell filename globbing conv...