1412102525
2 2
11 libp3pgraph 4 w0Cq 12 panda3d.core 
1592
2245 10 operator < 0 4 3837 26 TransformState::operator < 0 1 1 899
// Filename: transformState.I
// Created by:  drose (25Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: TransformState::operator <
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               TransformStates, so we can store the essentially
//               different ones in a big set and throw away the rest.
////////////////////////////////////////////////////////////////////
74
inline bool TransformState::operator <(TransformState const &other) const;

2246 10 compare_to 0 4 3837 26 TransformState::compare_to 0 2 2 3 1107
////////////////////////////////////////////////////////////////////
//     Function: TransformState::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               TransformStates, so we can store the essentially
//               different ones in a big set and throw away the rest.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TransformState::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               TransformStates, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               If uniquify_matrix is true, then matrix-defined
//               TransformStates are also uniqified.  If
//               uniquify_matrix is false, then only component-defined
//               TransformStates are uniquified, which is less
//               expensive.
////////////////////////////////////////////////////////////////////
162
inline int TransformState::compare_to(TransformState const &other) const;
int TransformState::compare_to(TransformState const &other, bool uniquify_matrix) const;

2247 8 get_hash 0 4 3837 24 TransformState::get_hash 0 1 4 268
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_hash
//       Access: Published
//  Description: Returns a suitable hash value for phash_map.
////////////////////////////////////////////////////////////////////
57
inline unsigned int TransformState::get_hash(void) const;

2248 13 make_identity 0 4 3837 29 TransformState::make_identity 0 1 5 270
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_identity
//       Access: Published, Static
//  Description: Constructs an identity transform.
////////////////////////////////////////////////////////////////////
76
static ConstPointerTo< TransformState > TransformState::make_identity(void);

2249 12 make_invalid 0 4 3837 28 TransformState::make_invalid 0 1 6 342
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_invalid
//       Access: Published, Static
//  Description: Constructs an invalid transform; for instance, the
//               result of inverting a singular matrix.
////////////////////////////////////////////////////////////////////
75
static ConstPointerTo< TransformState > TransformState::make_invalid(void);

2250 8 make_pos 0 4 3837 24 TransformState::make_pos 0 1 7 306
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
95
static inline ConstPointerTo< TransformState > TransformState::make_pos(LVecBase3f const &pos);

2251 8 make_hpr 0 4 3837 24 TransformState::make_hpr 0 1 8 306
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_hpr
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
95
static inline ConstPointerTo< TransformState > TransformState::make_hpr(LVecBase3f const &hpr);

2252 9 make_quat 0 4 3837 25 TransformState::make_quat 0 1 9 307
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_quat
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
99
static inline ConstPointerTo< TransformState > TransformState::make_quat(LQuaternionf const &quat);

2253 12 make_pos_hpr 0 4 3837 28 TransformState::make_pos_hpr 0 1 10 310
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_hpr
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
122
static inline ConstPointerTo< TransformState > TransformState::make_pos_hpr(LVecBase3f const &pos, LVecBase3f const &hpr);

2254 10 make_scale 0 4 3837 26 TransformState::make_scale 0 2 11 12 618
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_scale
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_scale
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
187
static inline ConstPointerTo< TransformState > TransformState::make_scale(float scale);
static inline ConstPointerTo< TransformState > TransformState::make_scale(LVecBase3f const &scale);

2255 10 make_shear 0 4 3837 26 TransformState::make_shear 0 1 13 308
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_shear
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
99
static inline ConstPointerTo< TransformState > TransformState::make_shear(LVecBase3f const &shear);

2256 18 make_pos_hpr_scale 0 4 3837 34 TransformState::make_pos_hpr_scale 0 1 14 316
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_hpr_scale
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
153
static inline ConstPointerTo< TransformState > TransformState::make_pos_hpr_scale(LVecBase3f const &pos, LVecBase3f const &hpr, LVecBase3f const &scale);

2257 19 make_pos_quat_scale 0 4 3837 35 TransformState::make_pos_quat_scale 0 1 15 317
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_quat_scale
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
157
static inline ConstPointerTo< TransformState > TransformState::make_pos_quat_scale(LVecBase3f const &pos, LQuaternionf const &quat, LVecBase3f const &scale);

2258 24 make_pos_hpr_scale_shear 0 4 3837 40 TransformState::make_pos_hpr_scale_shear 0 1 16 322
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_hpr_scale_shear
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
177
static ConstPointerTo< TransformState > TransformState::make_pos_hpr_scale_shear(LVecBase3f const &pos, LVecBase3f const &hpr, LVecBase3f const &scale, LVecBase3f const &shear);

2259 25 make_pos_quat_scale_shear 0 4 3837 41 TransformState::make_pos_quat_scale_shear 0 1 17 323
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_quat_scale_shear
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
181
static ConstPointerTo< TransformState > TransformState::make_pos_quat_scale_shear(LVecBase3f const &pos, LQuaternionf const &quat, LVecBase3f const &scale, LVecBase3f const &shear);

2260 8 make_mat 0 4 3837 24 TransformState::make_mat 0 1 18 317
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_mat
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               transformation matrix.
////////////////////////////////////////////////////////////////////
87
static ConstPointerTo< TransformState > TransformState::make_mat(LMatrix4f const &mat);

2261 10 make_pos2d 0 4 3837 26 TransformState::make_pos2d 0 1 19 312
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
97
static inline ConstPointerTo< TransformState > TransformState::make_pos2d(LVecBase2f const &pos);

2262 13 make_rotate2d 0 4 3837 29 TransformState::make_rotate2d 0 1 20 315
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_rotate2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
91
static inline ConstPointerTo< TransformState > TransformState::make_rotate2d(float rotate);

2263 17 make_pos_rotate2d 0 4 3837 33 TransformState::make_pos_rotate2d 0 1 21 319
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_rotate2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
118
static inline ConstPointerTo< TransformState > TransformState::make_pos_rotate2d(LVecBase2f const &pos, float rotate);

2264 12 make_scale2d 0 4 3837 28 TransformState::make_scale2d 0 2 22 23 630
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_scale2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_scale2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
191
static inline ConstPointerTo< TransformState > TransformState::make_scale2d(float scale);
static inline ConstPointerTo< TransformState > TransformState::make_scale2d(LVecBase2f const &scale);

2265 12 make_shear2d 0 4 3837 28 TransformState::make_shear2d 0 1 24 314
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_shear2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
89
static inline ConstPointerTo< TransformState > TransformState::make_shear2d(float shear);

2266 23 make_pos_rotate_scale2d 0 4 3837 39 TransformState::make_pos_rotate_scale2d 0 1 25 325
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_rotate_scale2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
////////////////////////////////////////////////////////////////////
149
static inline ConstPointerTo< TransformState > TransformState::make_pos_rotate_scale2d(LVecBase2f const &pos, float rotate, LVecBase2f const &scale);

2267 29 make_pos_rotate_scale_shear2d 0 4 3837 45 TransformState::make_pos_rotate_scale_shear2d 0 1 26 343
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_rotate_scale_shear2d
//       Access: Published, Static
//  Description: Makes a new two-dimensional TransformState with the
//               specified components.
////////////////////////////////////////////////////////////////////
161
static ConstPointerTo< TransformState > TransformState::make_pos_rotate_scale_shear2d(LVecBase2f const &pos, float rotate, LVecBase2f const &scale, float shear);

2268 9 make_mat3 0 4 3837 25 TransformState::make_mat3 0 1 27 338
////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_mat3
//       Access: Published, Static
//  Description: Makes a new two-dimensional TransformState with the
//               specified 3x3 transformation matrix.
////////////////////////////////////////////////////////////////////
88
static ConstPointerTo< TransformState > TransformState::make_mat3(LMatrix3f const &mat);

2269 11 is_identity 0 4 3837 27 TransformState::is_identity 0 1 28 322
////////////////////////////////////////////////////////////////////
//     Function: TransformState::is_identity
//       Access: Published
//  Description: Returns true if the transform represents the identity
//               matrix, false otherwise.
////////////////////////////////////////////////////////////////////
52
inline bool TransformState::is_identity(void) const;

2270 10 is_invalid 0 4 3837 26 TransformState::is_invalid 0 1 29 411
////////////////////////////////////////////////////////////////////
//     Function: TransformState::is_invalid
//       Access: Published
//  Description: Returns true if the transform represents an invalid
//               matrix, for instance the result of inverting a
//               singular matrix, or false if the transform is valid.
////////////////////////////////////////////////////////////////////
51
inline bool TransformState::is_invalid(void) const;

2271 11 is_singular 0 4 3837 27 TransformState::is_singular 0 1 30 401
////////////////////////////////////////////////////////////////////
//     Function: TransformState::is_singular
//       Access: Published
//  Description: Returns true if the transform represents a singular
//               transform (that is, it has a zero scale, and it
//               cannot be inverted), or false otherwise.
////////////////////////////////////////////////////////////////////
52
inline bool TransformState::is_singular(void) const;

2272 5 is_2d 0 4 3837 21 TransformState::is_2d 0 1 31 460
////////////////////////////////////////////////////////////////////
//     Function: TransformState::is_2d
//       Access: Published
//  Description: Returns true if the transform has been constructed
//               entirely using the 2-d transform operations,
//               e.g. make_pos2d(), and therefore operates strictly in
//               two-dimensional space on X and Y only.
////////////////////////////////////////////////////////////////////
46
inline bool TransformState::is_2d(void) const;

2273 14 has_components 0 4 3837 30 TransformState::has_components 0 1 32 1050
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_components
//       Access: Published
//  Description: Returns true if the transform can be described by
//               separate pos, hpr, and scale components.  Most
//               transforms we use in everyday life can be so
//               described, but some kinds of transforms (for
//               instance, those involving a skew) cannot.
//
//               This is not related to whether the transform was
//               originally described componentwise.  Even a transform
//               that was constructed with a 4x4 may return true here
//               if the matrix is a simple affine matrix with no skew.
//
//               If this returns true, you may safely call get_hpr()
//               and get_scale() to retrieve the components.  (You
//               may always safely call get_pos() whether this returns
//               true or false.)
////////////////////////////////////////////////////////////////////
55
inline bool TransformState::has_components(void) const;

2274 16 components_given 0 4 3837 32 TransformState::components_given 0 1 33 796
////////////////////////////////////////////////////////////////////
//     Function: TransformState::components_given
//       Access: Published
//  Description: Returns true if the transform was specified
//               componentwise, or false if it was specified with a
//               general 4x4 matrix.  If this is true, the components
//               returned by get_pos() and get_scale() will be exactly
//               those that were set; otherwise, these functions will
//               return computed values.  If this is true, the
//               rotation may have been set either with a hpr trio or
//               with a quaternion; hpr_given() or quat_given() can
//               resolve the difference.
////////////////////////////////////////////////////////////////////
57
inline bool TransformState::components_given(void) const;

2275 9 hpr_given 0 4 3837 25 TransformState::hpr_given 0 1 34 459
////////////////////////////////////////////////////////////////////
//     Function: TransformState::hpr_given
//       Access: Published
//  Description: Returns true if the rotation was specified via a trio
//               of Euler angles, false otherwise.  If this is true,
//               get_hpr() will be exactly as set; otherwise, it will
//               return a computed value.
////////////////////////////////////////////////////////////////////
50
inline bool TransformState::hpr_given(void) const;

2276 10 quat_given 0 4 3837 26 TransformState::quat_given 0 1 35 452
////////////////////////////////////////////////////////////////////
//     Function: TransformState::quat_given
//       Access: Published
//  Description: Returns true if the rotation was specified via a 
//               quaternion, false otherwise.  If this is true,
//               get_quat() will be exactly as set; otherwise, it will
//               return a computed value.
////////////////////////////////////////////////////////////////////
51
inline bool TransformState::quat_given(void) const;

2277 7 has_pos 0 4 3837 23 TransformState::has_pos 0 1 36 450
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_pos
//       Access: Published
//  Description: Returns true if the transform's pos component can be
//               extracted out separately.  This is generally always
//               true, unless the transform is invalid
//               (i.e. is_invalid() returns true).
////////////////////////////////////////////////////////////////////
48
inline bool TransformState::has_pos(void) const;

2278 7 has_hpr 0 4 3837 23 TransformState::has_hpr 0 1 37 456
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_hpr
//       Access: Published
//  Description: Returns true if the transform's rotation component
//               can be extracted out separately and described as a
//               set of Euler angles.  This is generally true only
//               when has_components() is true.
////////////////////////////////////////////////////////////////////
48
inline bool TransformState::has_hpr(void) const;

2279 8 has_quat 0 4 3837 24 TransformState::has_quat 0 1 38 448
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_quat
//       Access: Published
//  Description: Returns true if the transform's rotation component
//               can be extracted out separately and described as a
//               quaternion.  This is generally true only when
//               has_components() is true.
////////////////////////////////////////////////////////////////////
49
inline bool TransformState::has_quat(void) const;

2280 9 has_scale 0 4 3837 25 TransformState::has_scale 0 1 39 399
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_scale
//       Access: Published
//  Description: Returns true if the transform's scale component
//               can be extracted out separately.  This is generally
//               true only when has_components() is true.
////////////////////////////////////////////////////////////////////
50
inline bool TransformState::has_scale(void) const;

2281 18 has_identity_scale 0 4 3837 34 TransformState::has_identity_scale 0 1 40 335
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_identity_scale
//       Access: Published
//  Description: Returns true if the scale is uniform 1.0, or false if
//               the scale has some real value.
////////////////////////////////////////////////////////////////////
59
inline bool TransformState::has_identity_scale(void) const;

2282 17 has_uniform_scale 0 4 3837 33 TransformState::has_uniform_scale 0 1 41 468
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_uniform_scale
//       Access: Published
//  Description: Returns true if the scale is uniform across all three
//               axes (and therefore can be expressed as a single
//               number), or false if the transform has a different
//               scale in different dimensions.
////////////////////////////////////////////////////////////////////
58
inline bool TransformState::has_uniform_scale(void) const;

2283 9 has_shear 0 4 3837 25 TransformState::has_shear 0 1 42 399
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_shear
//       Access: Published
//  Description: Returns true if the transform's shear component
//               can be extracted out separately.  This is generally
//               true only when has_components() is true.
////////////////////////////////////////////////////////////////////
50
inline bool TransformState::has_shear(void) const;

2284 17 has_nonzero_shear 0 4 3837 33 TransformState::has_nonzero_shear 0 1 43 374
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_nonzero_shear
//       Access: Published
//  Description: Returns true if the shear component is non-zero,
//               false if it is zero or if the matrix cannot be
//               decomposed.
////////////////////////////////////////////////////////////////////
58
inline bool TransformState::has_nonzero_shear(void) const;

2285 7 has_mat 0 4 3837 23 TransformState::has_mat 0 1 44 377
////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_mat
//       Access: Published
//  Description: Returns true if the transform can be described as a
//               matrix.  This is generally always true, unless
//               is_invalid() is true.
////////////////////////////////////////////////////////////////////
48
inline bool TransformState::has_mat(void) const;

2286 7 get_pos 0 4 3837 23 TransformState::get_pos 0 1 45 341
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_pos
//       Access: Published
//  Description: Returns the pos component of the transform.  It is an
//               error to call this if has_pos() returned false.
////////////////////////////////////////////////////////////////////
59
inline LPoint3f const &TransformState::get_pos(void) const;

2287 7 get_hpr 0 4 3837 23 TransformState::get_hpr 0 1 46 396
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_hpr
//       Access: Published
//  Description: Returns the rotation component of the transform as a
//               trio of Euler angles.  It is an error to call this if
//               has_components() returned false.
////////////////////////////////////////////////////////////////////
61
inline LVecBase3f const &TransformState::get_hpr(void) const;

2288 8 get_quat 0 4 3837 24 TransformState::get_quat 0 1 47 746
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_quat
//       Access: Published
//  Description: Returns the rotation component of the transform as a
//               quaternion.  The return value will be normalized if a
//               normalized quaternion was given to the constructor
//               (or if the quaternion was computed implicitly); it
//               will be non-normalized if a non-normalized quaternion
//               was given to the constructor.  See also
//               get_norm_quat().
//
//               It is an error to call this if has_components()
//               returned false.
////////////////////////////////////////////////////////////////////
64
inline LQuaternionf const &TransformState::get_quat(void) const;

2289 13 get_norm_quat 0 4 3837 29 TransformState::get_norm_quat 0 1 48 524
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_norm_quat
//       Access: Published
//  Description: Returns the rotation component of the transform as a
//               quaternion.  Unlike the result of get_quat(), the
//               return value of this method is guaranteed to be
//               normalized.  It is an error to call this if
//               has_components() returned false.
////////////////////////////////////////////////////////////////////
69
inline LQuaternionf const &TransformState::get_norm_quat(void) const;

2290 9 get_scale 0 4 3837 25 TransformState::get_scale 0 1 49 369
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_scale
//       Access: Published
//  Description: Returns the scale component of the transform.  It is an
//               error to call this if has_components() returned
//               false.
////////////////////////////////////////////////////////////////////
63
inline LVecBase3f const &TransformState::get_scale(void) const;

2291 17 get_uniform_scale 0 4 3837 33 TransformState::get_uniform_scale 0 1 50 400
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_uniform_scale
//       Access: Published
//  Description: Returns the scale component of the transform, as a
//               single number.  It is an error to call this if
//               has_uniform_scale() returned false.
////////////////////////////////////////////////////////////////////
59
inline float TransformState::get_uniform_scale(void) const;

2292 9 get_shear 0 4 3837 25 TransformState::get_shear 0 1 51 369
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_shear
//       Access: Published
//  Description: Returns the shear component of the transform.  It is
//               an error to call this if has_components() returned
//               false.
////////////////////////////////////////////////////////////////////
63
inline LVecBase3f const &TransformState::get_shear(void) const;

2293 7 get_mat 0 4 3837 23 TransformState::get_mat 0 1 52 271
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_mat
//       Access: Published
//  Description: Returns the matrix that describes the transform.
////////////////////////////////////////////////////////////////////
60
inline LMatrix4f const &TransformState::get_mat(void) const;

2294 9 get_pos2d 0 4 3837 25 TransformState::get_pos2d 0 1 53 375
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_pos2d
//       Access: Published
//  Description: Returns the pos component of the 2-d transform.  It
//               is an error to call this if has_pos() or is_2d()
//               returned false.
////////////////////////////////////////////////////////////////////
56
inline LVecBase2f TransformState::get_pos2d(void) const;

2295 12 get_rotate2d 0 4 3837 28 TransformState::get_rotate2d 0 1 54 456
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_rotate2d
//       Access: Published
//  Description: Returns the rotation component of the 2-d transform
//               as an angle in degrees clockwise about the origin.
//               It is an error to call this if has_components() or
//               is_2d() returned false.
////////////////////////////////////////////////////////////////////
54
inline float TransformState::get_rotate2d(void) const;

2296 11 get_scale2d 0 4 3837 27 TransformState::get_scale2d 0 1 55 386
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_scale2d
//       Access: Published
//  Description: Returns the scale component of the 2-d transform.  It
//               is an error to call this if has_components() or
//               is_2d() returned false.
////////////////////////////////////////////////////////////////////
58
inline LVecBase2f TransformState::get_scale2d(void) const;

2297 11 get_shear2d 0 4 3837 27 TransformState::get_shear2d 0 1 56 386
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_shear2d
//       Access: Published
//  Description: Returns the shear component of the 2-d transform.  It
//               is an error to call this if has_components() or
//               is_2d() returned false.
////////////////////////////////////////////////////////////////////
53
inline float TransformState::get_shear2d(void) const;

2298 8 get_mat3 0 4 3837 24 TransformState::get_mat3 0 1 57 370
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_mat3
//       Access: Published
//  Description: Returns the 3x3 matrix that describes the 2-d
//               transform.  It is an error to call this if is_2d()
//               returned false.
////////////////////////////////////////////////////////////////////
54
inline LMatrix3f TransformState::get_mat3(void) const;

2299 7 set_pos 0 4 3837 23 TransformState::set_pos 0 1 58 394
////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_pos
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its pos component
//               replaced with the indicated value.
////////////////////////////////////////////////////////////////////
86
ConstPointerTo< TransformState > TransformState::set_pos(LVecBase3f const &pos) const;

2300 7 set_hpr 0 4 3837 23 TransformState::set_hpr 0 1 59 412
////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_hpr
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its rotation component
//               replaced with the indicated value, if possible.
////////////////////////////////////////////////////////////////////
86
ConstPointerTo< TransformState > TransformState::set_hpr(LVecBase3f const &hpr) const;

2301 8 set_quat 0 4 3837 24 TransformState::set_quat 0 1 60 413
////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_quat
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its rotation component
//               replaced with the indicated value, if possible.
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< TransformState > TransformState::set_quat(LQuaternionf const &quat) const;

2302 9 set_scale 0 4 3837 25 TransformState::set_scale 0 1 61 411
////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_scale
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its scale component
//               replaced with the indicated value, if possible.
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< TransformState > TransformState::set_scale(LVecBase3f const &scale) const;

2303 9 set_shear 0 4 3837 25 TransformState::set_shear 0 1 62 411
////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_shear
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its shear component
//               replaced with the indicated value, if possible.
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< TransformState > TransformState::set_shear(LVecBase3f const &shear) const;

2304 9 set_pos2d 0 4 3837 25 TransformState::set_pos2d 0 1 63 400
////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_pos2d
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original 2-d TransformState with its pos component
//               replaced with the indicated value.
////////////////////////////////////////////////////////////////////
88
ConstPointerTo< TransformState > TransformState::set_pos2d(LVecBase2f const &pos) const;

2305 12 set_rotate2d 0 4 3837 28 TransformState::set_rotate2d 0 1 64 421
////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_rotate2d
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original 2-d TransformState with its rotation component
//               replaced with the indicated value, if possible.
////////////////////////////////////////////////////////////////////
82
ConstPointerTo< TransformState > TransformState::set_rotate2d(float rotate) const;

2306 11 set_scale2d 0 4 3837 27 TransformState::set_scale2d 0 1 65 417
////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_scale2d
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original 2-d TransformState with its scale component
//               replaced with the indicated value, if possible.
////////////////////////////////////////////////////////////////////
92
ConstPointerTo< TransformState > TransformState::set_scale2d(LVecBase2f const &scale) const;

2307 11 set_shear2d 0 4 3837 27 TransformState::set_shear2d 0 1 66 417
////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_shear2d
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original 2-d TransformState with its shear component
//               replaced with the indicated value, if possible.
////////////////////////////////////////////////////////////////////
80
ConstPointerTo< TransformState > TransformState::set_shear2d(float shear) const;

2308 7 compose 0 4 3837 23 TransformState::compose 0 1 67 723
////////////////////////////////////////////////////////////////////
//     Function: TransformState::compose
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               composition of this state with the other state.
//
//               The result of this operation is cached, and will be
//               retained as long as both this TransformState object and
//               the other TransformState object continue to exist.
//               Should one of them destruct, the cached entry will be
//               removed, and its pointer will be allowed to destruct
//               as well.
////////////////////////////////////////////////////////////////////
92
ConstPointerTo< TransformState > TransformState::compose(TransformState const *other) const;

2309 14 invert_compose 0 4 3837 30 TransformState::invert_compose 0 1 68 563
////////////////////////////////////////////////////////////////////
//     Function: TransformState::invert_compose
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               composition of this state's inverse with the other
//               state.
//
//               This is similar to compose(), but is particularly
//               useful for computing the relative state of a node as
//               viewed from some other node.
////////////////////////////////////////////////////////////////////
99
ConstPointerTo< TransformState > TransformState::invert_compose(TransformState const *other) const;

2310 11 get_inverse 0 4 3837 27 TransformState::get_inverse 0 1 69 460
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_inverse
//       Access: Published
//  Description: Returns the inverse of this transform.  If you are
//               going to immediately compose this result with another
//               TransformState, it is faster to do it in one
//               operation with invert_compose().
////////////////////////////////////////////////////////////////////
80
inline ConstPointerTo< TransformState > TransformState::get_inverse(void) const;

2311 10 get_unique 0 4 3837 26 TransformState::get_unique 0 1 70 619
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_unique
//       Access: Published
//  Description: Returns the pointer to the unique TransformState in
//               the cache that is equivalent to this one.  This may
//               be the same pointer as this object, or it may be a
//               different pointer; but it will be an equivalent
//               object, and it will be a shared pointer.  This may be
//               called from time to time to improve cache benefits.
////////////////////////////////////////////////////////////////////
79
inline ConstPointerTo< TransformState > TransformState::get_unique(void) const;

2312 18 get_geom_rendering 0 4 3837 34 TransformState::get_geom_rendering 0 1 71 560
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this TransformState is
//               applied to a geom which includes the indicated
//               geom_rendering bits.  The RenderState's
//               get_geom_rendering() should already have been
//               applied.
////////////////////////////////////////////////////////////////////
72
inline int TransformState::get_geom_rendering(int geom_rendering) const;

2313 9 cache_ref 0 4 3837 25 TransformState::cache_ref 0 1 72 278
////////////////////////////////////////////////////////////////////
//     Function: TransformState::cache_ref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
////////////////////////////////////////////////////////////////////
50
inline void TransformState::cache_ref(void) const;

2314 11 cache_unref 0 4 3837 27 TransformState::cache_unref 0 1 73 280
////////////////////////////////////////////////////////////////////
//     Function: TransformState::cache_unref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
////////////////////////////////////////////////////////////////////
52
inline bool TransformState::cache_unref(void) const;

2315 8 node_ref 0 4 3837 24 TransformState::node_ref 0 1 74 277
////////////////////////////////////////////////////////////////////
//     Function: TransformState::node_ref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
////////////////////////////////////////////////////////////////////
49
inline void TransformState::node_ref(void) const;

2316 10 node_unref 0 4 3837 26 TransformState::node_unref 0 1 75 279
////////////////////////////////////////////////////////////////////
//     Function: TransformState::node_unref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
////////////////////////////////////////////////////////////////////
51
inline bool TransformState::node_unref(void) const;

2317 33 get_composition_cache_num_entries 0 4 3837 49 TransformState::get_composition_cache_num_entries 0 1 76 575
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_composition_cache_num_entries
//       Access: Published
//  Description: Returns the number of entries in the composition
//               cache for this TransformState.  This is the number of
//               other TransformStates whose composition with this one
//               has been cached.  This number is not useful for any
//               practical reason other than performance analysis.
////////////////////////////////////////////////////////////////////
73
inline int TransformState::get_composition_cache_num_entries(void) const;

2318 40 get_invert_composition_cache_num_entries 0 4 3837 56 TransformState::get_invert_composition_cache_num_entries 0 1 77 559
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_invert_composition_cache_num_entries
//       Access: Published
//  Description: Returns the number of entries in the
//               invert_composition cache for this TransformState.
//               This is similar to the composition cache, but it
//               records cache entries for the invert_compose()
//               operation.  See get_composition_cache_num_entries().
////////////////////////////////////////////////////////////////////
80
inline int TransformState::get_invert_composition_cache_num_entries(void) const;

2319 26 get_composition_cache_size 0 4 3837 42 TransformState::get_composition_cache_size 0 1 78 655
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_composition_cache_size
//       Access: Published
//  Description: Returns the number of slots in the composition
//               cache for this TransformState.  You may use this as
//               an upper bound when walking through all of the
//               composition cache results via
//               get_composition_cache_source() or result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
66
inline int TransformState::get_composition_cache_size(void) const;

2320 28 get_composition_cache_source 0 4 3837 44 TransformState::get_composition_cache_source 0 1 79 608
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_composition_cache_source
//       Access: Published
//  Description: Returns the source TransformState of the nth element
//               in the composition cache.  Returns NULL if there
//               doesn't happen to be an entry in the nth element.
//               See get_composition_cache_result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
87
inline TransformState const *TransformState::get_composition_cache_source(int n) const;

2321 28 get_composition_cache_result 0 4 3837 44 TransformState::get_composition_cache_result 0 1 80 707
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_composition_cache_result
//       Access: Published
//  Description: Returns the result TransformState of the nth element
//               in the composition cache.  Returns NULL if there
//               doesn't happen to be an entry in the nth element.
//
//               In general,
//               a->compose(a->get_composition_cache_source(n)) ==
//               a->get_composition_cache_result(n).
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
87
inline TransformState const *TransformState::get_composition_cache_result(int n) const;

2322 33 get_invert_composition_cache_size 0 4 3837 49 TransformState::get_invert_composition_cache_size 0 1 81 669
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_invert_composition_cache_size
//       Access: Published
//  Description: Returns the number of slots in the composition
//               cache for this TransformState.  You may use this as
//               an upper bound when walking through all of the
//               composition cache results via
//               get_invert_composition_cache_source() or result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
73
inline int TransformState::get_invert_composition_cache_size(void) const;

2323 35 get_invert_composition_cache_source 0 4 3837 51 TransformState::get_invert_composition_cache_source 0 1 82 630
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_invert_composition_cache_source
//       Access: Published
//  Description: Returns the source TransformState of the nth element
//               in the invert composition cache.  Returns NULL if
//               there doesn't happen to be an entry in the nth
//               element.  See get_invert_composition_cache_result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
94
inline TransformState const *TransformState::get_invert_composition_cache_source(int n) const;

2324 35 get_invert_composition_cache_result 0 4 3837 51 TransformState::get_invert_composition_cache_result 0 1 83 759
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_invert_composition_cache_result
//       Access: Published
//  Description: Returns the result TransformState of the nth element
//               in the invert composition cache.  Returns NULL if
//               there doesn't happen to be an entry in the nth
//               element.
//
//               In general,
//               a->invert_compose(a->get_invert_composition_cache_source(n))
//               == a->get_invert_composition_cache_result(n).
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
94
inline TransformState const *TransformState::get_invert_composition_cache_result(int n) const;

2325 26 validate_composition_cache 0 4 3837 42 TransformState::validate_composition_cache 0 1 84 425
////////////////////////////////////////////////////////////////////
//     Function: TransformState::validate_composition_cache
//       Access: Published
//  Description: Returns true if the composition cache and invert
//               composition cache for this particular TransformState
//               are self-consistent and valid, false otherwise.
////////////////////////////////////////////////////////////////////
60
bool TransformState::validate_composition_cache(void) const;

2326 21 get_composition_cache 0 4 3837 37 TransformState::get_composition_cache 0 1 85 0
60
PyObject *TransformState::get_composition_cache(void) const;

2327 28 get_invert_composition_cache 0 4 3837 44 TransformState::get_invert_composition_cache 0 1 86 0
67
PyObject *TransformState::get_invert_composition_cache(void) const;

2328 6 output 0 4 3837 22 TransformState::output 0 1 87 222
////////////////////////////////////////////////////////////////////
//     Function: TransformState::output
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
48
void TransformState::output(ostream &out) const;

2329 5 write 0 4 3837 21 TransformState::write 0 1 88 221
////////////////////////////////////////////////////////////////////
//     Function: TransformState::write
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
65
void TransformState::write(ostream &out, int indent_level) const;

2330 23 write_composition_cache 0 4 3837 39 TransformState::write_composition_cache 0 1 89 481
////////////////////////////////////////////////////////////////////
//     Function: TransformState::write_composition_cache
//       Access: Published
//  Description: Writes a brief description of the composition cache
//               and invert composition cache to the indicated
//               ostream.  This is not useful except for performance
//               analysis, to examine the cache structure.
////////////////////////////////////////////////////////////////////
83
void TransformState::write_composition_cache(ostream &out, int indent_level) const;

2331 14 get_num_states 0 4 3837 30 TransformState::get_num_states 0 1 90 405
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_num_states
//       Access: Published, Static
//  Description: Returns the total number of unique TransformState
//               objects allocated in the world.  This will go up and
//               down during normal operations.
////////////////////////////////////////////////////////////////////
48
static int TransformState::get_num_states(void);

2332 21 get_num_unused_states 0 4 3837 37 TransformState::get_num_unused_states 0 1 91 1009
////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_num_unused_states
//       Access: Published, Static
//  Description: Returns the total number of TransformState objects that
//               have been allocated but have no references outside of
//               the internal TransformState cache.
//
//               A nonzero return value is not necessarily indicative
//               of leaked references; it is normal for two
//               TransformState objects, both of which have references
//               held outside the cache, to have the result of their
//               composition stored within the cache.  This result
//               will be retained within the cache until one of the
//               base TransformStates is released.
//
//               Use list_cycles() to get an idea of the number of
//               actual "leaked" TransformState objects.
////////////////////////////////////////////////////////////////////
55
static int TransformState::get_num_unused_states(void);

2333 11 clear_cache 0 4 3837 27 TransformState::clear_cache 0 1 92 1021
////////////////////////////////////////////////////////////////////
//     Function: TransformState::clear_cache
//       Access: Published, Static
//  Description: Empties the cache of composed TransformStates.  This
//               makes every TransformState forget what results when
//               it is composed with other TransformStates.
//
//               This will eliminate any TransformState objects that
//               have been allocated but have no references outside of
//               the internal TransformState map.  It will not
//               eliminate TransformState objects that are still in
//               use.
//
//               Nowadays, this method should not be necessary, as
//               reference-count cycles in the composition cache
//               should be automatically detected and broken.
//
//               The return value is the number of TransformStates
//               freed by this operation.
////////////////////////////////////////////////////////////////////
45
static int TransformState::clear_cache(void);

2334 15 garbage_collect 0 4 3837 31 TransformState::garbage_collect 0 1 93 601
////////////////////////////////////////////////////////////////////
//     Function: TransformState::garbage_collect
//       Access: Published, Static
//  Description: Performs a garbage-collection cycle.  This must be
//               called periodically if garbage-collect-states is true
//               to ensure that TransformStates get cleaned up
//               appropriately.  It does no harm to call it even if
//               this variable is not true, but there is probably no
//               advantage in that case.
////////////////////////////////////////////////////////////////////
49
static int TransformState::garbage_collect(void);

2335 11 list_cycles 0 4 3837 27 TransformState::list_cycles 0 1 94 951
////////////////////////////////////////////////////////////////////
//     Function: TransformState::list_cycles
//       Access: Published, Static
//  Description: Detects all of the reference-count cycles in the
//               cache and reports them to standard output.
//
//               These cycles may be inadvertently created when state
//               compositions cycle back to a starting point.
//               Nowadays, these cycles should be automatically
//               detected and broken, so this method should never list
//               any cycles unless there is a bug in that detection
//               logic.
//
//               The cycles listed here are not leaks in the strictest
//               sense of the word, since they can be reclaimed by a
//               call to clear_cache(); but they will not be reclaimed
//               automatically.
////////////////////////////////////////////////////////////////////
54
static void TransformState::list_cycles(ostream &out);

2336 11 list_states 0 4 3837 27 TransformState::list_states 0 1 95 424
////////////////////////////////////////////////////////////////////
//     Function: TransformState::list_states
//       Access: Published, Static
//  Description: Lists all of the TransformStates in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
////////////////////////////////////////////////////////////////////
54
static void TransformState::list_states(ostream &out);

2337 15 validate_states 0 4 3837 31 TransformState::validate_states 0 1 96 586
////////////////////////////////////////////////////////////////////
//     Function: TransformState::validate_states
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order, and that none of the cache elements have been
//               inadvertently deleted.  Returns true if so, false if
//               there is a problem (which implies someone has
//               modified one of the supposedly-const TransformState
//               objects).
////////////////////////////////////////////////////////////////////
50
static bool TransformState::validate_states(void);

2338 10 get_states 0 4 3837 26 TransformState::get_states 0 1 97 0
50
static PyObject *TransformState::get_states(void);

2339 17 get_unused_states 0 4 3837 33 TransformState::get_unused_states 0 1 98 0
57
static PyObject *TransformState::get_unused_states(void);

2340 14 get_class_type 0 4 3837 30 TransformState::get_class_type 0 1 99 0
55
static TypeHandle TransformState::get_class_type(void);

2341 8 get_slot 0 4 3839 30 RenderAttribRegistry::get_slot 0 1 100 846
// Filename: renderAttribRegistry.I
// Created by:  drose (13Nov08)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_slot
//       Access: Published
//  Description: Returns the slot number assigned to the indicated
//               TypeHandle, or 0 if no slot number has been assigned.
////////////////////////////////////////////////////////////////////
72
inline int RenderAttribRegistry::get_slot(TypeHandle type_handle) const;

2342 13 get_max_slots 0 4 3839 35 RenderAttribRegistry::get_max_slots 0 1 101 709
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_max_slots
//       Access: Published
//  Description: Returns the maximum number that any slot number is
//               allowed to grow.  Actually, this number will be one
//               higher than the highest possible slot number.  This
//               puts an upper bound on the number of RenderAttrib
//               slots that may be allocated, and allows other code to
//               define an array of slots.
//
//               This number will not change during the lifetime of
//               the application.
////////////////////////////////////////////////////////////////////
59
inline int RenderAttribRegistry::get_max_slots(void) const;

2343 13 get_num_slots 0 4 3839 35 RenderAttribRegistry::get_num_slots 0 1 102 390
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_num_slots
//       Access: Published
//  Description: Returns the number of RenderAttrib slots that have
//               been allocated.  This is one more than the highest
//               slot number in use.
////////////////////////////////////////////////////////////////////
59
inline int RenderAttribRegistry::get_num_slots(void) const;

2344 13 get_slot_type 0 4 3839 35 RenderAttribRegistry::get_slot_type 0 1 103 281
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_slot_type
//       Access: Published
//  Description: Returns the TypeHandle associated with slot n.
////////////////////////////////////////////////////////////////////
70
inline TypeHandle RenderAttribRegistry::get_slot_type(int slot) const;

2345 13 get_slot_sort 0 4 3839 35 RenderAttribRegistry::get_slot_sort 0 1 104 282
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_slot_sort
//       Access: Published
//  Description: Returns the sort number associated with slot n.
////////////////////////////////////////////////////////////////////
63
inline int RenderAttribRegistry::get_slot_sort(int slot) const;

2346 13 set_slot_sort 0 4 3839 35 RenderAttribRegistry::set_slot_sort 0 1 105 282
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::set_slot_sort
//       Access: Published
//  Description: Changes the sort number associated with slot n.
////////////////////////////////////////////////////////////////////
61
void RenderAttribRegistry::set_slot_sort(int slot, int sort);

2347 16 get_slot_default 0 4 3839 38 RenderAttribRegistry::get_slot_default 0 1 106 444
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_slot_default
//       Access: Published
//  Description: Returns the default RenderAttrib object associated
//               with slot n.  This is the attrib that should be
//               applied in the absence of any other attrib of this
//               type.
////////////////////////////////////////////////////////////////////
86
ConstPointerTo< RenderAttrib > RenderAttribRegistry::get_slot_default(int slot) const;

2348 20 get_num_sorted_slots 0 4 3839 42 RenderAttribRegistry::get_num_sorted_slots 0 1 107 314
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_num_sorted_slots
//       Access: Published
//  Description: Returns the number of entries in the sorted_slots
//               list.
////////////////////////////////////////////////////////////////////
66
inline int RenderAttribRegistry::get_num_sorted_slots(void) const;

2349 15 get_sorted_slot 0 4 3839 37 RenderAttribRegistry::get_sorted_slot 0 1 108 424
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_sorted_slot
//       Access: Published
//  Description: Returns the nth slot in sorted order.  By traversing
//               this list, you will retrieve all the slot numbers in
//               order according to their registered sort value.
////////////////////////////////////////////////////////////////////
62
inline int RenderAttribRegistry::get_sorted_slot(int n) const;

2350 15 get_array_chain 0 4 3839 37 RenderAttribRegistry::get_array_chain 0 1 109 400
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_array_chain
//       Access: Published
//  Description: Returns the DeletedBufferChain object that may be
//               used to allocated appropriately-sized arrays of
//               RenderState::Attribute objects.
////////////////////////////////////////////////////////////////////
77
inline DeletedBufferChain *RenderAttribRegistry::get_array_chain(void) const;

2351 14 get_global_ptr 0 4 3839 36 RenderAttribRegistry::get_global_ptr 0 1 110 243
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_global_ptr
//       Access: Published, Static
//  Description:
////////////////////////////////////////////////////////////////////
79
static inline RenderAttribRegistry *RenderAttribRegistry::get_global_ptr(void);

2352 7 compose 0 4 3840 21 RenderAttrib::compose 0 1 111 1093
// Filename: renderAttrib.I
// Created by:  drose (21Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::compose
//       Access: Published
//  Description: Returns a new RenderAttrib object that represents the
//               composition of this attrib with the other attrib.  In
//               most cases, this is the same as the other attrib; a
//               compose b produces b.  Some kinds of attributes, like
//               a TextureTransform, for instance, might produce a new
//               result: a compose b produces c.
////////////////////////////////////////////////////////////////////
93
inline ConstPointerTo< RenderAttrib > RenderAttrib::compose(RenderAttrib const *other) const;

2353 14 invert_compose 0 4 3840 28 RenderAttrib::invert_compose 0 1 112 946
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::invert_compose
//       Access: Published
//  Description: Returns a new RenderAttrib object that represents the
//               composition of the inverse of this attrib with the
//               other attrib.  In most cases, this is the same as the
//               other attrib; !a compose b produces b.  Some kinds of
//               attributes, like a TextureTransform, for instance,
//               might produce a new result: !a compose b produces c.
//
//               This is similar to compose() except that the source
//               attrib is inverted first.  This is used to compute
//               the relative attribute for one node as viewed from
//               some other node, which is especially useful for
//               transform-type attributes.
////////////////////////////////////////////////////////////////////
100
inline ConstPointerTo< RenderAttrib > RenderAttrib::invert_compose(RenderAttrib const *other) const;

2354 25 lower_attrib_can_override 0 6 3840 39 RenderAttrib::lower_attrib_can_override 0 1 113 1472
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::lower_attrib_can_override
//       Access: Public, Virtual
//  Description: Intended to be overridden by derived RenderAttrib
//               types to specify how two consecutive RenderAttrib
//               objects of the same type interact.
//
//               This should return false if a RenderAttrib on a
//               higher node will compose into a RenderAttrib on a
//               lower node that has a higher override value, or true
//               if the lower RenderAttrib will completely replace the
//               state.
//
//               The default behavior is false: normally, a
//               RenderAttrib in the graph cannot completely override
//               a RenderAttrib above it, regardless of its override
//               value--instead, the two attribs are composed.  But
//               for some kinds of RenderAttribs, it is useful to
//               allow this kind of override.
//
//               This method only handles the one special case of a
//               lower RenderAttrib with a higher override value.  If
//               the higher RenderAttrib has a higher override value,
//               it always completely overrides.  And if both
//               RenderAttribs have the same override value, they are
//               always composed.
////////////////////////////////////////////////////////////////////
65
virtual bool RenderAttrib::lower_attrib_can_override(void) const;

2355 10 compare_to 0 4 3840 24 RenderAttrib::compare_to 0 1 114 671
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               RenderAttribs, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               This method is not needed outside of the RenderAttrib
//               class because all equivalent RenderAttrib objects are
//               guaranteed to share the same pointer; thus, a pointer
//               comparison is always sufficient.
////////////////////////////////////////////////////////////////////
69
inline int RenderAttrib::compare_to(RenderAttrib const &other) const;

2356 8 get_hash 0 4 3840 22 RenderAttrib::get_hash 0 1 115 266
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::get_hash
//       Access: Published
//  Description: Returns a suitable hash value for phash_map.
////////////////////////////////////////////////////////////////////
55
inline unsigned int RenderAttrib::get_hash(void) const;

2357 10 get_unique 0 4 3840 24 RenderAttrib::get_unique 0 1 116 615
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::get_unique
//       Access: Published
//  Description: Returns the pointer to the unique RenderAttrib in
//               the cache that is equivalent to this one.  This may
//               be the same pointer as this object, or it may be a
//               different pointer; but it will be an equivalent
//               object, and it will be a shared pointer.  This may be
//               called from time to time to improve cache benefits.
////////////////////////////////////////////////////////////////////
75
inline ConstPointerTo< RenderAttrib > RenderAttrib::get_unique(void) const;

2358 22 get_auto_shader_attrib 0 4 3840 36 RenderAttrib::get_auto_shader_attrib 0 1 117 1198
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::get_auto_shader_attrib
//       Access: Published
//  Description: Returns the variant of this RenderAttrib that's most
//               relevant for associating with an auto-generated
//               shader.  This should be a new RenderAttrib of the
//               same type as this one, with any superfluous data set
//               to neutral.  Only the parts of the attrib that
//               contribute to the shader should be reflected in the
//               returned attrib.  The idea is to associate the
//               auto-generated shader with the most neutral form of
//               all states, to allow it to be shared across as many
//               RenderState objects as possible.
//
//               If this RenderAttrib is completely irrelevant to the
//               auto-shader, this should return NULL to indicate that
//               the attrib won't be assocaited with the shader at
//               all.  In this case the attrib does not contribute to
//               the shader meaningfully.
////////////////////////////////////////////////////////////////////
107
inline ConstPointerTo< RenderAttrib > RenderAttrib::get_auto_shader_attrib(RenderState const *state) const;

2359 6 output 0 6 3840 20 RenderAttrib::output 0 1 118 229
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::output
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
54
virtual void RenderAttrib::output(ostream &out) const;

2360 5 write 0 6 3840 19 RenderAttrib::write 0 1 119 228
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::write
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
71
virtual void RenderAttrib::write(ostream &out, int indent_level) const;

2361 15 get_num_attribs 0 4 3840 29 RenderAttrib::get_num_attribs 0 1 120 402
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::get_num_attribs
//       Access: Published, Static
//  Description: Returns the total number of unique RenderAttrib
//               objects allocated in the world.  This will go up and
//               down during normal operations.
////////////////////////////////////////////////////////////////////
47
static int RenderAttrib::get_num_attribs(void);

2362 12 list_attribs 0 4 3840 26 RenderAttrib::list_attribs 0 1 121 421
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::list_attribs
//       Access: Published, Static
//  Description: Lists all of the RenderAttribs in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
////////////////////////////////////////////////////////////////////
53
static void RenderAttrib::list_attribs(ostream &out);

2363 15 garbage_collect 0 4 3840 29 RenderAttrib::garbage_collect 0 1 122 412
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::garbage_collect
//       Access: Published, Static
//  Description: Performs a garbage-collection cycle.  This is called
//               automatically from RenderState::garbage_collect();
//               see that method for more information.
////////////////////////////////////////////////////////////////////
47
static int RenderAttrib::garbage_collect(void);

2364 16 validate_attribs 0 4 3840 30 RenderAttrib::validate_attribs 0 1 123 480
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::validate_attribs
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order.  Returns true if so, false if there is a
//               problem (which implies someone has modified one of
//               the supposedly-const RenderAttrib objects).
////////////////////////////////////////////////////////////////////
49
static bool RenderAttrib::validate_attribs(void);

2365 8 get_slot 0 6 3840 22 RenderAttrib::get_slot 0 1 124 0
51
virtual int RenderAttrib::get_slot(void) const = 0;

2366 14 get_class_type 0 4 3840 28 RenderAttrib::get_class_type 0 1 125 0
53
static TypeHandle RenderAttrib::get_class_type(void);

2367 4 make 0 4 3844 22 RenderModeAttrib::make 0 3 126 127 128 1219
////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::make
//       Access: Published, Static
//  Description: Constructs a new RenderModeAttrib object that specifies
//               whether to draw polygons in the normal, filled mode,
//               or wireframe mode, or in some other yet-to-be-defined
//               mode.
//
//               The thickness parameter specifies the thickness to be
//               used for wireframe lines, as well as for ordinary
//               linestrip lines; it also specifies the diameter of
//               points.  (Thick lines are presently only supported in
//               OpenGL; but thick points are supported on either
//               platform.)
//
//               If perspective is true, the point thickness
//               represented is actually a width in 3-d units, and the
//               points should scale according to perspective.  When
//               it is false, the point thickness is actually a width
//               in pixels, and points are a uniform screen size
//               regardless of distance from the camera.
////////////////////////////////////////////////////////////////////
137
static ConstPointerTo< RenderAttrib > RenderModeAttrib::make(RenderModeAttrib::Mode mode, float thickness = (1), bool perspective = (0));

2368 12 make_default 0 4 3844 30 RenderModeAttrib::make_default 0 1 129 403
////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
75
static ConstPointerTo< RenderAttrib > RenderModeAttrib::make_default(void);

2369 8 get_mode 0 4 3844 26 RenderModeAttrib::get_mode 0 1 130 250
////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::get_mode
//       Access: Published
//  Description: Returns the render mode.
////////////////////////////////////////////////////////////////////
69
inline RenderModeAttrib::Mode RenderModeAttrib::get_mode(void) const;

2370 13 get_thickness 0 4 3844 31 RenderModeAttrib::get_thickness 0 1 131 517
////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::get_thickness
//       Access: Published
//  Description: Returns the line width or point thickness.  This is
//               only relevant when rendering points or lines, such as
//               when the mode is M_wireframe or M_point (or when
//               rendering actual points or lines primitives in
//               M_polygon mode).
////////////////////////////////////////////////////////////////////
57
inline float RenderModeAttrib::get_thickness(void) const;

2371 15 get_perspective 0 4 3844 33 RenderModeAttrib::get_perspective 0 1 132 676
////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::get_perspective
//       Access: Published
//  Description: Returns the perspective flag.  When this is true, the
//               point thickness represented by get_thickness() is
//               actually a width in 3-d units, and the points should
//               scale according to perspective.  When it is false,
//               the default, the point thickness is actually a width
//               in pixels, and points are a uniform size regardless
//               of distance from the camera.
////////////////////////////////////////////////////////////////////
58
inline bool RenderModeAttrib::get_perspective(void) const;

2372 18 get_geom_rendering 0 4 3844 36 RenderModeAttrib::get_geom_rendering 0 1 133 456
////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this RenderModeAttrib is
//               applied to a geom which includes the indicated
//               geom_rendering bits.
////////////////////////////////////////////////////////////////////
74
inline int RenderModeAttrib::get_geom_rendering(int geom_rendering) const;

2373 14 get_class_slot 0 4 3844 32 RenderModeAttrib::get_class_slot 0 1 134 0
50
static int RenderModeAttrib::get_class_slot(void);

2374 14 get_class_type 0 4 3844 32 RenderModeAttrib::get_class_type 0 1 135 0
57
static TypeHandle RenderModeAttrib::get_class_type(void);

2375 17 ~RenderModeAttrib 0 4 3844 35 RenderModeAttrib::~RenderModeAttrib 0 0 0
42
RenderModeAttrib::~RenderModeAttrib(void);

2376 4 make 0 4 3846 21 TexMatrixAttrib::make 0 3 136 137 138 1034
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexMatrixAttrib that applies
//               no stages at all.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexMatrixAttrib that applies the
//               indicated matrix to the default texture stage.  This
//               interface is deprecated.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexMatrixAttrib that applies the
//               indicated transform to the named texture stage.
////////////////////////////////////////////////////////////////////
264
static ConstPointerTo< RenderAttrib > TexMatrixAttrib::make(void);
static ConstPointerTo< RenderAttrib > TexMatrixAttrib::make(LMatrix4f const &mat);
static ConstPointerTo< RenderAttrib > TexMatrixAttrib::make(TextureStage *stage, TransformState const *transform);

2377 12 make_default 0 4 3846 29 TexMatrixAttrib::make_default 0 1 139 402
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
74
static ConstPointerTo< RenderAttrib > TexMatrixAttrib::make_default(void);

2378 9 add_stage 0 4 3846 26 TexMatrixAttrib::add_stage 0 2 140 141 425
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::add_stage
//       Access: Published, Static
//  Description: Returns a new TexMatrixAttrib just like this one,
//               with the indicated transform for the given stage.  If
//               this stage already exists, its transform is replaced.
////////////////////////////////////////////////////////////////////
138
ConstPointerTo< RenderAttrib > TexMatrixAttrib::add_stage(TextureStage *stage, TransformState const *transform, int override = (0)) const;

2379 12 remove_stage 0 4 3846 29 TexMatrixAttrib::remove_stage 0 1 142 337
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::remove_stage
//       Access: Published, Static
//  Description: Returns a new TexMatrixAttrib just like this one,
//               with the indicated stage removed.
////////////////////////////////////////////////////////////////////
88
ConstPointerTo< RenderAttrib > TexMatrixAttrib::remove_stage(TextureStage *stage) const;

2380 8 is_empty 0 4 3846 25 TexMatrixAttrib::is_empty 0 1 143 329
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::is_empty
//       Access: Published
//  Description: Returns true if no stages are defined in the
//               TexMatrixAttrib, false if at least one is.
////////////////////////////////////////////////////////////////////
43
bool TexMatrixAttrib::is_empty(void) const;

2381 9 has_stage 0 4 3846 26 TexMatrixAttrib::has_stage 0 1 144 442
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::has_stage
//       Access: Published
//  Description: Returns true if there is a transform associated with
//               the indicated stage, or false otherwise (in which
//               case get_transform(stage) will return the identity
//               transform).
////////////////////////////////////////////////////////////////////
59
bool TexMatrixAttrib::has_stage(TextureStage *stage) const;

2382 14 get_num_stages 0 4 3846 31 TexMatrixAttrib::get_num_stages 0 1 145 313
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_num_stages
//       Access: Published
//  Description: Returns the number of stages that are represented by
//               this attrib.
////////////////////////////////////////////////////////////////////
48
int TexMatrixAttrib::get_num_stages(void) const;

2383 9 get_stage 0 4 3846 26 TexMatrixAttrib::get_stage 0 1 146 364
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_stage
//       Access: Published
//  Description: Returns the nth stage that is represented by this
//               attrib.  The TextureStages are in no particular
//               order.
////////////////////////////////////////////////////////////////////
54
TextureStage *TexMatrixAttrib::get_stage(int n) const;

2384 7 get_mat 0 4 3846 24 TexMatrixAttrib::get_mat 0 2 147 148 725
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_mat
//       Access: Published
//  Description: Returns the transformation matrix associated with
//               the default texture stage.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_mat
//       Access: Published
//  Description: Returns the transformation matrix associated with
//               the indicated texture stage, or identity matrix if
//               nothing is associated with the indicated stage.
////////////////////////////////////////////////////////////////////
124
LMatrix4f const &TexMatrixAttrib::get_mat(void) const;
LMatrix4f const &TexMatrixAttrib::get_mat(TextureStage *stage) const;

2385 13 get_transform 0 4 3846 30 TexMatrixAttrib::get_transform 0 1 149 405
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_transform
//       Access: Published
//  Description: Returns the transformation associated with
//               the indicated texture stage, or identity matrix if
//               nothing is associated with the indicated stage.
////////////////////////////////////////////////////////////////////
91
ConstPointerTo< TransformState > TexMatrixAttrib::get_transform(TextureStage *stage) const;

2386 12 get_override 0 4 3846 29 TexMatrixAttrib::get_override 0 1 150 309
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_override
//       Access: Published
//  Description: Returns the override value associated with the
//               indicated stage.
////////////////////////////////////////////////////////////////////
68
inline int TexMatrixAttrib::get_override(TextureStage *stage) const;

2387 18 get_geom_rendering 0 4 3846 35 TexMatrixAttrib::get_geom_rendering 0 1 151 454
////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this TexMatrixAttrib is
//               applied to a geom which includes the indicated
//               geom_rendering bits.
////////////////////////////////////////////////////////////////////
73
inline int TexMatrixAttrib::get_geom_rendering(int geom_rendering) const;

2388 14 get_class_slot 0 4 3846 31 TexMatrixAttrib::get_class_slot 0 1 152 0
49
static int TexMatrixAttrib::get_class_slot(void);

2389 14 get_class_type 0 4 3846 31 TexMatrixAttrib::get_class_type 0 1 153 0
56
static TypeHandle TexMatrixAttrib::get_class_type(void);

2390 10 compare_to 0 4 3847 23 RenderState::compare_to 0 1 154 667
////////////////////////////////////////////////////////////////////
//     Function: RenderState::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               RenderStates, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               This method is not needed outside of the RenderState
//               class because all equivalent RenderState objects are
//               guaranteed to share the same pointer; thus, a pointer
//               comparison is always sufficient.
////////////////////////////////////////////////////////////////////
60
int RenderState::compare_to(RenderState const &other) const;

2391 12 compare_sort 0 4 3847 25 RenderState::compare_sort 0 1 155 620
////////////////////////////////////////////////////////////////////
//     Function: RenderState::compare_sort
//       Access: Published
//  Description: Returns -1, 0, or 1 according to the relative sorting
//               of these two RenderStates, with regards to rendering
//               performance, so that "heavier" RenderAttribs (as
//               defined by RenderAttribRegistry::get_slot_sort()) are
//               more likely to be grouped together.  This is not
//               related to the sorting order defined by compare_to.
////////////////////////////////////////////////////////////////////
62
int RenderState::compare_sort(RenderState const &other) const;

2392 8 get_hash 0 4 3847 21 RenderState::get_hash 0 1 156 752
// Filename: renderState.I
// Created by:  drose (21Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_hash
//       Access: Published
//  Description: Returns a suitable hash value for phash_map.
////////////////////////////////////////////////////////////////////
54
inline unsigned int RenderState::get_hash(void) const;

2393 8 is_empty 0 4 3847 21 RenderState::is_empty 0 1 157 273
////////////////////////////////////////////////////////////////////
//     Function: RenderState::is_empty
//       Access: Published
//  Description: Returns true if the state is empty, false otherwise.
////////////////////////////////////////////////////////////////////
46
inline bool RenderState::is_empty(void) const;

2394 17 has_cull_callback 0 4 3847 30 RenderState::has_cull_callback 0 1 158 371
////////////////////////////////////////////////////////////////////
//     Function: RenderState::has_cull_callback
//       Access: Published
//  Description: Returns true if any of the RenderAttribs in this
//               state request a cull_callback(), false if none of
//               them do.
////////////////////////////////////////////////////////////////////
55
inline bool RenderState::has_cull_callback(void) const;

2395 13 cull_callback 0 4 3847 26 RenderState::cull_callback 0 1 159 443
////////////////////////////////////////////////////////////////////
//     Function: RenderState::cull_callback
//       Access: Published
//  Description: Calls cull_callback() on each attrib.  If any attrib
//               returns false, interrupts the list and returns false
//               immediately; otherwise, completes the list and
//               returns true.
////////////////////////////////////////////////////////////////////
90
bool RenderState::cull_callback(CullTraverser *trav, CullTraverserData const &data) const;

2396 10 make_empty 0 4 3847 23 RenderState::make_empty 0 1 160 276
////////////////////////////////////////////////////////////////////
//     Function: RenderState::make_empty
//       Access: Published, Static
//  Description: Returns a RenderState with no attributes set.
////////////////////////////////////////////////////////////////////
67
static ConstPointerTo< RenderState > RenderState::make_empty(void);

2397 17 make_full_default 0 4 3847 30 RenderState::make_full_default 0 1 161 333
////////////////////////////////////////////////////////////////////
//     Function: RenderState::make_full_default
//       Access: Published, Static
//  Description: Returns a RenderState with all possible attributes
//               set to their default value.
////////////////////////////////////////////////////////////////////
74
static ConstPointerTo< RenderState > RenderState::make_full_default(void);

2398 4 make 0 4 3847 17 RenderState::make 0 8 162 163 164 165 166 167 168 169 1363
////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with one attribute set.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with two attributes set.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with three attributes set.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with four attributes set.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with n attributes set.
////////////////////////////////////////////////////////////////////
720
static ConstPointerTo< RenderState > RenderState::make(RenderAttrib const *attrib, int override = (0));
static ConstPointerTo< RenderState > RenderState::make(RenderAttrib const *attrib1, RenderAttrib const *attrib2, int override = (0));
static ConstPointerTo< RenderState > RenderState::make(RenderAttrib const *attrib1, RenderAttrib const *attrib2, RenderAttrib const *attrib3, int override = (0));
static ConstPointerTo< RenderState > RenderState::make(RenderAttrib const *attrib1, RenderAttrib const *attrib2, RenderAttrib const *attrib3, RenderAttrib const *attrib4, int override = (0));
static ConstPointerTo< RenderState > RenderState::make(RenderAttrib const *const *attrib, int num_attribs, int override = (0));

2399 7 compose 0 4 3847 20 RenderState::compose 0 1 170 711
////////////////////////////////////////////////////////////////////
//     Function: RenderState::compose
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               composition of this state with the other state.
//
//               The result of this operation is cached, and will be
//               retained as long as both this RenderState object and
//               the other RenderState object continue to exist.
//               Should one of them destruct, the cached entry will be
//               removed, and its pointer will be allowed to destruct
//               as well.
////////////////////////////////////////////////////////////////////
83
ConstPointerTo< RenderState > RenderState::compose(RenderState const *other) const;

2400 14 invert_compose 0 4 3847 27 RenderState::invert_compose 0 1 171 557
////////////////////////////////////////////////////////////////////
//     Function: RenderState::invert_compose
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               composition of this state's inverse with the other
//               state.
//
//               This is similar to compose(), but is particularly
//               useful for computing the relative state of a node as
//               viewed from some other node.
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< RenderState > RenderState::invert_compose(RenderState const *other) const;

2401 10 add_attrib 0 4 3847 23 RenderState::add_attrib 0 2 172 173 505
////////////////////////////////////////////////////////////////////
//     Function: RenderState::add_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the new RenderAttrib
//               added.  If there is already a RenderAttrib with the
//               same type, it is replaced (unless the override is
//               lower).
////////////////////////////////////////////////////////////////////
108
ConstPointerTo< RenderState > RenderState::add_attrib(RenderAttrib const *attrib, int override = (0)) const;

2402 10 set_attrib 0 4 3847 23 RenderState::set_attrib 0 2 174 175 1060
////////////////////////////////////////////////////////////////////
//     Function: RenderState::set_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the new RenderAttrib
//               added.  If there is already a RenderAttrib with the
//               same type, it is replaced unconditionally.  The
//               override is not changed.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderState::set_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the new RenderAttrib
//               added.  If there is already a RenderAttrib with the
//               same type, it is replaced unconditionally.  The
//               override is also replaced unconditionally.
////////////////////////////////////////////////////////////////////
191
ConstPointerTo< RenderState > RenderState::set_attrib(RenderAttrib const *attrib) const;
ConstPointerTo< RenderState > RenderState::set_attrib(RenderAttrib const *attrib, int override) const;

2403 13 remove_attrib 0 4 3847 26 RenderState::remove_attrib 0 2 176 177 760
////////////////////////////////////////////////////////////////////
//     Function: RenderState::remove_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the indicated
//               RenderAttrib removed.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderState::remove_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the indicated
//               RenderAttrib removed.
////////////////////////////////////////////////////////////////////
161
inline ConstPointerTo< RenderState > RenderState::remove_attrib(TypeHandle type) const;
ConstPointerTo< RenderState > RenderState::remove_attrib(int slot) const;

2404 21 adjust_all_priorities 0 4 3847 34 RenderState::adjust_all_priorities 0 1 178 543
////////////////////////////////////////////////////////////////////
//     Function: RenderState::adjust_all_priorities
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with all attributes'
//               override values incremented (or decremented, if
//               negative) by the indicated amount.  If the override
//               would drop below zero, it is set to zero.
////////////////////////////////////////////////////////////////////
87
ConstPointerTo< RenderState > RenderState::adjust_all_priorities(int adjustment) const;

2405 10 has_attrib 0 4 3847 23 RenderState::has_attrib 0 2 179 180 634
////////////////////////////////////////////////////////////////////
//     Function: RenderState::has_attrib
//       Access: Published
//  Description: Returns true if an attrib of the indicated type is
//               present, false otherwise.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderState::has_attrib
//       Access: Published
//  Description: Returns true if an attrib of the indicated type is
//               present, false otherwise.
////////////////////////////////////////////////////////////////////
112
inline bool RenderState::has_attrib(TypeHandle type) const;
inline bool RenderState::has_attrib(int slot) const;

2406 10 get_attrib 0 4 3847 23 RenderState::get_attrib 0 2 181 182 739
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_attrib
//       Access: Published
//  Description: Looks for a RenderAttrib of the indicated type in the
//               state, and returns it if it is found, or NULL if it
//               is not.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_attrib
//       Access: Published
//  Description: Returns the RenderAttrib with the indicated slot
//               index, or NULL if there is no such RenderAttrib in
//               the state.
////////////////////////////////////////////////////////////////////
142
inline RenderAttrib const *RenderState::get_attrib(TypeHandle type) const;
inline RenderAttrib const *RenderState::get_attrib(int slot) const;

2407 14 get_attrib_def 0 4 3847 27 RenderState::get_attrib_def 0 1 183 399
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_attrib_def
//       Access: Published
//  Description: Returns the RenderAttrib with the indicated slot
//               index, or the default attrib for that slot if there
//               is no such RenderAttrib in the state.
////////////////////////////////////////////////////////////////////
71
inline RenderAttrib const *RenderState::get_attrib_def(int slot) const;

2408 12 get_override 0 4 3847 25 RenderState::get_override 0 2 184 185 772
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_override
//       Access: Published
//  Description: Looks for a RenderAttrib of the indicated type in the
//               state, and returns its override value if it is found,
//               or 0 if it is not.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_override
//       Access: Published
//  Description: Looks for a RenderAttrib of the indicated type in the
//               state, and returns its override value if it is found,
//               or 0 if it is not.
////////////////////////////////////////////////////////////////////
114
inline int RenderState::get_override(TypeHandle type) const;
inline int RenderState::get_override(int slot) const;

2409 10 get_unique 0 4 3847 23 RenderState::get_unique 0 1 186 613
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_unique
//       Access: Published
//  Description: Returns the pointer to the unique RenderState in
//               the cache that is equivalent to this one.  This may
//               be the same pointer as this object, or it may be a
//               different pointer; but it will be an equivalent
//               object, and it will be a shared pointer.  This may be
//               called from time to time to improve cache benefits.
////////////////////////////////////////////////////////////////////
73
inline ConstPointerTo< RenderState > RenderState::get_unique(void) const;

2410 9 cache_ref 0 4 3847 22 RenderState::cache_ref 0 1 187 275
////////////////////////////////////////////////////////////////////
//     Function: RenderState::cache_ref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
////////////////////////////////////////////////////////////////////
47
inline void RenderState::cache_ref(void) const;

2411 11 cache_unref 0 4 3847 24 RenderState::cache_unref 0 1 188 277
////////////////////////////////////////////////////////////////////
//     Function: RenderState::cache_unref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
////////////////////////////////////////////////////////////////////
49
inline bool RenderState::cache_unref(void) const;

2412 8 node_ref 0 4 3847 21 RenderState::node_ref 0 1 189 274
////////////////////////////////////////////////////////////////////
//     Function: RenderState::node_ref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
////////////////////////////////////////////////////////////////////
46
inline void RenderState::node_ref(void) const;

2413 10 node_unref 0 4 3847 23 RenderState::node_unref 0 1 190 276
////////////////////////////////////////////////////////////////////
//     Function: RenderState::node_unref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
////////////////////////////////////////////////////////////////////
48
inline bool RenderState::node_unref(void) const;

2414 33 get_composition_cache_num_entries 0 4 3847 46 RenderState::get_composition_cache_num_entries 0 1 191 566
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_composition_cache_num_entries
//       Access: Published
//  Description: Returns the number of entries in the composition
//               cache for this RenderState.  This is the number of
//               other RenderStates whose composition with this one
//               has been cached.  This number is not useful for any
//               practical reason other than performance analysis.
////////////////////////////////////////////////////////////////////
70
inline int RenderState::get_composition_cache_num_entries(void) const;

2415 40 get_invert_composition_cache_num_entries 0 4 3847 53 RenderState::get_invert_composition_cache_num_entries 0 1 192 553
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_invert_composition_cache_num_entries
//       Access: Published
//  Description: Returns the number of entries in the
//               invert_composition cache for this RenderState.
//               This is similar to the composition cache, but it
//               records cache entries for the invert_compose()
//               operation.  See get_composition_cache_num_entries().
////////////////////////////////////////////////////////////////////
77
inline int RenderState::get_invert_composition_cache_num_entries(void) const;

2416 26 get_composition_cache_size 0 4 3847 39 RenderState::get_composition_cache_size 0 1 193 649
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_composition_cache_size
//       Access: Published
//  Description: Returns the number of slots in the composition
//               cache for this RenderState.  You may use this as
//               an upper bound when walking through all of the
//               composition cache results via
//               get_composition_cache_source() or result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
63
inline int RenderState::get_composition_cache_size(void) const;

2417 28 get_composition_cache_source 0 4 3847 41 RenderState::get_composition_cache_source 0 1 194 602
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_composition_cache_source
//       Access: Published
//  Description: Returns the source RenderState of the nth element
//               in the composition cache.  Returns NULL if there
//               doesn't happen to be an entry in the nth element.
//               See get_composition_cache_result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
81
inline RenderState const *RenderState::get_composition_cache_source(int n) const;

2418 28 get_composition_cache_result 0 4 3847 41 RenderState::get_composition_cache_result 0 1 195 701
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_composition_cache_result
//       Access: Published
//  Description: Returns the result RenderState of the nth element
//               in the composition cache.  Returns NULL if there
//               doesn't happen to be an entry in the nth element.
//
//               In general,
//               a->compose(a->get_composition_cache_source(n)) ==
//               a->get_composition_cache_result(n).
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
81
inline RenderState const *RenderState::get_composition_cache_result(int n) const;

2419 33 get_invert_composition_cache_size 0 4 3847 46 RenderState::get_invert_composition_cache_size 0 1 196 663
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_invert_composition_cache_size
//       Access: Published
//  Description: Returns the number of slots in the composition
//               cache for this RenderState.  You may use this as
//               an upper bound when walking through all of the
//               composition cache results via
//               get_invert_composition_cache_source() or result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
70
inline int RenderState::get_invert_composition_cache_size(void) const;

2420 35 get_invert_composition_cache_source 0 4 3847 48 RenderState::get_invert_composition_cache_source 0 1 197 624
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_invert_composition_cache_source
//       Access: Published
//  Description: Returns the source RenderState of the nth element
//               in the invert composition cache.  Returns NULL if
//               there doesn't happen to be an entry in the nth
//               element.  See get_invert_composition_cache_result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
88
inline RenderState const *RenderState::get_invert_composition_cache_source(int n) const;

2421 35 get_invert_composition_cache_result 0 4 3847 48 RenderState::get_invert_composition_cache_result 0 1 198 753
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_invert_composition_cache_result
//       Access: Published
//  Description: Returns the result RenderState of the nth element
//               in the invert composition cache.  Returns NULL if
//               there doesn't happen to be an entry in the nth
//               element.
//
//               In general,
//               a->invert_compose(a->get_invert_composition_cache_source(n))
//               == a->get_invert_composition_cache_result(n).
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
////////////////////////////////////////////////////////////////////
88
inline RenderState const *RenderState::get_invert_composition_cache_result(int n) const;

2422 21 get_composition_cache 0 4 3847 34 RenderState::get_composition_cache 0 1 199 0
57
PyObject *RenderState::get_composition_cache(void) const;

2423 28 get_invert_composition_cache 0 4 3847 41 RenderState::get_invert_composition_cache 0 1 200 0
64
PyObject *RenderState::get_invert_composition_cache(void) const;

2424 21 get_auto_shader_state 0 4 3847 34 RenderState::get_auto_shader_state 0 1 201 831
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_auto_shader_state
//       Access: Published
//  Description: Returns the base RenderState that should have the
//               generated_shader stored within it, for generated
//               shader states.  The returned object might be the same
//               as this object, or it might be a different
//               RenderState with certain attributes removed, or set
//               to their default values.
//
//               The point is to avoid needless regeneration of the
//               shader attrib by storing the generated shader on a
//               common RenderState object, with all irrelevant
//               attributes removed.
////////////////////////////////////////////////////////////////////
66
RenderState const *RenderState::get_auto_shader_state(void) const;

2425 6 output 0 4 3847 19 RenderState::output 0 1 202 219
////////////////////////////////////////////////////////////////////
//     Function: RenderState::output
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
45
void RenderState::output(ostream &out) const;

2426 5 write 0 4 3847 18 RenderState::write 0 1 203 218
////////////////////////////////////////////////////////////////////
//     Function: RenderState::write
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
62
void RenderState::write(ostream &out, int indent_level) const;

2427 16 get_max_priority 0 4 3847 29 RenderState::get_max_priority 0 1 204 599
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_max_priority
//       Access: Published, Static
//  Description: Returns the maximum priority number (sometimes called
//               override) that may be set on any node.  This may or
//               may not be enforced, but the scene graph code assumes
//               that no priority numbers will be larger than this,
//               and some effects may not work properly if you use a
//               larger number.
////////////////////////////////////////////////////////////////////
47
static int RenderState::get_max_priority(void);

2428 14 get_num_states 0 4 3847 27 RenderState::get_num_states 0 1 205 399
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_num_states
//       Access: Published, Static
//  Description: Returns the total number of unique RenderState
//               objects allocated in the world.  This will go up and
//               down during normal operations.
////////////////////////////////////////////////////////////////////
45
static int RenderState::get_num_states(void);

2429 21 get_num_unused_states 0 4 3847 34 RenderState::get_num_unused_states 0 1 206 990
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_num_unused_states
//       Access: Published, Static
//  Description: Returns the total number of RenderState objects that
//               have been allocated but have no references outside of
//               the internal RenderState cache.
//
//               A nonzero return value is not necessarily indicative
//               of leaked references; it is normal for two
//               RenderState objects, both of which have references
//               held outside the cache, to have to result of their
//               composition stored within the cache.  This result
//               will be retained within the cache until one of the
//               base RenderStates is released.
//
//               Use list_cycles() to get an idea of the number of
//               actual "leaked" RenderState objects.
////////////////////////////////////////////////////////////////////
52
static int RenderState::get_num_unused_states(void);

2430 11 clear_cache 0 4 3847 24 RenderState::clear_cache 0 1 207 997
////////////////////////////////////////////////////////////////////
//     Function: RenderState::clear_cache
//       Access: Published, Static
//  Description: Empties the cache of composed RenderStates.  This
//               makes every RenderState forget what results when
//               it is composed with other RenderStates.
//
//               This will eliminate any RenderState objects that
//               have been allocated but have no references outside of
//               the internal RenderState map.  It will not
//               eliminate RenderState objects that are still in
//               use.
//
//               Nowadays, this method should not be necessary, as
//               reference-count cycles in the composition cache
//               should be automatically detected and broken.
//
//               The return value is the number of RenderStates
//               freed by this operation.
////////////////////////////////////////////////////////////////////
42
static int RenderState::clear_cache(void);

2431 18 clear_munger_cache 0 4 3847 31 RenderState::clear_munger_cache 0 1 208 405
////////////////////////////////////////////////////////////////////
//     Function: RenderState::clear_munger_cache
//       Access: Published, Static
//  Description: Completely empties the cache of state + gsg ->
//               munger, for all states and all gsg's.  Normally there
//               is no need to empty this cache.
////////////////////////////////////////////////////////////////////
50
static void RenderState::clear_munger_cache(void);

2432 15 garbage_collect 0 4 3847 28 RenderState::garbage_collect 0 1 209 698
////////////////////////////////////////////////////////////////////
//     Function: RenderState::garbage_collect
//       Access: Published, Static
//  Description: Performs a garbage-collection cycle.  This must be
//               called periodically if garbage-collect-states is true
//               to ensure that RenderStates get cleaned up
//               appropriately.  It does no harm to call it even if
//               this variable is not true, but there is probably no
//               advantage in that case.
//
//               This automatically calls
//               RenderAttrib::garbage_collect() as well.
////////////////////////////////////////////////////////////////////
46
static int RenderState::garbage_collect(void);

2433 11 list_cycles 0 4 3847 24 RenderState::list_cycles 0 1 210 948
////////////////////////////////////////////////////////////////////
//     Function: RenderState::list_cycles
//       Access: Published, Static
//  Description: Detects all of the reference-count cycles in the
//               cache and reports them to standard output.
//
//               These cycles may be inadvertently created when state
//               compositions cycle back to a starting point.
//               Nowadays, these cycles should be automatically
//               detected and broken, so this method should never list
//               any cycles unless there is a bug in that detection
//               logic.
//
//               The cycles listed here are not leaks in the strictest
//               sense of the word, since they can be reclaimed by a
//               call to clear_cache(); but they will not be reclaimed
//               automatically.
////////////////////////////////////////////////////////////////////
51
static void RenderState::list_cycles(ostream &out);

2434 11 list_states 0 4 3847 24 RenderState::list_states 0 1 211 418
////////////////////////////////////////////////////////////////////
//     Function: RenderState::list_states
//       Access: Published, Static
//  Description: Lists all of the RenderStates in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
////////////////////////////////////////////////////////////////////
51
static void RenderState::list_states(ostream &out);

2435 15 validate_states 0 4 3847 28 RenderState::validate_states 0 1 212 580
////////////////////////////////////////////////////////////////////
//     Function: RenderState::validate_states
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order, and that none of the cache elements have been
//               inadvertently deleted.  Returns true if so, false if
//               there is a problem (which implies someone has
//               modified one of the supposedly-const RenderState
//               objects).
////////////////////////////////////////////////////////////////////
47
static bool RenderState::validate_states(void);

2436 10 get_states 0 4 3847 23 RenderState::get_states 0 1 213 0
47
static PyObject *RenderState::get_states(void);

2437 14 get_draw_order 0 4 3847 27 RenderState::get_draw_order 0 1 214 529
// These methods are intended for use by low-level code, but they're
// also handy enough to expose to high-level users.

////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_draw_order
//       Access: Published
//  Description: Returns the draw order indicated by the
//               CullBinAttrib, if any, associated by this state (or 0
//               if there is no CullBinAttrib).  See get_bin_index().
////////////////////////////////////////////////////////////////////
51
inline int RenderState::get_draw_order(void) const;

2438 13 get_bin_index 0 4 3847 26 RenderState::get_bin_index 0 1 215 642
// These methods are intended for use by low-level code, but they're
// also handy enough to expose to high-level users.

////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_bin_index
//       Access: Published
//  Description: Returns the bin index indicated by the CullBinAttrib,
//               if any, associated by this state (or the default bin
//               index if there is no CullBinAttrib).  This function
//               is provided as an optimization for determining this
//               at render time.
////////////////////////////////////////////////////////////////////
50
inline int RenderState::get_bin_index(void) const;

2439 18 get_geom_rendering 0 4 3847 31 RenderState::get_geom_rendering 0 1 216 446
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this RenderState is
//               applied to a geom which includes the indicated
//               geom_rendering bits.
////////////////////////////////////////////////////////////////////
62
int RenderState::get_geom_rendering(int geom_rendering) const;

2440 14 get_class_type 0 4 3847 27 RenderState::get_class_type 0 1 217 0
52
static TypeHandle RenderState::get_class_type(void);

2441 4 make 0 4 3848 21 AlphaTestAttrib::make 0 1 218 269
////////////////////////////////////////////////////////////////////
//     Function: AlphaTestAttrib::make
//       Access: Published, Static
//  Description: Constructs a new AlphaTestAttrib object.
////////////////////////////////////////////////////////////////////
120
static ConstPointerTo< RenderAttrib > AlphaTestAttrib::make(RenderAttrib::PandaCompareFunc mode, float reference_alpha);

2442 12 make_default 0 4 3848 29 AlphaTestAttrib::make_default 0 1 219 402
////////////////////////////////////////////////////////////////////
//     Function: AlphaTestAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
74
static ConstPointerTo< RenderAttrib > AlphaTestAttrib::make_default(void);

2443 19 get_reference_alpha 0 4 3848 36 AlphaTestAttrib::get_reference_alpha 0 1 220 270
////////////////////////////////////////////////////////////////////
//     Function: AlphaTestAttrib::get_reference_alpha
//       Access: Published
//  Description: Returns the alpha reference value.
////////////////////////////////////////////////////////////////////
62
inline float AlphaTestAttrib::get_reference_alpha(void) const;

2444 8 get_mode 0 4 3848 25 AlphaTestAttrib::get_mode 0 1 221 254
////////////////////////////////////////////////////////////////////
//     Function: AlphaTestAttrib::get_mode
//       Access: Published
//  Description: Returns the alpha write mode.
////////////////////////////////////////////////////////////////////
76
inline RenderAttrib::PandaCompareFunc AlphaTestAttrib::get_mode(void) const;

2445 14 get_class_slot 0 4 3848 31 AlphaTestAttrib::get_class_slot 0 1 222 0
49
static int AlphaTestAttrib::get_class_slot(void);

2446 14 get_class_type 0 4 3848 31 AlphaTestAttrib::get_class_type 0 1 223 0
56
static TypeHandle AlphaTestAttrib::get_class_type(void);

2447 16 ~AlphaTestAttrib 0 4 3848 33 AlphaTestAttrib::~AlphaTestAttrib 0 0 0
40
AlphaTestAttrib::~AlphaTestAttrib(void);

2448 4 make 0 4 3849 21 AntialiasAttrib::make 0 1 224 1915
////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::make
//       Access: Published, Static
//  Description: Constructs a new AntialiasAttrib object.
//
//               The mode should be either M_none, M_auto, or a union
//               of any or all of M_point, M_line, M_polygon, and
//               M_multisample.  Also, in addition to the above
//               choices, it may include either of M_better of
//               M_faster to specify a performance/quality tradeoff
//               hint.
//
//               If M_none is specified, no antialiasing is performed.
//
//               If M_multisample is specified, it means to use the
//               special framebuffer multisample bits for
//               antialiasing, if it is available.  If so, the
//               M_point, M_line, and M_polygon modes are ignored.
//               This advanced antialiasing mode is only available on
//               certain graphics hardware.  If it is not available,
//               the M_multisample bit is ignored (and the other modes
//               may be used instead, if specified).
//
//               M_point, M_line, and/or M_polygon specify
//               per-primitive smoothing.  When enabled, M_point and
//               M_line may force transparency on.  M_polygon requires
//               a frame buffer that includes an alpha channel, and it
//               works best if the primitives are sorted
//               front-to-back.
//
//               If M_auto is specified, M_multisample is selected if
//               it is available, otherwise M_polygon is selected,
//               unless drawing lines or points, in which case M_line
//               or M_point is selected (these two generally produce
//               better results than M_multisample)
////////////////////////////////////////////////////////////////////
85
static ConstPointerTo< RenderAttrib > AntialiasAttrib::make(unsigned short int mode);

2449 12 make_default 0 4 3849 29 AntialiasAttrib::make_default 0 1 225 402
////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
74
static ConstPointerTo< RenderAttrib > AntialiasAttrib::make_default(void);

2450 8 get_mode 0 4 3849 25 AntialiasAttrib::get_mode 0 1 226 262
////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::get_mode
//       Access: Published
//  Description: Returns the specified antialias mode.
////////////////////////////////////////////////////////////////////
64
inline unsigned short int AntialiasAttrib::get_mode(void) const;

2451 13 get_mode_type 0 4 3849 30 AntialiasAttrib::get_mode_type 0 1 227 465
////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::get_mode_type
//       Access: Published
//  Description: Returns the specified antialias mode, with the
//               quality bits masked out.  This therefore indicates
//               only the requested type of antialiasing: M_none,
//               M_auto, or some specific combination.
////////////////////////////////////////////////////////////////////
69
inline unsigned short int AntialiasAttrib::get_mode_type(void) const;

2452 16 get_mode_quality 0 4 3849 33 AntialiasAttrib::get_mode_quality 0 1 228 478
////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::get_mode_quality
//       Access: Published
//  Description: Returns the specified antialias mode, with the type
//               bits masked out.  This therefore indicates only the
//               requested quality settings: one of M_faster,
//               M_better, M_dont_care, or zero (unspecified).
////////////////////////////////////////////////////////////////////
72
inline unsigned short int AntialiasAttrib::get_mode_quality(void) const;

2453 14 get_class_slot 0 4 3849 31 AntialiasAttrib::get_class_slot 0 1 229 0
49
static int AntialiasAttrib::get_class_slot(void);

2454 14 get_class_type 0 4 3849 31 AntialiasAttrib::get_class_type 0 1 230 0
56
static TypeHandle AntialiasAttrib::get_class_type(void);

2455 16 ~AntialiasAttrib 0 4 3849 33 AntialiasAttrib::~AntialiasAttrib 0 0 0
40
AntialiasAttrib::~AntialiasAttrib(void);

2456 10 compare_to 0 4 3851 24 RenderEffect::compare_to 0 1 231 1159
// Filename: renderEffect.I
// Created by:  drose (14Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               RenderEffects, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               This method is not needed outside of the RenderEffect
//               class because all equivalent RenderEffect objects are
//               guaranteed to share the same pointer; thus, a pointer
//               comparison is always sufficient.
////////////////////////////////////////////////////////////////////
69
inline int RenderEffect::compare_to(RenderEffect const &other) const;

2457 6 output 0 6 3851 20 RenderEffect::output 0 1 232 229
////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::output
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
54
virtual void RenderEffect::output(ostream &out) const;

2458 5 write 0 6 3851 19 RenderEffect::write 0 1 233 228
////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::write
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
71
virtual void RenderEffect::write(ostream &out, int indent_level) const;

2459 15 get_num_effects 0 4 3851 29 RenderEffect::get_num_effects 0 1 234 402
////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::get_num_effects
//       Access: Published, Static
//  Description: Returns the total number of unique RenderEffect
//               objects allocated in the world.  This will go up and
//               down during normal operations.
////////////////////////////////////////////////////////////////////
47
static int RenderEffect::get_num_effects(void);

2460 12 list_effects 0 4 3851 26 RenderEffect::list_effects 0 1 235 421
////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::list_effects
//       Access: Published, Static
//  Description: Lists all of the RenderEffects in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
////////////////////////////////////////////////////////////////////
53
static void RenderEffect::list_effects(ostream &out);

2461 16 validate_effects 0 4 3851 30 RenderEffect::validate_effects 0 1 236 480
////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::validate_effects
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order.  Returns true if so, false if there is a
//               problem (which implies someone has modified one of
//               the supposedly-const RenderEffect objects).
////////////////////////////////////////////////////////////////////
49
static bool RenderEffect::validate_effects(void);

2462 14 get_class_type 0 4 3851 28 RenderEffect::get_class_type 0 1 237 0
53
static TypeHandle RenderEffect::get_class_type(void);

2463 10 operator < 0 4 3852 25 RenderEffects::operator < 0 1 238 674
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::operator <
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               RenderEffects, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               This method is not needed outside of the RenderEffects
//               class because all equivalent RenderEffects objects are
//               guaranteed to share the same pointer; thus, a pointer
//               comparison is always sufficient.
////////////////////////////////////////////////////////////////////
65
bool RenderEffects::operator <(RenderEffects const &other) const;

2464 8 is_empty 0 4 3852 23 RenderEffects::is_empty 0 1 239 275
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::is_empty
//       Access: Published
//  Description: Returns true if the state is empty, false otherwise.
////////////////////////////////////////////////////////////////////
48
inline bool RenderEffects::is_empty(void) const;

2465 15 get_num_effects 0 4 3852 30 RenderEffects::get_num_effects 0 1 240 309
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::get_num_effects
//       Access: Published
//  Description: Returns the number of separate effects indicated
//               in the state.
////////////////////////////////////////////////////////////////////
54
inline int RenderEffects::get_num_effects(void) const;

2466 10 get_effect 0 4 3852 25 RenderEffects::get_effect 0 2 241 242 644
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::get_effect
//       Access: Published
//  Description: Returns the nth effect in the state.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::get_effect
//       Access: Published, Virtual
//  Description: Looks for a RenderEffect of the indicated type in the
//               state, and returns it if it is found, or NULL if it
//               is not.
////////////////////////////////////////////////////////////////////
136
inline RenderEffect const *RenderEffects::get_effect(int n) const;
RenderEffect const *RenderEffects::get_effect(TypeHandle type) const;

2467 11 find_effect 0 4 3852 26 RenderEffects::find_effect 0 1 243 378
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::find_effect
//       Access: Published
//  Description: Searches for an effect with the indicated type in
//               the state, and returns its index if it is found, or
//               -1 if it is not.
////////////////////////////////////////////////////////////////////
54
int RenderEffects::find_effect(TypeHandle type) const;

2468 10 make_empty 0 4 3852 25 RenderEffects::make_empty 0 1 244 277
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make_empty
//       Access: Published, Static
//  Description: Returns a RenderEffects with no effects set.
////////////////////////////////////////////////////////////////////
71
static ConstPointerTo< RenderEffects > RenderEffects::make_empty(void);

2469 4 make 0 4 3852 19 RenderEffects::make 0 4 245 246 247 248 1096
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make
//       Access: Published, Static
//  Description: Returns a RenderEffects with one effect set.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make
//       Access: Published, Static
//  Description: Returns a RenderEffects with two effects set.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make
//       Access: Published, Static
//  Description: Returns a RenderEffects with three effects set.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make
//       Access: Published, Static
//  Description: Returns a RenderEffects with four effects set.
////////////////////////////////////////////////////////////////////
528
static ConstPointerTo< RenderEffects > RenderEffects::make(RenderEffect const *effect);
static ConstPointerTo< RenderEffects > RenderEffects::make(RenderEffect const *effect1, RenderEffect const *effect2);
static ConstPointerTo< RenderEffects > RenderEffects::make(RenderEffect const *effect1, RenderEffect const *effect2, RenderEffect const *effect3);
static ConstPointerTo< RenderEffects > RenderEffects::make(RenderEffect const *effect1, RenderEffect const *effect2, RenderEffect const *effect3, RenderEffect const *effect4);

2470 10 add_effect 0 4 3852 25 RenderEffects::add_effect 0 1 249 461
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::add_effect
//       Access: Published
//  Description: Returns a new RenderEffects object that represents the
//               same as the source state, with the new RenderEffect
//               added.  If there is already a RenderEffect with the
//               same type, it is replaced.
////////////////////////////////////////////////////////////////////
92
ConstPointerTo< RenderEffects > RenderEffects::add_effect(RenderEffect const *effect) const;

2471 13 remove_effect 0 4 3852 28 RenderEffects::remove_effect 0 1 250 383
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::remove_effect
//       Access: Published
//  Description: Returns a new RenderEffects object that represents the
//               same as the source state, with the indicated
//               RenderEffect removed.
////////////////////////////////////////////////////////////////////
84
ConstPointerTo< RenderEffects > RenderEffects::remove_effect(TypeHandle type) const;

2472 6 output 0 4 3852 21 RenderEffects::output 0 1 251 230
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::output
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
47
void RenderEffects::output(ostream &out) const;

2473 5 write 0 4 3852 20 RenderEffects::write 0 1 252 229
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::write
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
64
void RenderEffects::write(ostream &out, int indent_level) const;

2474 14 get_num_states 0 4 3852 29 RenderEffects::get_num_states 0 1 253 403
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::get_num_states
//       Access: Published, Static
//  Description: Returns the total number of unique RenderEffects
//               objects allocated in the world.  This will go up and
//               down during normal operations.
////////////////////////////////////////////////////////////////////
47
static int RenderEffects::get_num_states(void);

2475 11 list_states 0 4 3852 26 RenderEffects::list_states 0 1 254 421
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::list_states
//       Access: Published, Static
//  Description: Lists all of the RenderEffects in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
////////////////////////////////////////////////////////////////////
53
static void RenderEffects::list_states(ostream &out);

2476 15 validate_states 0 4 3852 30 RenderEffects::validate_states 0 1 255 481
////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::validate_states
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order.  Returns true if so, false if there is a
//               problem (which implies someone has modified one of
//               the supposedly-const RenderEffects objects).
////////////////////////////////////////////////////////////////////
49
static bool RenderEffects::validate_states(void);

2477 14 get_class_type 0 4 3852 29 RenderEffects::get_class_type 0 1 256 0
54
static TypeHandle RenderEffects::get_class_type(void);

2478 23 upcast_to_TypedWritable 0 12 3853 34 PandaNode::upcast_to_TypedWritable 0 1 435 38
upcast from PandaNode to TypedWritable
56
TypedWritable *PandaNode::upcast_to_TypedWritable(void);

2479 21 downcast_to_PandaNode 0 12 3854 36 TypedWritable::downcast_to_PandaNode 0 1 436 40
downcast from TypedWritable to PandaNode
54
PandaNode *TypedWritable::downcast_to_PandaNode(void);

2480 17 upcast_to_Namable 0 12 3853 28 PandaNode::upcast_to_Namable 0 1 437 32
upcast from PandaNode to Namable
44
Namable *PandaNode::upcast_to_Namable(void);

2481 21 downcast_to_PandaNode 0 12 3855 30 Namable::downcast_to_PandaNode 0 1 438 34
downcast from Namable to PandaNode
48
PandaNode *Namable::downcast_to_PandaNode(void);

2482 24 upcast_to_LinkedListNode 0 12 3853 35 PandaNode::upcast_to_LinkedListNode 0 1 439 39
upcast from PandaNode to LinkedListNode
58
LinkedListNode *PandaNode::upcast_to_LinkedListNode(void);

2483 21 downcast_to_PandaNode 0 12 3856 37 LinkedListNode::downcast_to_PandaNode 0 1 440 41
downcast from LinkedListNode to PandaNode
55
PandaNode *LinkedListNode::downcast_to_PandaNode(void);

2484 24 upcast_to_ReferenceCount 0 12 3853 35 PandaNode::upcast_to_ReferenceCount 0 1 441 39
upcast from PandaNode to ReferenceCount
58
ReferenceCount *PandaNode::upcast_to_ReferenceCount(void);

2485 9 PandaNode 0 4 3853 20 PandaNode::PandaNode 0 1 257 1769
//
// There are two different interfaces here for making and breaking
// parent-child connections: the fundamental PandaNode interface, via
// add_child() and remove_child() (and related functions), and the
// NodePath support interface, via attach(), detach(), and reparent().
// They both do essentially the same thing, but with slightly
// different inputs.  The PandaNode interfaces try to guess which
// NodePaths should be updated as a result of the scene graph change,
// while the NodePath interfaces already know.
//
// The NodePath support interface functions are strictly called from
// within the NodePath class, and are used to implement
// NodePath::reparent_to() and NodePath::remove_node(), etc.  The
// fundamental interface, on the other hand, is intended to be called
// directly by the user.
//
// The fundamental interface has a slightly lower overhead because it
// does not need to create a NodePathComponent chain where one does
// not already exist; however, the NodePath support interface is more
// useful when the NodePath already does exist, because it ensures
// that the particular NodePath calling it is kept appropriately
// up-to-date.
//
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::Copy Constructor
//       Access: Protected
//  Description: Do not call the copy constructor directly; instead,
//               use make_copy() or copy_subgraph() to make a copy of
//               a node.
////////////////////////////////////////////////////////////////////
55
PandaNode::PandaNode(basic_string< char > const &name);

2486 10 ~PandaNode 0 6 3853 21 PandaNode::~PandaNode 0 0 229
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::Destructor
//       Access: Published, Virtual
//  Description:
////////////////////////////////////////////////////////////////////
36
virtual PandaNode::~PandaNode(void);

2487 12 combine_with 0 6 3853 23 PandaNode::combine_with 0 1 258 877
//published so that characters can be combined.

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::combine_with
//       Access: Public, Virtual
//  Description: Collapses this PandaNode with the other PandaNode, if
//               possible, and returns a pointer to the combined
//               PandaNode, or NULL if the two PandaNodes cannot
//               safely be combined.
//
//               The return value may be this, other, or a new
//               PandaNode altogether.
//
//               This function is called from GraphReducer::flatten(),
//               and need not deal with children; its job is just to
//               decide whether to collapse the two PandaNodes and
//               what the collapsed PandaNode should look like.
////////////////////////////////////////////////////////////////////
61
virtual PandaNode *PandaNode::combine_with(PandaNode *other);

2488 9 make_copy 0 6 3853 20 PandaNode::make_copy 0 1 259 514
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::make_copy
//       Access: Published, Virtual
//  Description: Returns a newly-allocated PandaNode that is a shallow
//               copy of this one.  It will be a different pointer,
//               but its internal data may or may not be shared with
//               that of the original PandaNode.  No children will be
//               copied.
////////////////////////////////////////////////////////////////////
52
virtual PandaNode *PandaNode::make_copy(void) const;

2489 13 copy_subgraph 0 4 3853 24 PandaNode::copy_subgraph 0 2 260 261 535
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_subgraph
//       Access: Published
//  Description: Allocates and returns a complete copy of this
//               PandaNode and the entire scene graph rooted at this
//               PandaNode.  Some data may still be shared from the
//               original (e.g. vertex index tables), but nothing that
//               will impede normal use of the PandaNode.
////////////////////////////////////////////////////////////////////
105
PointerTo< PandaNode > PandaNode::copy_subgraph(Thread *current_thread = ((get_current_thread()))) const;

2490 8 __copy__ 0 4 3853 19 PandaNode::__copy__ 0 1 262 0
55
PointerTo< PandaNode > PandaNode::__copy__(void) const;

2491 12 __deepcopy__ 0 4 3853 23 PandaNode::__deepcopy__ 0 1 263 0
72
PyObject *PandaNode::__deepcopy__(PyObject *self, PyObject *memo) const;

2492 15 get_num_parents 0 4 3853 26 PandaNode::get_num_parents 0 2 264 265 1023
// Filename: pandaNode.I
// Created by:  drose (20Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_num_parents
//       Access: Published
//  Description: Returns the number of parent nodes this node has.  If
//               this number is greater than 1, the node has been
//               multiply instanced.  The order of the parent nodes is
//               not meaningful and is not related to the order in
//               which the node was instanced to them.
////////////////////////////////////////////////////////////////////
95
inline int PandaNode::get_num_parents(Thread *current_thread = ((get_current_thread()))) const;

2493 10 get_parent 0 4 3853 21 PandaNode::get_parent 0 2 266 267 474
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_parent
//       Access: Published
//  Description: Returns the nth parent node of this node.  See
//               get_num_parents().  Also see get_parents(), if your
//               intention is to iterate through the complete list of
//               parents; get_parents() is preferable in this case.
////////////////////////////////////////////////////////////////////
104
inline PandaNode *PandaNode::get_parent(int n, Thread *current_thread = ((get_current_thread()))) const;

2494 11 find_parent 0 4 3853 22 PandaNode::find_parent 0 2 268 269 325
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::find_parent
//       Access: Published
//  Description: Returns the index of the indicated parent node, if it
//               is a parent, or -1 if it is not.
////////////////////////////////////////////////////////////////////
108
inline int PandaNode::find_parent(PandaNode *node, Thread *current_thread = ((get_current_thread()))) const;

2495 16 get_num_children 0 4 3853 27 PandaNode::get_num_children 0 2 270 271 489
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_num_children
//       Access: Published
//  Description: Returns the number of child nodes this node has.  The
//               order of the child nodes *is* meaningful and is based
//               on the sort number that was passed to add_child(),
//               and also on the order in which the nodes were added.
////////////////////////////////////////////////////////////////////
96
inline int PandaNode::get_num_children(Thread *current_thread = ((get_current_thread()))) const;

2496 9 get_child 0 4 3853 20 PandaNode::get_child 0 2 272 273 476
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_child
//       Access: Published
//  Description: Returns the nth child node of this node.  See
//               get_num_children().  Also see get_children(), if your
//               intention is to iterate through the complete list of
//               children; get_children() is preferable in this case.
////////////////////////////////////////////////////////////////////
103
inline PandaNode *PandaNode::get_child(int n, Thread *current_thread = ((get_current_thread()))) const;

2497 14 get_child_sort 0 4 3853 25 PandaNode::get_child_sort 0 2 274 275 395
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_child_sort
//       Access: Published
//  Description: Returns the sort index of the nth child node of this
//               node (that is, the number that was passed to
//               add_child()).  See get_num_children().
////////////////////////////////////////////////////////////////////
101
inline int PandaNode::get_child_sort(int n, Thread *current_thread = ((get_current_thread()))) const;

2498 10 find_child 0 4 3853 21 PandaNode::find_child 0 2 276 277 322
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::find_child
//       Access: Published
//  Description: Returns the index of the indicated child node, if it
//               is a child, or -1 if it is not.
////////////////////////////////////////////////////////////////////
107
inline int PandaNode::find_child(PandaNode *node, Thread *current_thread = ((get_current_thread()))) const;

2499 21 count_num_descendants 0 4 3853 32 PandaNode::count_num_descendants 0 1 278 284
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::count_num_descendants
//       Access: Published
//  Description: Returns the number of nodes at and below this level.
////////////////////////////////////////////////////////////////////
49
int PandaNode::count_num_descendants(void) const;

2500 9 add_child 0 4 3853 20 PandaNode::add_child 0 3 279 280 281 567
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::add_child
//       Access: Published
//  Description: Adds a new child to the node.  The child is added in
//               the relative position indicated by sort; if all
//               children have the same sort index, the child is added
//               at the end.
//
//               If the same child is added to a node more than once,
//               the previous instance is first removed.
////////////////////////////////////////////////////////////////////
116
void PandaNode::add_child(PandaNode *child_node, int sort = (0), Thread *current_thread = ((get_current_thread())));

2501 12 remove_child 0 4 3853 23 PandaNode::remove_child 0 4 282 283 284 285 736
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_child
//       Access: Published
//  Description: Removes the nth child from the node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_child
//       Access: Published
//  Description: Removes the indicated child from the node.  Returns
//               true if the child was removed, false if it was not
//               already a child of the node.  This will also
//               successfully remove the child if it had been stashed.
////////////////////////////////////////////////////////////////////
201
void PandaNode::remove_child(int child_index, Thread *current_thread = ((get_current_thread())));
bool PandaNode::remove_child(PandaNode *child_node, Thread *current_thread = ((get_current_thread())));

2502 13 replace_child 0 4 3853 24 PandaNode::replace_child 0 2 286 287 513
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::replace_child
//       Access: Published
//  Description: Searches for the orig_child node in the node's list
//               of children, and replaces it with the new_child
//               instead.  Returns true if the replacement is made, or
//               false if the node is not a child or if there is some
//               other problem.
////////////////////////////////////////////////////////////////////
126
bool PandaNode::replace_child(PandaNode *orig_child, PandaNode *new_child, Thread *current_thread = ((get_current_thread())));

2503 11 stash_child 0 4 3853 22 PandaNode::stash_child 0 4 288 289 290 291 1708
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::stash_child
//       Access: Published
//  Description: Stashes the indicated child node.  This removes the
//               child from the list of active children and puts it on
//               a special list of stashed children.  This child node
//               no longer contributes to the bounding volume of the
//               PandaNode, and is not visited in normal traversals.
//               It is invisible and uncollidable.  The child may
//               later be restored by calling unstash_child().
//
//               This function returns true if the child node was
//               successfully stashed, or false if it was not a child
//               of the node in the first place (e.g. it was
//               previously stashed).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::stash_child
//       Access: Published
//  Description: Stashes the indicated child node.  This removes the
//               child from the list of active children and puts it on
//               a special list of stashed children.  This child node
//               no longer contributes to the bounding volume of the
//               PandaNode, and is not visited in normal traversals.
//               It is invisible and uncollidable.  The child may
//               later be restored by calling unstash_child().
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
////////////////////////////////////////////////////////////////////
206
inline bool PandaNode::stash_child(PandaNode *child_node, Thread *current_thread = ((get_current_thread())));
void PandaNode::stash_child(int child_index, Thread *current_thread = ((get_current_thread())));

2504 13 unstash_child 0 4 3853 24 PandaNode::unstash_child 0 4 292 293 294 295 1640
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::unstash_child
//       Access: Published
//  Description: Returns the indicated stashed node to normal child
//               status.  This removes the child from the list of
//               stashed children and puts it on the normal list of
//               active children.  This child node once again
//               contributes to the bounding volume of the PandaNode,
//               and will be visited in normal traversals.  It is
//               visible and collidable.
//
//               This function returns true if the child node was
//               successfully stashed, or false if it was not a child
//               of the node in the first place (e.g. it was
//               previously stashed).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::unstash_child
//       Access: Published
//  Description: Returns the indicated stashed node to normal child
//               status.  This removes the child from the list of
//               stashed children and puts it on the normal list of
//               active children.  This child node once again
//               contributes to the bounding volume of the PandaNode,
//               and will be visited in normal traversals.  It is
//               visible and collidable.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
////////////////////////////////////////////////////////////////////
212
inline bool PandaNode::unstash_child(PandaNode *child_node, Thread *current_thread = ((get_current_thread())));
void PandaNode::unstash_child(int stashed_index, Thread *current_thread = ((get_current_thread())));

2505 15 get_num_stashed 0 4 3853 26 PandaNode::get_num_stashed 0 2 296 297 416
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_num_stashed
//       Access: Published
//  Description: Returns the number of stashed nodes this node has.
//               These are former children of the node that have been
//               moved to the special stashed list via stash_child().
////////////////////////////////////////////////////////////////////
95
inline int PandaNode::get_num_stashed(Thread *current_thread = ((get_current_thread()))) const;

2506 11 get_stashed 0 4 3853 22 PandaNode::get_stashed 0 2 298 299 1498
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_stashed
//       Access: Published
//  Description: Returns the nth stashed child of this node.  See
//               get_num_stashed().  Also see get_stashed(), if your
//               intention is to iterate through the complete list of
//               stashed children; get_stashed() is preferable in this
//               case.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_stashed
//       Access: Public
//  Description: Returns an object that can be used to walk through
//               the list of children of the node.  When you intend to
//               visit multiple children, using this is slightly
//               faster than calling get_stashed() directly on the
//               PandaNode, since this object avoids reopening the
//               PipelineCycler each time.
//
//               This object also protects you from self-modifying
//               loops (e.g. adding or removing children during
//               traversal), since a virtual copy of the children is
//               made ahead of time.  The virtual copy is fast--it is
//               a form of copy-on-write, so the list is not actually
//               copied unless it is modified during the traversal.
////////////////////////////////////////////////////////////////////
105
inline PandaNode *PandaNode::get_stashed(int n, Thread *current_thread = ((get_current_thread()))) const;

2507 16 get_stashed_sort 0 4 3853 27 PandaNode::get_stashed_sort 0 2 300 301 398
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_stashed_sort
//       Access: Published
//  Description: Returns the sort index of the nth stashed node of this
//               node (that is, the number that was passed to
//               add_child()).  See get_num_stashed().
////////////////////////////////////////////////////////////////////
103
inline int PandaNode::get_stashed_sort(int n, Thread *current_thread = ((get_current_thread()))) const;

2508 12 find_stashed 0 4 3853 23 PandaNode::find_stashed 0 2 302 303 334
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::find_stashed
//       Access: Published
//  Description: Returns the index of the indicated stashed node, if
//               it is a stashed child, or -1 if it is not.
////////////////////////////////////////////////////////////////////
109
inline int PandaNode::find_stashed(PandaNode *node, Thread *current_thread = ((get_current_thread()))) const;

2509 11 add_stashed 0 4 3853 22 PandaNode::add_stashed 0 3 304 305 306 675
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::add_stashed
//       Access: Published
//  Description: Adds a new child to the node, directly as a stashed
//               child.  The child is not added in the normal sense,
//               but will be revealed if unstash_child() is called on
//               it later.
//
//               If the same child is added to a node more than once,
//               the previous instance is first removed.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
////////////////////////////////////////////////////////////////////
118
void PandaNode::add_stashed(PandaNode *child_node, int sort = (0), Thread *current_thread = ((get_current_thread())));

2510 14 remove_stashed 0 4 3853 25 PandaNode::remove_stashed 0 2 307 308 269
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_stashed
//       Access: Published
//  Description: Removes the nth stashed child from the node.
////////////////////////////////////////////////////////////////////
99
void PandaNode::remove_stashed(int child_index, Thread *current_thread = ((get_current_thread())));

2511 19 remove_all_children 0 4 3853 30 PandaNode::remove_all_children 0 2 309 310 428
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_all_children
//       Access: Published
//  Description: Removes all the children from the node at once,
//               including stashed children.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
////////////////////////////////////////////////////////////////////
87
void PandaNode::remove_all_children(Thread *current_thread = ((get_current_thread())));

2512 14 steal_children 0 4 3853 25 PandaNode::steal_children 0 2 311 312 436
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::steal_children
//       Access: Published
//  Description: Moves all the children from the other node onto this
//               node.
//
//               Any NodePaths to child nodes of the other node are
//               truncated, rather than moved to the new parent.
////////////////////////////////////////////////////////////////////
100
void PandaNode::steal_children(PandaNode *other, Thread *current_thread = ((get_current_thread())));

2513 13 copy_children 0 4 3853 24 PandaNode::copy_children 0 2 313 314 329
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_children
//       Access: Published
//  Description: Makes another instance of all the children of the
//               other node, copying them to this node.
////////////////////////////////////////////////////////////////////
99
void PandaNode::copy_children(PandaNode *other, Thread *current_thread = ((get_current_thread())));

2514 10 set_attrib 0 4 3853 21 PandaNode::set_attrib 0 2 315 316 475
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_attrib
//       Access: Published
//  Description: Adds the indicated render attribute to the scene
//               graph on this node.  This attribute will now apply to
//               this node and everything below.  If there was already
//               an attribute of the same type, it is replaced.
////////////////////////////////////////////////////////////////////
75
void PandaNode::set_attrib(RenderAttrib const *attrib, int override = (0));

2515 10 get_attrib 0 4 3853 21 PandaNode::get_attrib 0 2 317 318 1078
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_attrib
//       Access: Published
//  Description: Returns the render attribute of the indicated type,
//               if it is defined on the node, or NULL if it is not.
//               This checks only what is set on this particular node
//               level, and has nothing to do with what render
//               attributes may be inherited from parent nodes.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_attrib
//       Access: Published
//  Description: Returns the render attribute of the indicated type,
//               if it is defined on the node, or NULL if it is not.
//               This checks only what is set on this particular node
//               level, and has nothing to do with what render
//               attributes may be inherited from parent nodes.
////////////////////////////////////////////////////////////////////
138
inline RenderAttrib const *PandaNode::get_attrib(TypeHandle type) const;
inline RenderAttrib const *PandaNode::get_attrib(int slot) const;

2516 10 has_attrib 0 4 3853 21 PandaNode::has_attrib 0 2 319 320 738
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_attrib
//       Access: Published
//  Description: Returns true if there is a render attribute of the
//               indicated type defined on this node, or false if
//               there is not.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_attrib
//       Access: Published
//  Description: Returns true if there is a render attribute of the
//               indicated type defined on this node, or false if
//               there is not.
////////////////////////////////////////////////////////////////////
108
inline bool PandaNode::has_attrib(TypeHandle type) const;
inline bool PandaNode::has_attrib(int slot) const;

2517 12 clear_attrib 0 4 3853 23 PandaNode::clear_attrib 0 2 321 322 904
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_attrib
//       Access: Published
//  Description: Removes the render attribute of the given type from
//               this node.  This node, and the subgraph below, will
//               now inherit the indicated render attribute from the
//               nodes above this one.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_attrib
//       Access: Published
//  Description: Removes the render attribute of the given type from
//               this node.  This node, and the subgraph below, will
//               now inherit the indicated render attribute from the
//               nodes above this one.
////////////////////////////////////////////////////////////////////
93
inline void PandaNode::clear_attrib(TypeHandle type);
void PandaNode::clear_attrib(int slot);

2518 10 set_effect 0 4 3853 21 PandaNode::set_effect 0 1 323 386
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_effect
//       Access: Published
//  Description: Adds the indicated render effect to the scene
//               graph on this node.  If there was already an effect
//               of the same type, it is replaced.
////////////////////////////////////////////////////////////////////
55
void PandaNode::set_effect(RenderEffect const *effect);

2519 10 get_effect 0 4 3853 21 PandaNode::get_effect 0 1 324 338
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_effect
//       Access: Published
//  Description: Returns the render effect of the indicated type,
//               if it is defined on the node, or NULL if it is not.
////////////////////////////////////////////////////////////////////
72
inline RenderEffect const *PandaNode::get_effect(TypeHandle type) const;

2520 10 has_effect 0 4 3853 21 PandaNode::has_effect 0 1 325 365
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_effect
//       Access: Published
//  Description: Returns true if there is a render effect of the
//               indicated type defined on this node, or false if
//               there is not.
////////////////////////////////////////////////////////////////////
57
inline bool PandaNode::has_effect(TypeHandle type) const;

2521 12 clear_effect 0 4 3853 23 PandaNode::clear_effect 0 1 326 299
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_effect
//       Access: Published
//  Description: Removes the render effect of the given type from
//               this node.
////////////////////////////////////////////////////////////////////
46
void PandaNode::clear_effect(TypeHandle type);

2522 9 set_state 0 4 3853 20 PandaNode::set_state 0 2 327 328 620
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_state
//       Access: Published
//  Description: Sets the complete RenderState that will be applied to
//               all nodes at this level and below.  (The actual state
//               that will be applied to lower nodes is based on the
//               composition of RenderStates from above this node as
//               well).  This completely replaces whatever has been
//               set on this node via repeated calls to set_attrib().
////////////////////////////////////////////////////////////////////
103
void PandaNode::set_state(RenderState const *state, Thread *current_thread = ((get_current_thread())));

2523 9 get_state 0 4 3853 20 PandaNode::get_state 0 2 329 330 533
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_state
//       Access: Published
//  Description: Returns the complete RenderState that will be applied
//               to all nodes at this level and below, as set on this
//               node.  This returns only the RenderState set on this
//               particular node, and has nothing to do with state
//               that might be inherited from above.
////////////////////////////////////////////////////////////////////
104
inline RenderState const *PandaNode::get_state(Thread *current_thread = ((get_current_thread()))) const;

2524 11 clear_state 0 4 3853 22 PandaNode::clear_state 0 2 331 332 438
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_state
//       Access: Published
//  Description: Resets this node to leave the render state alone.
//               Nodes at this level and below will once again inherit
//               their render state unchanged from the nodes above
//               this level.
////////////////////////////////////////////////////////////////////
86
inline void PandaNode::clear_state(Thread *current_thread = ((get_current_thread())));

2525 11 set_effects 0 4 3853 22 PandaNode::set_effects 0 2 333 334 433
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_effects
//       Access: Published
//  Description: Sets the complete RenderEffects that will be applied
//               this node.  This completely replaces whatever has
//               been set on this node via repeated calls to
//               set_attrib().
////////////////////////////////////////////////////////////////////
109
void PandaNode::set_effects(RenderEffects const *effects, Thread *current_thread = ((get_current_thread())));

2526 11 get_effects 0 4 3853 22 PandaNode::get_effects 0 2 335 336 308
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_effects
//       Access: Published
//  Description: Returns the complete RenderEffects that will be
//               applied to this node.
////////////////////////////////////////////////////////////////////
108
inline RenderEffects const *PandaNode::get_effects(Thread *current_thread = ((get_current_thread()))) const;

2527 13 clear_effects 0 4 3853 24 PandaNode::clear_effects 0 2 337 338 267
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_effects
//       Access: Published
//  Description: Resets this node to have no render effects.
////////////////////////////////////////////////////////////////////
88
inline void PandaNode::clear_effects(Thread *current_thread = ((get_current_thread())));

2528 13 set_transform 0 4 3853 24 PandaNode::set_transform 0 2 339 340 402
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_transform
//       Access: Published
//  Description: Sets the transform that will be applied to this node
//               and below.  This defines a new coordinate space at
//               this point in the scene graph and below.
////////////////////////////////////////////////////////////////////
114
void PandaNode::set_transform(TransformState const *transform, Thread *current_thread = ((get_current_thread())));

2529 13 get_transform 0 4 3853 24 PandaNode::get_transform 0 2 341 342 435
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_transform
//       Access: Published
//  Description: Returns the transform that has been set on this
//               particular node.  This is not the net transform from
//               the root, but simply the transform on this particular
//               node.
////////////////////////////////////////////////////////////////////
111
inline TransformState const *PandaNode::get_transform(Thread *current_thread = ((get_current_thread()))) const;

2530 15 clear_transform 0 4 3853 26 PandaNode::clear_transform 0 2 343 344 303
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_transform
//       Access: Published
//  Description: Resets the transform on this node to the identity
//               transform.
////////////////////////////////////////////////////////////////////
90
inline void PandaNode::clear_transform(Thread *current_thread = ((get_current_thread())));

2531 18 set_prev_transform 0 4 3853 29 PandaNode::set_prev_transform 0 2 345 346 436
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_prev_transform
//       Access: Published
//  Description: Sets the transform that represents this node's
//               "previous" position, one frame ago, for the purposes
//               of detecting motion for accurate collision
//               calculations.
////////////////////////////////////////////////////////////////////
119
void PandaNode::set_prev_transform(TransformState const *transform, Thread *current_thread = ((get_current_thread())));

2532 18 get_prev_transform 0 4 3853 29 PandaNode::get_prev_transform 0 2 347 348 365
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_prev_transform
//       Access: Published
//  Description: Returns the transform that has been set as this
//               node's "previous" position.  See
//               set_prev_transform().
////////////////////////////////////////////////////////////////////
116
inline TransformState const *PandaNode::get_prev_transform(Thread *current_thread = ((get_current_thread()))) const;

2533 20 reset_prev_transform 0 4 3853 31 PandaNode::reset_prev_transform 0 2 349 350 444
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::reset_prev_transform
//       Access: Published
//  Description: Resets the transform that represents this node's
//               "previous" position to the same as the current
//               transform.  This is not the same thing as clearing it
//               to identity.
////////////////////////////////////////////////////////////////////
88
void PandaNode::reset_prev_transform(Thread *current_thread = ((get_current_thread())));

2534 24 has_dirty_prev_transform 0 4 3853 35 PandaNode::has_dirty_prev_transform 0 1 351 533
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_dirty_prev_transform
//       Access: Published
//  Description: Returns true if this node has the
//               _dirty_prev_transform flag set, which indicates its
//               _prev_transform is different from its _transform
//               value (in pipeline stage 0).  In this case, the node
//               will be visited by reset_prev_transform().
////////////////////////////////////////////////////////////////////
60
inline bool PandaNode::has_dirty_prev_transform(void) const;

2535 24 reset_all_prev_transform 0 4 3853 35 PandaNode::reset_all_prev_transform 0 2 352 353 533
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::reset_all_prev_transform
//       Access: Published, Static
//  Description: Visits all nodes in the world with the
//               _dirty_prev_transform flag--that is, all nodes whose
//               _prev_transform is different from the _transform in
//               pipeline stage 0--and resets the _prev_transform to
//               be the same as _transform.
////////////////////////////////////////////////////////////////////
99
static void PandaNode::reset_all_prev_transform(Thread *current_thread = ((get_current_thread())));

2536 7 set_tag 0 4 3853 18 PandaNode::set_tag 0 2 354 355 701
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_tag
//       Access: Published
//  Description: Associates a user-defined value with a user-defined
//               key which is stored on the node.  This value has no
//               meaning to Panda; but it is stored indefinitely on
//               the node until it is requested again.
//
//               Each unique key stores a different string value.
//               There is no effective limit on the number of
//               different keys that may be stored or on the length of
//               any one key's value.
////////////////////////////////////////////////////////////////////
143
void PandaNode::set_tag(basic_string< char > const &key, basic_string< char > const &value, Thread *current_thread = ((get_current_thread())));

2537 7 get_tag 0 4 3853 18 PandaNode::get_tag 0 2 356 357 434
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_tag
//       Access: Published
//  Description: Retrieves the user-defined value that was previously
//               set on this node for the particular key, if any.  If
//               no value has been previously set, returns the empty
//               string.
////////////////////////////////////////////////////////////////////
137
inline basic_string< char > PandaNode::get_tag(basic_string< char > const &key, Thread *current_thread = ((get_current_thread()))) const;

2538 7 has_tag 0 4 3853 18 PandaNode::has_tag 0 2 358 359 405
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_tag
//       Access: Published
//  Description: Returns true if a value has been defined on this node
//               for the particular key (even if that value is the
//               empty string), or false if no value has been set.
////////////////////////////////////////////////////////////////////
121
inline bool PandaNode::has_tag(basic_string< char > const &key, Thread *current_thread = ((get_current_thread()))) const;

2539 9 clear_tag 0 4 3853 20 PandaNode::clear_tag 0 2 360 361 398
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_tag
//       Access: Published
//  Description: Removes the value defined for this key on this
//               particular node.  After a call to clear_tag(),
//               has_tag() will return false for the indicated key.
////////////////////////////////////////////////////////////////////
110
void PandaNode::clear_tag(basic_string< char > const &key, Thread *current_thread = ((get_current_thread())));

2540 12 get_tag_keys 0 4 3853 23 PandaNode::get_tag_keys 0 2 362 363 504
////////////////////////////////////////////////////////////////////
//     Function: Filename::get_tag_keys
//       Access: Published
//  Description: Fills the given vector up with the
//               list of tags on this PandaNode.
//
//               It is the user's responsibility to ensure that the
//               keys vector is empty before making this call;
//               otherwise, the new keys will be appended to it.
////////////////////////////////////////////////////////////////////
120
void PandaNode::get_tag_keys(vector< basic_string< char > > &keys) const;
PyObject *PandaNode::get_tag_keys(void) const;

2541 14 set_python_tag 0 4 3853 25 PandaNode::set_python_tag 0 1 364 0
81
void PandaNode::set_python_tag(basic_string< char > const &key, PyObject *value);

2542 14 get_python_tag 0 4 3853 25 PandaNode::get_python_tag 0 1 365 0
75
PyObject *PandaNode::get_python_tag(basic_string< char > const &key) const;

2543 14 has_python_tag 0 4 3853 25 PandaNode::has_python_tag 0 1 366 0
70
bool PandaNode::has_python_tag(basic_string< char > const &key) const;

2544 16 clear_python_tag 0 4 3853 27 PandaNode::clear_python_tag 0 1 367 0
66
void PandaNode::clear_python_tag(basic_string< char > const &key);

2545 19 get_python_tag_keys 0 4 3853 30 PandaNode::get_python_tag_keys 0 2 368 369 0
134
void PandaNode::get_python_tag_keys(vector< basic_string< char > > &keys) const;
PyObject *PandaNode::get_python_tag_keys(void) const;

2546 8 has_tags 0 4 3853 19 PandaNode::has_tags 0 1 370 324
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_tags
//       Access: Published
//  Description: Returns true if the node has any tags (or any Python
//               tags) at all, false if it has none.
////////////////////////////////////////////////////////////////////
44
inline bool PandaNode::has_tags(void) const;

2547 9 copy_tags 0 4 3853 20 PandaNode::copy_tags 0 1 371 445
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_tags
//       Access: Published
//  Description: Copies all of the tags stored on the other node onto
//               this node.  If a particular tag exists on both nodes,
//               the contents of this node's value is replaced by that
//               of the other.
////////////////////////////////////////////////////////////////////
44
void PandaNode::copy_tags(PandaNode *other);

2548 9 list_tags 0 4 3853 20 PandaNode::list_tags 0 2 372 373 660
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::list_tags
//       Access: Published
//  Description: Writes a list of all the tag keys assigned to the
//               node to the indicated stream.  Writes one instance of
//               the separator following each key (but does not write
//               a terminal separator).  The value associated with
//               each key is not written.
//
//               This is mainly for the benefit of the realtime user,
//               to see the list of all of the associated tag keys.
////////////////////////////////////////////////////////////////////
94
void PandaNode::list_tags(ostream &out, basic_string< char > const &separator = ("\n")) const;

2549 12 compare_tags 0 4 3853 23 PandaNode::compare_tags 0 1 374 643
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::compare_tags
//       Access: Published
//  Description: Returns a number less than 0, 0, or greater than 0,
//               to indicate the similarity of tags between this node
//               and the other one.  If this returns 0, the tags are
//               identical.  If it returns other than 0, then the tags
//               are different; and the nodes may be sorted into a
//               consistent (but arbitrary) ordering based on this
//               number.
////////////////////////////////////////////////////////////////////
58
int PandaNode::compare_tags(PandaNode const *other) const;

2550 19 copy_all_properties 0 4 3853 30 PandaNode::copy_all_properties 0 1 375 542
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_all_properties
//       Access: Published
//  Description: Copies the TransformState, RenderState,
//               RenderEffects, tags, Python tags, and the show/hide
//               state from the other node onto this one.  Typically
//               this is used to prepare a node to replace another
//               node in the scene graph (also see replace_node()).
////////////////////////////////////////////////////////////////////
54
void PandaNode::copy_all_properties(PandaNode *other);

2551 12 replace_node 0 4 3853 23 PandaNode::replace_node 0 1 376 976
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::replace_node
//       Access: Published
//  Description: Inserts this node into the scene graph in place of
//               the other one, and removes the other node.  All scene
//               graph attributes (TransformState, RenderState, etc.)
//               are copied to this node.  
//
//               All children are moved to this node, and removed from
//               the old node.  The new node is left in the same place
//               in the old node's parent's list of children.
//
//               Even NodePaths that reference the old node are
//               updated in-place to reference the new node instead.
//
//               This method is intended to be used to replace a node
//               of a given type in the scene graph with a node of a
//               different type.
////////////////////////////////////////////////////////////////////
47
void PandaNode::replace_node(PandaNode *other);

2552 21 set_unexpected_change 0 4 3853 32 PandaNode::set_unexpected_change 0 1 377 1028
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_unexpected_change
//       Access: Published
//  Description: Sets one or more of the PandaNode::UnexpectedChange
//               bits on, indicating that the corresponding property
//               should not change again on this node.  Once one of
//               these bits has been set, if the property changes, an
//               assertion failure will be raised, which is designed
//               to assist the developer in identifying the
//               troublesome code that modified the property
//               unexpectedly.
//
//               The input parameter is the union of bits that are to
//               be set.  To clear these bits later, use
//               clear_unexpected_change().
//
//               Since this is a developer debugging tool only, this
//               function does nothing in a production (NDEBUG) build.
////////////////////////////////////////////////////////////////////
58
void PandaNode::set_unexpected_change(unsigned int flags);

2553 21 get_unexpected_change 0 4 3853 32 PandaNode::get_unexpected_change 0 1 378 751
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_unexpected_change
//       Access: Published
//  Description: Returns nonzero if any of the bits in the input
//               parameter are set on this node, or zero if none of
//               them are set.  More specifically, this returns the
//               particular set of bits (masked by the input
//               parameter) that have been set on this node.  See
//               set_unexpected_change().
//
//               Since this is a developer debugging tool only, this
//               function always returns zero in a production (NDEBUG)
//               build.
////////////////////////////////////////////////////////////////////
72
unsigned int PandaNode::get_unexpected_change(unsigned int flags) const;

2554 23 clear_unexpected_change 0 4 3853 34 PandaNode::clear_unexpected_change 0 1 379 700
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_unexpected_change
//       Access: Published
//  Description: Sets one or more of the PandaNode::UnexpectedChange
//               bits off, indicating that the corresponding property
//               may once again change on this node.  See
//               set_unexpected_change().
//
//               The input parameter is the union of bits that are to
//               be cleared.
//
//               Since this is a developer debugging tool only, this
//               function does nothing in a production (NDEBUG) build.
////////////////////////////////////////////////////////////////////
60
void PandaNode::clear_unexpected_change(unsigned int flags);

2555 15 get_overall_bit 0 4 3853 26 PandaNode::get_overall_bit 0 1 380 457
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_overall_bit
//       Access: Published, Static
//  Description: Returns the special bit that, when specifically
//               cleared in the node's DrawMask, indicates that the
//               node is hidden to all cameras, regardless of the
//               remaining DrawMask bits.
////////////////////////////////////////////////////////////////////
75
static inline BitMask< unsigned int, 32 > PandaNode::get_overall_bit(void);

2556 19 get_all_camera_mask 0 4 3853 30 PandaNode::get_all_camera_mask 0 1 381 323
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_all_camera_mask
//       Access: Published, Static
//  Description: Returns a DrawMask that is appropriate for rendering
//               to all cameras.
////////////////////////////////////////////////////////////////////
79
static inline BitMask< unsigned int, 32 > PandaNode::get_all_camera_mask(void);

2557 17 is_overall_hidden 0 4 3853 28 PandaNode::is_overall_hidden 0 1 382 337
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_overall_hidden
//       Access: Published, Static
//  Description: Returns true if the node has been hidden to all
//               cameras by clearing its overall bit.
////////////////////////////////////////////////////////////////////
53
inline bool PandaNode::is_overall_hidden(void) const;

2558 18 set_overall_hidden 0 4 3853 29 PandaNode::set_overall_hidden 0 1 383 750
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_overall_hidden
//       Access: Published
//  Description: Sets or clears the hidden flag.  When the hidden flag
//               is true, the node and all of its children are
//               invisible to all cameras, regardless of the setting
//               of any draw masks.  Setting the hidden flag to false
//               restores the previous visibility as established by
//               the draw masks.
//
//               This actually works by twiddling the reserved
//               _overall_bit in the node's draw mask, which has
//               special meaning.
////////////////////////////////////////////////////////////////////
63
inline void PandaNode::set_overall_hidden(bool overall_hidden);

2559 16 adjust_draw_mask 0 4 3853 27 PandaNode::adjust_draw_mask 0 1 384 1941
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::adjust_draw_mask
//       Access: Published
//  Description: Adjusts the hide/show bits of this particular node.
//
//               These three parameters can be used to adjust the
//               _draw_control_mask and _draw_show_mask independently,
//               which work together to provide per-camera visibility
//               for the node and its descendents.
//
//               _draw_control_mask indicates the bits in
//               _draw_show_mask that are significant.  Each different
//               bit corresponds to a different camera (and these bits
//               are assigned via Camera::set_camera_mask()).
//
//               Where _draw_control_mask has a 1 bit, a 1 bit in
//               _draw_show_mask indicates the node is visible to that
//               camera, and a 0 bit indicates the node is hidden to
//               that camera.  Where _draw_control_mask is 0, the node
//               is hidden only if a parent node is hidden.
//
//               The meaning of the three parameters is as follows:
//
//               * Wherever show_mask is 1, _draw_show_mask and
//               _draw_control_mask will be set 1.  Thus, show_mask
//               indicates the set of cameras to which the node should
//               be shown.
//
//               * Wherever hide_mask is 1, _draw_show_mask will be
//               set 0 and _draw_control_mask will be set 1.  Thus,
//               hide_mask indicates the set of cameras from which the
//               node should be hidden.
//
//               * Wherever clear_mask is 1, _draw_control_mask will
//               be set 0.  Thus, clear_mask indicates the set of
//               cameras from which the hidden state should be
//               inherited from a parent.
////////////////////////////////////////////////////////////////////
151
void PandaNode::adjust_draw_mask(BitMask< unsigned int, 32 > show_mask, BitMask< unsigned int, 32 > hide_mask, BitMask< unsigned int, 32 > clear_mask);

2560 21 get_draw_control_mask 0 4 3853 32 PandaNode::get_draw_control_mask 0 1 385 347
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_draw_control_mask
//       Access: Published
//  Description: Returns the set of bits in draw_show_mask that are
//               considered meaningful.  See adjust_draw_mask().
////////////////////////////////////////////////////////////////////
80
inline BitMask< unsigned int, 32 > PandaNode::get_draw_control_mask(void) const;

2561 18 get_draw_show_mask 0 4 3853 29 PandaNode::get_draw_show_mask 0 1 386 321
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_draw_show_mask
//       Access: Published
//  Description: Returns the hide/show bits of this particular node.
//               See adjust_draw_mask().
////////////////////////////////////////////////////////////////////
77
inline BitMask< unsigned int, 32 > PandaNode::get_draw_show_mask(void) const;

2562 25 get_net_draw_control_mask 0 4 3853 36 PandaNode::get_net_draw_control_mask 0 1 387 681
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_net_draw_control_mask
//       Access: Published
//  Description: Returns the set of bits in get_net_draw_show_mask()
//               that have been explicitly set via adjust_draw_mask(),
//               rather than implicitly inherited.
//
//               A 1 bit in any position of this mask indicates that
//               (a) this node has renderable children, and (b) some
//               child of this node has made an explicit hide() or
//               show_through() call for the corresponding bit.
////////////////////////////////////////////////////////////////////
77
BitMask< unsigned int, 32 > PandaNode::get_net_draw_control_mask(void) const;

2563 22 get_net_draw_show_mask 0 4 3853 33 PandaNode::get_net_draw_show_mask 0 1 388 943
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_net_draw_show_mask
//       Access: Published
//  Description: Returns the union of all draw_show_mask values--of
//               renderable nodes only--at this level and below.  If
//               any bit in this mask is 0, there is no reason to
//               traverse below this node for a camera with the
//               corresponding camera_mask.
//
//               The bits in this mask that do not correspond to a 1
//               bit in the net_draw_control_mask are meaningless (and
//               will be set to 1).  For bits that *do* correspond to
//               a 1 bit in the net_draw_control_mask, a 1 bit
//               indicates that at least one child should be visible,
//               while a 0 bit indicates that all children are hidden.
////////////////////////////////////////////////////////////////////
74
BitMask< unsigned int, 32 > PandaNode::get_net_draw_show_mask(void) const;

2564 21 set_into_collide_mask 0 4 3853 32 PandaNode::set_into_collide_mask 0 1 389 882
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_into_collide_mask
//       Access: Published
//  Description: Sets the "into" CollideMask.  
//
//               This specifies the set of bits that must be shared
//               with a CollisionNode's "from" CollideMask in order
//               for the CollisionNode to detect a collision with this
//               particular node.
//
//               The actual CollideMask that will be set is masked by
//               the return value from get_legal_collide_mask().
//               Thus, the into_collide_mask cannot be set to anything
//               other than nonzero except for those types of nodes
//               that can be collided into, such as CollisionNodes and
//               GeomNodes.
////////////////////////////////////////////////////////////////////
72
void PandaNode::set_into_collide_mask(BitMask< unsigned int, 32 > mask);

2565 21 get_into_collide_mask 0 4 3853 32 PandaNode::get_into_collide_mask 0 1 390 278
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_into_collide_mask
//       Access: Published
//  Description: Returns the "into" collide mask for this node.
////////////////////////////////////////////////////////////////////
80
inline BitMask< unsigned int, 32 > PandaNode::get_into_collide_mask(void) const;

2566 22 get_legal_collide_mask 0 6 3853 33 PandaNode::get_legal_collide_mask 0 1 391 618
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_legal_collide_mask
//       Access: Published, Virtual
//  Description: Returns the subset of CollideMask bits that may be
//               set for this particular type of PandaNode.  For most
//               nodes, this is 0; it doesn't make sense to set a
//               CollideMask for most kinds of nodes.
//
//               For nodes that can be collided with, such as GeomNode
//               and CollisionNode, this returns all bits on.
////////////////////////////////////////////////////////////////////
82
virtual BitMask< unsigned int, 32 > PandaNode::get_legal_collide_mask(void) const;

2567 20 get_net_collide_mask 0 4 3853 31 PandaNode::get_net_collide_mask 0 2 392 393 346
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_net_collide_mask
//       Access: Published
//  Description: Returns the union of all into_collide_mask() values
//               set at CollisionNodes at this level and below.
////////////////////////////////////////////////////////////////////
117
BitMask< unsigned int, 32 > PandaNode::get_net_collide_mask(Thread *current_thread = ((get_current_thread()))) const;

2568 19 get_off_clip_planes 0 4 3853 30 PandaNode::get_off_clip_planes 0 2 394 395 395
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_off_clip_planes
//       Access: Published
//  Description: Returns a ClipPlaneAttrib which represents the union
//               of all of the clip planes that have been turned *off*
//               at this level and below.
////////////////////////////////////////////////////////////////////
119
ConstPointerTo< RenderAttrib > PandaNode::get_off_clip_planes(Thread *current_thread = ((get_current_thread()))) const;

2569 13 prepare_scene 0 4 3853 24 PandaNode::prepare_scene 0 1 396 818
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::prepare_scene
//       Access: Published
//  Description: Walks through the scene graph beginning at this node,
//               and does whatever initialization is required to
//               render the scene properly with the indicated GSG.  It
//               is not strictly necessary to call this, since the GSG
//               will initialize itself when the scene is rendered,
//               but this may take some of the overhead away from that
//               process.
//
//               In particular, this will ensure that textures and
//               vertex buffers within the scene are loaded into
//               graphics memory.
////////////////////////////////////////////////////////////////////
93
void PandaNode::prepare_scene(GraphicsStateGuardianBase *gsg, RenderState const *node_state);

2570 13 is_scene_root 0 4 3853 24 PandaNode::is_scene_root 0 1 397 431
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_scene_root
//       Access: Published
//  Description: Returns true if this particular node is known to be
//               the render root of some active DisplayRegion
//               associated with the global GraphicsEngine, false
//               otherwise.
////////////////////////////////////////////////////////////////////
42
bool PandaNode::is_scene_root(void) const;

2571 19 is_under_scene_root 0 4 3853 30 PandaNode::is_under_scene_root 0 1 398 601
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_under_scene_root
//       Access: Published
//  Description: Returns true if this particular node is in a live
//               scene graph: that is, it is a child or descendent of
//               a node that is itself a scene root.  If this is true,
//               this node may potentially be traversed by the render
//               traverser.  Stashed nodes don't count for this
//               purpose, but hidden nodes do.
////////////////////////////////////////////////////////////////////
48
bool PandaNode::is_under_scene_root(void) const;

2572 6 output 0 6 3853 17 PandaNode::output 0 1 399 226
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::output
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
51
virtual void PandaNode::output(ostream &out) const;

2573 5 write 0 6 3853 16 PandaNode::write 0 1 400 225
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::write
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
68
virtual void PandaNode::write(ostream &out, int indent_level) const;

2574 2 ls 0 4 3853 13 PandaNode::ls 0 1 401 295
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::ls
//       Access: Published
//  Description: Lists all the nodes at and below the current path
//               hierarchically.
////////////////////////////////////////////////////////////////////
64
inline void PandaNode::ls(ostream &out, int indent_level) const;

2575 15 set_bounds_type 0 4 3853 26 PandaNode::set_bounds_type 0 1 402 1688
// A node has three bounding volumes: an "external" bounding volume
// that represents the node and all of its children, an "internal"
// bounding volume which represents only the node itself (and is
// usually empty, unless a specific node type sets it otherwise),
// and a "user" bounding volume which is specified by the user.
// We define set_bounds() and get_bounds() functions so that
// set_bounds() sets the user bounding volume, while get_bounds()
// returns the external bounding volume.  Although it might seem
// strange and confusing to do this, this is actually the natural
// way the user thinks about nodes and bounding volumes.

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_bounds_type
//       Access: Published
//  Description: Specifies the desired type of bounding volume that
//               will be created for this node.  This is normally
//               BoundingVolume::BT_default, which means to set the
//               type according to the config variable "bounds-type".
//
//               If this is BT_sphere or BT_box, a BoundingSphere or
//               BoundingBox is explicitly created.  If it is BT_best,
//               the appropriate type to best enclose the node's
//               children is created.
//
//               This affects the bounding volume returned by
//               get_bounds(), which is not exactly the same bounding
//               volume modified by set_bounds(), because a new
//               bounding volume has to be created that includes this
//               node and all of its children.
////////////////////////////////////////////////////////////////////
72
void PandaNode::set_bounds_type(BoundingVolume::BoundsType bounds_type);

2576 15 get_bounds_type 0 4 3853 26 PandaNode::get_bounds_type 0 1 403 949
// A node has three bounding volumes: an "external" bounding volume
// that represents the node and all of its children, an "internal"
// bounding volume which represents only the node itself (and is
// usually empty, unless a specific node type sets it otherwise),
// and a "user" bounding volume which is specified by the user.
// We define set_bounds() and get_bounds() functions so that
// set_bounds() sets the user bounding volume, while get_bounds()
// returns the external bounding volume.  Although it might seem
// strange and confusing to do this, this is actually the natural
// way the user thinks about nodes and bounding volumes.

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_bounds_type
//       Access: Published
//  Description: Returns the bounding volume type set with
//               set_bounds_type().
////////////////////////////////////////////////////////////////////
66
BoundingVolume::BoundsType PandaNode::get_bounds_type(void) const;

2577 10 set_bounds 0 4 3853 21 PandaNode::set_bounds 0 1 404 806
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_bounds
//       Access: Published
//  Description: Resets the bounding volume so that it is the
//               indicated volume.  When it is explicitly set, the
//               bounding volume will no longer be automatically
//               computed according to the contents of the node
//               itself, for nodes like GeomNodes and TextNodes that
//               contain substance (but the bounding volume will still
//               be automatically expanded to include its children).
//
//               Call clear_bounds() if you would like to return the
//               bounding volume to its default behavior later.
////////////////////////////////////////////////////////////////////
57
void PandaNode::set_bounds(BoundingVolume const *volume);

2578 9 set_bound 0 4 3853 20 PandaNode::set_bound 0 1 405 258
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_bound
//       Access: Published
//  Description: Deprecated.  Use set_bounds() instead.
////////////////////////////////////////////////////////////////////
56
void PandaNode::set_bound(BoundingVolume const *volume);

2579 12 clear_bounds 0 4 3853 23 PandaNode::clear_bounds 0 1 406 441
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_bounds
//       Access: Published
//  Description: Reverses the effect of a previous call to
//               set_bounds(), and allows the node's bounding volume
//               to be automatically computed once more based on the
//               contents of the node.
////////////////////////////////////////////////////////////////////
42
inline void PandaNode::clear_bounds(void);

2580 10 get_bounds 0 4 3853 21 PandaNode::get_bounds 0 4 407 408 409 410 1403
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_bounds
//       Access: Published
//  Description: Returns the external bounding volume of this node: a
//               bounding volume that contains the user bounding
//               volume, the internal bounding volume, and all of the
//               children's bounding volumes.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_bounds
//       Access: Published
//  Description: This flavor of get_bounds() return the external
//               bounding volume, and also fills in seq with the
//               bounding volume's current sequence number.  When this
//               sequence number changes, it indicates that the
//               bounding volume might have changed, e.g. because some
//               nested child's bounding volume has changed.
//
//               Although this might occasionally increment without
//               changing the bounding volume, the bounding volume
//               will never change without incrementing this counter,
//               so as long as this counter remains unchanged you can
//               be confident the bounding volume is also unchanged.
////////////////////////////////////////////////////////////////////
241
ConstPointerTo< BoundingVolume > PandaNode::get_bounds(Thread *current_thread = ((get_current_thread()))) const;
ConstPointerTo< BoundingVolume > PandaNode::get_bounds(UpdateSeq &seq, Thread *current_thread = ((get_current_thread()))) const;

2581 19 get_nested_vertices 0 4 3853 30 PandaNode::get_nested_vertices 0 2 411 412 744
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_nested_vertices
//       Access: Published
//  Description: Returns the total number of vertices that will be
//               rendered by this node and all of its descendents.
//
//               This is not necessarily an accurate count of vertices
//               that will actually be rendered, since this will
//               include all vertices of all LOD's, and it will also
//               include hidden nodes.  It may also omit or only
//               approximate certain kinds of dynamic geometry.
//               However, it will not include stashed nodes.
////////////////////////////////////////////////////////////////////
92
int PandaNode::get_nested_vertices(Thread *current_thread = ((get_current_thread()))) const;

2582 19 get_internal_bounds 0 4 3853 30 PandaNode::get_internal_bounds 0 2 413 414 892
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_internal_bounds
//       Access: Published
//  Description: Returns the node's internal bounding volume.  This is
//               the bounding volume around the node alone, without
//               including children.  If the user has called
//               set_bounds(), it will be the specified bounding
//               volume.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_internal_bounds
//       Access: Protected
//  Description: Returns the node's internal bounding volume.  This is
//               the bounding volume around the node alone, without
//               including children.
////////////////////////////////////////////////////////////////////
128
inline ConstPointerTo< BoundingVolume > PandaNode::get_internal_bounds(Thread *current_thread = ((get_current_thread()))) const;

2583 21 get_internal_vertices 0 4 3853 32 PandaNode::get_internal_vertices 0 2 415 416 978
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_internal_vertices
//       Access: Published
//  Description: Returns the total number of vertices that will be
//               rendered by this particular node alone, not
//               accounting for its children.
//
//               This may not include all vertices for certain dynamic
//               effects.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_internal_vertices
//       Access: Protected
//  Description: Returns the total number of vertices that will be
//               rendered by this particular node alone, not
//               accounting for its children.
//
//               This may not include all vertices for certain dynamic
//               effects.
////////////////////////////////////////////////////////////////////
101
inline int PandaNode::get_internal_vertices(Thread *current_thread = ((get_current_thread()))) const;

2584 17 mark_bounds_stale 0 4 3853 28 PandaNode::mark_bounds_stale 0 2 417 418 1441
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::mark_bounds_stale
//       Access: Protected
//  Description: Indicates that the bounding volume, or something that
//               influences the bounding volume (or any of the other
//               things stored in CData, like net_collide_mask),
//               may have changed for this node, and that it must be
//               recomputed.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::mark_bounds_stale
//       Access: Published
//  Description: Indicates that the bounding volume, or something that
//               influences the bounding volume (or any of the other
//               things stored in CData, like net_collide_mask),
//               may have changed for this node, and that it must be
//               recomputed.
//
//               With no parameters, this means to iterate through all
//               stages including and upstream of the current pipeline
//               stage.
//
//               This method is intended for internal use; usually it
//               is not necessary for a user to call this directly.
//               It will be called automatically by derived classes
//               when appropriate.
////////////////////////////////////////////////////////////////////
91
void PandaNode::mark_bounds_stale(Thread *current_thread = ((get_current_thread()))) const;

2585 26 mark_internal_bounds_stale 0 4 3853 37 PandaNode::mark_internal_bounds_stale 0 2 419 420 1286
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::mark_internal_bounds_stale
//       Access: Protected
//  Description: Should be called by a derived class to mark the
//               internal bounding volume stale, so that
//               recompute_internal_bounds() will be called when the
//               bounding volume is next requested.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PandaNode::mark_internal_bounds_stale
//       Access: Published
//  Description: Should be called by a derived class to mark the
//               internal bounding volume stale, so that
//               compute_internal_bounds() will be called when the
//               bounding volume is next requested.
//
//               With no parameters, this means to iterate through all
//               stages including and upstream of the current pipeline
//               stage.
//
//               It is normally not necessary to call this method
//               directly; each node should be responsible for calling
//               it when its internals have changed.
////////////////////////////////////////////////////////////////////
94
void PandaNode::mark_internal_bounds_stale(Thread *current_thread = ((get_current_thread())));

2586 15 is_bounds_stale 0 4 3853 26 PandaNode::is_bounds_stale 0 1 421 457
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_bounds_stale
//       Access: Published
//  Description: Returns true if the bounding volume of this node is
//                stale and will be implicitly recomputed at the next
//                call to get_bounds(), or false if it is fresh and
//                need not be recomputed.
////////////////////////////////////////////////////////////////////
51
inline bool PandaNode::is_bounds_stale(void) const;

2587 9 set_final 0 4 3853 20 PandaNode::set_final 0 1 422 995
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_final
//       Access: Published
//  Description: Sets the "final" flag on this PandaNode.  If
//               this is true, than no bounding volume need be tested
//               below it; a positive intersection with this node's
//               bounding volume is deemed to be a positive
//               intersection with all geometry inside.
//
//               This is useful to quickly force a larger bounding
//               volume around a node when the GeomNodes themselves
//               are inaccurate for some reason, without forcing a
//               recompute of every nested bounding volume.  It's also
//               helpful when the bounding volume is tricked by some
//               special properties, like billboards, that may move
//               geometry out of its bounding volume otherwise.
////////////////////////////////////////////////////////////////////
44
inline void PandaNode::set_final(bool flag);

2588 8 is_final 0 4 3853 19 PandaNode::is_final 0 2 423 424 429
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_final
//       Access: Published
//  Description: Returns the current state of the "final" flag.
//               Initially, this flag is off (false), but it may be
//               changed by an explicit call to set_final().  See
//               set_final().
////////////////////////////////////////////////////////////////////
89
inline bool PandaNode::is_final(Thread *current_thread = ((get_current_thread()))) const;

2589 12 is_geom_node 0 6 3853 23 PandaNode::is_geom_node 0 1 425 570
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_geom_node
//       Access: Published, Virtual
//  Description: A simple downcast check.  Returns true if this kind
//               of node happens to inherit from GeomNode, false
//               otherwise.
//
//               This is provided as a a faster alternative to calling
//               is_of_type(GeomNode::get_class_type()), since this
//               test is so important to rendering.
////////////////////////////////////////////////////////////////////
49
virtual bool PandaNode::is_geom_node(void) const;

2590 11 is_lod_node 0 6 3853 22 PandaNode::is_lod_node 0 1 426 504
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_lod_node
//       Access: Published, Virtual
//  Description: A simple downcast check.  Returns true if this kind
//               of node happens to inherit from LODNode, false
//               otherwise.
//
//               This is provided as a a faster alternative to calling
//               is_of_type(LODNode::get_class_type()).
////////////////////////////////////////////////////////////////////
48
virtual bool PandaNode::is_lod_node(void) const;

2591 17 is_collision_node 0 6 3853 28 PandaNode::is_collision_node 0 1 427 522
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_collision_node
//       Access: Published, Virtual
//  Description: A simple downcast check.  Returns true if this kind
//               of node happens to inherit from CollisionNode, false
//               otherwise.
//
//               This is provided as a a faster alternative to calling
//               is_of_type(CollisionNode::get_class_type()).
////////////////////////////////////////////////////////////////////
54
virtual bool PandaNode::is_collision_node(void) const;

2592 8 as_light 0 6 3853 19 PandaNode::as_light 0 1 428 379
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::as_light
//       Access: Published, Virtual
//  Description: Cross-casts the node to a Light pointer, if it is one
//               of the four kinds of Light nodes, or returns NULL if
//               it is not.
////////////////////////////////////////////////////////////////////
41
virtual Light *PandaNode::as_light(void);

2593 16 is_ambient_light 0 6 3853 27 PandaNode::is_ambient_light 0 1 429 356
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_ambient_light
//       Access: Published, Virtual
//  Description: Returns true if this is an AmbientLight, false if it
//               is not a light, or it is some other kind of light.
////////////////////////////////////////////////////////////////////
53
virtual bool PandaNode::is_ambient_light(void) const;

2594 14 get_fancy_bits 0 4 3853 25 PandaNode::get_fancy_bits 0 2 430 431 617
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_fancy_bits
//       Access: Published
//  Description: Returns the union of all of the enum FancyBits values
//               corresponding to the various "fancy" attributes that
//               are set on the node.  If this returns 0, the node has
//               nothing interesting about it.  This is intended to
//               speed traversal by quickly skipping past nodes that
//               don't particularly affect the render state.
////////////////////////////////////////////////////////////////////
94
inline int PandaNode::get_fancy_bits(Thread *current_thread = ((get_current_thread()))) const;

2595 22 decode_from_bam_stream 0 4 3853 33 PandaNode::decode_from_bam_stream 0 2 432 433 819
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::decode_from_bam_stream
//       Access: Published, Static
//  Description: Reads the string created by a previous call to
//               encode_to_bam_stream(), and extracts and returns the
//               single object on that string.  Returns NULL on error.
//
//               This method is intended to replace
//               decode_raw_from_bam_stream() when you know the stream
//               in question returns an object of type PandaNode,
//               allowing for easier reference count management.  Note
//               that the caller is still responsible for maintaining
//               the reference count on the return value.
////////////////////////////////////////////////////////////////////
133
static PointerTo< PandaNode > PandaNode::decode_from_bam_stream(basic_string< char > const &data, BamReader *reader = ((void *)(0)));

2596 14 get_class_type 0 4 3853 25 PandaNode::get_class_type 0 1 434 0
50
static TypeHandle PandaNode::get_class_type(void);

2597 4 make 0 4 3860 24 TransparencyAttrib::make 0 1 442 275
////////////////////////////////////////////////////////////////////
//     Function: TransparencyAttrib::make
//       Access: Published, Static
//  Description: Constructs a new TransparencyAttrib object.
////////////////////////////////////////////////////////////////////
94
static ConstPointerTo< RenderAttrib > TransparencyAttrib::make(TransparencyAttrib::Mode mode);

2598 12 make_default 0 4 3860 32 TransparencyAttrib::make_default 0 1 443 405
////////////////////////////////////////////////////////////////////
//     Function: TransparencyAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
77
static ConstPointerTo< RenderAttrib > TransparencyAttrib::make_default(void);

2599 8 get_mode 0 4 3860 28 TransparencyAttrib::get_mode 0 1 444 258
////////////////////////////////////////////////////////////////////
//     Function: TransparencyAttrib::get_mode
//       Access: Published
//  Description: Returns the transparency mode.
////////////////////////////////////////////////////////////////////
73
inline TransparencyAttrib::Mode TransparencyAttrib::get_mode(void) const;

2600 14 get_class_slot 0 4 3860 34 TransparencyAttrib::get_class_slot 0 1 445 0
52
static int TransparencyAttrib::get_class_slot(void);

2601 14 get_class_type 0 4 3860 34 TransparencyAttrib::get_class_type 0 1 446 0
59
static TypeHandle TransparencyAttrib::get_class_type(void);

2602 19 ~TransparencyAttrib 0 4 3860 39 TransparencyAttrib::~TransparencyAttrib 0 0 0
46
TransparencyAttrib::~TransparencyAttrib(void);

2603 8 NodePath 0 4 3862 18 NodePath::NodePath 0 8 447 448 449 450 451 452 453 454 2488
// Filename: nodePath.I
// Created by:  drose (25Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: NodePath::Default Constructor
//       Access: Published
//  Description: This constructs an empty NodePath with no nodes.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::Constructor
//       Access: Published
//  Description: This constructs a new NodePath with a single
//               node.  An ordinary, unattached PandaNode is created
//               with the indicated name.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::Constructor
//       Access: Published
//  Description: This constructs a NodePath for the indicated node.
//               If the node does not have any parents, this creates a
//               singleton NodePath; otherwise, it automatically finds
//               the path from the node to the root.  If the node has
//               multiple paths to the root, one path is chosen
//               arbitrarily and a warning message is printed (but see
//               also NodePath::any_path(), below).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::Copy Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

// ***End temporary transition code for operator bool
////////////////////////////////////////////////////////////////////
//     Function: NodePath::Constructor
//       Access: Published
//  Description: Constructs a NodePath with the indicated parent
//               NodePath and child node; the child node must be a
//               stashed or unstashed child of the parent.
////////////////////////////////////////////////////////////////////
415
inline NodePath::NodePath(void);
inline NodePath::NodePath(basic_string< char > const &top_node_name, Thread *current_thread = ((get_current_thread())));
inline NodePath::NodePath(PandaNode *node, Thread *current_thread = ((get_current_thread())));
NodePath::NodePath(NodePath const &parent, PandaNode *child_node, Thread *current_thread = ((get_current_thread())));
inline NodePath::NodePath(NodePath const &copy);

2604 8 any_path 0 4 3862 18 NodePath::any_path 0 2 455 456 531
////////////////////////////////////////////////////////////////////
//     Function: NodePath::any_path named constructor
//       Access: Published, Static
//  Description: Returns a new NodePath that represents any arbitrary
//               path from the root to the indicated node.  This is
//               the same thing that would be returned by
//               NodePath(node), except that no warning is issued if
//               the path is ambiguous.
////////////////////////////////////////////////////////////////////
110
static inline NodePath NodePath::any_path(PandaNode *node, Thread *current_thread = ((get_current_thread())));

2605 10 operator = 0 4 3862 20 NodePath::operator = 0 1 457 233
////////////////////////////////////////////////////////////////////
//     Function: NodePath::Copy Assignment Operator
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
55
inline void NodePath::operator =(NodePath const &copy);

2606 8 __copy__ 0 4 3862 18 NodePath::__copy__ 0 1 458 0
40
NodePath NodePath::__copy__(void) const;

2607 12 __deepcopy__ 0 4 3862 22 NodePath::__deepcopy__ 0 1 459 0
71
PyObject *NodePath::__deepcopy__(PyObject *self, PyObject *memo) const;

2608 10 __reduce__ 0 4 3862 20 NodePath::__reduce__ 0 1 460 0
53
PyObject *NodePath::__reduce__(PyObject *self) const;

2609 18 __reduce_persist__ 0 4 3862 28 NodePath::__reduce_persist__ 0 1 461 0
80
PyObject *NodePath::__reduce_persist__(PyObject *self, PyObject *pickler) const;

2610 9 not_found 0 4 3862 19 NodePath::not_found 0 1 462 318
////////////////////////////////////////////////////////////////////
//     Function: NodePath::not_found named constructor
//       Access: Published, Static
//  Description: Creates a NodePath with the ET_not_found error type
//               set.
////////////////////////////////////////////////////////////////////
49
static inline NodePath NodePath::not_found(void);

2611 7 removed 0 4 3862 17 NodePath::removed 0 1 463 314
////////////////////////////////////////////////////////////////////
//     Function: NodePath::removed named constructor
//       Access: Published, Static
//  Description: Creates a NodePath with the ET_removed error type
//               set.
////////////////////////////////////////////////////////////////////
47
static inline NodePath NodePath::removed(void);

2612 4 fail 0 4 3862 14 NodePath::fail 0 1 464 308
////////////////////////////////////////////////////////////////////
//     Function: NodePath::fail named constructor
//       Access: Published, Static
//  Description: Creates a NodePath with the ET_fail error type
//               set.
////////////////////////////////////////////////////////////////////
44
static inline NodePath NodePath::fail(void);

2613 20 set_max_search_depth 0 4 3862 30 NodePath::set_max_search_depth 0 1 465 1267
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_max_search_depth
//       Access: Published, Static
//  Description: Certain operations, such as find() or
//               find_all_matches(), require a traversal of the scene
//               graph to search for the target node or nodes.  This
//               traversal does not attempt to detect cycles, so an
//               arbitrary cap is set on the depth of the traversal as
//               a poor man's cycle detection, in the event that a
//               cycle has inadvertently been introduced into the
//               scene graph.
//
//               There may be other reasons you'd want to truncate a
//               search before the bottom of the scene graph has been
//               reached.  In any event, this function sets the limit
//               on the number of levels that a traversal will
//               continue, and hence the maximum length of a path that
//               may be returned by a traversal.
//
//               This is a static method, and so changing this
//               parameter affects all of the NodePaths in the
//               universe.
////////////////////////////////////////////////////////////////////
72
static inline void NodePath::set_max_search_depth(int max_search_depth);

2614 20 get_max_search_depth 0 4 3862 30 NodePath::get_max_search_depth 0 1 466 336
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_max_search_depth
//       Access: Published, Static
//  Description: Returns the current setting of the search depth
//               limit.  See set_max_search_depth.
////////////////////////////////////////////////////////////////////
55
static inline int NodePath::get_max_search_depth(void);

2615 8 is_empty 0 4 3862 18 NodePath::is_empty 0 1 467 309
// Methods to query a NodePath's contents.

////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_empty
//       Access: Published
//  Description: Returns true if the NodePath contains no nodes.
////////////////////////////////////////////////////////////////////
43
inline bool NodePath::is_empty(void) const;

2616 22 operator typecast bool 0 132 3862 32 NodePath::operator typecast bool 0 1 1187 368
// Methods to query a NodePath's contents.

////////////////////////////////////////////////////////////////////
//     Function: NodePath::operator bool
//       Access: Published
//  Description: Returns true if the NodePath is valid (not empty),
//               or false if it contains no nodes.
////////////////////////////////////////////////////////////////////
50
bool NodePath::operator typecast bool(void) const;

2617 12 is_singleton 0 4 3862 22 NodePath::is_singleton 0 2 468 469 294
////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_singleton
//       Access: Published
//  Description: Returns true if the NodePath contains exactly one
//               node.
////////////////////////////////////////////////////////////////////
92
inline bool NodePath::is_singleton(Thread *current_thread = ((get_current_thread()))) const;

2618 13 get_num_nodes 0 4 3862 23 NodePath::get_num_nodes 0 2 470 471 263
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_num_nodes
//       Access: Published
//  Description: Returns the number of nodes in the path.
////////////////////////////////////////////////////////////////////
85
int NodePath::get_num_nodes(Thread *current_thread = ((get_current_thread()))) const;

2619 8 get_node 0 4 3862 18 NodePath::get_node 0 2 472 473 812
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_node
//       Access: Published
//  Description: Returns the nth node of the path, where 0 is the
//               referenced (bottom) node and get_num_nodes() - 1 is
//               the top node.  This requires iterating through the
//               path.
//
//               Also see node(), which is a convenience function to
//               return the same thing as get_node(0) (since the
//               bottom node is the most important node in the
//               NodePath, and is the one most frequently referenced).
//
//               Note that this function returns the same thing as
//               get_ancestor(index).node().
////////////////////////////////////////////////////////////////////
98
PandaNode *NodePath::get_node(int index, Thread *current_thread = ((get_current_thread()))) const;

2620 12 get_ancestor 0 4 3862 22 NodePath::get_ancestor 0 2 474 475 531
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_ancestor
//       Access: Published
//  Description: Returns the nth ancestor of the path, where 0 is the
//               NodePath itself and get_num_nodes() - 1 is get_top().
//               This requires iterating through the path.
//
//               Also see get_node(), which returns the same thing as
//               a PandaNode pointer, not a NodePath.
////////////////////////////////////////////////////////////////////
100
NodePath NodePath::get_ancestor(int index, Thread *current_thread = ((get_current_thread()))) const;

2621 14 get_error_type 0 4 3862 24 NodePath::get_error_type 0 1 476 337
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_error_type
//       Access: Published
//  Description: If is_empty() is true, this returns a code that
//               represents the reason why the NodePath is empty.
////////////////////////////////////////////////////////////////////
64
inline NodePath::ErrorType NodePath::get_error_type(void) const;

2622 12 get_top_node 0 4 3862 22 NodePath::get_top_node 0 2 477 478 345
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_top_node
//       Access: Published
//  Description: Returns the top node of the path, or NULL if the path
//               is empty.  This requires iterating through the path.
////////////////////////////////////////////////////////////////////
98
inline PandaNode *NodePath::get_top_node(Thread *current_thread = ((get_current_thread()))) const;

2623 7 get_top 0 4 3862 17 NodePath::get_top 0 2 479 480 340
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_top
//       Access: Published
//  Description: Returns a singleton NodePath that represents the top
//               of the path, or empty NodePath if this path is empty.
////////////////////////////////////////////////////////////////////
84
NodePath NodePath::get_top(Thread *current_thread = ((get_current_thread()))) const;

2624 4 node 0 4 3862 14 NodePath::node 0 1 481 254
////////////////////////////////////////////////////////////////////
//     Function: NodePath::node
//       Access: Published
//  Description: Returns the referenced node of the path.
////////////////////////////////////////////////////////////////////
45
inline PandaNode *NodePath::node(void) const;

2625 7 get_key 0 4 3862 17 NodePath::get_key 0 1 482 988
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_key
//       Access: Published
//  Description: Returns an integer that is guaranteed to be the same
//               for all NodePaths that represent the same node
//               instance, and different for all NodePaths that
//               represent a different node instance.  
//
//               The same key will be returned for a particular
//               instance as long as at least one NodePath exists that
//               represents that instance; if all NodePaths for a
//               particular instance destruct and a new one is later
//               created, it may have a different index.  However, a
//               given key will never be reused for a different
//               instance (unless the app has been running long enough
//               that we overflow the integer key value).
////////////////////////////////////////////////////////////////////
41
inline int NodePath::get_key(void) const;

2626 8 add_hash 0 4 3862 18 NodePath::add_hash 0 1 483 866
////////////////////////////////////////////////////////////////////
//     Function: NodePath::add_hash
//       Access: Published
//  Description: Adds the NodePath into the running hash.  This is
//               intended to be used by lower-level code that computes
//               a hash for each NodePath.  It modifies the hash value
//               passed in by a unique adjustment for each NodePath,
//               and returns the modified hash.
//
//               This is similar to the unique integer returned by
//               get_key(), but it is not guaranteed to remain unique
//               beyond the lifetime of this particular NodePath.
//               Once this NodePath destructs, a different NodePath
//               may be created which shares the same hash value.
////////////////////////////////////////////////////////////////////
64
inline unsigned int NodePath::add_hash(unsigned int hash) const;

2627 13 is_same_graph 0 4 3862 23 NodePath::is_same_graph 0 2 484 485 526
////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_same_graph
//       Access: Published
//  Description: Returns true if the node represented by this NodePath
//               is parented within the same graph as that of the
//               other NodePath.  This is essentially the same thing
//               as asking whether get_top() of both NodePaths is the
//               same (e.g., both "render").
////////////////////////////////////////////////////////////////////
116
inline bool NodePath::is_same_graph(NodePath const &other, Thread *current_thread = ((get_current_thread()))) const;

2628 14 is_ancestor_of 0 4 3862 24 NodePath::is_ancestor_of 0 2 486 487 387
////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_ancestor_of
//       Access: Published
//  Description: Returns true if the node represented by this NodePath
//               is a parent or other ancestor of the other NodePath,
//               or false if it is not.
////////////////////////////////////////////////////////////////////
117
inline bool NodePath::is_ancestor_of(NodePath const &other, Thread *current_thread = ((get_current_thread()))) const;

2629 19 get_common_ancestor 0 4 3862 29 NodePath::get_common_ancestor 0 2 488 489 468
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_common_ancestor
//       Access: Published
//  Description: Returns the lowest NodePath that both of these two
//               NodePaths have in common: the first ancestor that
//               both of them share.  If the two NodePaths are
//               unrelated, returns NodePath::not_found().
////////////////////////////////////////////////////////////////////
126
inline NodePath NodePath::get_common_ancestor(NodePath const &other, Thread *current_thread = ((get_current_thread()))) const;

2630 12 get_children 0 4 3862 22 NodePath::get_children 0 2 490 491 386
// Methods that return collections of NodePaths derived from or
// related to this one.

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_children
//       Access: Published
//  Description: Returns the set of all child nodes of the referenced
//               node.
////////////////////////////////////////////////////////////////////
99
NodePathCollection NodePath::get_children(Thread *current_thread = ((get_current_thread()))) const;

2631 16 get_num_children 0 4 3862 26 NodePath::get_num_children 0 2 492 493 280
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_num_children
//       Access: Published
//  Description: Returns the number of children of the referenced node.
////////////////////////////////////////////////////////////////////
95
inline int NodePath::get_num_children(Thread *current_thread = ((get_current_thread()))) const;

2632 9 get_child 0 4 3862 19 NodePath::get_child 0 2 494 495 305
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_child
//       Access: Published
//  Description: Returns a NodePath representing the nth child of the
//               referenced node.
////////////////////////////////////////////////////////////////////
100
inline NodePath NodePath::get_child(int n, Thread *current_thread = ((get_current_thread()))) const;

2633 20 get_stashed_children 0 4 3862 30 NodePath::get_stashed_children 0 2 496 497 474
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_stashed_children
//       Access: Published
//  Description: Returns the set of all child nodes of the referenced
//               node that have been stashed.  These children are not
//               normally visible on the node, and do not appear in
//               the list returned by get_children().
////////////////////////////////////////////////////////////////////
107
NodePathCollection NodePath::get_stashed_children(Thread *current_thread = ((get_current_thread()))) const;

2634 21 count_num_descendants 0 4 3862 31 NodePath::count_num_descendants 0 1 498 283
////////////////////////////////////////////////////////////////////
//     Function: NodePath::count_num_descendants
//       Access: Published
//  Description: Returns the number of nodes at and below this level.
////////////////////////////////////////////////////////////////////
55
inline int NodePath::count_num_descendants(void) const;

2635 10 has_parent 0 4 3862 20 NodePath::has_parent 0 2 499 500 339
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_parent
//       Access: Published
//  Description: Returns true if the referenced node has a parent;
//               i.e. the NodePath chain contains at least two nodes.
////////////////////////////////////////////////////////////////////
90
inline bool NodePath::has_parent(Thread *current_thread = ((get_current_thread()))) const;

2636 10 get_parent 0 4 3862 20 NodePath::get_parent 0 2 501 502 448
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_parent
//       Access: Published
//  Description: Returns the NodePath to the parent of the referenced
//               node: that is, this NodePath, shortened by one node.
//               The parent of a singleton NodePath is defined to be
//               the empty NodePath.
////////////////////////////////////////////////////////////////////
94
inline NodePath NodePath::get_parent(Thread *current_thread = ((get_current_thread()))) const;

2637 8 get_sort 0 4 3862 18 NodePath::get_sort 0 2 503 504 513
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sort
//       Access: Published
//  Description: Returns the sort value of the referenced node within
//               its parent; that is, the sort number passed on the
//               last reparenting operation for this node.  This will
//               control the position of the node within its parent's
//               list of children.
////////////////////////////////////////////////////////////////////
80
int NodePath::get_sort(Thread *current_thread = ((get_current_thread()))) const;

2638 4 find 0 4 3862 14 NodePath::find 0 1 505 435
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find
//       Access: Published
//  Description: Searches for a node below the referenced node that
//               matches the indicated string.  Returns the shortest
//               match found, if any, or an empty NodePath if no match
//               can be found.
////////////////////////////////////////////////////////////////////
64
NodePath NodePath::find(basic_string< char > const &path) const;

2639 12 find_path_to 0 4 3862 22 NodePath::find_path_to 0 1 506 340
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_path_to
//       Access: Published
//  Description: Searches for the indicated node below this node and
//               returns the shortest NodePath that connects them.
////////////////////////////////////////////////////////////////////
55
NodePath NodePath::find_path_to(PandaNode *node) const;

2640 16 find_all_matches 0 4 3862 26 NodePath::find_all_matches 0 1 507 419
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_matches
//       Access: Published
//  Description: Returns the complete set of all NodePaths that begin
//               with this NodePath and can be extended by
//               path.  The shortest paths will be listed
//               first.
////////////////////////////////////////////////////////////////////
86
NodePathCollection NodePath::find_all_matches(basic_string< char > const &path) const;

2641 17 find_all_paths_to 0 4 3862 27 NodePath::find_all_paths_to 0 1 508 394
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_paths_to
//       Access: Published
//  Description: Returns the set of all NodePaths that extend from
//               this NodePath down to the indicated node.  The
//               shortest paths will be listed first.
////////////////////////////////////////////////////////////////////
70
NodePathCollection NodePath::find_all_paths_to(PandaNode *node) const;

2642 11 reparent_to 0 4 3862 21 NodePath::reparent_to 0 3 509 510 511 1025
// Methods that actually move nodes around in the scene graph.  The
// optional "sort" parameter can be used to force a particular
// ordering between sibling nodes, useful when dealing with LOD's
// and similar switch nodes.  If the sort value is the same, nodes
// will be arranged in the order they were added.

////////////////////////////////////////////////////////////////////
//     Function: NodePath::reparent_to
//       Access: Published
//  Description: Removes the referenced node of the NodePath from its
//               current parent and attaches it to the referenced node
//               of the indicated NodePath.  
//
//               If the destination NodePath is empty, this is the
//               same thing as detach_node().
//
//               If the referenced node is already a child of the
//               indicated NodePath (via some other instance), this
//               operation fails and leaves the NodePath detached.
////////////////////////////////////////////////////////////////////
117
void NodePath::reparent_to(NodePath const &other, int sort = (0), Thread *current_thread = ((get_current_thread())));

2643 8 stash_to 0 4 3862 18 NodePath::stash_to 0 3 512 513 514 441
////////////////////////////////////////////////////////////////////
//     Function: NodePath::stash_to
//       Access: Published
//  Description: Similar to reparent_to(), but the node is added to
//               its new parent's stashed list, so that the result is
//               equivalent to calling reparent_to() immediately
//               followed by stash().
////////////////////////////////////////////////////////////////////
114
void NodePath::stash_to(NodePath const &other, int sort = (0), Thread *current_thread = ((get_current_thread())));

2644 15 wrt_reparent_to 0 4 3862 25 NodePath::wrt_reparent_to 0 3 515 516 517 514
////////////////////////////////////////////////////////////////////
//     Function: NodePath::wrt_reparent_to
//       Access: Published
//  Description: This functions identically to reparent_to(), except
//               the transform on this node is also adjusted so that
//               the node remains in the same place in world
//               coordinates, even if it is reparented into a
//               different coordinate system.
////////////////////////////////////////////////////////////////////
121
void NodePath::wrt_reparent_to(NodePath const &other, int sort = (0), Thread *current_thread = ((get_current_thread())));

2645 11 instance_to 0 4 3862 21 NodePath::instance_to 0 3 518 519 520 1455
////////////////////////////////////////////////////////////////////
//     Function: NodePath::instance_to
//       Access: Published
//  Description: Adds the referenced node of the NodePath as a child
//               of the referenced node of the indicated other
//               NodePath.  Any other parent-child relations of the
//               node are unchanged; in particular, the node is not
//               removed from its existing parent, if any.
//
//               If the node already had an existing parent, this
//               method will create a new instance of the node within
//               the scene graph.
//
//               This does not change the NodePath itself, but does
//               return a new NodePath that reflects the new instance
//               node.
//
//               If the destination NodePath is empty, this creates a
//               new instance which is not yet parented to any node.
//               A new instance of this sort cannot easily be
//               differentiated from other similar instances, but it
//               is nevertheless a different instance and it will
//               return a different get_id() value.
//
//               If the referenced node is already a child of the
//               indicated NodePath, returns that already-existing
//               instance, unstashing it first if necessary.
////////////////////////////////////////////////////////////////////
127
NodePath NodePath::instance_to(NodePath const &other, int sort = (0), Thread *current_thread = ((get_current_thread()))) const;

2646 19 instance_under_node 0 4 3862 29 NodePath::instance_under_node 0 3 521 522 523 516
////////////////////////////////////////////////////////////////////
//     Function: NodePath::instance_under_node
//       Access: Published
//  Description: Behaves like instance_to(), but implicitly creates a
//               new node to instance the geometry under, and returns a
//               NodePath to that new node.  This allows the
//               programmer to set a unique state and/or transform on
//               this instance.
////////////////////////////////////////////////////////////////////
169
NodePath NodePath::instance_under_node(NodePath const &other, basic_string< char > const &name, int sort = (0), Thread *current_thread = ((get_current_thread()))) const;

2647 7 copy_to 0 4 3862 17 NodePath::copy_to 0 3 524 525 526 489
////////////////////////////////////////////////////////////////////
//     Function: NodePath::copy_to
//       Access: Published
//  Description: Functions like instance_to(), except a deep
//               copy is made of the referenced node and all of its
//               descendents, which is then parented to the indicated
//               node.  A NodePath to the newly created copy is
//               returned.
////////////////////////////////////////////////////////////////////
123
NodePath NodePath::copy_to(NodePath const &other, int sort = (0), Thread *current_thread = ((get_current_thread()))) const;

2648 15 attach_new_node 0 4 3862 25 NodePath::attach_new_node 0 6 527 528 529 530 531 532 1179
////////////////////////////////////////////////////////////////////
//     Function: NodePath::attach_new_node
//       Access: Published
//  Description: Creates an ordinary PandaNode and attaches it below
//               the current NodePath, returning a new NodePath that
//               references it.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::attach_new_node
//       Access: Published
//  Description: Attaches a new node, with or without existing
//               parents, to the scene graph below the referenced node
//               of this NodePath.  This is the preferred way to add
//               nodes to the graph.
//
//               If the node was already a child of the parent, this
//               returns a NodePath to the existing child.
//
//               This does *not* automatically extend the current
//               NodePath to reflect the attachment; however, a
//               NodePath that does reflect this extension is
//               returned.
////////////////////////////////////////////////////////////////////
275
NodePath NodePath::attach_new_node(PandaNode *node, int sort = (0), Thread *current_thread = ((get_current_thread()))) const;
inline NodePath NodePath::attach_new_node(basic_string< char > const &name, int sort = (0), Thread *current_thread = ((get_current_thread()))) const;

2649 11 remove_node 0 4 3862 21 NodePath::remove_node 0 2 533 534 1171
////////////////////////////////////////////////////////////////////
//     Function: NodePath::remove_node
//       Access: Published
//  Description: Disconnects the referenced node from the scene graph.
//               This will also delete the node if there are no other
//               pointers to it.
//
//               Normally, this should be called only when you are
//               really done with the node.  If you want to remove a
//               node from the scene graph but keep it around for
//               later, you should probably use detach_node() instead.
//
//               In practice, the only difference between
//               remove_node() and detach_node() is that remove_node()
//               also resets the NodePath to empty, which will cause
//               the node to be deleted immediately if there are no
//               other references.  On the other hand, detach_node()
//               leaves the NodePath referencing the node, which will
//               keep at least one reference to the node for as long
//               as the NodePath exists.
////////////////////////////////////////////////////////////////////
78
void NodePath::remove_node(Thread *current_thread = ((get_current_thread())));

2650 11 detach_node 0 4 3862 21 NodePath::detach_node 0 2 535 536 1153
////////////////////////////////////////////////////////////////////
//     Function: NodePath::detach_node
//       Access: Published
//  Description: Disconnects the referenced node from its parent, but
//               does not immediately delete it.  The NodePath retains
//               a pointer to the node, and becomes a singleton
//               NodePath.
//
//               This should be called to detach a node from the scene
//               graph, with the option of reattaching it later to the
//               same parent or to a different parent.
//
//               In practice, the only difference between
//               remove_node() and detach_node() is that remove_node()
//               also resets the NodePath to empty, which will cause
//               the node to be deleted immediately if there are no
//               other references.  On the other hand, detach_node()
//               leaves the NodePath referencing the node, which will
//               keep at least one reference to the node for as long
//               as the NodePath exists.
////////////////////////////////////////////////////////////////////
78
void NodePath::detach_node(Thread *current_thread = ((get_current_thread())));

2651 6 output 0 4 3862 16 NodePath::output 0 1 537 389
// Handy ways to look at what's there, and other miscellaneous
// operations.

////////////////////////////////////////////////////////////////////
//     Function: NodePath::output
//       Access: Published
//  Description: Writes a sensible description of the NodePath to the
//               indicated output stream.
////////////////////////////////////////////////////////////////////
42
void NodePath::output(ostream &out) const;

2652 2 ls 0 4 3862 12 NodePath::ls 0 3 538 539 540 532
////////////////////////////////////////////////////////////////////
//     Function: NodePath::ls
//       Access: Published
//  Description: Lists the hierarchy at and below the referenced node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::ls
//       Access: Published
//  Description: Lists the hierarchy at and below the referenced node.
////////////////////////////////////////////////////////////////////
107
inline void NodePath::ls(void) const;
inline void NodePath::ls(ostream &out, int indent_level = (0)) const;

2653 10 reverse_ls 0 4 3862 20 NodePath::reverse_ls 0 3 541 542 543 548
////////////////////////////////////////////////////////////////////
//     Function: NodePath::reverse_ls
//       Access: Published
//  Description: Lists the hierarchy at and above the referenced node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::reverse_ls
//       Access: Published
//  Description: Lists the hierarchy at and above the referenced node.
////////////////////////////////////////////////////////////////////
122
inline void NodePath::reverse_ls(void) const;
inline int NodePath::reverse_ls(ostream &out, int indent_level = (0)) const;

2654 9 get_state 0 4 3862 19 NodePath::get_state 0 4 544 545 546 547 703
// Aggregate transform and state information.

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_state
//       Access: Published
//  Description: Returns the complete state object set on this node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_state
//       Access: Published
//  Description: Returns the state changes that must be made to
//               transition to the render state of this node from the
//               render state of the other node.
////////////////////////////////////////////////////////////////////
227
RenderState const *NodePath::get_state(Thread *current_thread = ((get_current_thread()))) const;
ConstPointerTo< RenderState > NodePath::get_state(NodePath const &other, Thread *current_thread = ((get_current_thread()))) const;

2655 9 set_state 0 4 3862 19 NodePath::set_state 0 4 548 549 550 551 748
// Aggregate transform and state information.

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_state
//       Access: Published
//  Description: Changes the complete state object on this node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_state
//       Access: Published
//  Description: Sets the state object on this node, relative to
//               the other node.  This computes a new state object
//               that will have the indicated value when seen from the
//               other node.
////////////////////////////////////////////////////////////////////
235
inline void NodePath::set_state(RenderState const *state, Thread *current_thread = ((get_current_thread())));
void NodePath::set_state(NodePath const &other, RenderState const *state, Thread *current_thread = ((get_current_thread())));

2656 13 get_net_state 0 4 3862 23 NodePath::get_net_state 0 2 552 553 272
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_state
//       Access: Published
//  Description: Returns the net state on this node from the root.
////////////////////////////////////////////////////////////////////
118
inline ConstPointerTo< RenderState > NodePath::get_net_state(Thread *current_thread = ((get_current_thread()))) const;

2657 10 set_attrib 0 4 3862 20 NodePath::set_attrib 0 2 554 555 474
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_attrib
//       Access: Published
//  Description: Adds the indicated render attribute to the scene
//               graph on this node.  This attribute will now apply to
//               this node and everything below.  If there was already
//               an attribute of the same type, it is replaced.
////////////////////////////////////////////////////////////////////
81
inline void NodePath::set_attrib(RenderAttrib const *attrib, int priority = (0));

2658 10 get_attrib 0 4 3862 20 NodePath::get_attrib 0 1 556 537
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_attrib
//       Access: Published
//  Description: Returns the render attribute of the indicated type,
//               if it is defined on the node, or NULL if it is not.
//               This checks only what is set on this particular node
//               level, and has nothing to do with what render
//               attributes may be inherited from parent nodes.
////////////////////////////////////////////////////////////////////
71
inline RenderAttrib const *NodePath::get_attrib(TypeHandle type) const;

2659 10 has_attrib 0 4 3862 20 NodePath::has_attrib 0 1 557 367
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_attrib
//       Access: Published
//  Description: Returns true if there is a render attribute of the
//               indicated type defined on this node, or false if
//               there is not.
////////////////////////////////////////////////////////////////////
56
inline bool NodePath::has_attrib(TypeHandle type) const;

2660 12 clear_attrib 0 4 3862 22 NodePath::clear_attrib 0 1 558 450
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_attrib
//       Access: Published
//  Description: Removes the render attribute of the given type from
//               this node.  This node, and the subgraph below, will
//               now inherit the indicated render attribute from the
//               nodes above this one.
////////////////////////////////////////////////////////////////////
52
inline void NodePath::clear_attrib(TypeHandle type);

2661 10 set_effect 0 4 3862 20 NodePath::set_effect 0 1 559 385
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_effect
//       Access: Published
//  Description: Adds the indicated render effect to the scene
//               graph on this node.  If there was already an effect
//               of the same type, it is replaced.
////////////////////////////////////////////////////////////////////
61
inline void NodePath::set_effect(RenderEffect const *effect);

2662 10 get_effect 0 4 3862 20 NodePath::get_effect 0 1 560 337
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_effect
//       Access: Published
//  Description: Returns the render effect of the indicated type,
//               if it is defined on the node, or NULL if it is not.
////////////////////////////////////////////////////////////////////
71
inline RenderEffect const *NodePath::get_effect(TypeHandle type) const;

2663 10 has_effect 0 4 3862 20 NodePath::has_effect 0 1 561 364
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_effect
//       Access: Published
//  Description: Returns true if there is a render effect of the
//               indicated type defined on this node, or false if
//               there is not.
////////////////////////////////////////////////////////////////////
56
inline bool NodePath::has_effect(TypeHandle type) const;

2664 12 clear_effect 0 4 3862 22 NodePath::clear_effect 0 1 562 298
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_effect
//       Access: Published
//  Description: Removes the render effect of the given type from
//               this node.
////////////////////////////////////////////////////////////////////
52
inline void NodePath::clear_effect(TypeHandle type);

2665 11 set_effects 0 4 3862 21 NodePath::set_effects 0 1 563 432
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_effects
//       Access: Published
//  Description: Sets the complete RenderEffects that will be applied
//               this node.  This completely replaces whatever has
//               been set on this node via repeated calls to
//               set_attrib().
////////////////////////////////////////////////////////////////////
64
inline void NodePath::set_effects(RenderEffects const *effects);

2666 11 get_effects 0 4 3862 21 NodePath::get_effects 0 1 564 307
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_effects
//       Access: Published
//  Description: Returns the complete RenderEffects that will be
//               applied to this node.
////////////////////////////////////////////////////////////////////
62
inline RenderEffects const *NodePath::get_effects(void) const;

2667 13 clear_effects 0 4 3862 23 NodePath::clear_effects 0 1 565 266
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_effects
//       Access: Published
//  Description: Resets this node to have no render effects.
////////////////////////////////////////////////////////////////////
42
inline void NodePath::clear_effects(void);

2668 13 get_transform 0 4 3862 23 NodePath::get_transform 0 4 566 567 568 569 667
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_transform
//       Access: Published
//  Description: Returns the complete transform object set on this node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_transform
//       Access: Published
//  Description: Returns the relative transform to this node from the
//               other node; i.e. the transformation of this node
//               as seen from the other node.
////////////////////////////////////////////////////////////////////
241
TransformState const *NodePath::get_transform(Thread *current_thread = ((get_current_thread()))) const;
ConstPointerTo< TransformState > NodePath::get_transform(NodePath const &other, Thread *current_thread = ((get_current_thread()))) const;

2669 15 clear_transform 0 4 3862 25 NodePath::clear_transform 0 4 570 571 572 573 691
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_transform
//       Access: Published
//  Description: Sets the transform object on this node to identity.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_transform
//       Access: Published
//  Description: Sets the transform object on this node to identity,
//               relative to the other node.  This effectively places
//               this node at the same position as the other node.
////////////////////////////////////////////////////////////////////
202
inline void NodePath::clear_transform(Thread *current_thread = ((get_current_thread())));
inline void NodePath::clear_transform(NodePath const &other, Thread *current_thread = ((get_current_thread())));

2670 13 set_transform 0 4 3862 23 NodePath::set_transform 0 4 574 575 576 577 721
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_transform
//       Access: Published
//  Description: Changes the complete transform object on this node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_transform
//       Access: Published
//  Description: Sets the transform object on this node, relative to
//               the other node.  This computes a new transform object
//               that will have the indicated value when seen from the
//               other node.
////////////////////////////////////////////////////////////////////
257
inline void NodePath::set_transform(TransformState const *transform, Thread *current_thread = ((get_current_thread())));
void NodePath::set_transform(NodePath const &other, TransformState const *transform, Thread *current_thread = ((get_current_thread())));

2671 17 get_net_transform 0 4 3862 27 NodePath::get_net_transform 0 2 578 579 280
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_transform
//       Access: Published
//  Description: Returns the net transform on this node from the root.
////////////////////////////////////////////////////////////////////
125
inline ConstPointerTo< TransformState > NodePath::get_net_transform(Thread *current_thread = ((get_current_thread()))) const;

2672 18 get_prev_transform 0 4 3862 28 NodePath::get_prev_transform 0 4 580 581 582 583 823
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_prev_transform
//       Access: Published
//  Description: Returns the transform that has been set as this
//               node's "previous" position.  See
//               set_prev_transform().
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_prev_transform
//       Access: Published
//  Description: Returns the relative "previous" transform to this
//               node from the other node; i.e. the position of this
//               node in the previous frame, as seen by the other node
//               in the previous frame.
////////////////////////////////////////////////////////////////////
251
TransformState const *NodePath::get_prev_transform(Thread *current_thread = ((get_current_thread()))) const;
ConstPointerTo< TransformState > NodePath::get_prev_transform(NodePath const &other, Thread *current_thread = ((get_current_thread()))) const;

2673 18 set_prev_transform 0 4 3862 28 NodePath::set_prev_transform 0 4 584 585 586 587 898
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_prev_transform
//       Access: Published
//  Description: Sets the transform that represents this node's
//               "previous" position, one frame ago, for the purposes
//               of detecting motion for accurate collision
//               calculations.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_prev_transform
//       Access: Published
//  Description: Sets the "previous" transform object on this node,
//               relative to the other node.  This computes a new
//               transform object that will have the indicated value
//               when seen from the other node.
////////////////////////////////////////////////////////////////////
267
inline void NodePath::set_prev_transform(TransformState const *transform, Thread *current_thread = ((get_current_thread())));
void NodePath::set_prev_transform(NodePath const &other, TransformState const *transform, Thread *current_thread = ((get_current_thread())));

2674 22 get_net_prev_transform 0 4 3862 32 NodePath::get_net_prev_transform 0 2 588 589 340
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_prev_transform
//       Access: Published
//  Description: Returns the net "previous" transform on this node
//               from the root.  See set_prev_transform().
////////////////////////////////////////////////////////////////////
130
inline ConstPointerTo< TransformState > NodePath::get_net_prev_transform(Thread *current_thread = ((get_current_thread()))) const;

2675 7 set_pos 0 4 3862 17 NodePath::set_pos 0 4 590 591 592 593 2052
// Methods that get and set the matrix transform: pos, hpr, scale,
// in the local coordinate system.

// Methods that get and set the matrix transforms relative to some
// other node in the scene graph.  These perform an implicit wrt().

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               leaving rotation and scale untouched.  This also
//               resets the node's "previous" position, so that the
//               collision system will see the node as having suddenly
//               appeared in the new position, without passing any
//               points in between.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               leaving rotation and scale untouched.  This also
//               resets the node's "previous" position, so that the
//               collision system will see the node as having suddenly
//               appeared in the new position, without passing any
//               points in between.
//     See Also: NodePath::set_fluid_pos
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////
255
inline void NodePath::set_pos(float x, float y, float z);
void NodePath::set_pos(LVecBase3f const &pos);
inline void NodePath::set_pos(NodePath const &other, float x, float y, float z);
void NodePath::set_pos(NodePath const &other, LVecBase3f const &pos);

2676 5 set_x 0 4 3862 15 NodePath::set_x 0 2 594 595 0
84
void NodePath::set_x(float x);
void NodePath::set_x(NodePath const &other, float x);

2677 5 set_y 0 4 3862 15 NodePath::set_y 0 2 596 597 0
84
void NodePath::set_y(float y);
void NodePath::set_y(NodePath const &other, float y);

2678 5 set_z 0 4 3862 15 NodePath::set_z 0 2 598 599 0
84
void NodePath::set_z(float z);
void NodePath::set_z(NodePath const &other, float z);

2679 13 set_fluid_pos 0 4 3862 23 NodePath::set_fluid_pos 0 4 600 601 602 603 1737
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fluid_pos
//       Access: Published
//  Description: Sets the translation component, without changing the
//               "previous" position, so that the collision system
//               will see the node as moving fluidly from its previous
//               position to its new position.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fluid_pos
//       Access: Published
//  Description: Sets the translation component, without changing the
//               "previous" position, so that the collision system
//               will see the node as moving fluidly from its previous
//               position to its new position.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fluid_pos
//       Access: Published
//  Description: Sets the translation component, without changing the
//               "previous" position, so that the collision system
//               will see the node as moving fluidly from its previous
//               position to its new position.
//     See Also: NodePath::set_pos
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fluid_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////
279
inline void NodePath::set_fluid_pos(float x, float y, float z);
void NodePath::set_fluid_pos(LVecBase3f const &pos);
inline void NodePath::set_fluid_pos(NodePath const &other, float x, float y, float z);
void NodePath::set_fluid_pos(NodePath const &other, LVecBase3f const &pos);

2680 11 set_fluid_x 0 4 3862 21 NodePath::set_fluid_x 0 2 604 605 0
96
void NodePath::set_fluid_x(float x);
void NodePath::set_fluid_x(NodePath const &other, float x);

2681 11 set_fluid_y 0 4 3862 21 NodePath::set_fluid_y 0 2 606 607 0
96
void NodePath::set_fluid_y(float y);
void NodePath::set_fluid_y(NodePath const &other, float y);

2682 11 set_fluid_z 0 4 3862 21 NodePath::set_fluid_z 0 2 608 609 0
96
void NodePath::set_fluid_z(float z);
void NodePath::set_fluid_z(NodePath const &other, float z);

2683 7 get_pos 0 4 3862 17 NodePath::get_pos 0 2 610 611 587
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_pos
//       Access: Published
//  Description: Retrieves the translation component of the transform.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_pos
//       Access: Published
//  Description: Returns the relative position of the referenced node
//               as seen from the other node.
////////////////////////////////////////////////////////////////////
96
LPoint3f NodePath::get_pos(void) const;
LPoint3f NodePath::get_pos(NodePath const &other) const;

2684 5 get_x 0 4 3862 15 NodePath::get_x 0 2 612 613 0
100
inline float NodePath::get_x(void) const;
inline float NodePath::get_x(NodePath const &other) const;

2685 5 get_y 0 4 3862 15 NodePath::get_y 0 2 614 615 0
100
inline float NodePath::get_y(void) const;
inline float NodePath::get_y(NodePath const &other) const;

2686 5 get_z 0 4 3862 15 NodePath::get_z 0 2 616 617 0
100
inline float NodePath::get_z(void) const;
inline float NodePath::get_z(NodePath const &other) const;

2687 13 get_pos_delta 0 4 3862 23 NodePath::get_pos_delta 0 2 618 619 1701
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_pos_delta
//       Access: Published
//  Description: Returns the delta vector from this node's position in
//               the previous frame (according to
//               set_prev_transform(), typically set via the use of
//               set_fluid_pos()) and its position in the current
//               frame.  This is the vector used to determine
//               collisions.  Generally, if the node was last
//               repositioned via set_pos(), the delta will be zero;
//               if it was adjusted via set_fluid_pos(), the delta
//               will represent the change from the previous frame's
//               position.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_pos_delta
//       Access: Published
//  Description: Returns the delta vector from this node's position in
//               the previous frame (according to
//               set_prev_transform(), typically set via the use of
//               set_fluid_pos()) and its position in the current
//               frame, as seen in the indicated node's coordinate
//               space.  This is the vector used to determine
//               collisions.  Generally, if the node was last
//               repositioned via set_pos(), the delta will be zero;
//               if it was adjusted via set_fluid_pos(), the delta
//               will represent the change from the previous frame's
//               position.
////////////////////////////////////////////////////////////////////
110
LVector3f NodePath::get_pos_delta(void) const;
LVector3f NodePath::get_pos_delta(NodePath const &other) const;

2688 7 set_hpr 0 4 3862 17 NodePath::set_hpr 0 4 620 621 622 623 1260
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               leaving translation and scale untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               leaving translation and scale untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////
255
inline void NodePath::set_hpr(float h, float p, float r);
void NodePath::set_hpr(LVecBase3f const &hpr);
inline void NodePath::set_hpr(NodePath const &other, float h, float p, float r);
void NodePath::set_hpr(NodePath const &other, LVecBase3f const &hpr);

2689 5 set_h 0 4 3862 15 NodePath::set_h 0 2 624 625 0
84
void NodePath::set_h(float h);
void NodePath::set_h(NodePath const &other, float h);

2690 5 set_p 0 4 3862 15 NodePath::set_p 0 2 626 627 0
84
void NodePath::set_p(float p);
void NodePath::set_p(NodePath const &other, float p);

2691 5 set_r 0 4 3862 15 NodePath::set_r 0 2 628 629 0
84
void NodePath::set_r(float r);
void NodePath::set_r(NodePath const &other, float r);

2692 7 get_hpr 0 4 3862 17 NodePath::get_hpr 0 2 630 631 583
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_hpr
//       Access: Published
//  Description: Retrieves the rotation component of the transform.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_hpr
//       Access: Published
//  Description: Returns the relative orientation of the bottom node
//               as seen from the other node.
////////////////////////////////////////////////////////////////////
100
LVecBase3f NodePath::get_hpr(void) const;
LVecBase3f NodePath::get_hpr(NodePath const &other) const;

2693 5 get_h 0 4 3862 15 NodePath::get_h 0 2 632 633 0
100
inline float NodePath::get_h(void) const;
inline float NodePath::get_h(NodePath const &other) const;

2694 5 get_p 0 4 3862 15 NodePath::get_p 0 2 634 635 0
100
inline float NodePath::get_p(void) const;
inline float NodePath::get_p(NodePath const &other) const;

2695 5 get_r 0 4 3862 15 NodePath::get_r 0 2 636 637 0
100
inline float NodePath::get_r(void) const;
inline float NodePath::get_r(NodePath const &other) const;

2696 8 set_quat 0 4 3862 18 NodePath::set_quat 0 2 638 639 631
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_quat
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               leaving translation and scale untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_quat
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////
124
void NodePath::set_quat(LQuaternionf const &quat);
void NodePath::set_quat(NodePath const &other, LQuaternionf const &quat);

2697 8 get_quat 0 4 3862 18 NodePath::get_quat 0 2 640 641 585
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_quat
//       Access: Published
//  Description: Retrieves the rotation component of the transform.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_quat
//       Access: Published
//  Description: Returns the relative orientation of the bottom node
//               as seen from the other node.
////////////////////////////////////////////////////////////////////
106
LQuaternionf NodePath::get_quat(void) const;
LQuaternionf NodePath::get_quat(NodePath const &other) const;

2698 9 set_scale 0 4 3862 19 NodePath::set_scale 0 6 642 643 644 645 646 647 1570
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               leaving translation and rotation untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               leaving translation and rotation untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////
388
inline void NodePath::set_scale(float scale);
inline void NodePath::set_scale(float sx, float sy, float sz);
void NodePath::set_scale(LVecBase3f const &scale);
inline void NodePath::set_scale(NodePath const &other, float scale);
inline void NodePath::set_scale(NodePath const &other, float sx, float sy, float sz);
void NodePath::set_scale(NodePath const &other, LVecBase3f const &scale);

2699 6 set_sx 0 4 3862 16 NodePath::set_sx 0 2 648 649 0
88
void NodePath::set_sx(float sx);
void NodePath::set_sx(NodePath const &other, float sx);

2700 6 set_sy 0 4 3862 16 NodePath::set_sy 0 2 650 651 0
88
void NodePath::set_sy(float sy);
void NodePath::set_sy(NodePath const &other, float sy);

2701 6 set_sz 0 4 3862 16 NodePath::set_sz 0 2 652 653 0
88
void NodePath::set_sz(float sz);
void NodePath::set_sz(NodePath const &other, float sz);

2702 9 get_scale 0 4 3862 19 NodePath::get_scale 0 2 654 655 578
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_scale
//       Access: Published
//  Description: Retrieves the scale component of the transform.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_scale
//       Access: Published
//  Description: Returns the relative scale of the bottom node
//               as seen from the other node.
////////////////////////////////////////////////////////////////////
104
LVecBase3f NodePath::get_scale(void) const;
LVecBase3f NodePath::get_scale(NodePath const &other) const;

2703 6 get_sx 0 4 3862 16 NodePath::get_sx 0 2 656 657 314
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_scale
//       Access: Published
//  Description: Returns the relative scale of the referenced node
//               as seen from the other node.
////////////////////////////////////////////////////////////////////
102
inline float NodePath::get_sx(void) const;
inline float NodePath::get_sx(NodePath const &other) const;

2704 6 get_sy 0 4 3862 16 NodePath::get_sy 0 2 658 659 0
102
inline float NodePath::get_sy(void) const;
inline float NodePath::get_sy(NodePath const &other) const;

2705 6 get_sz 0 4 3862 16 NodePath::get_sz 0 2 660 661 0
102
inline float NodePath::get_sz(void) const;
inline float NodePath::get_sz(NodePath const &other) const;

2706 9 set_shear 0 4 3862 19 NodePath::set_shear 0 4 662 663 664 665 1270
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shear
//       Access: Published
//  Description: Sets the shear component of the transform,
//               leaving translation, rotation, and scale untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shear
//       Access: Published
//  Description: Sets the shear component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shear
//       Access: Published
//  Description: Sets the shear component of the transform,
//               leaving translation and rotation untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shear
//       Access: Published
//  Description: Sets the shear component of the transform,
//               relative to the other node.
////////////////////////////////////////////////////////////////////
285
inline void NodePath::set_shear(float shxy, float shxz, float shyz);
void NodePath::set_shear(LVecBase3f const &shear);
inline void NodePath::set_shear(NodePath const &other, float shxy, float shxz, float shyz);
void NodePath::set_shear(NodePath const &other, LVecBase3f const &shear);

2707 8 set_shxy 0 4 3862 18 NodePath::set_shxy 0 2 666 667 0
96
void NodePath::set_shxy(float shxy);
void NodePath::set_shxy(NodePath const &other, float shxy);

2708 8 set_shxz 0 4 3862 18 NodePath::set_shxz 0 2 668 669 0
96
void NodePath::set_shxz(float shxz);
void NodePath::set_shxz(NodePath const &other, float shxz);

2709 8 set_shyz 0 4 3862 18 NodePath::set_shyz 0 2 670 671 0
96
void NodePath::set_shyz(float shyz);
void NodePath::set_shyz(NodePath const &other, float shyz);

2710 9 get_shear 0 4 3862 19 NodePath::get_shear 0 2 672 673 578
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shear
//       Access: Published
//  Description: Retrieves the shear component of the transform.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shear
//       Access: Published
//  Description: Returns the relative shear of the bottom node
//               as seen from the other node.
////////////////////////////////////////////////////////////////////
104
LVecBase3f NodePath::get_shear(void) const;
LVecBase3f NodePath::get_shear(NodePath const &other) const;

2711 8 get_shxy 0 4 3862 18 NodePath::get_shxy 0 2 674 675 314
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shear
//       Access: Published
//  Description: Returns the relative shear of the referenced node
//               as seen from the other node.
////////////////////////////////////////////////////////////////////
106
inline float NodePath::get_shxy(void) const;
inline float NodePath::get_shxy(NodePath const &other) const;

2712 8 get_shxz 0 4 3862 18 NodePath::get_shxz 0 2 676 677 0
106
inline float NodePath::get_shxz(void) const;
inline float NodePath::get_shxz(NodePath const &other) const;

2713 8 get_shyz 0 4 3862 18 NodePath::get_shyz 0 2 678 679 0
106
inline float NodePath::get_shyz(void) const;
inline float NodePath::get_shyz(NodePath const &other) const;

2714 11 set_pos_hpr 0 4 3862 21 NodePath::set_pos_hpr 0 4 680 681 682 683 1308
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, leaving scale untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, relative to the other node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, leaving scale untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, relative to the other node.
////////////////////////////////////////////////////////////////////
371
inline void NodePath::set_pos_hpr(float x, float y, float z, float h, float p, float r);
void NodePath::set_pos_hpr(LVecBase3f const &pos, LVecBase3f const &hpr);
inline void NodePath::set_pos_hpr(NodePath const &other, float x, float y, float z, float h, float p, float r);
void NodePath::set_pos_hpr(NodePath const &other, LVecBase3f const &pos, LVecBase3f const &hpr);

2715 12 set_pos_quat 0 4 3862 22 NodePath::set_pos_quat 0 2 684 685 655
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, leaving scale untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, relative to the other node.
////////////////////////////////////////////////////////////////////
178
void NodePath::set_pos_quat(LVecBase3f const &pos, LQuaternionf const &quat);
void NodePath::set_pos_quat(NodePath const &other, LVecBase3f const &pos, LQuaternionf const &quat);

2716 13 set_hpr_scale 0 4 3862 23 NodePath::set_hpr_scale 0 4 686 687 688 689 1612
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.  This, or
//               set_pos_hpr_scale, is the preferred way to update a
//               transform when both hpr and scale are to be changed.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.  This, or
//               set_pos_hpr_scale, is the preferred way to update a
//               transform when both hpr and scale are to be changed.
////////////////////////////////////////////////////////////////////
389
inline void NodePath::set_hpr_scale(float h, float p, float r, float sx, float sy, float sz);
void NodePath::set_hpr_scale(LVecBase3f const &hpr, LVecBase3f const &scale);
inline void NodePath::set_hpr_scale(NodePath const &other, float h, float p, float r, float sx, float sy, float sz);
void NodePath::set_hpr_scale(NodePath const &other, LVecBase3f const &hpr, LVecBase3f const &scale);

2717 14 set_quat_scale 0 4 3862 24 NodePath::set_quat_scale 0 2 690 691 809
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_quat_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_quat_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.  This, or
//               set_pos_quat_scale, is the preferred way to update a
//               transform when both quat and scale are to be changed.
////////////////////////////////////////////////////////////////////
186
void NodePath::set_quat_scale(LQuaternionf const &quat, LVecBase3f const &scale);
void NodePath::set_quat_scale(NodePath const &other, LQuaternionf const &quat, LVecBase3f const &scale);

2718 17 set_pos_hpr_scale 0 4 3862 27 NodePath::set_pos_hpr_scale 0 4 692 693 694 695 1452
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, and scale components.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, and scale components, relative
//               to the other node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale
//       Access: Published
//  Description: Replaces the translation, rotation, and scale
//               components, implicitly setting shear to 0.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, and scale components, relative
//               to the other node, implicitly setting shear to 0.
////////////////////////////////////////////////////////////////////
505
inline void NodePath::set_pos_hpr_scale(float x, float y, float z, float h, float p, float r, float sx, float sy, float sz);
void NodePath::set_pos_hpr_scale(LVecBase3f const &pos, LVecBase3f const &hpr, LVecBase3f const &scale);
inline void NodePath::set_pos_hpr_scale(NodePath const &other, float x, float y, float z, float h, float p, float r, float sx, float sy, float sz);
void NodePath::set_pos_hpr_scale(NodePath const &other, LVecBase3f const &pos, LVecBase3f const &hpr, LVecBase3f const &scale);

2719 18 set_pos_quat_scale 0 4 3862 28 NodePath::set_pos_quat_scale 0 2 696 697 743
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat_scale
//       Access: Published
//  Description: Replaces the translation, rotation, and scale
//               components, implicitly setting shear to 0.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat_scale
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, and scale components, relative
//               to the other node, implicitly setting shear to 0.
////////////////////////////////////////////////////////////////////
240
void NodePath::set_pos_quat_scale(LVecBase3f const &pos, LQuaternionf const &quat, LVecBase3f const &scale);
void NodePath::set_pos_quat_scale(NodePath const &other, LVecBase3f const &pos, LQuaternionf const &quat, LVecBase3f const &scale);

2720 23 set_pos_hpr_scale_shear 0 4 3862 33 NodePath::set_pos_hpr_scale_shear 0 2 698 699 735
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale_shear
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, scale, and shear components.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale_shear
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, scale, and shear components,
//               relative to the other node.
////////////////////////////////////////////////////////////////////
294
void NodePath::set_pos_hpr_scale_shear(LVecBase3f const &pos, LVecBase3f const &hpr, LVecBase3f const &scale, LVecBase3f const &shear);
void NodePath::set_pos_hpr_scale_shear(NodePath const &other, LVecBase3f const &pos, LVecBase3f const &hpr, LVecBase3f const &scale, LVecBase3f const &shear);

2721 24 set_pos_quat_scale_shear 0 4 3862 34 NodePath::set_pos_quat_scale_shear 0 2 700 701 737
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat_scale_shear
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, scale, and shear components.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat_scale_shear
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, scale, and shear components,
//               relative to the other node.
////////////////////////////////////////////////////////////////////
302
void NodePath::set_pos_quat_scale_shear(LVecBase3f const &pos, LQuaternionf const &quat, LVecBase3f const &scale, LVecBase3f const &shear);
void NodePath::set_pos_quat_scale_shear(NodePath const &other, LVecBase3f const &pos, LQuaternionf const &quat, LVecBase3f const &scale, LVecBase3f const &shear);

2722 7 set_mat 0 4 3862 17 NodePath::set_mat 0 2 702 703 640
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_mat
//       Access: Published
//  Description: Directly sets an arbitrary 4x4 transform matrix.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_mat
//       Access: Published
//  Description: Converts the indicated matrix from the other's
//               coordinate space to the local coordinate space, and
//               applies it to the node.
////////////////////////////////////////////////////////////////////
114
void NodePath::set_mat(LMatrix4f const &mat);
void NodePath::set_mat(NodePath const &other, LMatrix4f const &mat);

2723 9 clear_mat 0 4 3862 19 NodePath::clear_mat 0 1 704 294
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_mat
//       Access: Published
//  Description: Completely removes any transform from the referenced
//               node.
////////////////////////////////////////////////////////////////////
38
inline void NodePath::clear_mat(void);

2724 7 has_mat 0 4 3862 17 NodePath::has_mat 0 1 705 339
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_mat
//       Access: Published
//  Description: Returns true if a non-identity transform matrix has
//               been applied to the referenced node, false otherwise.
////////////////////////////////////////////////////////////////////
42
inline bool NodePath::has_mat(void) const;

2725 7 get_mat 0 4 3862 17 NodePath::get_mat 0 2 706 707 767
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_mat
//       Access: Published
//  Description: Returns the transform matrix that has been applied to
//               the referenced node, or the identity matrix if no
//               matrix has been applied.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_mat
//       Access: Published
//  Description: Returns the matrix that describes the coordinate
//               space of the bottom node, relative to the other
//               path's bottom node's coordinate space.
////////////////////////////////////////////////////////////////////
112
inline LMatrix4f const &NodePath::get_mat(void) const;
LMatrix4f NodePath::get_mat(NodePath const &other) const;

2726 7 look_at 0 4 3862 17 NodePath::look_at 0 7 708 709 710 711 712 713 714 1555
////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the transform on this NodePath so that it
//               rotates to face the indicated point in space.  This
//               will overwrite any previously existing scale on the
//               node, although it will preserve any translation.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the hpr on this NodePath so that it rotates to
//               face the indicated point in space, which is relative
//               to the other NodePath.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the hpr on this NodePath so that it
//               rotates to face the indicated point in space.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the transform on this NodePath so that it
//               rotates to face the indicated point in space, which
//               is relative to the other NodePath.
////////////////////////////////////////////////////////////////////
343
inline void NodePath::look_at(float x, float y, float z);
void NodePath::look_at(LPoint3f const &point, LVector3f const &up = ((up())));
inline void NodePath::look_at(NodePath const &other, float x, float y, float z);
void NodePath::look_at(NodePath const &other, LPoint3f const &point = ((LVertexf(0, 0, 0))), LVector3f const &up = ((up())));

2727 8 heads_up 0 4 3862 18 NodePath::heads_up 0 7 715 716 717 718 719 720 721 1490
////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
////////////////////////////////////////////////////////////////////
347
inline void NodePath::heads_up(float x, float y, float z);
void NodePath::heads_up(LPoint3f const &point, LVector3f const &up = ((up())));
inline void NodePath::heads_up(NodePath const &other, float x, float y, float z);
void NodePath::heads_up(NodePath const &other, LPoint3f const &point = ((LVertexf(0, 0, 0))), LVector3f const &up = ((up())));

2728 18 get_relative_point 0 4 3862 28 NodePath::get_relative_point 0 1 722 396
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_relative_point
//       Access: Published
//  Description: Given that the indicated point is in the coordinate
//               system of the other node, returns the same point in
//               this node's coordinate system.
////////////////////////////////////////////////////////////////////
92
LPoint3f NodePath::get_relative_point(NodePath const &other, LVecBase3f const &point) const;

2729 19 get_relative_vector 0 4 3862 29 NodePath::get_relative_vector 0 1 723 399
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_relative_vector
//       Access: Published
//  Description: Given that the indicated vector is in the coordinate
//               system of the other node, returns the same vector in
//               this node's coordinate system.
////////////////////////////////////////////////////////////////////
92
LVector3f NodePath::get_relative_vector(NodePath const &other, LVecBase3f const &vec) const;

2730 12 get_distance 0 4 3862 22 NodePath::get_distance 0 1 724 385
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_distance
//       Access: Published
//  Description: Returns the straight-line distance between this
//               referenced node's coordinate frame's origin, and that
//               of the other node's origin.
////////////////////////////////////////////////////////////////////
65
inline float NodePath::get_distance(NodePath const &other) const;

2731 9 set_color 0 4 3862 19 NodePath::set_color 0 5 725 726 727 728 729 1005
// Methods that affect appearance of geometry: color, texture, etc.
// These affect the state at the bottom level only.

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color
//       Access: Published
//  Description: Applies a scene-graph color to the referenced node.
//               This color will apply to all geometry at this level
//               and below (that does not specify a new color or a
//               set_color_off()).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color
//       Access: Published
//  Description: Applies a scene-graph color to the referenced node.
//               This color will apply to all geometry at this level
//               and below (that does not specify a new color or a
//               set_color_off()).
////////////////////////////////////////////////////////////////////
158
void NodePath::set_color(float r, float g, float b, float a = (1), int priority = (0));
void NodePath::set_color(LVecBase4f const &color, int priority = (0));

2732 13 set_color_off 0 4 3862 23 NodePath::set_color_off 0 2 730 731 565
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using the geometry color.  This is normally the
//               default, but it may be useful to use this to
//               contradict set_color() at a higher node level (or,
//               with a priority, to override a set_color() at a lower
//               level).
////////////////////////////////////////////////////////////////////
49
void NodePath::set_color_off(int priority = (0));

2733 11 clear_color 0 4 3862 21 NodePath::clear_color 0 1 732 463
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_color
//       Access: Published
//  Description: Completely removes any color adjustment from the node.
//               This allows the natural color of the geometry, or
//               whatever color transitions might be otherwise
//               affecting the geometry, to show instead.
////////////////////////////////////////////////////////////////////
33
void NodePath::clear_color(void);

2734 9 has_color 0 4 3862 19 NodePath::has_color 0 1 733 312
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_color
//       Access: Published
//  Description: Returns true if a color has been applied to the given
//               node, false otherwise.
////////////////////////////////////////////////////////////////////
37
bool NodePath::has_color(void) const;

2735 9 get_color 0 4 3862 19 NodePath::get_color 0 1 734 329
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_color
//       Access: Published
//  Description: Returns the color that has been assigned to the node,
//               or black if no color has been assigned.
////////////////////////////////////////////////////////////////////
43
LVecBase4f NodePath::get_color(void) const;

2736 15 has_color_scale 0 4 3862 25 NodePath::has_color_scale 0 1 735 453
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_color_scale
//       Access: Published
//  Description: Returns true if a color scale has been applied
//               to the referenced node, false otherwise.  It is still
//               possible that color at this node might have been
//               scaled by an ancestor node.
////////////////////////////////////////////////////////////////////
43
bool NodePath::has_color_scale(void) const;

2737 17 clear_color_scale 0 4 3862 27 NodePath::clear_color_scale 0 1 736 499
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_color_scale
//       Access: Published
//  Description: Completely removes any color scale from the
//               referenced node.  This is preferable to simply
//               setting the color scale to identity, as it also
//               removes the overhead associated with having a color
//               scale at all.
////////////////////////////////////////////////////////////////////
39
void NodePath::clear_color_scale(void);

2738 15 set_color_scale 0 4 3862 25 NodePath::set_color_scale 0 4 737 738 739 740 608
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_scale
//       Access: Published
//  Description: Sets the color scale component of the transform
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_scale
//       Access: Published
//  Description: Sets the color scale component of the transform,
//               leaving translation and rotation untouched.
////////////////////////////////////////////////////////////////////
175
void NodePath::set_color_scale(LVecBase4f const &scale, int priority = (0));
inline void NodePath::set_color_scale(float sx, float sy, float sz, float sa, int priority = (0));

2739 19 compose_color_scale 0 4 3862 29 NodePath::compose_color_scale 0 4 741 742 743 744 666
////////////////////////////////////////////////////////////////////
//     Function: NodePath::compose_color_scale
//       Access: Published
//  Description: Sets the color scale component of the transform
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::compose_color_scale
//       Access: Published
//  Description: multiplies the color scale component of the transform,
//               with previous color scale leaving translation and 
//               rotation untouched.
////////////////////////////////////////////////////////////////////
183
void NodePath::compose_color_scale(LVecBase4f const &scale, int priority = (0));
inline void NodePath::compose_color_scale(float sx, float sy, float sz, float sa, int priority = (0));

2740 19 set_color_scale_off 0 4 3862 29 NodePath::set_color_scale_off 0 2 745 746 900
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_scale_off
//       Access: Published
//  Description: Disables any color scale attribute inherited from
//               above.  This is not the same thing as
//               clear_color_scale(), which undoes any previous
//               set_color_scale() operation on this node; rather,
//               this actively disables any set_color_scale() that
//               might be inherited from a parent node.  This also
//               disables set_alpha_scale() at the same time.
//
//               It is legal to specify a new color scale on the same
//               node with a subsequent call to set_color_scale() or
//               set_alpha_scale(); this new scale will apply to lower
//               geometry.
////////////////////////////////////////////////////////////////////
55
void NodePath::set_color_scale_off(int priority = (0));

2741 15 set_alpha_scale 0 4 3862 25 NodePath::set_alpha_scale 0 2 747 748 435
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_alpha_scale
//       Access: Published
//  Description: Sets the alpha scale component of the transform
//               without (much) affecting the color scale.  Note that
//               any priority specified will also apply to the color
//               scale.
////////////////////////////////////////////////////////////////////
64
void NodePath::set_alpha_scale(float scale, int priority = (0));

2742 19 set_all_color_scale 0 4 3862 29 NodePath::set_all_color_scale 0 2 749 750 469
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_all_color_scale
//       Access: Published
//  Description: Scales all the color components of the object by the
//               same amount, darkening the object, without (much)
//               affecting alpha.  Note that any priority specified
//               will also apply to the alpha scale.
////////////////////////////////////////////////////////////////////
68
void NodePath::set_all_color_scale(float scale, int priority = (0));

2743 6 set_sr 0 4 3862 16 NodePath::set_sr 0 1 751 261
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_sr
//       Access: Published
//  Description: Sets the red scale component of the transform
////////////////////////////////////////////////////////////////////
39
inline void NodePath::set_sr(float sr);

2744 6 set_sg 0 4 3862 16 NodePath::set_sg 0 1 752 263
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_sg
//       Access: Published
//  Description: Sets the alpha scale component of the transform
////////////////////////////////////////////////////////////////////
39
inline void NodePath::set_sg(float sg);

2745 6 set_sb 0 4 3862 16 NodePath::set_sb 0 1 753 262
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_sb
//       Access: Published
//  Description: Sets the blue scale component of the transform
////////////////////////////////////////////////////////////////////
39
inline void NodePath::set_sb(float sb);

2746 6 set_sa 0 4 3862 16 NodePath::set_sa 0 1 754 263
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_sa
//       Access: Published
//  Description: Sets the alpha scale component of the transform
////////////////////////////////////////////////////////////////////
39
inline void NodePath::set_sa(float sa);

2747 15 get_color_scale 0 4 3862 25 NodePath::get_color_scale 0 1 755 510
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_color_scale
//       Access: Published
//  Description: Returns the complete color scale vector that has been
//               applied to this node via a previous call to
//               set_color_scale() and/or set_alpha_scale(), or all
//               1's (identity) if no scale has been applied to this
//               particular node.
////////////////////////////////////////////////////////////////////
56
LVecBase4f const &NodePath::get_color_scale(void) const;

2748 6 get_sr 0 4 3862 16 NodePath::get_sr 0 1 756 261
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sr
//       Access: Published
//  Description: Gets the red scale component of the transform
////////////////////////////////////////////////////////////////////
42
inline float NodePath::get_sr(void) const;

2749 6 get_sg 0 4 3862 16 NodePath::get_sg 0 1 757 263
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sg
//       Access: Published
//  Description: Gets the green scale component of the transform
////////////////////////////////////////////////////////////////////
42
inline float NodePath::get_sg(void) const;

2750 6 get_sb 0 4 3862 16 NodePath::get_sb 0 1 758 262
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sb
//       Access: Published
//  Description: Gets the blue scale component of the transform
////////////////////////////////////////////////////////////////////
42
inline float NodePath::get_sb(void) const;

2751 6 get_sa 0 4 3862 16 NodePath::get_sa 0 1 759 263
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sa
//       Access: Published
//  Description: Gets the alpha scale component of the transform
////////////////////////////////////////////////////////////////////
42
inline float NodePath::get_sa(void) const;

2752 9 set_light 0 4 3862 19 NodePath::set_light 0 2 760 761 593
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_light
//       Access: Published
//  Description: Adds the indicated Light or PolylightNode to the list
//               of lights that illuminate geometry at this node and
//               below.  The light itself should be parented into the
//               scene graph elsewhere, to represent the light's
//               position in space; but until set_light() is called it
//               will illuminate no geometry.
////////////////////////////////////////////////////////////////////
68
void NodePath::set_light(NodePath const &light, int priority = (0));

2753 13 set_light_off 0 4 3862 23 NodePath::set_light_off 0 4 762 763 764 765 1449
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_light_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no lights at all.  This is different
//               from not specifying a light; rather, this
//               specifically contradicts set_light() at a higher
//               node level (or, with a priority, overrides a
//               set_light() at a lower level).
//
//               If no lights are in effect on a particular piece of
//               geometry, that geometry is rendered with lighting
//               disabled.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_light_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               without using the indicated Light.  This is different
//               from not specifying the Light; rather, this
//               specifically contradicts set_light() at a higher node
//               level (or, with a priority, overrides a set_light()
//               at a lower level).
//
//               This interface does not support PolylightNodes, which
//               cannot be turned off at a lower level.
////////////////////////////////////////////////////////////////////
122
void NodePath::set_light_off(int priority = (0));
void NodePath::set_light_off(NodePath const &light, int priority = (0));

2754 11 clear_light 0 4 3862 21 NodePath::clear_light 0 2 766 767 702
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_light
//       Access: Published
//  Description: Completely removes any lighting operations that may
//               have been set via set_light() or set_light_off()
//               from this particular node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_light
//       Access: Published
//  Description: Removes any reference to the indicated Light or
//               PolylightNode from the NodePath.
////////////////////////////////////////////////////////////////////
84
void NodePath::clear_light(void);
void NodePath::clear_light(NodePath const &light);

2755 9 has_light 0 4 3862 19 NodePath::has_light 0 1 768 460
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_light
//       Access: Published
//  Description: Returns true if the indicated Light or PolylightNode
//               has been specifically enabled on this particular
//               node.  This means that someone called set_light() on
//               this node with the indicated light.
////////////////////////////////////////////////////////////////////
54
bool NodePath::has_light(NodePath const &light) const;

2756 13 has_light_off 0 4 3862 23 NodePath::has_light_off 0 2 769 770 1022
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_light_off
//       Access: Published
//  Description: Returns true if all Lights have been specifically
//               disabled on this particular node.  This means that
//               someone called set_light_off() on this node with no
//               parameters.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_light_off
//       Access: Published
//  Description: Returns true if the indicated Light has been
//               specifically disabled on this particular node.  This
//               means that someone called set_light_off() on this
//               node with the indicated light.
//
//               This interface does not support PolylightNodes, which
//               cannot be turned off at a lower level.
////////////////////////////////////////////////////////////////////
100
bool NodePath::has_light_off(void) const;
bool NodePath::has_light_off(NodePath const &light) const;

2757 14 set_clip_plane 0 4 3862 24 NodePath::set_clip_plane 0 2 771 772 609
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_clip_plane
//       Access: Published
//  Description: Adds the indicated clipping plane to the list of
//               planes that apply to geometry at this node and below.
//               The clipping plane itself, a PlaneNode, should be
//               parented into the scene graph elsewhere, to represent
//               the plane's position in space; but until
//               set_clip_plane() is called it will clip no geometry.
////////////////////////////////////////////////////////////////////
78
void NodePath::set_clip_plane(NodePath const &clip_plane, int priority = (0));

2758 18 set_clip_plane_off 0 4 3862 28 NodePath::set_clip_plane_off 0 4 773 774 775 776 1434
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_clip_plane_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no clip_planes at all.  This is different
//               from not specifying a clip_plane; rather, this
//               specifically contradicts set_clip_plane() at a higher
//               node level (or, with a priority, overrides a
//               set_clip_plane() at a lower level).
//
//               If no clip_planes are in effect on a particular piece
//               of geometry, that geometry is rendered without being
//               clipped (other than by the viewing frustum).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_clip_plane_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               without being clipped by the indicated PlaneNode.
//               This is different from not specifying the PlaneNode;
//               rather, this specifically contradicts
//               set_clip_plane() at a higher node level (or, with a
//               priority, overrides a set_clip_plane() at a lower
//               level).
////////////////////////////////////////////////////////////////////
137
void NodePath::set_clip_plane_off(int priority = (0));
void NodePath::set_clip_plane_off(NodePath const &clip_plane, int priority = (0));

2759 16 clear_clip_plane 0 4 3862 26 NodePath::clear_clip_plane 0 2 777 778 706
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_clip_plane
//       Access: Published
//  Description: Completely removes any clip planes that may have been
//               set via set_clip_plane() or set_clip_plane_off() from
//               this particular node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_clip_plane
//       Access: Published
//  Description: Removes any reference to the indicated clipping plane
//               from the NodePath.
////////////////////////////////////////////////////////////////////
99
void NodePath::clear_clip_plane(void);
void NodePath::clear_clip_plane(NodePath const &clip_plane);

2760 14 has_clip_plane 0 4 3862 24 NodePath::has_clip_plane 0 1 779 467
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_clip_plane
//       Access: Published
//  Description: Returns true if the indicated clipping plane has been
//               specifically applied to this particular node.  This
//               means that someone called set_clip_plane() on this
//               node with the indicated clip_plane.
////////////////////////////////////////////////////////////////////
64
bool NodePath::has_clip_plane(NodePath const &clip_plane) const;

2761 18 has_clip_plane_off 0 4 3862 28 NodePath::has_clip_plane_off 0 2 780 781 935
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_clip_plane_off
//       Access: Published
//  Description: Returns true if all clipping planes have been
//               specifically disabled on this particular node.  This
//               means that someone called set_clip_plane_off() on
//               this node with no parameters.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_clip_plane_off
//       Access: Published
//  Description: Returns true if the indicated clipping plane has been
//               specifically disabled on this particular node.  This
//               means that someone called set_clip_plane_off() on
//               this node with the indicated clip_plane.
////////////////////////////////////////////////////////////////////
115
bool NodePath::has_clip_plane_off(void) const;
bool NodePath::has_clip_plane_off(NodePath const &clip_plane) const;

2762 11 set_scissor 0 4 3862 21 NodePath::set_scissor 0 5 782 783 784 785 786 3091
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The four coordinates are
//               understood to define a rectangle in screen space.
//               These numbers are relative to the current
//               DisplayRegion, where (0,0) is the lower-left corner
//               of the DisplayRegion, and (1,1) is the upper-right
//               corner.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The two points are understood
//               to be relative to this node.  When these points are
//               projected into screen space, they define the
//               diagonally-opposite points that determine the scissor
//               region.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The four points are understood
//               to be relative to this node.  When these points are
//               projected into screen space, they define the
//               bounding volume of the scissor region (the scissor
//               region is the smallest onscreen rectangle that
//               encloses all four points).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The two points are understood
//               to be relative to the indicated other node.  When
//               these points are projected into screen space, they
//               define the diagonally-opposite points that determine
//               the scissor region.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The four points are understood
//               to be relative to the indicated other node.  When
//               these points are projected into screen space, they
//               define the bounding volume of the scissor region (the
//               scissor region is the smallest onscreen rectangle
//               that encloses all four points).
////////////////////////////////////////////////////////////////////
463
void NodePath::set_scissor(float left, float right, float bottom, float top);
void NodePath::set_scissor(LPoint3f const &a, LPoint3f const &b);
void NodePath::set_scissor(LPoint3f const &a, LPoint3f const &b, LPoint3f const &c, LPoint3f const &d);
void NodePath::set_scissor(NodePath const &other, LPoint3f const &a, LPoint3f const &b);
void NodePath::set_scissor(NodePath const &other, LPoint3f const &a, LPoint3f const &b, LPoint3f const &c, LPoint3f const &d);

2763 13 clear_scissor 0 4 3862 23 NodePath::clear_scissor 0 1 787 339
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_scissor
//       Access: Published
//  Description: Removes the scissor region that was defined at this
//               node level by a previous call to set_scissor().
////////////////////////////////////////////////////////////////////
35
void NodePath::clear_scissor(void);

2764 11 has_scissor 0 4 3862 21 NodePath::has_scissor 0 1 788 607
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_scissor
//       Access: Published
//  Description: Returns true if a scissor region was defined at this
//               node by a previous call to set_scissor().  This does
//               not check for scissor regions inherited from a parent
//               class.  It also does not check for the presence of a
//               low-level ScissorAttrib, which is different from the
//               ScissorEffect added by set_scissor.
////////////////////////////////////////////////////////////////////
39
bool NodePath::has_scissor(void) const;

2765 12 set_occluder 0 4 3862 22 NodePath::set_occluder 0 1 789 603
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_occluder
//       Access: Published
//  Description: Adds the indicated occluder to the list of
//               occluders that apply to geometry at this node and below.
//               The occluder itself, an OccluderNode, should be
//               parented into the scene graph elsewhere, to represent
//               the occluder's position in space; but until
//               set_occluder() is called it will clip no geometry.
////////////////////////////////////////////////////////////////////
54
void NodePath::set_occluder(NodePath const &occluder);

2766 14 clear_occluder 0 4 3862 24 NodePath::clear_occluder 0 2 790 791 651
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_occluder
//       Access: Published
//  Description: Completely removes any occluders that may have been
//               set via set_occluder() from this particular node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_occluder
//       Access: Published
//  Description: Removes any reference to the indicated occluder
//               from the NodePath.
////////////////////////////////////////////////////////////////////
93
void NodePath::clear_occluder(void);
void NodePath::clear_occluder(NodePath const &occluder);

2767 12 has_occluder 0 4 3862 22 NodePath::has_occluder 0 1 792 455
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_occluder
//       Access: Published
//  Description: Returns true if the indicated occluder has been
//               specifically applied to this particular node.  This
//               means that someone called set_occluder() on this
//               node with the indicated occluder.
////////////////////////////////////////////////////////////////////
60
bool NodePath::has_occluder(NodePath const &occluder) const;

2768 7 set_bin 0 4 3862 17 NodePath::set_bin 0 2 793 794 1343
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_bin
//       Access: Published
//  Description: Assigns the geometry at this level and below to the
//               named rendering bin.  It is the user's responsibility
//               to ensure that such a bin already exists, either via
//               the cull-bin Configrc variable, or by explicitly
//               creating a GeomBin of the appropriate type at
//               runtime.
//
//               There are two default bins created when Panda is
//               started: "default" and "fixed".  Normally, all
//               geometry is assigned to "default" unless specified
//               otherwise.  This bin renders opaque geometry in
//               state-sorted order, followed by transparent geometry
//               sorted back-to-front.  If any geometry is assigned to
//               "fixed", this will be rendered following all the
//               geometry in "default", in the order specified by
//               draw_order for each piece of geometry so assigned.
//
//               The draw_order parameter is meaningful only for
//               GeomBinFixed type bins, e.g. "fixed".  Other kinds of
//               bins ignore it.
////////////////////////////////////////////////////////////////////
97
void NodePath::set_bin(basic_string< char > const &bin_name, int draw_order, int priority = (0));

2769 9 clear_bin 0 4 3862 19 NodePath::clear_bin 0 1 795 337
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_bin
//       Access: Published
//  Description: Completely removes any bin adjustment that may have
//               been set via set_bin() from this particular node.
////////////////////////////////////////////////////////////////////
31
void NodePath::clear_bin(void);

2770 7 has_bin 0 4 3862 17 NodePath::has_bin 0 1 796 359
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_bin
//       Access: Published
//  Description: Returns true if the node has been assigned to the a
//               particular rendering bin via set_bin(), false
//               otherwise.
////////////////////////////////////////////////////////////////////
35
bool NodePath::has_bin(void) const;

2771 12 get_bin_name 0 4 3862 22 NodePath::get_bin_name 0 1 797 414
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_bin_name
//       Access: Published
//  Description: Returns the name of the bin that this particular node
//               was assigned to via set_bin(), or the empty string if
//               no bin was assigned.  See set_bin() and has_bin().
////////////////////////////////////////////////////////////////////
56
basic_string< char > NodePath::get_bin_name(void) const;

2772 18 get_bin_draw_order 0 4 3862 28 NodePath::get_bin_draw_order 0 1 798 444
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_bin_draw_order
//       Access: Published
//  Description: Returns the drawing order associated with the bin
//               that this particular node was assigned to via
//               set_bin(), or 0 if no bin was assigned.  See
//               set_bin() and has_bin().
////////////////////////////////////////////////////////////////////
45
int NodePath::get_bin_draw_order(void) const;

2773 11 set_texture 0 4 3862 21 NodePath::set_texture 0 4 799 800 801 802 1278
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the default texture stage.
//
//               This is the convenience single-texture variant of
//               this method; it is now superceded by set_texture()
//               that accepts a stage and texture.  You may use this
//               method if you just want to adjust the default stage.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the indicated multitexture
//               stage.  If there are multiple texture stages
//               specified (possibly on multiple different nodes at
//               different levels), they will all be applied to
//               geometry together, according to the stage
//               specification set up in the TextureStage object.
////////////////////////////////////////////////////////////////////
144
void NodePath::set_texture(Texture *tex, int priority = (0));
void NodePath::set_texture(TextureStage *stage, Texture *tex, int priority = (0));

2774 15 set_texture_off 0 4 3862 25 NodePath::set_texture_off 0 4 803 804 805 806 1182
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on any stage.  This is different
//               from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on the indicated stage.  This is
//               different from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
////////////////////////////////////////////////////////////////////
124
void NodePath::set_texture_off(int priority = (0));
void NodePath::set_texture_off(TextureStage *stage, int priority = (0));

2775 13 clear_texture 0 4 3862 23 NodePath::clear_texture 0 2 807 808 824
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_texture
//       Access: Published
//  Description: Completely removes any texture adjustment that may
//               have been set via set_texture() or set_texture_off()
//               from this particular node.  This allows whatever
//               textures might be otherwise affecting the geometry to
//               show instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_texture
//       Access: Published
//  Description: Removes any reference to the indicated texture stage
//               from the NodePath.
////////////////////////////////////////////////////////////////////
86
void NodePath::clear_texture(void);
void NodePath::clear_texture(TextureStage *stage);

2776 11 has_texture 0 4 3862 21 NodePath::has_texture 0 2 809 810 1172
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texture
//       Access: Published
//  Description: Returns true if a texture has been applied to this
//               particular node via set_texture(), false otherwise.
//               This is not the same thing as asking whether the
//               geometry at this node will be rendered with
//               texturing, as there may be a texture in effect from a
//               higher or lower level.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texture
//       Access: Published
//  Description: Returns true if texturing has been specifically
//               enabled on this particular node for the indicated
//               stage.  This means that someone called
//               set_texture() on this node with the indicated stage
//               name, or the stage_name is the default stage_name,
//               and someone called set_texture() on this node.
////////////////////////////////////////////////////////////////////
94
bool NodePath::has_texture(void) const;
bool NodePath::has_texture(TextureStage *stage) const;

2777 15 has_texture_off 0 4 3862 25 NodePath::has_texture_off 0 2 811 812 1184
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texture_off
//       Access: Published
//  Description: Returns true if texturing has been specifically
//               disabled on this particular node via
//               set_texture_off(), false otherwise.  This is not the
//               same thing as asking whether the geometry at this
//               node will be rendered untextured, as there may be a
//               texture in effect from a higher or lower level.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texture_off
//       Access: Published
//  Description: Returns true if texturing has been specifically
//               disabled on this particular node for the indicated
//               stage.  This means that someone called
//               set_texture_off() on this node with the indicated
//               stage name, or that someone called set_texture_off()
//               on this node to remove all stages.
////////////////////////////////////////////////////////////////////
102
bool NodePath::has_texture_off(void) const;
bool NodePath::has_texture_off(TextureStage *stage) const;

2778 11 get_texture 0 4 3862 21 NodePath::get_texture 0 2 813 814 1012
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_texture
//       Access: Published
//  Description: Returns the base-level texture that has been set on
//               this particular node, or NULL if no texture has been
//               set.  This is not necessarily the texture that will
//               be applied to the geometry at or below this level, as
//               another texture at a higher or lower level may
//               override.
//
//               See also find_texture().
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_texture
//       Access: Published
//  Description: Returns the texture that has been set on the
//               indicated stage for this particular node, or NULL if
//               no texture has been set for this stage.
////////////////////////////////////////////////////////////////////
102
Texture *NodePath::get_texture(void) const;
Texture *NodePath::get_texture(TextureStage *stage) const;

2779 10 set_shader 0 4 3862 20 NodePath::set_shader 0 2 815 816 220
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
65
void NodePath::set_shader(Shader const *sha, int priority = (0));

2780 14 set_shader_off 0 4 3862 24 NodePath::set_shader_off 0 2 817 818 224
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_off
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
50
void NodePath::set_shader_off(int priority = (0));

2781 15 set_shader_auto 0 4 3862 25 NodePath::set_shader_auto 0 4 819 820 821 822 492
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_auto
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_auto
//       Access: Published
//  Description: overloaded for auto shader customization
////////////////////////////////////////////////////////////////////
146
void NodePath::set_shader_auto(int priority = (0));
void NodePath::set_shader_auto(BitMask< unsigned int, 32 > shader_switch, int priority = (0));

2782 12 clear_shader 0 4 3862 22 NodePath::clear_shader 0 1 823 222
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_shader
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
34
void NodePath::clear_shader(void);

2783 16 set_shader_input 0 4 3862 26 NodePath::set_shader_input 0 105 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 10713
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
5274
void NodePath::set_shader_input(ShaderInput const *inp);
void NodePath::set_shader_input(InternalName const *id, Texture *tex, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, NodePath const &np, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< float > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< double > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< int > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< UnalignedLVecBase4f > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< LVecBase3f > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< LVecBase2f > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< UnalignedLMatrix4f > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< LMatrix3f > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, LVecBase4f const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, LVecBase3f const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, LVecBase2f const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, LMatrix4f const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, LMatrix3f const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< UnalignedLVecBase4i > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< LVecBase3i > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, PointerToArray< LVecBase2i > const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, LVecBase4i const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, LVecBase3i const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, LVecBase2i const &v, int priority = (0));
void NodePath::set_shader_input(InternalName const *id, int n1, int n2 = (0), int n3 = (0), int n4 = (0), int priority = (0));
void NodePath::set_shader_input(InternalName const *id, float n1, float n2 = (0), float n3 = (0), float n4 = (0), int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, Texture *tex, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, NodePath const &np, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< float > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< double > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< int > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< UnalignedLVecBase4f > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< LVecBase3f > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< LVecBase2f > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< UnalignedLMatrix4f > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< LMatrix3f > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, LVecBase4f const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, LVecBase3f const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, LVecBase2f const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, LMatrix4f const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, LMatrix3f const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< UnalignedLVecBase4i > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< LVecBase3i > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, PointerToArray< LVecBase2i > const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, LVecBase4i const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, LVecBase3i const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, LVecBase2i const &v, int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, int n1, int n2 = (0), int n3 = (0), int n4 = (0), int priority = (0));
void NodePath::set_shader_input(basic_string< char > const &id, float n1, float n2 = (0), float n3 = (0), float n4 = (0), int priority = (0));

2784 18 clear_shader_input 0 4 3862 28 NodePath::clear_shader_input 0 2 929 930 458
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
125
void NodePath::clear_shader_input(InternalName const *id);
void NodePath::clear_shader_input(basic_string< char > const &id);

2785 18 set_instance_count 0 4 3862 28 NodePath::set_instance_count 0 1 931 435
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_instance_count
//       Access: Published
//  Description: Sets the geometry instance count, or 0 if
//               geometry instancing should be disabled. Do not
//               confuse with instanceTo which only applies to
//               animation instancing.
////////////////////////////////////////////////////////////////////
54
void NodePath::set_instance_count(int instance_count);

2786 10 get_shader 0 4 3862 20 NodePath::get_shader 0 1 932 220
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shader
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
47
Shader const *NodePath::get_shader(void) const;

2787 16 get_shader_input 0 4 3862 26 NodePath::get_shader_input 0 2 933 934 454
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
161
ShaderInput const *NodePath::get_shader_input(InternalName const *id) const;
ShaderInput const *NodePath::get_shader_input(basic_string< char > const &id) const;

2788 18 get_instance_count 0 4 3862 28 NodePath::get_instance_count 0 1 935 323
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_instance_count
//       Access: Published
//  Description: Returns the geometry instance count, or 0 if
//               disabled. See set_instance_count.
////////////////////////////////////////////////////////////////////
51
int const NodePath::get_instance_count(void) const;

2789 17 set_tex_transform 0 4 3862 27 NodePath::set_tex_transform 0 2 936 937 672
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_transform
//       Access: Published
//  Description: Sets the texture matrix on the current node to the
//               indicated transform for the given stage.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_transform
//       Access: Published
//  Description: Sets the texture matrix on the current node to the
//               indicated transform for the given stage.
////////////////////////////////////////////////////////////////////
198
void NodePath::set_tex_transform(TextureStage *stage, TransformState const *transform);
void NodePath::set_tex_transform(NodePath const &other, TextureStage *stage, TransformState const *transform);

2790 19 clear_tex_transform 0 4 3862 29 NodePath::clear_tex_transform 0 2 938 939 595
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_transform
//       Access: Published
//  Description: Removes all texture matrices from the current node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_transform
//       Access: Published
//  Description: Removes the texture matrix on the current node for
//               the given stage.
////////////////////////////////////////////////////////////////////
98
void NodePath::clear_tex_transform(void);
void NodePath::clear_tex_transform(TextureStage *stage);

2791 17 has_tex_transform 0 4 3862 27 NodePath::has_tex_transform 0 1 940 336
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_tex_transform
//       Access: Published
//  Description: Returns true if there is an explicit texture matrix
//               on the current node for the given stage.
////////////////////////////////////////////////////////////////////
60
bool NodePath::has_tex_transform(TextureStage *stage) const;

2792 17 get_tex_transform 0 4 3862 27 NodePath::get_tex_transform 0 2 941 942 750
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_transform
//       Access: Published
//  Description: Returns the texture matrix on the current node for the
//               given stage, or identity transform if there is no
//               explicit transform set for the given stage.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_transform
//       Access: Published
//  Description: Returns the texture matrix on the current node for the
//               given stage, relative to the other node.
////////////////////////////////////////////////////////////////////
200
ConstPointerTo< TransformState > NodePath::get_tex_transform(TextureStage *stage) const;
ConstPointerTo< TransformState > NodePath::get_tex_transform(NodePath const &other, TextureStage *stage) const;

2793 14 set_tex_offset 0 4 3862 24 NodePath::set_tex_offset 0 4 943 944 945 946 1770
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_offset
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_offset
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_offset
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_offset
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////
361
inline void NodePath::set_tex_offset(TextureStage *stage, float u, float v);
inline void NodePath::set_tex_offset(TextureStage *stage, LVecBase2f const &uv);
inline void NodePath::set_tex_offset(NodePath const &other, TextureStage *stage, float u, float v);
inline void NodePath::set_tex_offset(NodePath const &other, TextureStage *stage, LVecBase2f const &uv);

2794 14 set_tex_rotate 0 4 3862 24 NodePath::set_tex_rotate 0 2 947 948 968
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_rotate
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, clockwise in degrees, to UV's
//               for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_rotate
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, clockwise in degrees, to UV's
//               for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////
158
inline void NodePath::set_tex_rotate(TextureStage *stage, float r);
inline void NodePath::set_tex_rotate(NodePath const &other, TextureStage *stage, float r);

2795 13 set_tex_scale 0 4 3862 23 NodePath::set_tex_scale 0 10 949 950 951 952 953 954 955 956 957 958 4305
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 2-d or 3-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for 2-d or 3-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////
920
inline void NodePath::set_tex_scale(TextureStage *stage, float scale);
inline void NodePath::set_tex_scale(TextureStage *stage, float su, float sv);
inline void NodePath::set_tex_scale(TextureStage *stage, LVecBase2f const &scale);
inline void NodePath::set_tex_scale(TextureStage *stage, float su, float sv, float sw);
inline void NodePath::set_tex_scale(TextureStage *stage, LVecBase3f const &scale);
inline void NodePath::set_tex_scale(NodePath const &other, TextureStage *stage, float scale);
inline void NodePath::set_tex_scale(NodePath const &other, TextureStage *stage, float su, float sv);
inline void NodePath::set_tex_scale(NodePath const &other, TextureStage *stage, LVecBase2f const &scale);
inline void NodePath::set_tex_scale(NodePath const &other, TextureStage *stage, float su, float sv, float sw);
inline void NodePath::set_tex_scale(NodePath const &other, TextureStage *stage, LVecBase3f const &scale);

2796 14 get_tex_offset 0 4 3862 24 NodePath::get_tex_offset 0 2 959 960 836
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_offset
//       Access: Published
//  Description: Returns the offset set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_offset
//       Access: Published
//  Description: Returns the offset set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////
164
inline LVecBase2f NodePath::get_tex_offset(TextureStage *stage) const;
inline LVecBase2f NodePath::get_tex_offset(NodePath const &other, TextureStage *stage) const;

2797 14 get_tex_rotate 0 4 3862 24 NodePath::get_tex_rotate 0 2 961 962 840
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_rotate
//       Access: Published
//  Description: Returns the rotation set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_rotate
//       Access: Published
//  Description: Returns the rotation set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////
154
inline float NodePath::get_tex_rotate(TextureStage *stage) const;
inline float NodePath::get_tex_rotate(NodePath const &other, TextureStage *stage) const;

2798 13 get_tex_scale 0 4 3862 23 NodePath::get_tex_scale 0 2 963 964 832
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_scale
//       Access: Published
//  Description: Returns the scale set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_scale
//       Access: Published
//  Description: Returns the scale set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
////////////////////////////////////////////////////////////////////
162
inline LVecBase2f NodePath::get_tex_scale(TextureStage *stage) const;
inline LVecBase2f NodePath::get_tex_scale(NodePath const &other, TextureStage *stage) const;

2799 11 set_tex_pos 0 4 3862 21 NodePath::set_tex_pos 0 4 965 966 967 968 1658
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_pos
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_pos
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_pos
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_pos
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////
369
inline void NodePath::set_tex_pos(TextureStage *stage, float u, float v, float w);
inline void NodePath::set_tex_pos(TextureStage *stage, LVecBase3f const &uvw);
inline void NodePath::set_tex_pos(NodePath const &other, TextureStage *stage, float u, float v, float w);
inline void NodePath::set_tex_pos(NodePath const &other, TextureStage *stage, LVecBase3f const &uvw);

2800 11 set_tex_hpr 0 4 3862 21 NodePath::set_tex_hpr 0 4 969 970 971 972 1794
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_hpr
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, as a 3-D HPR, to UVW's
//               for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_hpr
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, as a 3-D HPR, to UVW's
//               for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_hpr
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, as a 3-D HPR, to UVW's
//               for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_hpr
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, as a 3-D HPR, to UVW's
//               for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////
369
inline void NodePath::set_tex_hpr(TextureStage *stage, float h, float p, float r);
inline void NodePath::set_tex_hpr(TextureStage *stage, LVecBase3f const &hpr);
inline void NodePath::set_tex_hpr(NodePath const &other, TextureStage *stage, float h, float p, float r);
inline void NodePath::set_tex_hpr(NodePath const &other, TextureStage *stage, LVecBase3f const &hpr);

2801 11 get_tex_pos 0 4 3862 21 NodePath::get_tex_pos 0 2 973 974 780
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_pos
//       Access: Published
//  Description: Returns the offset set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_pos
//       Access: Published
//  Description: Returns the offset set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////
158
inline LVecBase3f NodePath::get_tex_pos(TextureStage *stage) const;
inline LVecBase3f NodePath::get_tex_pos(NodePath const &other, TextureStage *stage) const;

2802 11 get_tex_hpr 0 4 3862 21 NodePath::get_tex_hpr 0 2 975 976 782
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_hpr
//       Access: Published
//  Description: Returns the 3-D HPR set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_hpr
//       Access: Published
//  Description: Returns the 3-D HPR set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////
158
inline LVecBase3f NodePath::get_tex_hpr(TextureStage *stage) const;
inline LVecBase3f NodePath::get_tex_hpr(NodePath const &other, TextureStage *stage) const;

2803 16 get_tex_scale_3d 0 4 3862 26 NodePath::get_tex_scale_3d 0 2 977 978 788
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_scale_3d
//       Access: Published
//  Description: Returns the scale set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_scale_3d
//       Access: Published
//  Description: Returns the scale set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
////////////////////////////////////////////////////////////////////
168
inline LVecBase3f NodePath::get_tex_scale_3d(TextureStage *stage) const;
inline LVecBase3f NodePath::get_tex_scale_3d(NodePath const &other, TextureStage *stage) const;

2804 11 set_tex_gen 0 4 3862 21 NodePath::set_tex_gen 0 6 979 980 981 982 983 984 1397
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_gen
//       Access: Published
//  Description: Enables automatic texture coordinate generation for
//               the indicated texture stage.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_gen
//       Access: Published
//  Description: Enables automatic texture coordinate generation for
//               the indicated texture stage.  This version of this
//               method is useful when setting M_light_vector, which
//               requires the name of the texture coordinate set that
//               supplies the tangent and binormal, as well as the
//               specific light to generate coordinates for.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_gen
//       Access: Published
//  Description: Enables automatic texture coordinate generation for
//               the indicated texture stage.  This version of this
//               method is useful when setting M_constant, which
//               requires a constant texture coordinate value.
////////////////////////////////////////////////////////////////////
395
void NodePath::set_tex_gen(TextureStage *stage, RenderAttrib::TexGenMode mode, int priority = (0));
void NodePath::set_tex_gen(TextureStage *stage, RenderAttrib::TexGenMode mode, basic_string< char > const &source_name, NodePath const &light, int priority = (0));
void NodePath::set_tex_gen(TextureStage *stage, RenderAttrib::TexGenMode mode, LPoint3f const &constant_value, int priority = (0));

2805 13 clear_tex_gen 0 4 3862 23 NodePath::clear_tex_gen 0 2 985 986 647
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_gen
//       Access: Published
//  Description: Removes the texture coordinate generation mode from
//               all texture stages on this node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_gen
//       Access: Published
//  Description: Disables automatic texture coordinate generation for
//               the indicated texture stage.
////////////////////////////////////////////////////////////////////
86
void NodePath::clear_tex_gen(void);
void NodePath::clear_tex_gen(TextureStage *stage);

2806 11 has_tex_gen 0 4 3862 21 NodePath::has_tex_gen 0 1 987 371
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_tex_gen
//       Access: Published
//  Description: Returns true if there is a mode for automatic texture
//               coordinate generation on the current node for the
//               given stage.
////////////////////////////////////////////////////////////////////
54
bool NodePath::has_tex_gen(TextureStage *stage) const;

2807 11 get_tex_gen 0 4 3862 21 NodePath::get_tex_gen 0 1 988 385
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_gen
//       Access: Published
//  Description: Returns the texture coordinate generation mode for
//               the given stage, or M_off if there is no explicit
//               mode set for the given stage.
////////////////////////////////////////////////////////////////////
74
RenderAttrib::TexGenMode NodePath::get_tex_gen(TextureStage *stage) const;

2808 17 get_tex_gen_light 0 4 3862 27 NodePath::get_tex_gen_light 0 1 989 486
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_gen_light
//       Access: Published
//  Description: Returns the particular Light set for the indicated
//               texgen mode's texture stage, or empty NodePath if no
//               light is set.  This is only meaningful if the texgen
//               mode (returned by get_tex_gen()) is M_light_vector.
////////////////////////////////////////////////////////////////////
64
NodePath NodePath::get_tex_gen_light(TextureStage *stage) const;

2809 17 set_tex_projector 0 4 3862 27 NodePath::set_tex_projector 0 2 990 991 877
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_projector
//       Access: Published
//  Description: Establishes a TexProjectorEffect on this node, which
//               can be used to establish projective texturing (but
//               see also the NodePath::project_texture() convenience
//               function), or it can be used to bind this node's
//               texture transform to particular node's position in
//               space, allowing a LerpInterval (for instance) to
//               adjust this node's texture coordinates.
//
//               If to is a LensNode, then the fourth parameter,
//               lens_index, can be provided to select a particular
//               lens to apply.  Otherwise lens_index is not used.
////////////////////////////////////////////////////////////////////
118
void NodePath::set_tex_projector(TextureStage *stage, NodePath const &from, NodePath const &to, int lens_index = (0));

2810 19 clear_tex_projector 0 4 3862 29 NodePath::clear_tex_projector 0 2 992 993 625
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_projector
//       Access: Published
//  Description: Removes the TexProjectorEffect for the indicated
//               stage from this node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_projector
//       Access: Published
//  Description: Removes the TexProjectorEffect for all stages from
//               this node.
////////////////////////////////////////////////////////////////////
98
void NodePath::clear_tex_projector(TextureStage *stage);
void NodePath::clear_tex_projector(void);

2811 17 has_tex_projector 0 4 3862 27 NodePath::has_tex_projector 0 1 994 336
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_tex_projector
//       Access: Published
//  Description: Returns true if this node has a TexProjectorEffect
//               for the indicated stage, false otherwise.
////////////////////////////////////////////////////////////////////
60
bool NodePath::has_tex_projector(TextureStage *stage) const;

2812 22 get_tex_projector_from 0 4 3862 32 NodePath::get_tex_projector_from 0 1 995 510
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_projector_from
//       Access: Published
//  Description: Returns the "from" node associated with the
//               TexProjectorEffect on the indicated stage.  The
//               relative transform between the "from" and the "to"
//               nodes is automatically applied to the texture
//               transform each frame.
////////////////////////////////////////////////////////////////////
69
NodePath NodePath::get_tex_projector_from(TextureStage *stage) const;

2813 20 get_tex_projector_to 0 4 3862 30 NodePath::get_tex_projector_to 0 1 996 506
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_projector_to
//       Access: Published
//  Description: Returns the "to" node associated with the
//               TexProjectorEffect on the indicated stage.  The
//               relative transform between the "from" and the "to"
//               nodes is automatically applied to the texture
//               transform each frame.
////////////////////////////////////////////////////////////////////
67
NodePath NodePath::get_tex_projector_to(TextureStage *stage) const;

2814 15 project_texture 0 4 3862 25 NodePath::project_texture 0 1 997 440
////////////////////////////////////////////////////////////////////
//     Function: NodePath::project_texture
//       Access: Published
//  Description: A convenience function to enable projective texturing
//               at this node level and below, using the indicated
//               NodePath (which should contain a LensNode) as the
//               projector.
////////////////////////////////////////////////////////////////////
93
void NodePath::project_texture(TextureStage *stage, Texture *tex, NodePath const &projector);

2815 21 clear_project_texture 0 4 3862 31 NodePath::clear_project_texture 0 1 998 270
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_project_texture
//       Access: Published
//  Description: Undoes the effect of project_texture().
////////////////////////////////////////////////////////////////////
65
inline void NodePath::clear_project_texture(TextureStage *stage);

2816 14 set_normal_map 0 4 3862 24 NodePath::set_normal_map 0 3 999 1000 1001 1173
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_normal_map
//       Access: Published
//  Description: A convenience function to set up a normal map on this
//               geometry.  This uses the single highest-priority
//               light on the object only.  It also requires
//               multitexture, and consumes at least two texture
//               stages, in addition to what may already be in use.
//
//               The normal_map parameter is the texture that contains
//               the normal map information (with a 3-d delta vector
//               encoded into the r,g,b of each texel).  texcoord_name is
//               the name of the texture coordinate set that contains
//               the tangent and binormal we wish to use.  If
//               preserve_color is true, then one additional texture
//               stage is consumed to blend in the geometry's original
//               vertex color.
//
//               Only one normal map may be in effect through this
//               interface at any given time.
////////////////////////////////////////////////////////////////////
136
void NodePath::set_normal_map(Texture *normal_map, basic_string< char > const &texcoord_name = ((string())), bool preserve_color = (0));

2817 16 clear_normal_map 0 4 3862 26 NodePath::clear_normal_map 0 1 1002 300
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_normal_map
//       Access: Published
//  Description: Undoes the effect of a previous call to
//               set_normal_map().
////////////////////////////////////////////////////////////////////
38
void NodePath::clear_normal_map(void);

2818 12 has_texcoord 0 4 3862 22 NodePath::has_texcoord 0 1 1003 467
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texcoord
//       Access: Published
//  Description: Returns true if there are at least some vertices at
//               this node and below that use the named texture
//               coordinate set, false otherwise.  Pass the empty
//               string for the default texture coordinate set.
////////////////////////////////////////////////////////////////////
84
inline bool NodePath::has_texcoord(basic_string< char > const &texcoord_name) const;

2819 17 has_vertex_column 0 4 3862 27 NodePath::has_vertex_column 0 1 1004 598
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_vertex_column
//       Access: Published
//  Description: Returns true if there are at least some vertices at
//               this node and below that contain a reference to the
//               indicated vertex data column name, false otherwise.
//
//               This is particularly useful for testing whether a
//               particular model has a given texture coordinate set
//               (but see has_texcoord()).
////////////////////////////////////////////////////////////////////
65
bool NodePath::has_vertex_column(InternalName const *name) const;

2820 23 find_all_vertex_columns 0 4 3862 33 NodePath::find_all_vertex_columns 0 2 1005 1006 810
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_vertex_columns
//       Access: Published
//  Description: Returns a list of all vertex array columns stored on
//               some geometry found at this node level and below.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_vertex_columns
//       Access: Published
//  Description: Returns a list of all vertex array columns stored on
//               some geometry found at this node level and below that
//               match the indicated name (which may contain wildcard
//               characters).
////////////////////////////////////////////////////////////////////
167
InternalNameCollection NodePath::find_all_vertex_columns(void) const;
InternalNameCollection NodePath::find_all_vertex_columns(basic_string< char > const &name) const;

2821 18 find_all_texcoords 0 4 3862 28 NodePath::find_all_texcoords 0 2 1007 1008 788
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_texcoords
//       Access: Published
//  Description: Returns a list of all texture coordinate sets used by
//               any geometry at this node level and below.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_texcoords
//       Access: Published
//  Description: Returns a list of all texture coordinate sets used by
//               any geometry at this node level and below that match
//               the indicated name (which may contain wildcard
//               characters).
////////////////////////////////////////////////////////////////////
157
InternalNameCollection NodePath::find_all_texcoords(void) const;
InternalNameCollection NodePath::find_all_texcoords(basic_string< char > const &name) const;

2822 12 find_texture 0 4 3862 22 NodePath::find_texture 0 2 1009 1010 924
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_texture
//       Access: Published
//  Description: Returns the first texture found applied to geometry
//               at this node or below that matches the indicated name
//               (which may contain wildcards).  Returns the texture
//               if it is found, or NULL if it is not.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_texture
//       Access: Published
//  Description: Returns the first texture found applied to geometry
//               at this node or below that is assigned to the
//               indicated texture stage.  Returns the texture if it
//               is found, or NULL if it is not.
////////////////////////////////////////////////////////////////////
132
Texture *NodePath::find_texture(basic_string< char > const &name) const;
Texture *NodePath::find_texture(TextureStage *stage) const;

2823 17 find_all_textures 0 4 3862 27 NodePath::find_all_textures 0 3 1011 1012 1013 1097
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_textures
//       Access: Published
//  Description: Returns a list of a textures applied to geometry at
//               this node and below.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_textures
//       Access: Published
//  Description: Returns a list of a textures applied to geometry at
//               this node and below that match the indicated name
//               (which may contain wildcard characters).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_textures
//       Access: Published
//  Description: Returns a list of a textures on geometry at
//               this node and below that are assigned to the
//               indicated texture stage.
////////////////////////////////////////////////////////////////////
219
TextureCollection NodePath::find_all_textures(void) const;
TextureCollection NodePath::find_all_textures(basic_string< char > const &name) const;
TextureCollection NodePath::find_all_textures(TextureStage *stage) const;

2824 18 find_texture_stage 0 4 3862 28 NodePath::find_texture_stage 0 1 1014 500
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_texture_stage
//       Access: Published
//  Description: Returns the first TextureStage found applied to
//               geometry at this node or below that matches the
//               indicated name (which may contain wildcards).
//               Returns the TextureStage if it is found, or NULL if
//               it is not.
////////////////////////////////////////////////////////////////////
83
TextureStage *NodePath::find_texture_stage(basic_string< char > const &name) const;

2825 23 find_all_texture_stages 0 4 3862 33 NodePath::find_all_texture_stages 0 2 1015 1016 743
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_texture_stages
//       Access: Published
//  Description: Returns a list of a TextureStages applied to geometry
//               at this node and below.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_texture_stages
//       Access: Published
//  Description: Returns a list of a TextureStages applied to geometry
//               at this node and below that match the indicated name
//               (which may contain wildcard characters).
////////////////////////////////////////////////////////////////////
167
TextureStageCollection NodePath::find_all_texture_stages(void) const;
TextureStageCollection NodePath::find_all_texture_stages(basic_string< char > const &name) const;

2826 20 unify_texture_stages 0 4 3862 30 NodePath::unify_texture_stages 0 1 1017 615
////////////////////////////////////////////////////////////////////
//     Function: NodePath::unify_texture_stages
//       Access: Published
//  Description: Searches through all TextureStages at this node and
//               below.  Any TextureStages that share the same name as
//               the indicated TextureStage object are replaced with
//               this object, thus ensuring that all geometry at this
//               node and below with a particular TextureStage name is
//               using the same TextureStage object.
////////////////////////////////////////////////////////////////////
57
void NodePath::unify_texture_stages(TextureStage *stage);

2827 13 find_material 0 4 3862 23 NodePath::find_material 0 1 1018 471
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_material
//       Access: Published
//  Description: Returns the first material found applied to geometry
//               at this node or below that matches the indicated name
//               (which may contain wildcards).  Returns the material
//               if it is found, or NULL if it is not.
////////////////////////////////////////////////////////////////////
74
Material *NodePath::find_material(basic_string< char > const &name) const;

2828 18 find_all_materials 0 4 3862 28 NodePath::find_all_materials 0 2 1019 1020 725
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_materials
//       Access: Published
//  Description: Returns a list of a materials applied to geometry at
//               this node and below.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_materials
//       Access: Published
//  Description: Returns a list of a materials applied to geometry at
//               this node and below that match the indicated name
//               (which may contain wildcard characters).
////////////////////////////////////////////////////////////////////
149
MaterialCollection NodePath::find_all_materials(void) const;
MaterialCollection NodePath::find_all_materials(basic_string< char > const &name) const;

2829 12 set_material 0 4 3862 22 NodePath::set_material 0 2 1021 1022 486
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_material
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using the indicated material.
//
//               Previously, this operation made a copy of the
//               material structure, but nowadays it assigns the
//               pointer directly.
////////////////////////////////////////////////////////////////////
63
void NodePath::set_material(Material *tex, int priority = (0));

2830 16 set_material_off 0 4 3862 26 NodePath::set_material_off 0 2 1023 1024 567
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_material_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no material.  This is normally the default, but
//               it may be useful to use this to contradict
//               set_material() at a higher node level (or, with a
//               priority, to override a set_material() at a lower
//               level).
////////////////////////////////////////////////////////////////////
52
void NodePath::set_material_off(int priority = (0));

2831 14 clear_material 0 4 3862 24 NodePath::clear_material 0 1 1025 369
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_material
//       Access: Published
//  Description: Completely removes any material adjustment that may
//               have been set via set_material() from this particular
//               node.
////////////////////////////////////////////////////////////////////
36
void NodePath::clear_material(void);

2832 12 has_material 0 4 3862 22 NodePath::has_material 0 1 1026 343
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_material
//       Access: Published
//  Description: Returns true if a material has been applied to this
//               particular node via set_material(), false otherwise.
////////////////////////////////////////////////////////////////////
40
bool NodePath::has_material(void) const;

2833 12 get_material 0 4 3862 22 NodePath::get_material 0 1 1027 609
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_material
//       Access: Published
//  Description: Returns the material that has been set on this
//               particular node, or NULL if no material has been set.
//               This is not necessarily the material that will be
//               applied to the geometry at or below this level, as
//               another material at a higher or lower level may
//               override.
//               See also find_material().
////////////////////////////////////////////////////////////////////
57
PointerTo< Material > NodePath::get_material(void) const;

2834 7 set_fog 0 4 3862 17 NodePath::set_fog 0 2 1028 1029 310
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fog
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using the indicated fog.
////////////////////////////////////////////////////////////////////
53
void NodePath::set_fog(Fog *fog, int priority = (0));

2835 11 set_fog_off 0 4 3862 21 NodePath::set_fog_off 0 2 1030 1031 547
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fog_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no fog.  This is normally the default, but
//               it may be useful to use this to contradict
//               set_fog() at a higher node level (or, with a
//               priority, to override a set_fog() at a lower
//               level).
////////////////////////////////////////////////////////////////////
47
void NodePath::set_fog_off(int priority = (0));

2836 9 clear_fog 0 4 3862 19 NodePath::clear_fog 0 1 1032 491
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_fog
//       Access: Published
//  Description: Completely removes any fog adjustment that may
//               have been set via set_fog() or set_fog_off()
//               from this particular node.  This allows whatever
//               fogs might be otherwise affecting the geometry to
//               show instead.
////////////////////////////////////////////////////////////////////
31
void NodePath::clear_fog(void);

2837 7 has_fog 0 4 3862 17 NodePath::has_fog 0 1 1033 556
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_fog
//       Access: Published
//  Description: Returns true if a fog has been applied to this
//               particular node via set_fog(), false otherwise.
//               This is not the same thing as asking whether the
//               geometry at this node will be rendered with
//               fog, as there may be a fog in effect from a higher or
//               lower level.
////////////////////////////////////////////////////////////////////
35
bool NodePath::has_fog(void) const;

2838 11 has_fog_off 0 4 3862 21 NodePath::has_fog_off 0 1 1034 579
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_fog_off
//       Access: Published
//  Description: Returns true if a fog has been specifically
//               disabled on this particular node via
//               set_fog_off(), false otherwise.  This is not the
//               same thing as asking whether the geometry at this
//               node will be rendered unfogged, as there may be a
//               fog in effect from a higher or lower level.
////////////////////////////////////////////////////////////////////
39
bool NodePath::has_fog_off(void) const;

2839 7 get_fog 0 4 3862 17 NodePath::get_fog 0 1 1035 541
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_fog
//       Access: Published
//  Description: Returns the fog that has been set on this
//               particular node, or NULL if no fog has been set.
//               This is not necessarily the fog that will be
//               applied to the geometry at or below this level, as
//               another fog at a higher or lower level may
//               override.
////////////////////////////////////////////////////////////////////
35
Fog *NodePath::get_fog(void) const;

2840 25 set_render_mode_wireframe 0 4 3862 35 NodePath::set_render_mode_wireframe 0 2 1036 1037 345
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_wireframe
//       Access: Published
//  Description: Sets up the geometry at this level and below (unless
//               overridden) to render in wireframe mode.
////////////////////////////////////////////////////////////////////
61
void NodePath::set_render_mode_wireframe(int priority = (0));

2841 22 set_render_mode_filled 0 4 3862 32 NodePath::set_render_mode_filled 0 2 1038 1039 377
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_filled
//       Access: Published
//  Description: Sets up the geometry at this level and below (unless
//               overridden) to render in filled (i.e. not wireframe)
//               mode.
////////////////////////////////////////////////////////////////////
58
void NodePath::set_render_mode_filled(int priority = (0));

2842 25 set_render_mode_thickness 0 4 3862 35 NodePath::set_render_mode_thickness 0 2 1040 1041 690
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_thickness
//       Access: Published
//  Description: Sets up the point geometry at this level and below to
//               render as thick points (that is, billboarded
//               quads).  The thickness is in pixels, unless
//               set_render_mode_perspective is also true, in which
//               case it is in 3-D units.
//
//               If you want the quads to be individually textured,
//               you should also set a TexGenAttrib::M_point_sprite on
//               the node.
////////////////////////////////////////////////////////////////////
78
void NodePath::set_render_mode_thickness(float thickness, int priority = (0));

2843 27 set_render_mode_perspective 0 4 3862 37 NodePath::set_render_mode_perspective 0 2 1042 1043 822
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_perspective
//       Access: Published
//  Description: Sets up the point geometry at this level and below to
//               render as perspective sprites (that is, billboarded
//               quads).  The thickness, as specified with
//               set_render_mode_thickness(), is the width of each
//               point in 3-D units, unless it is overridden on a
//               per-vertex basis.  This does not affect geometry
//               other than points.
//
//               If you want the quads to be individually textured,
//               you should also set a TexGenAttrib::M_point_sprite on
//               the node.
////////////////////////////////////////////////////////////////////
81
void NodePath::set_render_mode_perspective(bool perspective, int priority = (0));

2844 15 set_render_mode 0 4 3862 25 NodePath::set_render_mode 0 2 1044 1045 407
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode
//       Access: Published
//  Description: Sets up the geometry at this level and below (unless
//               overridden) to render in the specified mode and with
//               the indicated line and/or point thickness.
////////////////////////////////////////////////////////////////////
97
void NodePath::set_render_mode(RenderModeAttrib::Mode mode, float thickness, int priority = (0));

2845 17 clear_render_mode 0 4 3862 27 NodePath::clear_render_mode 0 1 1046 420
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_render_mode
//       Access: Published
//  Description: Completely removes any render mode adjustment that
//               may have been set on this node via
//               set_render_mode_wireframe() or
//               set_render_mode_filled().
////////////////////////////////////////////////////////////////////
39
void NodePath::clear_render_mode(void);

2846 15 has_render_mode 0 4 3862 25 NodePath::has_render_mode 0 1 1047 454
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_render_mode
//       Access: Published
//  Description: Returns true if a render mode has been explicitly set
//               on this particular node via set_render_mode() (or
//               set_render_mode_wireframe() or
//               set_render_mode_filled()), false otherwise.
////////////////////////////////////////////////////////////////////
43
bool NodePath::has_render_mode(void) const;

2847 15 get_render_mode 0 4 3862 25 NodePath::get_render_mode 0 1 1048 389
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_render_mode
//       Access: Published
//  Description: Returns the render mode that has been specifically
//               set on this node via set_render_mode(), or
//               M_unchanged if nothing has been set.
////////////////////////////////////////////////////////////////////
61
RenderModeAttrib::Mode NodePath::get_render_mode(void) const;

2848 25 get_render_mode_thickness 0 4 3862 35 NodePath::get_render_mode_thickness 0 1 1049 401
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_render_mode_thickness
//       Access: Published
//  Description: Returns the render mode thickness that has been
//               specifically set on this node via set_render_mode(),
//               or 1.0 if nothing has been set.
////////////////////////////////////////////////////////////////////
54
float NodePath::get_render_mode_thickness(void) const;

2849 27 get_render_mode_perspective 0 4 3862 37 NodePath::get_render_mode_perspective 0 1 1050 387
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_render_mode_perspective
//       Access: Published
//  Description: Returns the flag that has been set on this node via
//               set_render_mode_perspective(), or false if no flag
//               has been set.
////////////////////////////////////////////////////////////////////
55
bool NodePath::get_render_mode_perspective(void) const;

2850 13 set_two_sided 0 4 3862 23 NodePath::set_two_sided 0 2 1051 1052 511
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_two_sided
//       Access: Published
//  Description: Specifically sets or disables two-sided rendering
//               mode on this particular node.  If no other nodes
//               override, this will cause backfacing polygons to be
//               drawn (in two-sided mode, true) or culled (in
//               one-sided mode, false).
////////////////////////////////////////////////////////////////////
65
void NodePath::set_two_sided(bool two_sided, int priority = (0));

2851 15 clear_two_sided 0 4 3862 25 NodePath::clear_two_sided 0 1 1053 640
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_two_sided
//       Access: Published
//  Description: Completely removes any two-sided adjustment that
//               may have been set on this node via set_two_sided().
//               The geometry at this level and below will
//               subsequently be rendered either two-sided or
//               one-sided, according to whatever other nodes may have
//               had set_two_sided() on it, or according to the
//               initial state otherwise.
////////////////////////////////////////////////////////////////////
37
void NodePath::clear_two_sided(void);

2852 13 has_two_sided 0 4 3862 23 NodePath::has_two_sided 0 1 1054 489
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_two_sided
//       Access: Published
//  Description: Returns true if a two-sided adjustment has been
//               explicitly set on this particular node via
//               set_two_sided().  If this returns true, then
//               get_two_sided() may be called to determine which has
//               been set.
////////////////////////////////////////////////////////////////////
41
bool NodePath::has_two_sided(void) const;

2853 13 get_two_sided 0 4 3862 23 NodePath::get_two_sided 0 1 1055 681
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_two_sided
//       Access: Published
//  Description: Returns true if two-sided rendering has been
//               specifically set on this node via set_two_sided(), or
//               false if one-sided rendering has been specifically
//               set, or if nothing has been specifically set.  See
//               also has_two_sided().  This does not necessarily
//               imply that the geometry will or will not be rendered
//               two-sided, as there may be other nodes that override.
////////////////////////////////////////////////////////////////////
41
bool NodePath::get_two_sided(void) const;

2854 14 set_depth_test 0 4 3862 24 NodePath::set_depth_test 0 2 1056 1057 511
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_depth_test
//       Access: Published
//  Description: Specifically sets or disables the testing of the
//               depth buffer on this particular node.  This is
//               normally on in the 3-d scene graph and off in the 2-d
//               scene graph; it should be on for rendering most 3-d
//               objects properly.
////////////////////////////////////////////////////////////////////
67
void NodePath::set_depth_test(bool depth_test, int priority = (0));

2855 16 clear_depth_test 0 4 3862 26 NodePath::clear_depth_test 0 1 1058 345
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_depth_test
//       Access: Published
//  Description: Completely removes any depth-test adjustment that
//               may have been set on this node via set_depth_test().
////////////////////////////////////////////////////////////////////
38
void NodePath::clear_depth_test(void);

2856 14 has_depth_test 0 4 3862 24 NodePath::has_depth_test 0 1 1059 493
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_depth_test
//       Access: Published
//  Description: Returns true if a depth-test adjustment has been
//               explicitly set on this particular node via
//               set_depth_test().  If this returns true, then
//               get_depth_test() may be called to determine which has
//               been set.
////////////////////////////////////////////////////////////////////
42
bool NodePath::has_depth_test(void) const;

2857 14 get_depth_test 0 4 3862 24 NodePath::get_depth_test 0 1 1060 535
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_depth_test
//       Access: Published
//  Description: Returns true if depth-test rendering has been
//               specifically set on this node via set_depth_test(), or
//               false if depth-test rendering has been specifically
//               disabled.  If nothing has been specifically set,
//               returns true.  See also has_depth_test().
////////////////////////////////////////////////////////////////////
42
bool NodePath::get_depth_test(void) const;

2858 15 set_depth_write 0 4 3862 25 NodePath::set_depth_write 0 2 1061 1062 512
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_depth_write
//       Access: Published
//  Description: Specifically sets or disables the writing to the
//               depth buffer on this particular node.  This is
//               normally on in the 3-d scene graph and off in the 2-d
//               scene graph; it should be on for rendering most 3-d
//               objects properly.
////////////////////////////////////////////////////////////////////
69
void NodePath::set_depth_write(bool depth_write, int priority = (0));

2859 17 clear_depth_write 0 4 3862 27 NodePath::clear_depth_write 0 1 1063 348
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_depth_write
//       Access: Published
//  Description: Completely removes any depth-write adjustment that
//               may have been set on this node via set_depth_write().
////////////////////////////////////////////////////////////////////
39
void NodePath::clear_depth_write(void);

2860 15 has_depth_write 0 4 3862 25 NodePath::has_depth_write 0 1 1064 497
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_depth_write
//       Access: Published
//  Description: Returns true if a depth-write adjustment has been
//               explicitly set on this particular node via
//               set_depth_write().  If this returns true, then
//               get_depth_write() may be called to determine which has
//               been set.
////////////////////////////////////////////////////////////////////
43
bool NodePath::has_depth_write(void) const;

2861 15 get_depth_write 0 4 3862 25 NodePath::get_depth_write 0 1 1065 540
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_depth_write
//       Access: Published
//  Description: Returns true if depth-write rendering has been
//               specifically set on this node via set_depth_write(), or
//               false if depth-write rendering has been specifically
//               disabled.  If nothing has been specifically set,
//               returns true.  See also has_depth_write().
////////////////////////////////////////////////////////////////////
43
bool NodePath::get_depth_write(void) const;

2862 16 set_depth_offset 0 4 3862 26 NodePath::set_depth_offset 0 2 1066 1067 906
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_depth_offset
//       Access: Published
//  Description: This instructs the graphics driver to apply an
//               offset or bias to the generated depth values for
//               rendered polygons, before they are written to the
//               depth buffer. This can be used to shift polygons
//               forward slightly, to resolve depth conflicts, or
//               self-shadowing artifacts on thin objects.
//               The bias is always an integer number, and each
//               integer increment represents the smallest possible
//               increment in Z that is sufficient to completely
//               resolve two coplanar polygons. Positive numbers
//               are closer towards the camera.
////////////////////////////////////////////////////////////////////
62
void NodePath::set_depth_offset(int bias, int priority = (0));

2863 18 clear_depth_offset 0 4 3862 28 NodePath::clear_depth_offset 0 1 1068 351
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_depth_offset
//       Access: Published
//  Description: Completely removes any depth-offset adjustment that
//               may have been set on this node via set_depth_offset().
////////////////////////////////////////////////////////////////////
40
void NodePath::clear_depth_offset(void);

2864 16 has_depth_offset 0 4 3862 26 NodePath::has_depth_offset 0 1 1069 501
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_depth_offset
//       Access: Published
//  Description: Returns true if a depth-offset adjustment has been
//               explicitly set on this particular node via
//               set_depth_offset().  If this returns true, then
//               get_depth_offset() may be called to determine which has
//               been set.
////////////////////////////////////////////////////////////////////
44
bool NodePath::has_depth_offset(void) const;

2865 16 get_depth_offset 0 4 3862 26 NodePath::get_depth_offset 0 1 1070 335
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_depth_offset
//       Access: Published
//  Description: Returns the depth offset value if it has been
//               specified using set_depth_offset, or 0 if not.
////////////////////////////////////////////////////////////////////
43
int NodePath::get_depth_offset(void) const;

2866 17 do_billboard_axis 0 4 3862 27 NodePath::do_billboard_axis 0 1 1071 414
////////////////////////////////////////////////////////////////////
//     Function: NodePath::do_billboard_axis
//       Access: Published
//  Description: Performs a billboard-type rotate to the indicated
//               camera node, one time only, and leaves the object
//               rotated.  This is similar in principle to heads_up().
////////////////////////////////////////////////////////////////////
71
void NodePath::do_billboard_axis(NodePath const &camera, float offset);

2867 22 do_billboard_point_eye 0 4 3862 32 NodePath::do_billboard_point_eye 0 1 1072 546
////////////////////////////////////////////////////////////////////
//     Function: NodePath::do_billboard_point_eye
//       Access: Published
//  Description: Performs a billboard-type rotate to the indicated
//               camera node, one time only, and leaves the object
//               rotated.  This is similar in principle to look_at(),
//               although the point_eye billboard effect cannot be
//               achieved using the ordinary look_at() call.
////////////////////////////////////////////////////////////////////
76
void NodePath::do_billboard_point_eye(NodePath const &camera, float offset);

2868 24 do_billboard_point_world 0 4 3862 34 NodePath::do_billboard_point_world 0 1 1073 420
////////////////////////////////////////////////////////////////////
//     Function: NodePath::do_billboard_point_world
//       Access: Published
//  Description: Performs a billboard-type rotate to the indicated
//               camera node, one time only, and leaves the object
//               rotated.  This is similar in principle to look_at().
////////////////////////////////////////////////////////////////////
78
void NodePath::do_billboard_point_world(NodePath const &camera, float offset);

2869 18 set_billboard_axis 0 4 3862 28 NodePath::set_billboard_axis 0 3 1074 1075 1076 793
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_axis
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in two dimensions around the up axis.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_axis
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in two dimensions around the up axis,
//               towards a specified "camera" instead of to the
//               viewing camera.
////////////////////////////////////////////////////////////////////
134
inline void NodePath::set_billboard_axis(float offset = (0));
void NodePath::set_billboard_axis(NodePath const &camera, float offset);

2870 23 set_billboard_point_eye 0 4 3862 33 NodePath::set_billboard_point_eye 0 3 1077 1078 1079 968
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_eye
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the top of the
//               camera.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_eye
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the top of the
//               camera, towards a specified "camera" instead of to
//               the viewing camera.
////////////////////////////////////////////////////////////////////
144
inline void NodePath::set_billboard_point_eye(float offset = (0));
void NodePath::set_billboard_point_eye(NodePath const &camera, float offset);

2871 25 set_billboard_point_world 0 4 3862 35 NodePath::set_billboard_point_world 0 3 1080 1081 1082 910
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_world
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the sky.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_world
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the sky, towards a
//               specified "camera" instead of to the viewing camera.
////////////////////////////////////////////////////////////////////
148
inline void NodePath::set_billboard_point_world(float offset = (0));
void NodePath::set_billboard_point_world(NodePath const &camera, float offset);

2872 15 clear_billboard 0 4 3862 25 NodePath::clear_billboard 0 1 1083 268
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_billboard
//       Access: Published
//  Description: Removes any billboard effect from the node.
////////////////////////////////////////////////////////////////////
37
void NodePath::clear_billboard(void);

2873 13 has_billboard 0 4 3862 23 NodePath::has_billboard 0 1 1084 298
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_billboard
//       Access: Published
//  Description: Returns true if there is any billboard effect on
//               the node.
////////////////////////////////////////////////////////////////////
41
bool NodePath::has_billboard(void) const;

2874 11 set_compass 0 4 3862 21 NodePath::set_compass 0 2 1085 1086 459
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_compass
//       Access: Published
//  Description: Puts a compass effect on the node, so that it will
//               retain a fixed rotation relative to the reference
//               node (or render if the reference node is empty)
//               regardless of the transforms above it.
////////////////////////////////////////////////////////////////////
63
void NodePath::set_compass(NodePath const &reference = ((())));

2875 13 clear_compass 0 4 3862 23 NodePath::clear_compass 0 1 1087 264
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_compass
//       Access: Published
//  Description: Removes any compass effect from the node.
////////////////////////////////////////////////////////////////////
35
void NodePath::clear_compass(void);

2876 11 has_compass 0 4 3862 21 NodePath::has_compass 0 1 1088 294
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_compass
//       Access: Published
//  Description: Returns true if there is any compass effect on
//               the node.
////////////////////////////////////////////////////////////////////
39
bool NodePath::has_compass(void) const;

2877 16 set_transparency 0 4 3862 26 NodePath::set_transparency 0 2 1089 1090 482
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_transparency
//       Access: Published
//  Description: Specifically sets or disables transparent rendering
//               mode on this particular node.  If no other nodes
//               override, this will cause items with a non-1 value
//               for alpha color to be rendered partially transparent.
////////////////////////////////////////////////////////////////////
83
void NodePath::set_transparency(TransparencyAttrib::Mode mode, int priority = (0));

2878 18 clear_transparency 0 4 3862 28 NodePath::clear_transparency 0 1 1091 578
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_transparency
//       Access: Published
//  Description: Completely removes any transparency adjustment that
//               may have been set on this node via set_transparency().
//               The geometry at this level and below will
//               subsequently be rendered either transparent or not,
//               to whatever other nodes may have had
//               set_transparency() on them.
////////////////////////////////////////////////////////////////////
40
void NodePath::clear_transparency(void);

2879 16 has_transparency 0 4 3862 26 NodePath::has_transparency 0 1 1092 594
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_transparency
//       Access: Published
//  Description: Returns true if a transparent-rendering adjustment
//               has been explicitly set on this particular node via
//               set_transparency().  If this returns true, then
//               get_transparency() may be called to determine whether
//               transparency has been explicitly enabled or
//               explicitly disabled for this node.
////////////////////////////////////////////////////////////////////
44
bool NodePath::has_transparency(void) const;

2880 16 get_transparency 0 4 3862 26 NodePath::get_transparency 0 1 1093 701
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_transparency
//       Access: Published
//  Description: Returns the transparent rendering that has been
//               specifically set on this node via set_transparency(), or
//               M_none if nontransparent rendering has been specifically
//               set, or if nothing has been specifically set.  See
//               also has_transparency().  This does not necessarily
//               imply that the geometry will or will not be rendered
//               transparent, as there may be other nodes that override.
////////////////////////////////////////////////////////////////////
64
TransparencyAttrib::Mode NodePath::get_transparency(void) const;

2881 13 set_antialias 0 4 3862 23 NodePath::set_antialias 0 2 1094 1095 340
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_antialias
//       Access: Published
//  Description: Specifies the antialiasing type that should be
//               applied at this node and below.  See AntialiasAttrib.
////////////////////////////////////////////////////////////////////
74
void NodePath::set_antialias(unsigned short int mode, int priority = (0));

2882 15 clear_antialias 0 4 3862 25 NodePath::clear_antialias 0 1 1096 339
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_antialias
//       Access: Published
//  Description: Completely removes any antialias setting that
//               may have been set on this node via set_antialias().
////////////////////////////////////////////////////////////////////
37
void NodePath::clear_antialias(void);

2883 13 has_antialias 0 4 3862 23 NodePath::has_antialias 0 1 1097 490
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_antialias
//       Access: Published
//  Description: Returns true if an antialias setting has been
//               explicitly mode on this particular node via
//               set_antialias().  If this returns true, then
//               get_antialias() may be called to determine what the
//               setting was.
////////////////////////////////////////////////////////////////////
41
bool NodePath::has_antialias(void) const;

2884 13 get_antialias 0 4 3862 23 NodePath::get_antialias 0 1 1098 390
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_antialias
//       Access: Published
//  Description: Returns the antialias setting that has been
//               specifically set on this node via set_antialias(), or
//               M_none if no setting has been made.
////////////////////////////////////////////////////////////////////
55
unsigned short int NodePath::get_antialias(void) const;

2885 16 has_audio_volume 0 4 3862 26 NodePath::has_audio_volume 0 1 1099 457
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_audio_volume
//       Access: Published
//  Description: Returns true if an audio volume has been applied
//               to the referenced node, false otherwise.  It is still
//               possible that volume at this node might have been
//               scaled by an ancestor node.
////////////////////////////////////////////////////////////////////
44
bool NodePath::has_audio_volume(void) const;

2886 18 clear_audio_volume 0 4 3862 28 NodePath::clear_audio_volume 0 1 1100 504
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_audio_volume
//       Access: Published
//  Description: Completely removes any audio volume from the
//               referenced node.  This is preferable to simply
//               setting the audio volume to identity, as it also
//               removes the overhead associated with having an audio
//               volume at all.
////////////////////////////////////////////////////////////////////
40
void NodePath::clear_audio_volume(void);

2887 16 set_audio_volume 0 4 3862 26 NodePath::set_audio_volume 0 2 1101 1102 274
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_audio_volume
//       Access: Published
//  Description: Sets the audio volume component of the transform
////////////////////////////////////////////////////////////////////
66
void NodePath::set_audio_volume(float volume, int priority = (0));

2888 20 set_audio_volume_off 0 4 3862 30 NodePath::set_audio_volume_off 0 2 1103 1104 787
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_audio_volume_off
//       Access: Published
//  Description: Disables any audio volume attribute inherited from
//               above.  This is not the same thing as
//               clear_audio_volume(), which undoes any previous
//               set_audio_volume() operation on this node; rather,
//               this actively disables any set_audio_volume() that
//               might be inherited from a parent node.
//
//               It is legal to specify a new volume on the same
//               node with a subsequent call to set_audio_volume();
//               this new scale will apply to lower nodes.
////////////////////////////////////////////////////////////////////
56
void NodePath::set_audio_volume_off(int priority = (0));

2889 16 get_audio_volume 0 4 3862 26 NodePath::get_audio_volume 0 1 1105 460
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_audio_volume
//       Access: Published
//  Description: Returns the complete audio volume that has been
//               applied to this node via a previous call to
//               set_audio_volume(), or 1. (identity) if no volume has
//               been applied to this particular node.
////////////////////////////////////////////////////////////////////
45
float NodePath::get_audio_volume(void) const;

2890 20 get_net_audio_volume 0 4 3862 30 NodePath::get_net_audio_volume 0 1 1106 342
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_audio_volume
//       Access: Published
//  Description: Returns the complete audio volume for this node
//               taking highers nodes in the graph into account.
////////////////////////////////////////////////////////////////////
49
float NodePath::get_net_audio_volume(void) const;

2891 21 adjust_all_priorities 0 4 3862 31 NodePath::adjust_all_priorities 0 1 1107 649
////////////////////////////////////////////////////////////////////
//     Function: NodePath::adjust_all_priorities
//       Access: Published
//  Description: Adds the indicated adjustment amount (which may be
//               negative) to the priority for all transitions on the
//               referenced node, and for all nodes in the subgraph
//               below.  This can be used to force these nodes not to
//               be overridden by a high-level state change above.  If
//               the priority would drop below zero, it is set to
//               zero.
////////////////////////////////////////////////////////////////////
60
inline void NodePath::adjust_all_priorities(int adjustment);

2892 4 show 0 4 3862 14 NodePath::show 0 2 1108 1109 1081
// Variants on show and hide

// Variants on show and hide

////////////////////////////////////////////////////////////////////
//     Function: NodePath::show
//       Access: Published
//  Description: Undoes the effect of a previous hide() on this node:
//               makes the referenced node (and the entire subgraph
//               below this node) visible to all cameras.
//
//               This will not reveal the node if a parent node has
//               been hidden.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::show
//       Access: Published
//  Description: Makes the referenced node visible just to the
//               cameras whose camera_mask shares the indicated bits.
//
//               This undoes the effect of a previous hide() call.  It
//               will not reveal the node if a parent node has been
//               hidden.  However, see show_through().
////////////////////////////////////////////////////////////////////
102
inline void NodePath::show(void);
inline void NodePath::show(BitMask< unsigned int, 32 > camera_mask);

2893 12 show_through 0 4 3862 22 NodePath::show_through 0 2 1110 1111 1220
////////////////////////////////////////////////////////////////////
//     Function: NodePath::show_through
//       Access: Published
//  Description: Makes the referenced node visible just to the
//               cameras whose camera_mask shares the indicated bits.
//
//               Unlike show(), this will reveal the node even if a
//               parent node has been hidden, thus "showing through" a
//               parent's hide().
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::show_through
//       Access: Published
//  Description: Makes the referenced node visible just to the
//               cameras whose camera_mask shares the indicated bits.
//
//               Unlike show(), this will reveal the node even if a
//               parent node has been hidden via the one-parameter
//               hide() method, thus "showing through" a parent's
//               hide().  (However, it will not show through a
//               parent's hide() call if the no-parameter form of
//               hide() was used.)
////////////////////////////////////////////////////////////////////
118
inline void NodePath::show_through(void);
inline void NodePath::show_through(BitMask< unsigned int, 32 > camera_mask);

2894 4 hide 0 4 3862 14 NodePath::hide 0 2 1112 1113 1139
////////////////////////////////////////////////////////////////////
//     Function: NodePath::hide
//       Access: Published
//  Description: Makes the referenced node (and the entire subgraph
//               below this node) invisible to all cameras.  It
//               remains part of the scene graph, its bounding volume
//               still contributes to its parent's bounding volume,
//               and it will still be involved in collision tests.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::hide
//       Access: Published
//  Description: Makes the referenced node invisible just to the
//               cameras whose camera_mask shares the indicated bits.
//
//               This will also hide any nodes below this node in the
//               scene graph, including those nodes for which show()
//               has been called, but it will not hide descendent
//               nodes for which show_through() has been called.
////////////////////////////////////////////////////////////////////
102
inline void NodePath::hide(void);
inline void NodePath::hide(BitMask< unsigned int, 32 > camera_mask);

2895 9 is_hidden 0 4 3862 19 NodePath::is_hidden 0 2 1114 1115 380
////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_hidden
//       Access: Published
//  Description: Returns true if the referenced node is hidden from
//               the indicated camera(s) either directly, or because
//               some ancestor is hidden.
////////////////////////////////////////////////////////////////////
103
inline bool NodePath::is_hidden(BitMask< unsigned int, 32 > camera_mask = ((get_overall_bit()))) const;

2896 19 get_hidden_ancestor 0 4 3862 29 NodePath::get_hidden_ancestor 0 3 1116 1117 1118 478
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_hidden_ancestor
//       Access: Published
//  Description: Returns the NodePath at or above the referenced node
//               that is hidden to the indicated camera(s), or an
//               empty NodePath if no ancestor of the referenced node
//               is hidden (and the node should be visible).
////////////////////////////////////////////////////////////////////
161
NodePath NodePath::get_hidden_ancestor(BitMask< unsigned int, 32 > camera_mask = ((get_overall_bit())), Thread *current_thread = ((get_current_thread()))) const;

2897 5 stash 0 4 3862 15 NodePath::stash 0 3 1119 1120 1121 819
////////////////////////////////////////////////////////////////////
//     Function: NodePath::stash
//       Access: Published
//  Description: Removes the referenced node (and the entire subgraph
//               below this node) from the scene graph in any normal
//               sense.  The node will no longer be visible and is not
//               tested for collisions; furthermore, no normal scene
//               graph traversal will visit the node.  The node's
//               bounding volume no longer contributes to its parent's
//               bounding volume.
//
//               A stashed node cannot be located by a normal find()
//               operation (although a special find string can still
//               retrieve it).
////////////////////////////////////////////////////////////////////
88
void NodePath::stash(int sort = (0), Thread *current_thread = ((get_current_thread())));

2898 7 unstash 0 4 3862 17 NodePath::unstash 0 3 1122 1123 1124 425
////////////////////////////////////////////////////////////////////
//     Function: NodePath::unstash
//       Access: Published
//  Description: Undoes the effect of a previous stash() on this
//               node: makes the referenced node (and the entire
//               subgraph below this node) once again part of the
//               scene graph.
////////////////////////////////////////////////////////////////////
90
void NodePath::unstash(int sort = (0), Thread *current_thread = ((get_current_thread())));

2899 11 unstash_all 0 4 3862 21 NodePath::unstash_all 0 2 1125 1126 269
////////////////////////////////////////////////////////////////////
//     Function: NodePath::unstash_all
//       Access: Published
//  Description: Unstashes this node and all stashed child nodes.
////////////////////////////////////////////////////////////////////
78
void NodePath::unstash_all(Thread *current_thread = ((get_current_thread())));

2900 10 is_stashed 0 4 3862 20 NodePath::is_stashed 0 1 1127 337
////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_stashed
//       Access: Published
//  Description: Returns true if the referenced node is stashed either
//               directly, or because some ancestor is stashed.
////////////////////////////////////////////////////////////////////
45
inline bool NodePath::is_stashed(void) const;

2901 20 get_stashed_ancestor 0 4 3862 30 NodePath::get_stashed_ancestor 0 2 1128 1129 454
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_stashed_ancestor
//       Access: Published
//  Description: Returns the NodePath at or above the referenced node
//               that is stashed, or an empty NodePath if no ancestor
//               of the referenced node is stashed (and the node should
//               be visible).
////////////////////////////////////////////////////////////////////
97
NodePath NodePath::get_stashed_ancestor(Thread *current_thread = ((get_current_thread()))) const;

2902 16 get_collide_mask 0 4 3862 26 NodePath::get_collide_mask 0 1 1130 600
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_collide_mask
//       Access: Published
//  Description: Returns the union of all of the into_collide_masks
//               for nodes at this level and below.  This is the same
//               thing as node()->get_net_collide_mask().
//
//               If you want to return what the into_collide_mask of
//               this node itself is, without regard to its children,
//               use node()->get_into_collide_mask().
////////////////////////////////////////////////////////////////////
74
inline BitMask< unsigned int, 32 > NodePath::get_collide_mask(void) const;

2903 16 set_collide_mask 0 4 3862 26 NodePath::set_collide_mask 0 3 1131 1132 1133 839
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_collide_mask
//       Access: Published
//  Description: Recursively applies the indicated CollideMask to the
//               into_collide_masks for all nodes at this level and
//               below.  If node_type is not TypeHandle::none(), then
//               only nodes matching (or inheriting from) the
//               indicated PandaNode subclass are modified.
//
//               The default is to change all bits, but if
//               bits_to_change is not all bits on, then only the bits
//               that are set in bits_to_change are modified, allowing
//               this call to change only a subset of the bits in the
//               subgraph.
////////////////////////////////////////////////////////////////////
171
inline void NodePath::set_collide_mask(BitMask< unsigned int, 32 > new_mask, BitMask< unsigned int, 32 > bits_to_change = ((all_on())), TypeHandle node_type = ((none())));

2904 11 operator == 0 4 3862 21 NodePath::operator == 0 1 1134 390
// Comparison methods

////////////////////////////////////////////////////////////////////
//     Function: NodePath::operator ==
//       Access: Published
//  Description: Returns true if the two paths are equivalent; that
//               is, if they contain the same list of nodes in the same
//               order.
////////////////////////////////////////////////////////////////////
63
inline bool NodePath::operator ==(NodePath const &other) const;

2905 11 operator != 0 4 3862 21 NodePath::operator != 0 1 1135 293
// Comparison methods

////////////////////////////////////////////////////////////////////
//     Function: NodePath::operator !=
//       Access: Published
//  Description: Returns true if the two paths are not equivalent.
////////////////////////////////////////////////////////////////////
63
inline bool NodePath::operator !=(NodePath const &other) const;

2906 10 operator < 0 4 3862 20 NodePath::operator < 0 1 1136 521
////////////////////////////////////////////////////////////////////
//     Function: NodePath::operator <
//       Access: Published
//  Description: Returns true if this NodePath sorts before the other
//               one, false otherwise.  The sorting order of two
//               nonequivalent NodePaths is consistent but undefined,
//               and is useful only for storing NodePaths in a sorted
//               container like an STL set.
////////////////////////////////////////////////////////////////////
62
inline bool NodePath::operator <(NodePath const &other) const;

2907 10 compare_to 0 4 3862 20 NodePath::compare_to 0 1 1137 830
////////////////////////////////////////////////////////////////////
//     Function: NodePath::compare_to
//       Access: Published
//  Description: Returns a number less than zero if this NodePath
//               sorts before the other one, greater than zero if it
//               sorts after, or zero if they are equivalent.
//
//               Two NodePaths are considered equivalent if they
//               consist of exactly the same list of nodes in the same
//               order.  Otherwise, they are different; different
//               NodePaths will be ranked in a consistent but
//               undefined ordering; the ordering is useful only for
//               placing the NodePaths in a sorted container like an
//               STL set.
////////////////////////////////////////////////////////////////////
61
inline int NodePath::compare_to(NodePath const &other) const;

2908 15 verify_complete 0 4 3862 25 NodePath::verify_complete 0 2 1138 1139 353
// Miscellaneous

////////////////////////////////////////////////////////////////////
//     Function: NodePath::verify_complete
//       Access: Published
//  Description: Returns true if all of the nodes described in the
//               NodePath are connected, or false otherwise.
////////////////////////////////////////////////////////////////////
88
bool NodePath::verify_complete(Thread *current_thread = ((get_current_thread()))) const;

2909 14 premunge_scene 0 4 3862 24 NodePath::premunge_scene 0 2 1140 1141 749
////////////////////////////////////////////////////////////////////
//     Function: NodePath::premunge_scene
//       Access: Published
//  Description: Walks through the scene graph beginning at the bottom
//               node, and internally adjusts any GeomVertexFormats
//               for optimal rendering on the indicated GSG.  If this
//               step is not done prior to rendering, the formats will
//               be optimized at render time instead, for a small
//               cost.
//
//               It is not normally necessary to do this on a model
//               loaded directly from disk, since the loader will do
//               this by default.
////////////////////////////////////////////////////////////////////
78
void NodePath::premunge_scene(GraphicsStateGuardianBase *gsg = ((void *)(0)));

2910 13 prepare_scene 0 4 3862 23 NodePath::prepare_scene 0 1 1142 823
////////////////////////////////////////////////////////////////////
//     Function: NodePath::prepare_scene
//       Access: Published
//  Description: Walks through the scene graph beginning at the bottom
//               node, and does whatever initialization is required to
//               render the scene properly with the indicated GSG.  It
//               is not strictly necessary to call this, since the GSG
//               will initialize itself when the scene is rendered,
//               but this may take some of the overhead away from that
//               process.
//
//               In particular, this will ensure that textures and
//               vertex buffers within the scene are loaded into
//               graphics memory.
////////////////////////////////////////////////////////////////////
61
void NodePath::prepare_scene(GraphicsStateGuardianBase *gsg);

2911 11 show_bounds 0 4 3862 21 NodePath::show_bounds 0 1 1143 542
////////////////////////////////////////////////////////////////////
//     Function: NodePath::show_bounds
//       Access: Published
//  Description: Causes the bounding volume of the bottom node and all
//               of its descendants (that is, the bounding volume
//               associated with the the bottom arc) to be rendered,
//               if possible.  The rendering method is less than
//               optimal; this is intended primarily for debugging.
////////////////////////////////////////////////////////////////////
33
void NodePath::show_bounds(void);

2912 17 show_tight_bounds 0 4 3862 27 NodePath::show_tight_bounds 0 1 1144 580
////////////////////////////////////////////////////////////////////
//     Function: NodePath::show_tight_bounds
//       Access: Published
//  Description: Similar to show_bounds(), this draws a bounding box
//               representing the "tight" bounds of this node and all
//               of its descendants.  The bounding box is recomputed
//               every frame by reexamining all of the vertices; this
//               is far from efficient, but this is intended for
//               debugging.
////////////////////////////////////////////////////////////////////
39
void NodePath::show_tight_bounds(void);

2913 11 hide_bounds 0 4 3862 21 NodePath::hide_bounds 0 1 1145 306
////////////////////////////////////////////////////////////////////
//     Function: NodePath::hide_bounds
//       Access: Published
//  Description: Stops the rendering of the bounding volume begun with
//               show_bounds().
////////////////////////////////////////////////////////////////////
33
void NodePath::hide_bounds(void);

2914 10 get_bounds 0 4 3862 20 NodePath::get_bounds 0 2 1146 1147 468
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_bounds
//       Access: Published
//  Description: Returns a newly-allocated bounding volume containing
//               the bottom node and all of its descendants.  This is
//               the bounding volume on the bottom arc, converted to
//               the local coordinate space of the node.
////////////////////////////////////////////////////////////////////
106
PointerTo< BoundingVolume > NodePath::get_bounds(Thread *current_thread = ((get_current_thread()))) const;

2915 22 force_recompute_bounds 0 4 3862 32 NodePath::force_recompute_bounds 0 1 1148 890
////////////////////////////////////////////////////////////////////
//     Function: NodePath::force_recompute_bounds
//       Access: Published
//  Description: Forces the recomputing of all the bounding volumes at
//               every node in the subgraph beginning at this node and
//               below.
//
//               This should not normally need to be called, since the
//               bounding volumes are supposed to be recomputed
//               automatically when necessary.  It may be useful when
//               debugging, to verify that the bounding volumes have
//               not become inadvertently stale; it may also be useful
//               to force animated characters to update their bounding
//               volumes (which does not presently happen
//               automatically).
////////////////////////////////////////////////////////////////////
44
void NodePath::force_recompute_bounds(void);

2916 12 write_bounds 0 4 3862 22 NodePath::write_bounds 0 1 1149 385
////////////////////////////////////////////////////////////////////
//     Function: NodePath::write_bounds
//       Access: Published
//  Description: Writes a description of the bounding volume
//               containing the bottom node and all of its descendants
//               to the indicated output stream.
////////////////////////////////////////////////////////////////////
48
void NodePath::write_bounds(ostream &out) const;

2917 17 calc_tight_bounds 0 4 3862 27 NodePath::calc_tight_bounds 0 2 1150 1151 672
////////////////////////////////////////////////////////////////////
//     Function: NodePath::calc_tight_bounds
//       Access: Published
//  Description: Calculates the minimum and maximum vertices of all
//               Geoms at this NodePath's bottom node and below.  This
//               is a tight bounding box; it will generally be tighter
//               than the bounding volume returned by get_bounds()
//               (but it is more expensive to compute).
//
//               The return value is true if any points are within the
//               bounding volume, or false if none are.
////////////////////////////////////////////////////////////////////
132
bool NodePath::calc_tight_bounds(LPoint3f &min_point, LPoint3f &max_point, Thread *current_thread = ((get_current_thread()))) const;

2918 16 get_tight_bounds 0 4 3862 26 NodePath::get_tight_bounds 0 1 1152 0
49
PyObject *NodePath::get_tight_bounds(void) const;

2919 13 flatten_light 0 4 3862 23 NodePath::flatten_light 0 1 1153 1286
//  void analyze() const;

////////////////////////////////////////////////////////////////////
//     Function: NodePath::flatten_light
//       Access: Published
//  Description: Lightly flattens out the hierarchy below this node by
//               applying transforms, colors, and texture matrices
//               from the nodes onto the vertices, but does not remove
//               any nodes.
//
//               This can result in improved rendering performance
//               because there will be fewer transforms in the
//               resulting scene graph, but the number of nodes will
//               remain the same.
//
//               In particular, any NodePaths that reference nodes
//               within this hierarchy will not be damaged.  However,
//               since this operation will remove transforms from the
//               scene graph, it may be dangerous to apply to nodes
//               where you expect to dynamically modify the transform,
//               or where you expect the geometry to remain in a
//               particular local coordinate system.
//
//               The return value is always 0, since flatten_light
//               does not remove any nodes.
////////////////////////////////////////////////////////////////////
34
int NodePath::flatten_light(void);

2920 14 flatten_medium 0 4 3862 24 NodePath::flatten_medium 0 1 1154 836
////////////////////////////////////////////////////////////////////
//     Function: NodePath::flatten_medium
//       Access: Published
//  Description: A more thorough flattening than flatten_light(), this
//               first applies all the transforms, colors, and texture
//               matrices from the nodes onto the vertices, and then
//               removes unneeded grouping nodes--nodes that have
//               exactly one child, for instance, but have no special
//               properties in themselves.
//
//               This results in improved performance over
//               flatten_light() because the number of nodes in the
//               scene graph is reduced.
//
//               The return value is the number of nodes removed.
////////////////////////////////////////////////////////////////////
35
int NodePath::flatten_medium(void);

2921 14 flatten_strong 0 4 3862 24 NodePath::flatten_strong 0 1 1155 1005
////////////////////////////////////////////////////////////////////
//     Function: NodePath::flatten_strong
//       Access: Published
//  Description: The strongest possible flattening.  This first
//               applies all of the transforms to the vertices, as in
//               flatten_medium(), but then it will combine sibling
//               nodes together when possible, in addition to removing
//               unnecessary parent-child nodes.  This can result in
//               substantially fewer nodes, but any nicely-grouped
//               hierachical bounding volumes may be lost.
//
//               It is generally a good idea to apply this kind of
//               flattening only to nodes that will be culled largely
//               as a single unit, like a car.  Applying this to an
//               entire scene may result in overall poorer performance
//               because of less-effective culling.
////////////////////////////////////////////////////////////////////
35
int NodePath::flatten_strong(void);

2922 20 apply_texture_colors 0 4 3862 30 NodePath::apply_texture_colors 0 1 1156 1105
////////////////////////////////////////////////////////////////////
//     Function: NodePath::apply_texture_colors
//       Access: Published
//  Description: Removes textures from Geoms at this node and below by
//               applying the texture colors to the vertices.  This is
//               primarily useful to simplify a low-LOD model.  The
//               texture colors are replaced by flat colors that
//               approximate the original textures.
//
//               Only the bottommost texture on each Geom is used (if
//               there is more than one), and it is applied as if it
//               were M_modulate, and WM_repeat, regardless of its
//               actual settings.  If the texture has a
//               simple_ram_image, this may be used if the main image
//               isn't resident.
//
//               After this call, there will be no texturing specified
//               at this level and below.  Of course, there might
//               still be texturing inherited from above.
////////////////////////////////////////////////////////////////////
42
void NodePath::apply_texture_colors(void);

2923 17 clear_model_nodes 0 4 3862 27 NodePath::clear_model_nodes 0 1 1157 604
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_model_nodes
//       Access: Published
//  Description: Recursively walks through the scene graph at this
//               level and below, looking for ModelNodes, and calls
//               model_node->set_preserve_transform(PT_drop_node) on
//               each one.  This allows a subsequent call to
//               flatten_strong() to eliminate all of the ModelNodes.
//
//               Returns the number of ModelNodes found.
////////////////////////////////////////////////////////////////////
45
inline int NodePath::clear_model_nodes(void);

2924 7 set_tag 0 4 3862 17 NodePath::set_tag 0 1 1158 700
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tag
//       Access: Published
//  Description: Associates a user-defined value with a user-defined
//               key which is stored on the node.  This value has no
//               meaning to Panda; but it is stored indefinitely on
//               the node until it is requested again.
//
//               Each unique key stores a different string value.
//               There is no effective limit on the number of
//               different keys that may be stored or on the length of
//               any one key's value.
////////////////////////////////////////////////////////////////////
98
inline void NodePath::set_tag(basic_string< char > const &key, basic_string< char > const &value);

2925 7 get_tag 0 4 3862 17 NodePath::get_tag 0 1 1159 458
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tag
//       Access: Published
//  Description: Retrieves the user-defined value that was previously
//               set on this node for the particular key, if any.  If
//               no value has been previously set, returns the empty
//               string.  See also get_net_tag().
////////////////////////////////////////////////////////////////////
85
inline basic_string< char > NodePath::get_tag(basic_string< char > const &key) const;

2926 12 get_tag_keys 0 4 3862 22 NodePath::get_tag_keys 0 2 1160 1161 505
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tag_keys
//       Access: Published
//  Description: Fills the given vector up with the
//               list of tags on this PandaNode.
//
//               It is the user's responsibility to ensure that the
//               keys vector is empty before making this call;
//               otherwise, the new files will be appended to it.
////////////////////////////////////////////////////////////////////
132
inline void NodePath::get_tag_keys(vector< basic_string< char > > &keys) const;
inline PyObject *NodePath::get_tag_keys(void) const;

2927 7 has_tag 0 4 3862 17 NodePath::has_tag 0 1 1162 445
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_tag
//       Access: Published
//  Description: Returns true if a value has been defined on this node
//               for the particular key (even if that value is the
//               empty string), or false if no value has been set.
//               See also has_net_tag().
////////////////////////////////////////////////////////////////////
69
inline bool NodePath::has_tag(basic_string< char > const &key) const;

2928 9 clear_tag 0 4 3862 19 NodePath::clear_tag 0 1 1163 397
////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tag
//       Access: Published
//  Description: Removes the value defined for this key on this
//               particular node.  After a call to clear_tag(),
//               has_tag() will return false for the indicated key.
////////////////////////////////////////////////////////////////////
65
inline void NodePath::clear_tag(basic_string< char > const &key);

2929 11 get_net_tag 0 4 3862 21 NodePath::get_net_tag 0 1 1164 519
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_tag
//       Access: Published
//  Description: Returns the tag value that has been defined on this
//               node, or the nearest ancestor node, for the indicated
//               key.  If no value has been defined for the indicated
//               key on any ancestor node, returns the empty string.
//               See also get_tag().
////////////////////////////////////////////////////////////////////
89
inline basic_string< char > NodePath::get_net_tag(basic_string< char > const &key) const;

2930 11 has_net_tag 0 4 3862 21 NodePath::has_net_tag 0 1 1165 390
////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_net_tag
//       Access: Published
//  Description: Returns true if the indicated tag value has been
//               defined on this node or on any ancestor node, or
//               false otherwise.  See also has_tag().
////////////////////////////////////////////////////////////////////
73
inline bool NodePath::has_net_tag(basic_string< char > const &key) const;

2931 12 find_net_tag 0 4 3862 22 NodePath::find_net_tag 0 1 1166 471
////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_net_tag
//       Access: Published
//  Description: Returns the lowest ancestor of this node that
//               contains a tag definition with the indicated key, if
//               any, or an empty NodePath if no ancestor of this node
//               contains this tag definition.  See set_tag().
////////////////////////////////////////////////////////////////////
71
NodePath NodePath::find_net_tag(basic_string< char > const &key) const;

2932 14 set_python_tag 0 4 3862 24 NodePath::set_python_tag 0 1 1167 0
87
inline void NodePath::set_python_tag(basic_string< char > const &key, PyObject *value);

2933 14 get_python_tag 0 4 3862 24 NodePath::get_python_tag 0 1 1168 0
81
inline PyObject *NodePath::get_python_tag(basic_string< char > const &key) const;

2934 19 get_python_tag_keys 0 4 3862 29 NodePath::get_python_tag_keys 0 2 1169 1170 0
146
inline void NodePath::get_python_tag_keys(vector< basic_string< char > > &keys) const;
inline PyObject *NodePath::get_python_tag_keys(void) const;

2935 14 has_python_tag 0 4 3862 24 NodePath::has_python_tag 0 1 1171 0
76
inline bool NodePath::has_python_tag(basic_string< char > const &key) const;

2936 16 clear_python_tag 0 4 3862 26 NodePath::clear_python_tag 0 1 1172 0
72
inline void NodePath::clear_python_tag(basic_string< char > const &key);

2937 18 get_net_python_tag 0 4 3862 28 NodePath::get_net_python_tag 0 1 1173 0
85
inline PyObject *NodePath::get_net_python_tag(basic_string< char > const &key) const;

2938 18 has_net_python_tag 0 4 3862 28 NodePath::has_net_python_tag 0 1 1174 0
80
inline bool NodePath::has_net_python_tag(basic_string< char > const &key) const;

2939 19 find_net_python_tag 0 4 3862 29 NodePath::find_net_python_tag 0 1 1175 0
78
NodePath NodePath::find_net_python_tag(basic_string< char > const &key) const;

2940 9 list_tags 0 4 3862 19 NodePath::list_tags 0 1 1176 389
////////////////////////////////////////////////////////////////////
//     Function: NodePath::list_tags
//       Access: Published
//  Description: Lists the tags to the nout stream, one per line.  See
//               PandaNode::list_tags() for a variant that allows you
//               to specify the output stream.
////////////////////////////////////////////////////////////////////
44
inline void NodePath::list_tags(void) const;

2941 8 set_name 0 4 3862 18 NodePath::set_name 0 1 1177 258
////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_name
//       Access: Published
//  Description: Changes the name of the referenced node.
////////////////////////////////////////////////////////////////////
65
inline void NodePath::set_name(basic_string< char > const &name);

2942 8 get_name 0 4 3862 18 NodePath::get_name 0 1 1178 258
////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_name
//       Access: Published
//  Description: Returns the name of the referenced node.
////////////////////////////////////////////////////////////////////
59
inline basic_string< char > NodePath::get_name(void) const;

2943 14 write_bam_file 0 4 3862 24 NodePath::write_bam_file 0 1 1179 504
////////////////////////////////////////////////////////////////////
//     Function: NodePath::write_bam_file
//       Access: Published
//  Description: Writes the contents of this node and below out to a
//               bam file with the indicated filename.  This file may
//               then be read in again, as is, at some later point.
//               Returns true if successful, false on some kind of
//               error.
////////////////////////////////////////////////////////////////////
62
bool NodePath::write_bam_file(Filename const &filename) const;

2944 16 write_bam_stream 0 4 3862 26 NodePath::write_bam_stream 0 1 1180 314
////////////////////////////////////////////////////////////////////
//     Function: NodePath::write_bam_stream
//       Access: Published
//  Description: Writes the contents of this node and below out to the
//               indicated stream.
////////////////////////////////////////////////////////////////////
52
bool NodePath::write_bam_stream(ostream &out) const;

2945 20 encode_to_bam_stream 0 4 3862 30 NodePath::encode_to_bam_stream 0 3 1181 1182 1183 2177
////////////////////////////////////////////////////////////////////
//     Function: NodePath::encode_to_bam_stream
//       Access: Published
//  Description: Converts the NodePath object into a single
//               stream of data using a BamWriter, and returns that
//               data as a string string.  Returns empty string on
//               failure.  This is similar to write_bam_stream().
//
//               This method is used by __reduce__ to handle streaming
//               of NodePaths to a pickle file.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePath::encode_to_bam_stream
//       Access: Published
//  Description: Converts the NodePath object into a single
//               stream of data using a BamWriter, and stores that
//               data in the indicated string.  Returns true on
//               success, false on failure.
//
//               If the BamWriter is NULL, this behaves the same way
//               as NodePath::write_bam_stream() and
//               PandaNode::encode_to_bam_stream(), in the sense that
//               it only writes this node and all nodes below it.
//
//               However, if the BamWriter is not NULL, it behaves
//               very differently.  In this case, it encodes the
//               *entire graph* of all nodes connected to the
//               NodePath, including all parent nodes and siblings.
//               This is necessary for correct streaming of related
//               NodePaths and restoration of instances, etc., but it
//               does mean you must detach() a node before writing it
//               if you want to limit the nodes that get written.
//
//               This method is used by __reduce__ to handle streaming
//               of NodePaths to a pickle file.  The BamWriter case is
//               used by the direct.stdpy.pickle module, while the
//               saner, non-BamWriter case is used when the standard
//               pickle module calls this function.
////////////////////////////////////////////////////////////////////
177
inline basic_string< char > NodePath::encode_to_bam_stream(void) const;
bool NodePath::encode_to_bam_stream(basic_string< char > &data, BamWriter *writer = ((void *)(0))) const;

2946 22 decode_from_bam_stream 0 4 3862 32 NodePath::decode_from_bam_stream 0 2 1184 1185 439
////////////////////////////////////////////////////////////////////
//     Function: NodePath::decode_from_bam_stream
//       Access: Published, Static
//  Description: Reads the string created by a previous call to
//               encode_to_bam_stream(), and extracts and
//               returns the NodePath on that string.  Returns NULL on
//               error.
////////////////////////////////////////////////////////////////////
118
static NodePath NodePath::decode_from_bam_stream(basic_string< char > const &data, BamReader *reader = ((void *)(0)));

2947 14 get_class_type 0 4 3862 24 NodePath::get_class_type 0 1 1186 0
49
static TypeHandle NodePath::get_class_type(void);

2948 9 ~NodePath 0 4 3862 19 NodePath::~NodePath 0 0 0
26
NodePath::~NodePath(void);

2949 8 add_node 0 4 3864 28 AttribNodeRegistry::add_node 0 1 1188 919
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::add_node
//       Access: Published
//  Description: Adds the indicated NodePath to the registry.  The
//               name and type of the node are noted at the time of
//               this call; if the name changes later, it will not
//               update the registry index.
//
//               The NodePath must reference some kind of an attribute
//               node, such as a LightNode or a PlaneNode.  When bam
//               files that reference an attribute node of the same
//               type and the same name are loaded, they will quietly
//               be redirected to reference this NodePath.
//
//               If there is already a node matching the indicated
//               name and type, it will be replaced.
////////////////////////////////////////////////////////////////////
63
void AttribNodeRegistry::add_node(NodePath const &attrib_node);

2950 11 remove_node 0 4 3864 31 AttribNodeRegistry::remove_node 0 2 1189 1190 901
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::remove_node
//       Access: Published
//  Description: Removes the indicated NodePath from the registry.
//               The name of the node must not have changed since the
//               matching call to add_node(), or it will not be
//               successfully removed.
//
//               Returns true if the NodePath is found and removed,
//               false if it is not found (for instance, because the
//               name has changed).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::remove_node
//       Access: Published
//  Description: Removes the nth node from the registry.
////////////////////////////////////////////////////////////////////
111
bool AttribNodeRegistry::remove_node(NodePath const &attrib_node);
void AttribNodeRegistry::remove_node(int n);

2951 11 lookup_node 0 4 3864 31 AttribNodeRegistry::lookup_node 0 1 1191 480
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::lookup_node
//       Access: Published
//  Description: Looks up the indicated NodePath in the registry.  If
//               there is a node already in the registry with the
//               matching name and type, returns that NodePath
//               instead; otherwise, returns the original NodePath.
////////////////////////////////////////////////////////////////////
74
NodePath AttribNodeRegistry::lookup_node(NodePath const &orig_node) const;

2952 13 get_num_nodes 0 4 3864 33 AttribNodeRegistry::get_num_nodes 0 1 1192 283
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_num_nodes
//       Access: Published
//  Description: Returns the total number of nodes in the registry.
////////////////////////////////////////////////////////////////////
50
int AttribNodeRegistry::get_num_nodes(void) const;

2953 8 get_node 0 4 3864 28 AttribNodeRegistry::get_node 0 1 1193 278
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_node
//       Access: Published
//  Description: Returns the nth NodePath recorded in the registry.
////////////////////////////////////////////////////////////////////
51
NodePath AttribNodeRegistry::get_node(int n) const;

2954 13 get_node_type 0 4 3864 33 AttribNodeRegistry::get_node_type 0 1 1194 312
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_node_type
//       Access: Published
//  Description: Returns the type of the nth node, as recorded in the
//               registry.
////////////////////////////////////////////////////////////////////
58
TypeHandle AttribNodeRegistry::get_node_type(int n) const;

2955 13 get_node_name 0 4 3864 33 AttribNodeRegistry::get_node_name 0 1 1195 520
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_node_name
//       Access: Published
//  Description: Returns the name of the nth node, as recorded in the
//               registry.  This will be the node name as it was at
//               the time the node was recorded; if the node has
//               changed names since then, this will still return the
//               original name.
////////////////////////////////////////////////////////////////////
68
basic_string< char > AttribNodeRegistry::get_node_name(int n) const;

2956 9 find_node 0 4 3864 29 AttribNodeRegistry::find_node 0 2 1196 1197 920
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::find_node
//       Access: Published
//  Description: Returns the index number of the indicated NodePath in
//               the registry (assuming its name hasn't changed since
//               it was recorded in the registry), or -1 if the
//               NodePath cannot be found (for instance, because its
//               name has changed).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::find_node
//       Access: Published
//  Description: Returns the index number of the node with the
//               indicated type and name in the registry, or -1 if
//               there is no such node in the registry.
////////////////////////////////////////////////////////////////////
161
int AttribNodeRegistry::find_node(NodePath const &attrib_node) const;
int AttribNodeRegistry::find_node(TypeHandle type, basic_string< char > const &name) const;

2957 5 clear 0 4 3864 25 AttribNodeRegistry::clear 0 1 1198 261
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::clear
//       Access: Published
//  Description: Removes all nodes from the registry.
////////////////////////////////////////////////////////////////////
37
void AttribNodeRegistry::clear(void);

2958 6 output 0 4 3864 26 AttribNodeRegistry::output 0 1 1199 226
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::output
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
52
void AttribNodeRegistry::output(ostream &out) const;

2959 5 write 0 4 3864 25 AttribNodeRegistry::write 0 1 1200 225
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::write
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
51
void AttribNodeRegistry::write(ostream &out) const;

2960 14 get_global_ptr 0 4 3864 34 AttribNodeRegistry::get_global_ptr 0 1 1201 736
// Filename: attribNodeRegistry.I
// Created by:  drose (07Jul07)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_global_ptr
//       Access: Published, Static
//  Description: 
////////////////////////////////////////////////////////////////////
75
static inline AttribNodeRegistry *AttribNodeRegistry::get_global_ptr(void);

2961 19 ~AttribNodeRegistry 0 4 3864 39 AttribNodeRegistry::~AttribNodeRegistry 0 0 0
46
AttribNodeRegistry::~AttribNodeRegistry(void);

2962 13 make_identity 0 4 3865 32 AudioVolumeAttrib::make_identity 0 1 1202 283
////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::make_identity
//       Access: Published, Static
//  Description: Constructs an identity audio volume attrib.
////////////////////////////////////////////////////////////////////
77
static ConstPointerTo< RenderAttrib > AudioVolumeAttrib::make_identity(void);

2963 4 make 0 4 3865 23 AudioVolumeAttrib::make 0 1 1203 359
////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::make
//       Access: Published, Static
//  Description: Constructs a new AudioVolumeAttrib object that indicates
//               audio volume should be scaled by the indicated factor.
////////////////////////////////////////////////////////////////////
76
static ConstPointerTo< RenderAttrib > AudioVolumeAttrib::make(float volume);

2964 8 make_off 0 4 3865 27 AudioVolumeAttrib::make_off 0 1 1204 482
////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new AudioVolumeAttrib object that ignores
//               any AudioVolumeAttrib inherited from above.  You may
//               also specify an additional volume scale to apply to
//               geometry below (using set_volume()).
////////////////////////////////////////////////////////////////////
72
static ConstPointerTo< RenderAttrib > AudioVolumeAttrib::make_off(void);

2965 12 make_default 0 4 3865 31 AudioVolumeAttrib::make_default 0 1 1205 404
////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
76
static ConstPointerTo< RenderAttrib > AudioVolumeAttrib::make_default(void);

2966 6 is_off 0 4 3865 25 AudioVolumeAttrib::is_off 0 1 1206 529
////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::is_off
//       Access: Published
//  Description: Returns true if the AudioVolumeAttrib will ignore any
//               color scales inherited from above, false otherwise.
//               This is not the same thing as !has_scale(); a
//               AudioVolumeAttrib may have the "off" flag set and also
//               have another scale specified.
////////////////////////////////////////////////////////////////////
50
inline bool AudioVolumeAttrib::is_off(void) const;

2967 10 has_volume 0 4 3865 29 AudioVolumeAttrib::has_volume 0 1 1207 408
////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::has_volume
//       Access: Published
//  Description: Returns true if the AudioVolumeAttrib has a
//               non-identity volume, false otherwise (in which case it
//               might be an off attrib or an identity attrib).
////////////////////////////////////////////////////////////////////
54
inline bool AudioVolumeAttrib::has_volume(void) const;

2968 10 get_volume 0 4 3865 29 AudioVolumeAttrib::get_volume 0 1 1208 272
////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::get_volume
//       Access: Published
//  Description: Returns the volume to be applied to sounds.
////////////////////////////////////////////////////////////////////
55
inline float AudioVolumeAttrib::get_volume(void) const;

2969 10 set_volume 0 4 3865 29 AudioVolumeAttrib::set_volume 0 1 1209 350
////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::set_volume
//       Access: Published
//  Description: Returns a new AudioVolumeAttrib, just like this one, but
//               with the volume changed to the indicated value.
////////////////////////////////////////////////////////////////////
81
ConstPointerTo< RenderAttrib > AudioVolumeAttrib::set_volume(float volume) const;

2970 14 get_class_slot 0 4 3865 33 AudioVolumeAttrib::get_class_slot 0 1 1210 0
51
static int AudioVolumeAttrib::get_class_slot(void);

2971 14 get_class_type 0 4 3865 33 AudioVolumeAttrib::get_class_type 0 1 1211 0
58
static TypeHandle AudioVolumeAttrib::get_class_type(void);

2972 18 ~AudioVolumeAttrib 0 4 3865 37 AudioVolumeAttrib::~AudioVolumeAttrib 0 0 0
44
AudioVolumeAttrib::~AudioVolumeAttrib(void);

2973 4 make 0 4 3866 23 AuxBitplaneAttrib::make 0 2 1212 1213 558
////////////////////////////////////////////////////////////////////
//     Function: AuxBitplaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a default AuxBitplaneAttrib object.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AuxBitplaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a specified AuxBitplaneAttrib object.
////////////////////////////////////////////////////////////////////
144
static ConstPointerTo< RenderAttrib > AuxBitplaneAttrib::make(void);
static ConstPointerTo< RenderAttrib > AuxBitplaneAttrib::make(int outputs);

2974 12 make_default 0 4 3866 31 AuxBitplaneAttrib::make_default 0 1 1214 404
////////////////////////////////////////////////////////////////////
//     Function: AuxBitplaneAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
76
static ConstPointerTo< RenderAttrib > AuxBitplaneAttrib::make_default(void);

2975 11 get_outputs 0 4 3866 30 AuxBitplaneAttrib::get_outputs 0 1 1215 272
////////////////////////////////////////////////////////////////////
//     Function: AuxBitplaneAttrib::get_outputs
//       Access: Published
//  Description: Returns the AuxBitplaneAttrib output bits.
////////////////////////////////////////////////////////////////////
54
inline int AuxBitplaneAttrib::get_outputs(void) const;

2976 14 get_class_slot 0 4 3866 33 AuxBitplaneAttrib::get_class_slot 0 1 1216 0
51
static int AuxBitplaneAttrib::get_class_slot(void);

2977 14 get_class_type 0 4 3866 33 AuxBitplaneAttrib::get_class_type 0 1 1217 0
58
static TypeHandle AuxBitplaneAttrib::get_class_type(void);

2978 18 ~AuxBitplaneAttrib 0 4 3866 37 AuxBitplaneAttrib::~AuxBitplaneAttrib 0 0 0
44
AuxBitplaneAttrib::~AuxBitplaneAttrib(void);

2979 12 set_duration 0 4 3868 26 AuxSceneData::set_duration 0 1 1218 402
////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::set_duration
//       Access: Public
//  Description: Specifies the minimum length in time, in seconds, to
//               keep this AuxSceneData object around in the scene
//               graph after the last time it was rendered.
////////////////////////////////////////////////////////////////////
56
inline void AuxSceneData::set_duration(double duration);

2980 12 get_duration 0 4 3868 26 AuxSceneData::get_duration 0 1 1219 400
////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::get_duration
//       Access: Public
//  Description: Returns the minimum length in time, in seconds, to
//               keep this AuxSceneData object around in the scene
//               graph after the last time it was rendered.
////////////////////////////////////////////////////////////////////
53
inline double AuxSceneData::get_duration(void) const;

2981 20 set_last_render_time 0 4 3868 34 AuxSceneData::set_last_render_time 0 1 1220 345
////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::set_last_render_time
//       Access: Public
//  Description: Should be called with the current frame_time each
//               time the AuxSceneData is used during traversal.
////////////////////////////////////////////////////////////////////
67
inline void AuxSceneData::set_last_render_time(double render_time);

2982 20 get_last_render_time 0 4 3868 34 AuxSceneData::get_last_render_time 0 1 1221 346
////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::get_last_render_time
//       Access: Public
//  Description: Returns the last time this object was used during
//               traversal (according to set_last_render_time()).
////////////////////////////////////////////////////////////////////
61
inline double AuxSceneData::get_last_render_time(void) const;

2983 19 get_expiration_time 0 4 3868 33 AuxSceneData::get_expiration_time 0 1 1222 379
////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::get_expiration_time
//       Access: Public
//  Description: Returns the frame_time at which this AuxSceneData
//               object is currently scheduled to be removed from the
//               scene graph.
////////////////////////////////////////////////////////////////////
60
inline double AuxSceneData::get_expiration_time(void) const;

2984 6 output 0 6 3868 20 AuxSceneData::output 0 1 1223 229
////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::output
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
54
virtual void AuxSceneData::output(ostream &out) const;

2985 5 write 0 6 3868 19 AuxSceneData::write 0 2 1224 1225 228
////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::write
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
77
virtual void AuxSceneData::write(ostream &out, int indent_level = (0)) const;

2986 14 get_class_type 0 4 3868 28 AuxSceneData::get_class_type 0 1 1226 0
53
static TypeHandle AuxSceneData::get_class_type(void);

2987 13 ~AuxSceneData 0 4 3868 27 AuxSceneData::~AuxSceneData 0 0 0
34
AuxSceneData::~AuxSceneData(void);

2988 7 BamFile 0 4 3870 16 BamFile::BamFile 0 1 1227 216
////////////////////////////////////////////////////////////////////
//     Function: BamFile::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
23
BamFile::BamFile(void);

2989 8 ~BamFile 0 4 3870 17 BamFile::~BamFile 0 0 215
////////////////////////////////////////////////////////////////////
//     Function: BamFile::Destructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
24
BamFile::~BamFile(void);

2990 9 open_read 0 4 3870 18 BamFile::open_read 0 5 1228 1229 1230 1231 1232 725
////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_read
//       Access: Public
//  Description: Attempts to open the indicated filename for reading.
//               Returns true if successful, false on error.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_read
//       Access: Public
//  Description: Attempts to open the indicated stream for reading.
//               The filename is just for information purposes only.
//               Returns true if successful, false on error.
////////////////////////////////////////////////////////////////////
199
bool BamFile::open_read(Filename const &bam_filename, bool report_errors = (1));
bool BamFile::open_read(istream &in, basic_string< char > const &bam_filename = ("stream"), bool report_errors = (1));

2991 11 read_object 0 4 3870 20 BamFile::read_object 0 1 1233 592
////////////////////////////////////////////////////////////////////
//     Function: BamFile::read_object
//       Access: Public
//  Description: Reads and returns the next object from the Bam file,
//               or NULL if the end of the file has been reached, or
//               if there is an error condition.  Use is_eof() to
//               differentiate these two cases.
//
//               The pointers returned by this method will not be
//               valid for use until resolve() is subsequently called.
////////////////////////////////////////////////////////////////////
42
TypedWritable *BamFile::read_object(void);

2992 6 is_eof 0 4 3870 15 BamFile::is_eof 0 1 1234 370
////////////////////////////////////////////////////////////////////
//     Function: BamFile::is_eof
//       Access: Public
//  Description: Returns true if the reader has reached end-of-file,
//               false otherwise.  This call is only valid after a
//               call to read_object().
////////////////////////////////////////////////////////////////////
33
bool BamFile::is_eof(void) const;

2993 7 resolve 0 4 3870 16 BamFile::resolve 0 1 1235 650
////////////////////////////////////////////////////////////////////
//     Function: BamFile::resolve
//       Access: Public
//  Description: This must be called after one or more objects have
//               been read via calls to read_object() in order to
//               resolve all internal pointer references in the
//               objects read and make all the pointers valid.  It
//               returns true if all objects are successfully
//               resolved, or false if some have not been (in which
//               case you must call resolve() again later).
////////////////////////////////////////////////////////////////////
28
bool BamFile::resolve(void);

2994 9 read_node 0 4 3870 18 BamFile::read_node 0 2 1236 1237 1170
////////////////////////////////////////////////////////////////////
//     Function: BamFile::read_node
//       Access: Public
//  Description: Although the bam file format is general enough to
//               store a list of objects of arbitrary type, bam files
//               on disk usually contain just one object, a PandaNode
//               that is the root of a scene graph.  (Bam files that
//               store other kinds of things are usually given the
//               extension "boo", for "binary other objects", to
//               differentiate them from the normal scene graph type
//               file.)
//
//               This is a convenience method for when you believe you
//               are reading a scene graph bam file.  It reads the one
//               PandaNode and returns it.  It also calls resolve() to
//               fully resolve the object, since we expect this will
//               be the only object in the file.
//
//               If the bam file contains something other than a
//               PandaNode, an error is printed and NULL is returned.
////////////////////////////////////////////////////////////////////
68
PointerTo< PandaNode > BamFile::read_node(bool report_errors = (1));

2995 10 open_write 0 4 3870 19 BamFile::open_write 0 5 1238 1239 1240 1241 1242 838
////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_write
//       Access: Public
//  Description: Attempts to open the indicated file for writing.  If
//               another file by the same name already exists, it will
//               be silently removed.  Returns true if successful,
//               false otherwise.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_write
//       Access: Public
//  Description: Attempts to open the indicated stream for writing.
//               The filename is just for information purposes only.
//               Returns true if successful, false on error.
////////////////////////////////////////////////////////////////////
202
bool BamFile::open_write(Filename const &bam_filename, bool report_errors = (1));
bool BamFile::open_write(ostream &out, basic_string< char > const &bam_filename = ("stream"), bool report_errors = (1));

2996 12 write_object 0 4 3870 21 BamFile::write_object 0 1 1243 324
////////////////////////////////////////////////////////////////////
//     Function: BamFile::write_object
//       Access: Public
//  Description: Writes the indicated object to the Bam file.  Returns
//               true if successful, false on error.
////////////////////////////////////////////////////////////////////
56
bool BamFile::write_object(TypedWritable const *object);

2997 5 close 0 4 3870 14 BamFile::close 0 1 1244 245
////////////////////////////////////////////////////////////////////
//     Function: BamFile::close
//       Access: Public
//  Description: Closes the input or output stream.
////////////////////////////////////////////////////////////////////
26
void BamFile::close(void);

2998 13 is_valid_read 0 4 3870 22 BamFile::is_valid_read 0 1 1245 846
// Filename: bamFile.I
// Created by:  drose (02Jul00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: BamFile::is_valid_read
//       Access: Public
//  Description: Returns true if the Bam file is open and ready for
//               reading with no errors so far detected, or false
//               otherwise.
////////////////////////////////////////////////////////////////////
47
inline bool BamFile::is_valid_read(void) const;

2999 14 is_valid_write 0 4 3870 23 BamFile::is_valid_write 0 1 1246 364
////////////////////////////////////////////////////////////////////
//     Function: BamFile::is_valid_write
//       Access: Public
//  Description: Returns true if the Bam file is open and ready for
//               writing with no errors so far detected, or false
//               otherwise.
////////////////////////////////////////////////////////////////////
48
inline bool BamFile::is_valid_write(void) const;

3000 18 get_file_major_ver 0 4 3870 27 BamFile::get_file_major_ver 0 1 1247 426
////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_file_major_ver
//       Access: Public
//  Description: Returns the major version number of the file
//               currently being read, or the system current major
//               version number if no file is currently open for
//               reading.
////////////////////////////////////////////////////////////////////
38
int BamFile::get_file_major_ver(void);

3001 18 get_file_minor_ver 0 4 3870 27 BamFile::get_file_minor_ver 0 1 1248 426
////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_file_minor_ver
//       Access: Public
//  Description: Returns the minor version number of the file
//               currently being read, or the system current minor
//               version number if no file is currently open for
//               reading.
////////////////////////////////////////////////////////////////////
38
int BamFile::get_file_minor_ver(void);

3002 15 get_file_endian 0 4 3870 24 BamFile::get_file_endian 0 1 1249 326
////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_file_endian
//       Access: Public
//  Description: Returns the endian preference indicated by the Bam
//               file currently being read or written.
////////////////////////////////////////////////////////////////////
57
BamEnums::BamEndian BamFile::get_file_endian(void) const;

3003 24 get_file_stdfloat_double 0 4 3870 33 BamFile::get_file_stdfloat_double 0 1 1250 372
////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_file_stdfloat_double
//       Access: Public
//  Description: Returns true if the file stores all "standard"
//               floats as 64-bit doubles, or false if they are 32-bit
//               floats.
////////////////////////////////////////////////////////////////////
51
bool BamFile::get_file_stdfloat_double(void) const;

3004 21 get_current_major_ver 0 4 3870 30 BamFile::get_current_major_ver 0 1 1251 386
////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_current_major_ver
//       Access: Public
//  Description: Returns the system current major version number.
//               This is the version number that will be assigned to
//               any generated Bam files.
////////////////////////////////////////////////////////////////////
41
int BamFile::get_current_major_ver(void);

3005 21 get_current_minor_ver 0 4 3870 30 BamFile::get_current_minor_ver 0 1 1252 386
////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_current_minor_ver
//       Access: Public
//  Description: Returns the system current minor version number.
//               This is the version number that will be assigned to
//               any generated Bam files.
////////////////////////////////////////////////////////////////////
41
int BamFile::get_current_minor_ver(void);

3006 10 get_reader 0 4 3870 19 BamFile::get_reader 0 1 1253 370
////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_reader
//       Access: Public
//  Description: Returns the BamReader in charge of performing the
//               read operations.  This will return NULL unless
//               open_read() was called.
////////////////////////////////////////////////////////////////////
37
BamReader *BamFile::get_reader(void);

3007 10 get_writer 0 4 3870 19 BamFile::get_writer 0 1 1254 372
////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_writer
//       Access: Public
//  Description: Returns the BamWriter in charge of performing the
//               write operations.  This will return NULL unless
//               open_write() was called.
////////////////////////////////////////////////////////////////////
37
BamWriter *BamFile::get_writer(void);

3008 4 make 0 4 3872 21 BillboardEffect::make 0 1 1255 316
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::make
//       Access: Published, Static
//  Description: Constructs a new BillboardEffect object with the
//               indicated properties.
////////////////////////////////////////////////////////////////////
196
static ConstPointerTo< RenderEffect > BillboardEffect::make(LVector3f const &up_vector, bool eye_relative, bool axial_rotate, float offset, NodePath const &look_at, LPoint3f const &look_at_point);

3009 9 make_axis 0 4 3872 26 BillboardEffect::make_axis 0 1 1256 316
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::make_axis
//       Access: Published, Static
//  Description: A convenience function to make a typical
//               axis-rotating billboard.
////////////////////////////////////////////////////////////////////
78
static inline ConstPointerTo< RenderEffect > BillboardEffect::make_axis(void);

3010 14 make_point_eye 0 4 3872 31 BillboardEffect::make_point_eye 0 1 1257 335
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::make_point_eye
//       Access: Published, Static
//  Description: A convenience function to make a typical
//               eye-relative point-rotating billboard.
////////////////////////////////////////////////////////////////////
83
static inline ConstPointerTo< RenderEffect > BillboardEffect::make_point_eye(void);

3011 16 make_point_world 0 4 3872 33 BillboardEffect::make_point_world 0 1 1258 339
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::make_point_world
//       Access: Published, Static
//  Description: A convenience function to make a typical
//               world-relative point-rotating billboard.
////////////////////////////////////////////////////////////////////
85
static inline ConstPointerTo< RenderEffect > BillboardEffect::make_point_world(void);

3012 6 is_off 0 4 3872 23 BillboardEffect::is_off 0 1 1259 625
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::is_off
//       Access: Published
//  Description: Returns true if the BillboardEffect is an 'off'
//               BillboardEffect, indicating that it does not enable
//               billboarding.  This kind of BillboardEffect isn't
//               particularly useful and isn't normally created or
//               stored in the graph; it might be implicitly
//               discovered as the result of a
//               NodePath::get_rel_state().
////////////////////////////////////////////////////////////////////
48
inline bool BillboardEffect::is_off(void) const;

3013 13 get_up_vector 0 4 3872 30 BillboardEffect::get_up_vector 0 1 1260 281
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_up_vector
//       Access: Published
//  Description: Returns the up vector in effect for this billboard.
////////////////////////////////////////////////////////////////////
67
inline LVector3f const &BillboardEffect::get_up_vector(void) const;

3014 16 get_eye_relative 0 4 3872 33 BillboardEffect::get_eye_relative 0 1 1261 387
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_eye_relative
//       Access: Published
//  Description: Returns true if this billboard interprets the up
//               vector relative to the camera, or false if it is
//               relative to the world.
////////////////////////////////////////////////////////////////////
58
inline bool BillboardEffect::get_eye_relative(void) const;

3015 16 get_axial_rotate 0 4 3872 33 BillboardEffect::get_axial_rotate 0 1 1262 395
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_axial_rotate
//       Access: Published
//  Description: Returns true if this billboard rotates only around
//               the axis of the up vector, or false if it rotates
//               freely in three dimensions.
////////////////////////////////////////////////////////////////////
58
inline bool BillboardEffect::get_axial_rotate(void) const;

3016 10 get_offset 0 4 3872 27 BillboardEffect::get_offset 0 1 1263 465
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_offset
//       Access: Published
//  Description: Returns the distance toward the camera (or the
//               look_at_point) the billboard is moved towards, after
//               rotating.  This can be used to ensure the billboard
//               is not obscured by nearby geometry.
////////////////////////////////////////////////////////////////////
53
inline float BillboardEffect::get_offset(void) const;

3017 11 get_look_at 0 4 3872 28 BillboardEffect::get_look_at 0 1 1264 450
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_look_at
//       Access: Published
//  Description: Returns the node this billboard will rotate to look
//               towards.  If this is empty, it means the billboard
//               will rotate towards the current camera node, wherever
//               that might be.
////////////////////////////////////////////////////////////////////
64
inline NodePath const &BillboardEffect::get_look_at(void) const;

3018 17 get_look_at_point 0 4 3872 34 BillboardEffect::get_look_at_point 0 1 1265 386
////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_look_at_point
//       Access: Published
//  Description: Returns the point, relative to the look_at node,
//               towards which the billboard will rotate.  Normally
//               this is (0, 0, 0).
////////////////////////////////////////////////////////////////////
70
inline LPoint3f const &BillboardEffect::get_look_at_point(void) const;

3019 14 get_class_type 0 4 3872 31 BillboardEffect::get_class_type 0 1 1266 0
56
static TypeHandle BillboardEffect::get_class_type(void);

3020 16 ~BillboardEffect 0 4 3872 33 BillboardEffect::~BillboardEffect 0 0 0
40
BillboardEffect::~BillboardEffect(void);

3021 8 LensNode 0 4 3873 18 LensNode::LensNode 0 2 1267 1268 447
////////////////////////////////////////////////////////////////////
//     Function: LensNode::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: LensNode::Copy Constructor
//       Access: Protected
//  Description:
////////////////////////////////////////////////////////////////////
81
LensNode::LensNode(basic_string< char > const &name, Lens *lens = ((void *)(0)));

3022 9 copy_lens 0 4 3873 19 LensNode::copy_lens 0 2 1269 1270 1159
// Filename: lensNode.I
// Created by:  drose (26Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: LensNode::copy_lens
//       Access: Published
//  Description: Sets up the LensNode using a copy of the
//               indicated Lens.  If the original Lens is
//               changed or destroyed, this LensNode is not
//               affected.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: LensNode::copy_lens
//       Access: Published
//  Description: Copies the indicated lens into the specified slot.
////////////////////////////////////////////////////////////////////
112
inline void LensNode::copy_lens(Lens const &lens);
inline void LensNode::copy_lens(int index, Lens const &lens);

3023 8 set_lens 0 4 3873 18 LensNode::set_lens 0 2 1271 1272 990
////////////////////////////////////////////////////////////////////
//     Function: LensNode::set_lens
//       Access: Published
//  Description: Sets up the LensNode using this particular Lens
//               pointer.  If the lens is subsequently modified, the
//               LensNode properties immediately reflect the change.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: LensNode::set_lens
//       Access: Published
//  Description: Sets the indicated lens.  Although a LensNode
//               normally holds only one lens, it may optionally
//               include multiple lenses, each with a different index
//               number.  The different lenses may be referenced by
//               index number on the DisplayRegion.  Adding a new lens
//               automatically makes it active.
////////////////////////////////////////////////////////////////////
91
inline void LensNode::set_lens(Lens *lens);
void LensNode::set_lens(int index, Lens *lens);

3024 8 get_lens 0 4 3873 18 LensNode::get_lens 0 2 1273 1274 443
////////////////////////////////////////////////////////////////////
//     Function: LensNode::get_lens
//       Access: Published
//  Description: Returns a pointer to the particular Lens
//               associated with this LensNode, or NULL if there is
//               not yet a Lens associated.  If an index number is
//               specified, returns the nth lens.
////////////////////////////////////////////////////////////////////
55
inline Lens *LensNode::get_lens(int index = (0)) const;

3025 15 set_lens_active 0 4 3873 25 LensNode::set_lens_active 0 1 1275 536
////////////////////////////////////////////////////////////////////
//     Function: LensNode::set_lens_active
//       Access: Published
//  Description: Sets the active flag for the nth lens.  When a lens
//               is inactive, it is not used for rendering, and any
//               DisplayRegions associated with it are implicitly
//               inactive as well.  Returns true if the flag is
//               changed, false if it already had this value.
////////////////////////////////////////////////////////////////////
55
bool LensNode::set_lens_active(int index, bool active);

3026 15 get_lens_active 0 4 3873 25 LensNode::get_lens_active 0 1 1276 266
////////////////////////////////////////////////////////////////////
//     Function: LensNode::get_lens_active
//       Access: Published
//  Description: Returns the active flag for the nth lens.
////////////////////////////////////////////////////////////////////
55
inline bool LensNode::get_lens_active(int index) const;

3027 13 activate_lens 0 4 3873 23 LensNode::activate_lens 0 1 1277 294
////////////////////////////////////////////////////////////////////
//     Function: LensNode::activate_lens
//       Access: Published
//  Description: An alternate way to call set_lens_active(index,
//               true).
////////////////////////////////////////////////////////////////////
47
inline bool LensNode::activate_lens(int index);

3028 15 deactivate_lens 0 4 3873 25 LensNode::deactivate_lens 0 1 1278 297
////////////////////////////////////////////////////////////////////
//     Function: LensNode::deactivate_lens
//       Access: Published
//  Description: An alternate way to call set_lens_active(index,
//               false).
////////////////////////////////////////////////////////////////////
49
inline bool LensNode::deactivate_lens(int index);

3029 10 is_in_view 0 4 3873 20 LensNode::is_in_view 0 2 1279 1280 750
////////////////////////////////////////////////////////////////////
//     Function: LensNode::is_in_view
//       Access: Published
//  Description: Returns true if the given point is within the bounds
//               of the lens of the LensNode (i.e. if the camera can
//               see the point).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: LensNode::is_in_view
//       Access: Published
//  Description: Returns true if the given point is within the bounds
//               of the lens of the LensNode (i.e. if the camera can
//               see the point).
////////////////////////////////////////////////////////////////////
113
inline bool LensNode::is_in_view(LPoint3f const &pos);
bool LensNode::is_in_view(int index, LPoint3f const &pos);

3030 12 show_frustum 0 4 3873 22 LensNode::show_frustum 0 1 1281 391
////////////////////////////////////////////////////////////////////
//     Function: LensNode::show_frustum
//       Access: Published
//  Description: Enables the drawing of the lens's frustum to aid in
//               visualization.  This actually creates a GeomNode
//               which is parented to the LensNode.
////////////////////////////////////////////////////////////////////
34
void LensNode::show_frustum(void);

3031 12 hide_frustum 0 4 3873 22 LensNode::hide_frustum 0 1 1282 306
////////////////////////////////////////////////////////////////////
//     Function: LensNode::hide_frustum
//       Access: Published
//  Description: Disables the drawing of the lens's frustum to aid in
//               visualization.
////////////////////////////////////////////////////////////////////
34
void LensNode::hide_frustum(void);

3032 14 get_class_type 0 4 3873 24 LensNode::get_class_type 0 1 1283 0
49
static TypeHandle LensNode::get_class_type(void);

3033 9 ~LensNode 0 4 3873 19 LensNode::~LensNode 0 0 0
26
LensNode::~LensNode(void);

3034 6 Camera 0 4 3874 14 Camera::Camera 0 3 1284 1285 1286 443
////////////////////////////////////////////////////////////////////
//     Function: Camera::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: Camera::Copy Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
125
Camera::Camera(basic_string< char > const &name, Lens *lens = ((new PerspectiveLens())));
Camera::Camera(Camera const &copy);

3035 10 set_active 0 4 3874 18 Camera::set_active 0 1 1287 810
// Filename: camera.I
// Created by:  drose (26Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_active
//       Access: Published
//  Description: Sets the active flag on the camera.  When the camera
//               is not active, nothing will be rendered.
////////////////////////////////////////////////////////////////////
44
inline void Camera::set_active(bool active);

3036 9 is_active 0 4 3874 17 Camera::is_active 0 1 1288 295
////////////////////////////////////////////////////////////////////
//     Function: Camera::is_active
//       Access: Published
//  Description: Returns the current setting of the active flag on the
//               camera.
////////////////////////////////////////////////////////////////////
42
inline bool Camera::is_active(void) const;

3037 9 set_scene 0 4 3874 17 Camera::set_scene 0 1 1289 801
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_scene
//       Access: Published
//  Description: Sets the scene that will be rendered by the camera.
//               This is normally the root node of a scene graph,
//               typically a node called 'render', although it could
//               represent the root of any subgraph.
//
//               Note that the use of this method is now deprecated.
//               In the absence of an explicit scene set on the
//               camera, the camera will render whatever scene it is
//               parented into.  This is the preferred way to specify
//               the scene, since it is the more intuitive mechanism.
////////////////////////////////////////////////////////////////////
53
inline void Camera::set_scene(NodePath const &scene);

3038 9 get_scene 0 4 3874 17 Camera::get_scene 0 1 1290 306
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_scene
//       Access: Published
//  Description: Returns the scene that will be rendered by the
//               camera.  See set_scene().
////////////////////////////////////////////////////////////////////
53
inline NodePath const &Camera::get_scene(void) const;

3039 23 get_num_display_regions 0 4 3874 31 Camera::get_num_display_regions 0 1 1291 313
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_num_display_regions
//       Access: Published
//  Description: Returns the number of display regions associated with
//               the camera.
////////////////////////////////////////////////////////////////////
55
inline int Camera::get_num_display_regions(void) const;

3040 18 get_display_region 0 4 3874 26 Camera::get_display_region 0 1 1292 301
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_display_region
//       Access: Published
//  Description: Returns the nth display region associated with the
//               camera.
////////////////////////////////////////////////////////////////////
66
inline DisplayRegionBase *Camera::get_display_region(int n) const;

3041 15 set_camera_mask 0 4 3874 23 Camera::set_camera_mask 0 1 1293 717
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_camera_mask
//       Access: Published
//  Description: Changes the set of bits that represent the subset of
//               the scene graph the camera will render.
//
//               During the cull traversal, a node is not visited if
//               none of its draw mask bits intersect with the
//               camera's camera mask bits.  These masks can be used
//               to selectively hide and show different parts of the
//               scene graph from different cameras that are otherwise
//               viewing the same scene.
////////////////////////////////////////////////////////////////////
70
inline void Camera::set_camera_mask(BitMask< unsigned int, 32 > mask);

3042 15 get_camera_mask 0 4 3874 23 Camera::get_camera_mask 0 1 1294 373
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_camera_mask
//       Access: Published
//  Description: Returns the set of bits that represent the subset of
//               the scene graph the camera will render.  See
//               set_camera_mask().
////////////////////////////////////////////////////////////////////
71
inline BitMask< unsigned int, 32 > Camera::get_camera_mask(void) const;

3043 15 set_cull_center 0 4 3874 23 Camera::set_cull_center 0 1 1295 606
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_cull_center
//       Access: Published
//  Description: Specifies the point from which the culling operations
//               are performed.  Normally, this is the same as the
//               camera, and that is the default if this is not
//               specified; but it may sometimes be useful to perform
//               the culling from some other viewpoint, particularly
//               when you are debugging the culling itself.
////////////////////////////////////////////////////////////////////
65
inline void Camera::set_cull_center(NodePath const &cull_center);

3044 15 get_cull_center 0 4 3874 23 Camera::get_cull_center 0 1 1296 396
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_cull_center
//       Access: Published
//  Description: Returns the point from which the culling operations
//               will be performed, if it was set by
//               set_cull_center(), or the empty NodePath otherwise.
////////////////////////////////////////////////////////////////////
59
inline NodePath const &Camera::get_cull_center(void) const;

3045 15 set_cull_bounds 0 4 3874 23 Camera::set_cull_bounds 0 1 1297 681
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_cull_bounds
//       Access: Published
//  Description: Specifies the bounding volume that should be used to
//               perform culling from this camera.  Normally, this is
//               the bounding volume returned from the active lens'
//               make_bounds() call, but you may override this to
//               specify a custom volume if you require.  The
//               specified bounding volume will be understood to be in
//               the coordinate space of the get_cull_center() node.
////////////////////////////////////////////////////////////////////
65
inline void Camera::set_cull_bounds(BoundingVolume *cull_bounds);

3046 15 get_cull_bounds 0 4 3874 23 Camera::get_cull_bounds 0 1 1298 372
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_cull_bounds
//       Access: Published
//  Description: Returns the custom cull volume that was set by
//               set_cull_bounds(), if any, or NULL if no custom cull
//               volume was set.
////////////////////////////////////////////////////////////////////
59
inline BoundingVolume *Camera::get_cull_bounds(void) const;

3047 14 set_lod_center 0 4 3874 22 Camera::set_lod_center 0 1 1299 680
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_lod_center
//       Access: Published
//  Description: Specifies the point from which the LOD distances
//               are measured.  Normally, this is the same as the
//               camera, and that is the default if this is not
//               specified; but it may sometimes be useful to perform
//               the distance test from some other viewpoint.  This
//               may be used, for instance, to reduce LOD popping when
//               the camera rotates in a small circle about an avatar.
////////////////////////////////////////////////////////////////////
63
inline void Camera::set_lod_center(NodePath const &lod_center);

3048 14 get_lod_center 0 4 3874 22 Camera::get_lod_center 0 1 1300 388
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_lod_center
//       Access: Published
//  Description: Returns the point from which the LOD distances will
//               be measured, if it was set by set_lod_center(), or
//               the empty NodePath otherwise.
////////////////////////////////////////////////////////////////////
58
inline NodePath const &Camera::get_lod_center(void) const;

3049 17 set_initial_state 0 4 3874 25 Camera::set_initial_state 0 1 1301 374
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_initial_state
//       Access: Published
//  Description: Sets the initial state which is applied to all nodes
//               in the scene, as if it were set at the top of the
//               scene graph.
////////////////////////////////////////////////////////////////////
64
inline void Camera::set_initial_state(RenderState const *state);

3050 17 get_initial_state 0 4 3874 25 Camera::get_initial_state 0 1 1302 317
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_initial_state
//       Access: Published
//  Description: Returns the initial state as set by a previous call
//               to set_initial_state().
////////////////////////////////////////////////////////////////////
75
inline ConstPointerTo< RenderState > Camera::get_initial_state(void) const;

3051 17 set_tag_state_key 0 4 3874 25 Camera::set_tag_state_key 0 1 1303 477
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_tag_state_key
//       Access: Published
//  Description: Sets the tag key which, when encountered as a tag on
//               nodes in the scene graph, causes this Camera to apply
//               an arbitrary state transition based on the value of
//               the tag (as specified to set_tag_state()).
////////////////////////////////////////////////////////////////////
81
inline void Camera::set_tag_state_key(basic_string< char > const &tag_state_key);

3052 17 get_tag_state_key 0 4 3874 25 Camera::get_tag_state_key 0 1 1304 311
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_tag_state_key
//       Access: Published
//  Description: Returns the tag key as set by a previous call to
//               set_tag_state_key().
////////////////////////////////////////////////////////////////////
73
inline basic_string< char > const &Camera::get_tag_state_key(void) const;

3053 13 set_lod_scale 0 4 3874 21 Camera::set_lod_scale 0 1 1305 337
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_lod_scale
//       Access: Published
//  Description: Sets the multiplier for LOD distances. This value
//               is multiplied with the LOD scale set on LodNodes.
////////////////////////////////////////////////////////////////////
47
inline void Camera::set_lod_scale(float value);

3054 13 get_lod_scale 0 4 3874 21 Camera::get_lod_scale 0 1 1306 262
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_lod_scale
//       Access: Published
//  Description: Returns the multiplier for LOD distances.
////////////////////////////////////////////////////////////////////
47
inline float Camera::get_lod_scale(void) const;

3055 13 set_tag_state 0 4 3874 21 Camera::set_tag_state 0 1 1307 959
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_tag_state
//       Access: Published
//  Description: Associates a particular state transition with the
//               indicated tag value.  When a node is encountered
//               during traversal with the tag key specified by
//               set_tag_state_key(), if the value of that tag matches
//               tag_state, then the indicated state is applied to
//               this node--but only when it is rendered by this
//               camera.
//
//               This can be used to apply special effects to nodes
//               when they are rendered by certain cameras.  It is
//               particularly useful for multipass rendering, in which
//               specialty cameras might be needed to render the scene
//               with a particular set of effects.
////////////////////////////////////////////////////////////////////
92
void Camera::set_tag_state(basic_string< char > const &tag_state, RenderState const *state);

3056 15 clear_tag_state 0 4 3874 23 Camera::clear_tag_state 0 1 1308 314
////////////////////////////////////////////////////////////////////
//     Function: Camera::clear_tag_state
//       Access: Published
//  Description: Removes the association established by a previous
//               call to set_tag_state().
////////////////////////////////////////////////////////////////////
68
void Camera::clear_tag_state(basic_string< char > const &tag_state);

3057 13 has_tag_state 0 4 3874 21 Camera::has_tag_state 0 1 1309 343
////////////////////////////////////////////////////////////////////
//     Function: Camera::has_tag_state
//       Access: Published
//  Description: Returns true if set_tag_state() has previously been
//               called with the indicated tag state, false otherwise.
////////////////////////////////////////////////////////////////////
72
bool Camera::has_tag_state(basic_string< char > const &tag_state) const;

3058 13 get_tag_state 0 4 3874 21 Camera::get_tag_state 0 1 1310 402
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_tag_state
//       Access: Published
//  Description: Returns the state associated with the indicated tag
//               state by a previous call to set_tag_state(), or the
//               empty state if nothing has been associated.
////////////////////////////////////////////////////////////////////
97
ConstPointerTo< RenderState > Camera::get_tag_state(basic_string< char > const &tag_state) const;

3059 18 set_aux_scene_data 0 4 3874 26 Camera::set_aux_scene_data 0 1 1311 403
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_aux_scene_data
//       Access: Published
//  Description: Associates the indicated AuxSceneData object with the
//               given NodePath, possibly replacing a previous
//               data defined for the same NodePath, if any.
////////////////////////////////////////////////////////////////////
79
void Camera::set_aux_scene_data(NodePath const &node_path, AuxSceneData *data);

3060 20 clear_aux_scene_data 0 4 3874 28 Camera::clear_aux_scene_data 0 1 1312 401
////////////////////////////////////////////////////////////////////
//     Function: Camera::clear_aux_scene_data
//       Access: Published
//  Description: Removes the AuxSceneData associated with the
//               indicated NodePath.  Returns true if it is removed
//               successfully, false if it was already gone.
////////////////////////////////////////////////////////////////////
61
bool Camera::clear_aux_scene_data(NodePath const &node_path);

3061 18 get_aux_scene_data 0 4 3874 26 Camera::get_aux_scene_data 0 1 1313 341
////////////////////////////////////////////////////////////////////
//     Function: Camera::get_aux_scene_data
//       Access: Published
//  Description: Returns the AuxSceneData associated with the
//               indicated NodePath, or NULL if nothing is associated.
////////////////////////////////////////////////////////////////////
74
AuxSceneData *Camera::get_aux_scene_data(NodePath const &node_path) const;

3062 19 list_aux_scene_data 0 4 3874 27 Camera::list_aux_scene_data 0 1 1314 298
////////////////////////////////////////////////////////////////////
//     Function: Camera::list_aux_scene_data
//       Access: Published
//  Description: Outputs all of the NodePaths and AuxSceneDatas in
//               use.
////////////////////////////////////////////////////////////////////
53
void Camera::list_aux_scene_data(ostream &out) const;

3063 22 cleanup_aux_scene_data 0 4 3874 30 Camera::cleanup_aux_scene_data 0 2 1315 1316 443
////////////////////////////////////////////////////////////////////
//     Function: Camera::cleanup_aux_scene_data
//       Access: Published
//  Description: Walks through the list of currently-assigned
//               AuxSceneData objects and releases any that are
//               past their expiration times.  Returns the number of
//               elements released.
////////////////////////////////////////////////////////////////////
86
int Camera::cleanup_aux_scene_data(Thread *current_thread = ((get_current_thread())));

3064 14 get_class_type 0 4 3874 22 Camera::get_class_type 0 1 1317 0
47
static TypeHandle Camera::get_class_type(void);

3065 9 PlaneNode 0 4 3875 20 PlaneNode::PlaneNode 0 2 1318 1319 446
////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::Copy Constructor
//       Access: Protected
//  Description:
////////////////////////////////////////////////////////////////////
92
PlaneNode::PlaneNode(basic_string< char > const &name, LPlanef const &plane = ((LPlane())));

3066 9 set_plane 0 4 3875 20 PlaneNode::set_plane 0 1 1320 289
////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::set_plane
//       Access: Public
//  Description: Sets the particular plane represented by the
//               PlaneNode.
////////////////////////////////////////////////////////////////////
55
inline void PlaneNode::set_plane(LPlanef const &plane);

3067 9 get_plane 0 4 3875 20 PlaneNode::get_plane 0 1 1321 264
////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::get_plane
//       Access: Public
//  Description: Returns the plane represented by the PlaneNode.
////////////////////////////////////////////////////////////////////
55
inline LPlanef const &PlaneNode::get_plane(void) const;

3068 13 set_viz_scale 0 4 3875 24 PlaneNode::set_viz_scale 0 1 1322 339
////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::set_viz_scale
//       Access: Public
//  Description: Specifies the size of the visual representation of
//               the plane that is drawn if the PlaneNode is shown.
////////////////////////////////////////////////////////////////////
54
inline void PlaneNode::set_viz_scale(float viz_scale);

3069 13 get_viz_scale 0 4 3875 24 PlaneNode::get_viz_scale 0 1 1323 337
////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::get_viz_scale
//       Access: Public
//  Description: Returns the size of the visual representation of
//               the plane that is drawn if the PlaneNode is shown.
////////////////////////////////////////////////////////////////////
50
inline float PlaneNode::get_viz_scale(void) const;

3070 12 set_priority 0 4 3875 23 PlaneNode::set_priority 0 1 1324 784
////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::set_priority
//       Access: Published
//  Description: Changes the relative importance of this PlaneNode
//               (when it is used as a clip plane) relative to the
//               other clip planes that are applied simultaneously.
//
//               The priority number is used to decide which of the
//               requested clip planes are to be activated when more
//               clip planes are requested than the hardware will
//               support.  The highest-priority n planes are selected
//               for rendering.
//
//               This is similar to TextureStage::set_priority().
////////////////////////////////////////////////////////////////////
50
inline void PlaneNode::set_priority(int priority);

3071 12 get_priority 0 4 3875 23 PlaneNode::get_priority 0 1 1325 314
////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::get_priority
//       Access: Published
//  Description: Returns the priority associated with this clip
//               plane.  See set_priority().
////////////////////////////////////////////////////////////////////
47
inline int PlaneNode::get_priority(void) const;

3072 15 set_clip_effect 0 4 3875 26 PlaneNode::set_clip_effect 0 1 1326 755
////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::set_clip_effect
//       Access: Published
//  Description: Specifies the sort of things this plane will actually
//               clip (when it is used as a clip plane).  This is a
//               bitmask union of ClipEffect values.  If it includes
//               CE_visible, then it will clip visible geometry; if it
//               includes CE_collision, then it will clip collision
//               polygons.  If it includes neither bit, it will still
//               affect culling, but objects will either be wholly
//               behind the clipping plane, or wholly present.
////////////////////////////////////////////////////////////////////
56
inline void PlaneNode::set_clip_effect(int clip_effect);

3073 15 get_clip_effect 0 4 3875 26 PlaneNode::get_clip_effect 0 1 1327 315
////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::get_clip_effect
//       Access: Published
//  Description: Returns the clip_effect bits for this clip plane.
//               See set_clip_effect().
////////////////////////////////////////////////////////////////////
50
inline int PlaneNode::get_clip_effect(void) const;

3074 14 get_class_type 0 4 3875 25 PlaneNode::get_class_type 0 1 1328 0
50
static TypeHandle PlaneNode::get_class_type(void);

3075 10 ~PlaneNode 0 4 3875 21 PlaneNode::~PlaneNode 0 0 0
28
PlaneNode::~PlaneNode(void);

3076 4 make 0 4 3877 21 ClipPlaneAttrib::make 0 5 1329 1330 1331 1332 1333 2253
// The following is the new, more general interface to the
// ClipPlaneAttrib.

////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that enables (or
//               disables, according to op) the indicated plane(s).
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that turns on (or
//               off, according to op) the indicate plane(s).
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that turns on (or
//               off, according to op) the indicate plane(s).
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that turns on (or
//               off, according to op) the indicate plane(s).
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that does
//               nothing.
////////////////////////////////////////////////////////////////////
623
static ConstPointerTo< RenderAttrib > ClipPlaneAttrib::make(ClipPlaneAttrib::Operation op, PlaneNode *plane);
static ConstPointerTo< RenderAttrib > ClipPlaneAttrib::make(ClipPlaneAttrib::Operation op, PlaneNode *plane1, PlaneNode *plane2);
static ConstPointerTo< RenderAttrib > ClipPlaneAttrib::make(ClipPlaneAttrib::Operation op, PlaneNode *plane1, PlaneNode *plane2, PlaneNode *plane3);
static ConstPointerTo< RenderAttrib > ClipPlaneAttrib::make(ClipPlaneAttrib::Operation op, PlaneNode *plane1, PlaneNode *plane2, PlaneNode *plane3, PlaneNode *plane4);
static ConstPointerTo< RenderAttrib > ClipPlaneAttrib::make(void);

3077 12 make_default 0 4 3877 29 ClipPlaneAttrib::make_default 0 1 1334 402
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
74
static ConstPointerTo< RenderAttrib > ClipPlaneAttrib::make_default(void);

3078 13 get_operation 0 4 3877 30 ClipPlaneAttrib::get_operation 0 1 1335 900
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_operation
//       Access: Published
//  Description: Returns the basic operation type of the ClipPlaneAttrib.
//               If this is O_set, the planes listed here completely
//               replace any planes that were already on.  If this is
//               O_add, the planes here are added to the set of of
//               planes that were already on, and if O_remove, the
//               planes here are removed from the set of planes that
//               were on.
//
//               This method is now deprecated.  ClipPlaneAttribs
//               nowadays have a separate list of on_planes and
//               off_planes, so this method doesn't make sense.  Query
//               the lists independently.
////////////////////////////////////////////////////////////////////
70
ClipPlaneAttrib::Operation ClipPlaneAttrib::get_operation(void) const;

3079 14 get_num_planes 0 4 3877 31 ClipPlaneAttrib::get_num_planes 0 1 1336 530
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_num_planes
//       Access: Published
//  Description: Returns the number of planes listed in the attribute.
//
//               This method is now deprecated.  ClipPlaneAttribs
//               nowadays have a separate list of on_planes and
//               off_planes, so this method doesn't make sense.  Query
//               the lists independently.
////////////////////////////////////////////////////////////////////
48
int ClipPlaneAttrib::get_num_planes(void) const;

3080 9 get_plane 0 4 3877 26 ClipPlaneAttrib::get_plane 0 1 1337 518
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_plane
//       Access: Published
//  Description: Returns the nth plane listed in the attribute.
//
//               This method is now deprecated.  ClipPlaneAttribs
//               nowadays have a separate list of on_planes and
//               off_planes, so this method doesn't make sense.  Query
//               the lists independently.
////////////////////////////////////////////////////////////////////
51
PlaneNode *ClipPlaneAttrib::get_plane(int n) const;

3081 9 has_plane 0 4 3877 26 ClipPlaneAttrib::has_plane 0 1 1338 566
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::has_plane
//       Access: Published
//  Description: Returns true if the indicated plane is listed in the
//               attrib, false otherwise.
//
//               This method is now deprecated.  ClipPlaneAttribs
//               nowadays have a separate list of on_planes and
//               off_planes, so this method doesn't make sense.  Query
//               the lists independently.
////////////////////////////////////////////////////////////////////
56
bool ClipPlaneAttrib::has_plane(PlaneNode *plane) const;

3082 9 add_plane 0 4 3877 26 ClipPlaneAttrib::add_plane 0 1 1339 467
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::add_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane added to the list of planes.
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
////////////////////////////////////////////////////////////////////
82
ConstPointerTo< RenderAttrib > ClipPlaneAttrib::add_plane(PlaneNode *plane) const;

3083 12 remove_plane 0 4 3877 29 ClipPlaneAttrib::remove_plane 0 1 1340 497
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::remove_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane removed from the list of
//               planes.
//
//               This method is now deprecated.  Use remove_on_plane()
//               or remove_off_plane() instead.
////////////////////////////////////////////////////////////////////
85
ConstPointerTo< RenderAttrib > ClipPlaneAttrib::remove_plane(PlaneNode *plane) const;

3084 12 make_all_off 0 4 3877 29 ClipPlaneAttrib::make_all_off 0 1 1341 430
// The following is the new, more general interface to the
// ClipPlaneAttrib.

////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make_all_off
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that disables 
//               all planes (and hence disables clipping).
////////////////////////////////////////////////////////////////////
74
static ConstPointerTo< RenderAttrib > ClipPlaneAttrib::make_all_off(void);

3085 17 get_num_on_planes 0 4 3877 34 ClipPlaneAttrib::get_num_on_planes 0 1 1342 314
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_num_on_planes
//       Access: Published
//  Description: Returns the number of planes that are enabled by
//               the attribute.
////////////////////////////////////////////////////////////////////
58
inline int ClipPlaneAttrib::get_num_on_planes(void) const;

3086 12 get_on_plane 0 4 3877 29 ClipPlaneAttrib::get_on_plane 0 1 1343 317
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_on_plane
//       Access: Published
//  Description: Returns the nth plane enabled by the attribute,
//               sorted in render order.
////////////////////////////////////////////////////////////////////
59
inline NodePath ClipPlaneAttrib::get_on_plane(int n) const;

3087 12 has_on_plane 0 4 3877 29 ClipPlaneAttrib::has_on_plane 0 1 1344 324
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::has_on_plane
//       Access: Published
//  Description: Returns true if the indicated plane is enabled by
//               the attrib, false otherwise.
////////////////////////////////////////////////////////////////////
71
inline bool ClipPlaneAttrib::has_on_plane(NodePath const &plane) const;

3088 18 get_num_off_planes 0 4 3877 35 ClipPlaneAttrib::get_num_off_planes 0 1 1345 316
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_num_off_planes
//       Access: Published
//  Description: Returns the number of planes that are disabled by
//               the attribute.
////////////////////////////////////////////////////////////////////
59
inline int ClipPlaneAttrib::get_num_off_planes(void) const;

3089 13 get_off_plane 0 4 3877 30 ClipPlaneAttrib::get_off_plane 0 1 1346 332
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_off_plane
//       Access: Published
//  Description: Returns the nth plane disabled by the attribute,
//               sorted in arbitrary (pointer) order.
////////////////////////////////////////////////////////////////////
60
inline NodePath ClipPlaneAttrib::get_off_plane(int n) const;

3090 13 has_off_plane 0 4 3877 30 ClipPlaneAttrib::has_off_plane 0 1 1347 326
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::has_off_plane
//       Access: Published
//  Description: Returns true if the indicated plane is disabled by
//               the attrib, false otherwise.
////////////////////////////////////////////////////////////////////
72
inline bool ClipPlaneAttrib::has_off_plane(NodePath const &plane) const;

3091 11 has_all_off 0 4 3877 28 ClipPlaneAttrib::has_all_off 0 1 1348 328
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::has_all_off
//       Access: Published
//  Description: Returns true if this attrib disables all planes
//               (although it may also enable some).
////////////////////////////////////////////////////////////////////
53
inline bool ClipPlaneAttrib::has_all_off(void) const;

3092 11 is_identity 0 4 3877 28 ClipPlaneAttrib::is_identity 0 1 1349 333
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::is_identity
//       Access: Published
//  Description: Returns true if this is an identity attrib: it does
//               not change the set of planes in use.
////////////////////////////////////////////////////////////////////
53
inline bool ClipPlaneAttrib::is_identity(void) const;

3093 12 add_on_plane 0 4 3877 29 ClipPlaneAttrib::add_on_plane 0 1 1350 394
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::add_on_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane added to the list of planes
//               enabled by this attrib.
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< RenderAttrib > ClipPlaneAttrib::add_on_plane(NodePath const &plane) const;

3094 15 remove_on_plane 0 4 3877 32 ClipPlaneAttrib::remove_on_plane 0 1 1351 401
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::remove_on_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane removed from the list of
//               planes enabled by this attrib.
////////////////////////////////////////////////////////////////////
93
ConstPointerTo< RenderAttrib > ClipPlaneAttrib::remove_on_plane(NodePath const &plane) const;

3095 13 add_off_plane 0 4 3877 30 ClipPlaneAttrib::add_off_plane 0 1 1352 396
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::add_off_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane added to the list of planes
//               disabled by this attrib.
////////////////////////////////////////////////////////////////////
91
ConstPointerTo< RenderAttrib > ClipPlaneAttrib::add_off_plane(NodePath const &plane) const;

3096 16 remove_off_plane 0 4 3877 33 ClipPlaneAttrib::remove_off_plane 0 1 1353 403
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::remove_off_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane removed from the list of
//               planes disabled by this attrib.
////////////////////////////////////////////////////////////////////
94
ConstPointerTo< RenderAttrib > ClipPlaneAttrib::remove_off_plane(NodePath const &plane) const;

3097 13 filter_to_max 0 4 3877 30 ClipPlaneAttrib::filter_to_max 0 1 1354 477
////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::filter_to_max
//       Access: Public
//  Description: Returns a new ClipPlaneAttrib, very much like this one,
//               but with the number of on_planes reduced to be no
//               more than max_clip_planes.  The number of off_planes in
//               the new ClipPlaneAttrib is undefined.
////////////////////////////////////////////////////////////////////
92
ConstPointerTo< ClipPlaneAttrib > ClipPlaneAttrib::filter_to_max(int max_clip_planes) const;

3098 14 get_class_slot 0 4 3877 31 ClipPlaneAttrib::get_class_slot 0 1 1355 0
49
static int ClipPlaneAttrib::get_class_slot(void);

3099 14 get_class_type 0 4 3877 31 ClipPlaneAttrib::get_class_type 0 1 1356 0
56
static TypeHandle ClipPlaneAttrib::get_class_type(void);

3100 16 ~ClipPlaneAttrib 0 4 3877 33 ClipPlaneAttrib::~ClipPlaneAttrib 0 0 0
40
ClipPlaneAttrib::~ClipPlaneAttrib(void);

3101 11 make_vertex 0 4 3879 24 ColorAttrib::make_vertex 0 1 1357 379
////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::make_vertex
//       Access: Published, Static
//  Description: Constructs a new ColorAttrib object that indicates
//               geometry should be rendered according to its own
//               vertex color.
////////////////////////////////////////////////////////////////////
69
static ConstPointerTo< RenderAttrib > ColorAttrib::make_vertex(void);

3102 9 make_flat 0 4 3879 22 ColorAttrib::make_flat 0 1 1358 349
////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::make_flat
//       Access: Published, Static
//  Description: Constructs a new ColorAttrib object that indicates
//               geometry should be rendered in the indicated color.
////////////////////////////////////////////////////////////////////
86
static ConstPointerTo< RenderAttrib > ColorAttrib::make_flat(LVecBase4f const &color);

3103 8 make_off 0 4 3879 21 ColorAttrib::make_off 0 1 1359 334
////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ColorAttrib object that indicates
//               geometry should be rendered in white.
////////////////////////////////////////////////////////////////////
66
static ConstPointerTo< RenderAttrib > ColorAttrib::make_off(void);

3104 12 make_default 0 4 3879 25 ColorAttrib::make_default 0 1 1360 398
////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
70
static ConstPointerTo< RenderAttrib > ColorAttrib::make_default(void);

3105 14 get_color_type 0 4 3879 27 ColorAttrib::get_color_type 0 1 1361 648
////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::get_color_type
//       Access: Published
//  Description: Returns the type of color specified by this
//               ColorAttrib.  The options are:
//
//                 T_vertex - use the vertex color specified in the
//                 geometry itself.
//
//                 T_flat - use the color specified in this
//                 ColorAttrib for all geometry.  You can get this
//                 color via get_color().
//
//                 T_off - use the color white.
////////////////////////////////////////////////////////////////////
65
inline ColorAttrib::Type ColorAttrib::get_color_type(void) const;

3106 9 get_color 0 4 3879 22 ColorAttrib::get_color 0 1 1362 391
////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::get_color
//       Access: Published
//  Description: If the type is T_flat or T_off, this returns the
//               color that will be applied to geometry.  If the type
//               is T_vertex, this is meaningless.
////////////////////////////////////////////////////////////////////
60
inline LVecBase4f const &ColorAttrib::get_color(void) const;

3107 14 get_class_slot 0 4 3879 27 ColorAttrib::get_class_slot 0 1 1363 0
45
static int ColorAttrib::get_class_slot(void);

3108 14 get_class_type 0 4 3879 27 ColorAttrib::get_class_type 0 1 1364 0
52
static TypeHandle ColorAttrib::get_class_type(void);

3109 12 ~ColorAttrib 0 4 3879 25 ColorAttrib::~ColorAttrib 0 0 0
32
ColorAttrib::~ColorAttrib(void);

3110 8 make_off 0 4 3881 26 ColorBlendAttrib::make_off 0 1 1365 396
////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ColorBlendAttrib object that
//               disables special-effect blending, allowing normal
//               transparency to be used instead.
////////////////////////////////////////////////////////////////////
71
static ConstPointerTo< RenderAttrib > ColorBlendAttrib::make_off(void);

3111 4 make 0 4 3881 22 ColorBlendAttrib::make 0 3 1366 1367 1368 779
////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ColorBlendAttrib object.  This
//               constructor is deprecated; use the one below, which
//               takes three or four parameters, instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ColorBlendAttrib object that enables
//               special-effect blending.  This supercedes
//               transparency.
////////////////////////////////////////////////////////////////////
277
static ConstPointerTo< RenderAttrib > ColorBlendAttrib::make(ColorBlendAttrib::Mode mode);
static ConstPointerTo< RenderAttrib > ColorBlendAttrib::make(ColorBlendAttrib::Mode mode, ColorBlendAttrib::Operand a, ColorBlendAttrib::Operand b, LVecBase4f const &color = ((zero())));

3112 12 make_default 0 4 3881 30 ColorBlendAttrib::make_default 0 1 1369 403
////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
75
static ConstPointerTo< RenderAttrib > ColorBlendAttrib::make_default(void);

3113 8 get_mode 0 4 3881 26 ColorBlendAttrib::get_mode 0 1 1370 254
////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::get_mode
//       Access: Published
//  Description: Returns the colorBlend mode.
////////////////////////////////////////////////////////////////////
69
inline ColorBlendAttrib::Mode ColorBlendAttrib::get_mode(void) const;

3114 13 get_operand_a 0 4 3881 31 ColorBlendAttrib::get_operand_a 0 1 1371 278
////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::get_operand_a
//       Access: Published
//  Description: Returns the multiplier for the first component.
////////////////////////////////////////////////////////////////////
77
inline ColorBlendAttrib::Operand ColorBlendAttrib::get_operand_a(void) const;

3115 13 get_operand_b 0 4 3881 31 ColorBlendAttrib::get_operand_b 0 1 1372 279
////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::get_operand_b
//       Access: Published
//  Description: Returns the multiplier for the second component.
////////////////////////////////////////////////////////////////////
77
inline ColorBlendAttrib::Operand ColorBlendAttrib::get_operand_b(void) const;

3116 9 get_color 0 4 3881 27 ColorBlendAttrib::get_color 0 1 1373 281
////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::get_color
//       Access: Published
//  Description: Returns the constant color associated with the attrib.
////////////////////////////////////////////////////////////////////
58
inline LVecBase4f ColorBlendAttrib::get_color(void) const;

3117 23 involves_constant_color 0 4 3881 41 ColorBlendAttrib::involves_constant_color 0 2 1374 1375 678
////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::involves_constant_color
//       Access: Published
//  Description: Returns true if the this attrib uses the
//               constant color, false otherwise.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::involves_constant_color
//       Access: Published, Static
//  Description: Returns true if the indicated operand uses the
//               constant color, false otherwise.
////////////////////////////////////////////////////////////////////
163
inline bool ColorBlendAttrib::involves_constant_color(void) const;
static inline bool ColorBlendAttrib::involves_constant_color(ColorBlendAttrib::Operand operand);

3118 20 involves_color_scale 0 4 3881 38 ColorBlendAttrib::involves_color_scale 0 2 1376 1377 680
////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::involves_color_scale
//       Access: Published
//  Description: Returns true if the this attrib uses the
//               color scale attrib, false otherwise.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::involves_color_scale
//       Access: Published, Static
//  Description: Returns true if the indicated operand uses the
//               color scale attrib, false otherwise.
////////////////////////////////////////////////////////////////////
157
inline bool ColorBlendAttrib::involves_color_scale(void) const;
static inline bool ColorBlendAttrib::involves_color_scale(ColorBlendAttrib::Operand operand);

3119 14 get_class_slot 0 4 3881 32 ColorBlendAttrib::get_class_slot 0 1 1378 0
50
static int ColorBlendAttrib::get_class_slot(void);

3120 14 get_class_type 0 4 3881 32 ColorBlendAttrib::get_class_type 0 1 1379 0
57
static TypeHandle ColorBlendAttrib::get_class_type(void);

3121 17 ~ColorBlendAttrib 0 4 3881 35 ColorBlendAttrib::~ColorBlendAttrib 0 0 0
42
ColorBlendAttrib::~ColorBlendAttrib(void);

3122 13 make_identity 0 4 3884 31 ColorScaleAttrib::make_identity 0 1 1380 275
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::make_identity
//       Access: Published, Static
//  Description: Constructs an identity scale attrib.
////////////////////////////////////////////////////////////////////
76
static ConstPointerTo< RenderAttrib > ColorScaleAttrib::make_identity(void);

3123 4 make 0 4 3884 22 ColorScaleAttrib::make 0 1 1381 353
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ColorScaleAttrib object that indicates
//               geometry should be scaled by the indicated factor.
////////////////////////////////////////////////////////////////////
86
static ConstPointerTo< RenderAttrib > ColorScaleAttrib::make(LVecBase4f const &scale);

3124 8 make_off 0 4 3884 26 ColorScaleAttrib::make_off 0 1 1382 477
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ColorScaleAttrib object that ignores
//               any ColorScaleAttrib inherited from above.  You may
//               also specify an additional color scale to apply to
//               geometry below (using set_scale()).
////////////////////////////////////////////////////////////////////
71
static ConstPointerTo< RenderAttrib > ColorScaleAttrib::make_off(void);

3125 12 make_default 0 4 3884 30 ColorScaleAttrib::make_default 0 1 1383 403
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
75
static ConstPointerTo< RenderAttrib > ColorScaleAttrib::make_default(void);

3126 6 is_off 0 4 3884 24 ColorScaleAttrib::is_off 0 1 1384 526
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::is_off
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib will ignore any
//               color scales inherited from above, false otherwise.
//               This is not the same thing as !has_scale(); a
//               ColorScaleAttrib may have the "off" flag set and also
//               have another scale specified.
////////////////////////////////////////////////////////////////////
49
inline bool ColorScaleAttrib::is_off(void) const;

3127 11 is_identity 0 4 3884 29 ColorScaleAttrib::is_identity 0 1 1385 377
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::is_identity
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib is an identity
//               attrib, false if it is either an off attrib or it has
//               a scale.
////////////////////////////////////////////////////////////////////
54
inline bool ColorScaleAttrib::is_identity(void) const;

3128 9 has_scale 0 4 3884 27 ColorScaleAttrib::has_scale 0 1 1386 404
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::has_scale
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib has a
//               non-identity scale, false otherwise (in which case it
//               might be an off attrib or an identity attrib).
////////////////////////////////////////////////////////////////////
52
inline bool ColorScaleAttrib::has_scale(void) const;

3129 13 has_rgb_scale 0 4 3884 31 ColorScaleAttrib::has_rgb_scale 0 1 1387 386
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::has_rgb_scale
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib has a
//               non-identity scale in the RGB components (ignoring
//               alpha), or false otherwise.
////////////////////////////////////////////////////////////////////
56
inline bool ColorScaleAttrib::has_rgb_scale(void) const;

3130 15 has_alpha_scale 0 4 3884 33 ColorScaleAttrib::has_alpha_scale 0 1 1388 387
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::has_alpha_scale
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib has a
//               non-identity scale in the alpha component (ignoring
//               RGB), or false otherwise.
////////////////////////////////////////////////////////////////////
58
inline bool ColorScaleAttrib::has_alpha_scale(void) const;

3131 9 get_scale 0 4 3884 27 ColorScaleAttrib::get_scale 0 1 1389 269
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::get_scale
//       Access: Published
//  Description: Returns the scale to be applied to colors.
////////////////////////////////////////////////////////////////////
65
inline LVecBase4f const &ColorScaleAttrib::get_scale(void) const;

3132 9 set_scale 0 4 3884 27 ColorScaleAttrib::set_scale 0 1 1390 346
////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::set_scale
//       Access: Published
//  Description: Returns a new ColorScaleAttrib, just like this one, but
//               with the scale changed to the indicated value.
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< RenderAttrib > ColorScaleAttrib::set_scale(LVecBase4f const &scale) const;

3133 14 get_class_slot 0 4 3884 32 ColorScaleAttrib::get_class_slot 0 1 1391 0
50
static int ColorScaleAttrib::get_class_slot(void);

3134 14 get_class_type 0 4 3884 32 ColorScaleAttrib::get_class_type 0 1 1392 0
57
static TypeHandle ColorScaleAttrib::get_class_type(void);

3135 17 ~ColorScaleAttrib 0 4 3884 35 ColorScaleAttrib::~ColorScaleAttrib 0 0 0
42
ColorScaleAttrib::~ColorScaleAttrib(void);

3136 4 make 0 4 3885 22 ColorWriteAttrib::make 0 1 1393 271
////////////////////////////////////////////////////////////////////
//     Function: ColorWriteAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ColorWriteAttrib object.
////////////////////////////////////////////////////////////////////
84
static ConstPointerTo< RenderAttrib > ColorWriteAttrib::make(unsigned int channels);

3137 12 make_default 0 4 3885 30 ColorWriteAttrib::make_default 0 1 1394 403
////////////////////////////////////////////////////////////////////
//     Function: ColorWriteAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
75
static ConstPointerTo< RenderAttrib > ColorWriteAttrib::make_default(void);

3138 12 get_channels 0 4 3885 30 ColorWriteAttrib::get_channels 0 1 1395 314
////////////////////////////////////////////////////////////////////
//     Function: ColorWriteAttrib::get_channels
//       Access: Published
//  Description: Returns the mask of color channels that are enabled
//               by this attrib.
////////////////////////////////////////////////////////////////////
63
inline unsigned int ColorWriteAttrib::get_channels(void) const;

3139 14 get_class_slot 0 4 3885 32 ColorWriteAttrib::get_class_slot 0 1 1396 0
50
static int ColorWriteAttrib::get_class_slot(void);

3140 14 get_class_type 0 4 3885 32 ColorWriteAttrib::get_class_type 0 1 1397 0
57
static TypeHandle ColorWriteAttrib::get_class_type(void);

3141 17 ~ColorWriteAttrib 0 4 3885 35 ColorWriteAttrib::~ColorWriteAttrib 0 0 0
42
ColorWriteAttrib::~ColorWriteAttrib(void);

3142 4 make 0 4 3887 19 CompassEffect::make 0 2 1398 1399 660
////////////////////////////////////////////////////////////////////
//     Function: CompassEffect::make
//       Access: Published, Static
//  Description: Constructs a new CompassEffect object.  If the
//               reference is an empty NodePath, it means the
//               CompassEffect is relative to the root of the scene
//               graph; otherwise, it's relative to the indicated
//               node.  The properties bitmask specifies the set of
//               properties that the compass node inherits from the
//               reference instead of from its parent.
////////////////////////////////////////////////////////////////////
111
static ConstPointerTo< RenderEffect > CompassEffect::make(NodePath const &reference, int properties = (P_rot));

3143 13 get_reference 0 4 3887 28 CompassEffect::get_reference 0 1 1400 398
////////////////////////////////////////////////////////////////////
//     Function: CompassEffect::get_reference
//       Access: Published
//  Description: Returns the reference node from which the
//               CompassEffect inherits its transform.  If this is
//               empty, it means the root of the scene graph.
////////////////////////////////////////////////////////////////////
64
inline NodePath const &CompassEffect::get_reference(void) const;

3144 14 get_properties 0 4 3887 29 CompassEffect::get_properties 0 1 1401 398
////////////////////////////////////////////////////////////////////
//     Function: CompassEffect::get_properties
//       Access: Published
//  Description: 
//               Returns the bitmask of properties that this
//               CompassEffect object inherits from its reference node
//               (or from the root).
////////////////////////////////////////////////////////////////////
53
inline int CompassEffect::get_properties(void) const;

3145 14 get_class_type 0 4 3887 29 CompassEffect::get_class_type 0 1 1402 0
54
static TypeHandle CompassEffect::get_class_type(void);

3146 14 ~CompassEffect 0 4 3887 29 CompassEffect::~CompassEffect 0 0 0
36
CompassEffect::~CompassEffect(void);

3147 13 ~CullBinEnums 0 4 3889 27 CullBinEnums::~CullBinEnums 0 0 0
34
CullBinEnums::~CullBinEnums(void);

3148 4 make 0 4 3891 19 CullBinAttrib::make 0 1 1403 589
////////////////////////////////////////////////////////////////////
//     Function: CullBinAttrib::make
//       Access: Published, Static
//  Description: Constructs a new CullBinAttrib assigning geometry
//               into the named bin.  If the bin name is the empty
//               string, the default bin is used.
//
//               The draw_order specifies further ordering information
//               which is relevant only to certain kinds of bins (in
//               particular CullBinFixed type bins).
////////////////////////////////////////////////////////////////////
112
static ConstPointerTo< RenderAttrib > CullBinAttrib::make(basic_string< char > const &bin_name, int draw_order);

3149 12 make_default 0 4 3891 27 CullBinAttrib::make_default 0 1 1404 400
////////////////////////////////////////////////////////////////////
//     Function: CullBinAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
72
static ConstPointerTo< RenderAttrib > CullBinAttrib::make_default(void);

3150 12 get_bin_name 0 4 3891 27 CullBinAttrib::get_bin_name 0 1 1405 373
////////////////////////////////////////////////////////////////////
//     Function: CullBinAttrib::get_bin_name
//       Access: Published
//  Description: Returns the name of the bin this attribute specifies.
//               If this is the empty string, it refers to the default
//               bin.
////////////////////////////////////////////////////////////////////
75
inline basic_string< char > const &CullBinAttrib::get_bin_name(void) const;

3151 14 get_draw_order 0 4 3891 29 CullBinAttrib::get_draw_order 0 1 1406 448
////////////////////////////////////////////////////////////////////
//     Function: CullBinAttrib::get_draw_order
//       Access: Published
//  Description: Returns the draw order this attribute specifies.
//               Some bins (in particular, CullBinFixed bins) use this
//               to further specify the order in which objects should
//               be rendered.
////////////////////////////////////////////////////////////////////
53
inline int CullBinAttrib::get_draw_order(void) const;

3152 14 get_class_slot 0 4 3891 29 CullBinAttrib::get_class_slot 0 1 1407 0
47
static int CullBinAttrib::get_class_slot(void);

3153 14 get_class_type 0 4 3891 29 CullBinAttrib::get_class_type 0 1 1408 0
54
static TypeHandle CullBinAttrib::get_class_type(void);

3154 14 ~CullBinAttrib 0 4 3891 29 CullBinAttrib::~CullBinAttrib 0 0 0
36
CullBinAttrib::~CullBinAttrib(void);

3155 7 add_bin 0 4 3892 23 CullBinManager::add_bin 0 1 1409 507
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::add_bin
//       Access: Published
//  Description: Defines a new bin with the indicated name, and
//               returns the new bin_index.  If there is already a bin
//               with the same name returns its bin_index if it had
//               the same properties; otherwise, reports an error and
//               returns -1.
////////////////////////////////////////////////////////////////////
100
int CullBinManager::add_bin(basic_string< char > const &name, CullBinEnums::BinType type, int sort);

3156 10 remove_bin 0 4 3892 26 CullBinManager::remove_bin 0 1 1410 663
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::remove_bin
//       Access: Published
//  Description: Permanently removes the indicated bin.  This
//               operation is not protected from the pipeline and will
//               disturb whatever is currently rendering in draw.  You
//               should not call this during the normal course of
//               rendering a frame; it is intended only as an aid to
//               development, to allow the developer to interactively
//               fiddle with the set of bins.
////////////////////////////////////////////////////////////////////
47
void CullBinManager::remove_bin(int bin_index);

3157 12 get_num_bins 0 4 3892 28 CullBinManager::get_num_bins 0 1 1411 268
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_num_bins
//       Access: Published
//  Description: Returns the number of bins in the world.
////////////////////////////////////////////////////////////////////
52
inline int CullBinManager::get_num_bins(void) const;

3158 7 get_bin 0 4 3892 23 CullBinManager::get_bin 0 1 1412 511
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin
//       Access: Published
//  Description: Returns the bin_index of the nth bin in the set,
//               where n is a number between 0 and get_num_bins().
//               This returns the list of bin_index numbers, in sorted
//               order (that is, in the order in which the bins should
//               be rendered).
////////////////////////////////////////////////////////////////////
48
inline int CullBinManager::get_bin(int n) const;

3159 8 find_bin 0 4 3892 24 CullBinManager::find_bin 0 1 1413 336
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::find_bin
//       Access: Published
//  Description: Returns the bin_index associated with the bin of the
//               given name, or -1 if no bin has that name.
////////////////////////////////////////////////////////////////////
69
int CullBinManager::find_bin(basic_string< char > const &name) const;

3160 12 get_bin_name 0 4 3892 28 CullBinManager::get_bin_name 0 1 1414 458
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_name
//       Access: Published
//  Description: Returns the name of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).  The bin's name may not be changed
//               during the life of the bin.
////////////////////////////////////////////////////////////////////
78
inline basic_string< char > CullBinManager::get_bin_name(int bin_index) const;

3161 12 get_bin_type 0 4 3892 28 CullBinManager::get_bin_type 0 2 1415 1416 677
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_type
//       Access: Published
//  Description: Returns the type of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_type
//       Access: Published
//  Description: Returns the type of the bin with the indicated
//               name.
////////////////////////////////////////////////////////////////////
178
inline CullBinEnums::BinType CullBinManager::get_bin_type(int bin_index) const;
inline CullBinEnums::BinType CullBinManager::get_bin_type(basic_string< char > const &name) const;

3162 12 set_bin_type 0 4 3892 28 CullBinManager::set_bin_type 0 2 1417 1418 995
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_type
//       Access: Published
//  Description: Changes the type of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               The change might be effective immediately, or it
//               might take place next frame, depending on the bin
//               type.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_type
//       Access: Published
//  Description: Changes the type of the bin with the indicated
//               name.
//
//               The change might be effective immediately, or it
//               might take place next frame, depending on the bin
//               type.
////////////////////////////////////////////////////////////////////
188
inline void CullBinManager::set_bin_type(int bin_index, CullBinEnums::BinType type);
inline void CullBinManager::set_bin_type(basic_string< char > const &name, CullBinEnums::BinType type);

3163 12 get_bin_sort 0 4 3892 28 CullBinManager::get_bin_sort 0 2 1419 1420 1055
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_sort
//       Access: Published
//  Description: Returns the sort order of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               The bins are rendered in increasing order by their
//               sort order; this number may be changed from time to
//               time to reorder the bins.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_sort
//       Access: Published
//  Description: Returns the sort order of the bin with the indicated
//               name.
//
//               The bins are rendered in increasing order by their
//               sort order; this number may be changed from time to
//               time to reorder the bins.
////////////////////////////////////////////////////////////////////
142
inline int CullBinManager::get_bin_sort(int bin_index) const;
inline int CullBinManager::get_bin_sort(basic_string< char > const &name) const;

3164 12 set_bin_sort 0 4 3892 28 CullBinManager::set_bin_sort 0 2 1421 1422 1055
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_sort
//       Access: Published
//  Description: Changes the sort order of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               The bins are rendered in increasing order by their
//               sort order; this number may be changed from time to
//               time to reorder the bins.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_sort
//       Access: Published
//  Description: Changes the sort order of the bin with the indicated
//               name.
//
//               The bins are rendered in increasing order by their
//               sort order; this number may be changed from time to
//               time to reorder the bins.
////////////////////////////////////////////////////////////////////
152
inline void CullBinManager::set_bin_sort(int bin_index, int sort);
inline void CullBinManager::set_bin_sort(basic_string< char > const &name, int sort);

3165 14 get_bin_active 0 4 3892 30 CullBinManager::get_bin_active 0 2 1423 1424 921
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_active
//       Access: Published
//  Description: Returns the active flag of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               When a bin is marked inactive, all geometry assigned
//               to it is not rendered.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_active
//       Access: Published
//  Description: Returns the active flag of the bin with the indicated
//               name.
//
//               When a bin is marked inactive, all geometry assigned
//               to it is not rendered.
////////////////////////////////////////////////////////////////////
148
inline bool CullBinManager::get_bin_active(int bin_index) const;
inline bool CullBinManager::get_bin_active(basic_string< char > const &name) const;

3166 14 set_bin_active 0 4 3892 30 CullBinManager::set_bin_active 0 2 1425 1426 921
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_active
//       Access: Published
//  Description: Changes the active flag of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               When a bin is marked inactive, all geometry assigned
//               to it is not rendered.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_active
//       Access: Published
//  Description: Changes the active flag of the bin with the indicated
//               name.
//
//               When a bin is marked inactive, all geometry assigned
//               to it is not rendered.
////////////////////////////////////////////////////////////////////
162
inline void CullBinManager::set_bin_active(int bin_index, bool active);
inline void CullBinManager::set_bin_active(basic_string< char > const &name, bool active);

3167 5 write 0 4 3892 21 CullBinManager::write 0 1 1427 221
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::write
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
47
void CullBinManager::write(ostream &out) const;

3168 14 get_global_ptr 0 4 3892 30 CullBinManager::get_global_ptr 0 1 1428 311
////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_global_ptr
//       Access: Published, Static
//  Description: Returns the pointer to the global CullBinManager
//               object.
////////////////////////////////////////////////////////////////////
60
static CullBinManager *CullBinManager::get_global_ptr(void);

3169 4 make 0 4 3893 20 CullFaceAttrib::make 0 2 1429 1430 739
////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::make
//       Access: Published, Static
//  Description: Constructs a new CullFaceAttrib object that specifies
//               how to cull geometry.  By Panda convention, vertices
//               are ordered counterclockwise when seen from the
//               front, so the M_cull_clockwise will cull backfacing
//               polygons.
//
//               M_cull_unchanged is an identity attrib; if this is
//               applied to vertices without any other intervening
//               attrib, it is the same as applying the default
//               attrib.
////////////////////////////////////////////////////////////////////
107
static ConstPointerTo< RenderAttrib > CullFaceAttrib::make(CullFaceAttrib::Mode mode = (M_cull_clockwise));

3170 12 make_reverse 0 4 3893 28 CullFaceAttrib::make_reverse 0 1 1431 529
////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::make_reverse
//       Access: Published, Static
//  Description: Constructs a new CullFaceAttrib object that reverses
//               the effects of any other CullFaceAttrib objects in
//               the scene graph.  M_cull_clockwise will be treated as
//               M_cull_counter_clockwise, and vice-versa.
//               M_cull_none is unchanged.
////////////////////////////////////////////////////////////////////
73
static ConstPointerTo< RenderAttrib > CullFaceAttrib::make_reverse(void);

3171 12 make_default 0 4 3893 28 CullFaceAttrib::make_default 0 1 1432 401
////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
73
static ConstPointerTo< RenderAttrib > CullFaceAttrib::make_default(void);

3172 15 get_actual_mode 0 4 3893 31 CullFaceAttrib::get_actual_mode 0 1 1433 382
////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::get_actual_mode
//       Access: Published
//  Description: Returns the actual culling mode, without considering
//               the effects of the reverse flag.  See also
//               get_effective_mode().
////////////////////////////////////////////////////////////////////
72
inline CullFaceAttrib::Mode CullFaceAttrib::get_actual_mode(void) const;

3173 11 get_reverse 0 4 3893 27 CullFaceAttrib::get_reverse 0 1 1434 608
////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::get_reverse
//       Access: Published
//  Description: Returns the 'reverse' flag.  If this is true, the
//               actual cull direction (clockwise
//               vs. counterclockwise) is the reverse of what is
//               specified here.  This allows support for
//               make_reverse(), which defines a CullFaceAttrib that
//               reverses whatever the sense of culling would have
//               been.
////////////////////////////////////////////////////////////////////
52
inline bool CullFaceAttrib::get_reverse(void) const;

3174 18 get_effective_mode 0 4 3893 34 CullFaceAttrib::get_effective_mode 0 1 1435 487
////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::get_effective_mode
//       Access: Published
//  Description: Returns the effective culling mode.  This is the same
//               as the actual culling mode, unless the reverse flag
//               is set, which swaps CW for CCW and vice-versa.  Also,
//               M_cull_unchanged is mapped to M_cull_none.
////////////////////////////////////////////////////////////////////
68
CullFaceAttrib::Mode CullFaceAttrib::get_effective_mode(void) const;

3175 14 get_class_slot 0 4 3893 30 CullFaceAttrib::get_class_slot 0 1 1436 0
48
static int CullFaceAttrib::get_class_slot(void);

3176 14 get_class_type 0 4 3893 30 CullFaceAttrib::get_class_type 0 1 1437 0
55
static TypeHandle CullFaceAttrib::get_class_type(void);

3177 15 ~CullFaceAttrib 0 4 3893 31 CullFaceAttrib::~CullFaceAttrib 0 0 0
38
CullFaceAttrib::~CullFaceAttrib(void);

3178 8 GeomNode 0 4 3895 18 GeomNode::GeomNode 0 1 1438 447
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: GeomNode::Copy Constructor
//       Access: Protected
//  Description:
////////////////////////////////////////////////////////////////////
53
GeomNode::GeomNode(basic_string< char > const &name);

3179 13 set_preserved 0 4 3895 23 GeomNode::set_preserved 0 1 1439 850
// Filename: geomNode.I
// Created by:  drose (23Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::set_preserved
//       Access: Published
//  Description: Sets the "preserved" flag.  When this is true, the
//               GeomNode will be left untouched by any flatten
//               operations.
////////////////////////////////////////////////////////////////////
48
inline void GeomNode::set_preserved(bool value);

3180 13 get_preserved 0 4 3895 23 GeomNode::get_preserved 0 1 1440 369
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_preserved
//       Access: Published
//  Description: Returns the "preserved" flag.  When this is true, the
//               GeomNode will be left untouched by any flatten
//               operations.
////////////////////////////////////////////////////////////////////
48
inline bool GeomNode::get_preserved(void) const;

3181 13 get_num_geoms 0 4 3895 23 GeomNode::get_num_geoms 0 1 1441 263
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_num_geoms
//       Access: Published
//  Description: Returns the number of geoms in the node.
////////////////////////////////////////////////////////////////////
47
inline int GeomNode::get_num_geoms(void) const;

3182 8 get_geom 0 4 3895 18 GeomNode::get_geom 0 1 1442 438
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_geom
//       Access: Published
//  Description: Returns the nth geom of the node.  This object should
//               not be modified, since the same object might be
//               shared between multiple different GeomNodes, but see
//               modify_geom().
////////////////////////////////////////////////////////////////////
62
inline ConstPointerTo< Geom > GeomNode::get_geom(int n) const;

3183 11 modify_geom 0 4 3895 21 GeomNode::modify_geom 0 1 1443 1031
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::modify_geom
//       Access: Published
//  Description: Returns the nth geom of the node, suitable for
//               modifying it.  If the nth Geom has multiple reference
//               counts to it, reassigns it to an identical copy
//               first, and returns the new copy--this provides a
//               "copy on write" that ensures that the Geom that is
//               returned is unique to this GeomNode and is not shared
//               with any other GeomNodes.
//
//               Note that if this method is called in a downstream
//               stage (for instance, during cull or draw), then it
//               will propagate the new list of Geoms upstream all the
//               way to pipeline stage 0, which may step on changes
//               that were made independently in pipeline stage 0.
//               Use with caution.
////////////////////////////////////////////////////////////////////
54
inline PointerTo< Geom > GeomNode::modify_geom(int n);

3184 14 get_geom_state 0 4 3895 24 GeomNode::get_geom_state 0 1 1444 585
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_geom_state
//       Access: Published
//  Description: Returns the RenderState associated with the nth geom
//               of the node.  This is just the RenderState directly
//               associated with the Geom; the actual state in which
//               the Geom is rendered will also be affected by
//               RenderStates that appear on the scene graph in nodes
//               above this GeomNode.
////////////////////////////////////////////////////////////////////
64
inline RenderState const *GeomNode::get_geom_state(int n) const;

3185 14 set_geom_state 0 4 3895 24 GeomNode::set_geom_state 0 1 1445 965
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::set_geom_state
//       Access: Published
//  Description: Changes the RenderState associated with the nth geom
//               of the node.  This is just the RenderState directly
//               associated with the Geom; the actual state in which
//               the Geom is rendered will also be affected by
//               RenderStates that appear on the scene graph in nodes
//               above this GeomNode.
//
//               Note that if this method is called in a downstream
//               stage (for instance, during cull or draw), then it
//               will propagate the new list of Geoms upstream all the
//               way to pipeline stage 0, which may step on changes
//               that were made independently in pipeline stage 0.
//               Use with caution.
////////////////////////////////////////////////////////////////////
70
inline void GeomNode::set_geom_state(int n, RenderState const *state);

3186 8 add_geom 0 4 3895 18 GeomNode::add_geom 0 2 1446 1447 432
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::add_geom
//       Access: Published
//  Description: Adds a new Geom to the node.  The geom is given the
//               indicated state (which may be
//               RenderState::make_empty(), to completely inherit its
//               state from the scene graph).
////////////////////////////////////////////////////////////////////
81
void GeomNode::add_geom(Geom *geom, RenderState const *state = ((make_empty())));

3187 14 add_geoms_from 0 4 3895 24 GeomNode::add_geoms_from 0 1 1448 336
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::add_geoms_from
//       Access: Published
//  Description: Copies the Geoms (and their associated RenderStates)
//               from the indicated GeomNode into this one.
////////////////////////////////////////////////////////////////////
53
void GeomNode::add_geoms_from(GeomNode const *other);

3188 8 set_geom 0 4 3895 18 GeomNode::set_geom 0 1 1449 708
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::set_geom
//       Access: Public
//  Description: Replaces the nth Geom of the node with a new pointer.
//               There must already be a Geom in this slot.
//
//               Note that if this method is called in a downstream
//               stage (for instance, during cull or draw), then it
//               will propagate the new list of Geoms upstream all the
//               way to pipeline stage 0, which may step on changes
//               that were made independently in pipeline stage 0.
//               Use with caution.
////////////////////////////////////////////////////////////////////
43
void GeomNode::set_geom(int n, Geom *geom);

3189 11 remove_geom 0 4 3895 21 GeomNode::remove_geom 0 1 1450 256
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::remove_geom
//       Access: Published
//  Description: Removes the nth geom from the node.
////////////////////////////////////////////////////////////////////
41
inline void GeomNode::remove_geom(int n);

3190 16 remove_all_geoms 0 4 3895 26 GeomNode::remove_all_geoms 0 1 1451 270
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::remove_all_geoms
//       Access: Published
//  Description: Removes all the geoms from the node at once.
////////////////////////////////////////////////////////////////////
45
inline void GeomNode::remove_all_geoms(void);

3191 11 check_valid 0 4 3895 21 GeomNode::check_valid 0 1 1452 453
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::check_valid
//       Access: Published
//  Description: Verifies that the each Geom within the GeomNode
//               reference vertices that actually exist within its
//               GeomVertexData.  Returns true if the GeomNode appears
//               to be valid, false otherwise.
////////////////////////////////////////////////////////////////////
39
bool GeomNode::check_valid(void) const;

3192 9 decompose 0 4 3895 19 GeomNode::decompose 0 1 1453 755
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::decompose
//       Access: Published
//  Description: Calls decompose() on each Geom with the GeomNode.
//               This decomposes higher-order primitive types, like
//               triangle strips, into lower-order types like indexed
//               triangles.  Normally there is no reason to do this,
//               but it can be useful as an early preprocessing step,
//               to allow a later call to unify() to proceed more
//               quickly.
//
//               See also SceneGraphReducer::decompose(), which is the
//               normal way this is called.
////////////////////////////////////////////////////////////////////
31
void GeomNode::decompose(void);

3193 5 unify 0 4 3895 15 GeomNode::unify 0 1 1454 1354
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::unify
//       Access: Published
//  Description: Attempts to unify all of the Geoms contained within
//               this node into a single Geom, or at least as few
//               Geoms as possible.  In turn, the individual
//               GeomPrimitives contained within each resulting Geom
//               are also unified.  The goal is to reduce the number
//               of GeomPrimitives within the node as far as possible.
//               This may result in composite primitives, such as
//               triangle strips and triangle fans, being decomposed
//               into triangles.  See also Geom::unify().
//
//               max_indices represents the maximum number of indices
//               that will be put in any one GeomPrimitive.  If
//               preserve_order is true, then the primitives will not
//               be reordered during the operation, even if this
//               results in a suboptimal result.
//
//               In order for this to be successful, the primitives
//               must reference the same GeomVertexData, have the same
//               fundamental primitive type, and have compatible shade
//               models.
////////////////////////////////////////////////////////////////////
59
void GeomNode::unify(int max_indices, bool preserve_order);

3194 11 write_geoms 0 4 3895 21 GeomNode::write_geoms 0 1 1455 294
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::write_geoms
//       Access: Published
//  Description: Writes a short description of all the Geoms in the
//               node.
////////////////////////////////////////////////////////////////////
65
void GeomNode::write_geoms(ostream &out, int indent_level) const;

3195 13 write_verbose 0 4 3895 23 GeomNode::write_verbose 0 1 1456 299
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::write_verbose
//       Access: Published
//  Description: Writes a detailed description of all the Geoms in the
//               node.
////////////////////////////////////////////////////////////////////
67
void GeomNode::write_verbose(ostream &out, int indent_level) const;

3196 24 get_default_collide_mask 0 4 3895 34 GeomNode::get_default_collide_mask 0 1 1457 323
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_default_collide_mask
//       Access: Published, Static
//  Description: Returns the default into_collide_mask assigned to new
//               GeomNodes.
////////////////////////////////////////////////////////////////////
83
static inline BitMask< unsigned int, 32 > GeomNode::get_default_collide_mask(void);

3197 14 get_class_type 0 4 3895 24 GeomNode::get_class_type 0 1 1458 0
49
static TypeHandle GeomNode::get_class_type(void);

3198 18 set_display_region 0 4 3896 30 SceneSetup::set_display_region 0 1 1459 273
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_display_region
//       Access: Published
//  Description: Specifies the display region for the scene.
////////////////////////////////////////////////////////////////////
74
inline void SceneSetup::set_display_region(DisplayRegion *display_region);

3199 18 get_display_region 0 4 3896 30 SceneSetup::get_display_region 0 1 1460 271
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_display_region
//       Access: Published
//  Description: Returns the display region for the scene.
////////////////////////////////////////////////////////////////////
65
inline DisplayRegion *SceneSetup::get_display_region(void) const;

3200 17 set_viewport_size 0 4 3896 29 SceneSetup::set_viewport_size 0 1 1461 309
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_viewport_size
//       Access: Published
//  Description: Specifies the size of the viewport (display region),
//               in pixels.
////////////////////////////////////////////////////////////////////
65
inline void SceneSetup::set_viewport_size(int width, int height);

3201 18 get_viewport_width 0 4 3896 30 SceneSetup::get_viewport_width 0 1 1462 308
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_viewport_width
//       Access: Published
//  Description: Returns the width of the viewport (display region) in
//               pixels.
////////////////////////////////////////////////////////////////////
54
inline int SceneSetup::get_viewport_width(void) const;

3202 19 get_viewport_height 0 4 3896 31 SceneSetup::get_viewport_height 0 1 1463 310
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_viewport_height
//       Access: Published
//  Description: Returns the height of the viewport (display region) in
//               pixels.
////////////////////////////////////////////////////////////////////
55
inline int SceneSetup::get_viewport_height(void) const;

3203 14 set_scene_root 0 4 3896 26 SceneSetup::set_scene_root 0 1 1464 263
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_scene_root
//       Access: Published
//  Description: Specifies the root node of the scene.
////////////////////////////////////////////////////////////////////
67
inline void SceneSetup::set_scene_root(NodePath const &scene_root);

3204 14 get_scene_root 0 4 3896 26 SceneSetup::get_scene_root 0 1 1465 261
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_scene_root
//       Access: Published
//  Description: Returns the root node of the scene.
////////////////////////////////////////////////////////////////////
62
inline NodePath const &SceneSetup::get_scene_root(void) const;

3205 15 set_camera_path 0 4 3896 27 SceneSetup::set_camera_path 0 1 1466 264
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_camera_path
//       Access: Published
//  Description: Specifies the NodePath to the camera.
////////////////////////////////////////////////////////////////////
69
inline void SceneSetup::set_camera_path(NodePath const &camera_path);

3206 15 get_camera_path 0 4 3896 27 SceneSetup::get_camera_path 0 1 1467 262
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_camera_path
//       Access: Published
//  Description: Returns the NodePath to the camera.
////////////////////////////////////////////////////////////////////
63
inline NodePath const &SceneSetup::get_camera_path(void) const;

3207 15 set_camera_node 0 4 3896 27 SceneSetup::set_camera_node 0 1 1468 273
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_camera_node
//       Access: Published
//  Description: Specifies the camera used to render the scene.
////////////////////////////////////////////////////////////////////
61
inline void SceneSetup::set_camera_node(Camera *camera_node);

3208 15 get_camera_node 0 4 3896 27 SceneSetup::get_camera_node 0 1 1469 271
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_camera_node
//       Access: Published
//  Description: Returns the camera used to render the scene.
////////////////////////////////////////////////////////////////////
55
inline Camera *SceneSetup::get_camera_node(void) const;

3209 8 set_lens 0 4 3896 20 SceneSetup::set_lens 0 1 1470 269
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_lens
//       Access: Published
//  Description: Indicates the particular Lens used for rendering.
////////////////////////////////////////////////////////////////////
51
inline void SceneSetup::set_lens(Lens const *lens);

3210 8 get_lens 0 4 3896 20 SceneSetup::get_lens 0 1 1471 267
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_lens
//       Access: Published
//  Description: Returns the particular Lens used for rendering.
////////////////////////////////////////////////////////////////////
52
inline Lens const *SceneSetup::get_lens(void) const;

3211 12 set_inverted 0 4 3896 24 SceneSetup::set_inverted 0 1 1472 477
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_inverted
//       Access: Published
//  Description: Changes the current setting of the inverted flag.
//               When this is true, the scene is rendered into the
//               window upside-down and backwards, that is, inverted
//               as if viewed through a mirror placed on the floor.
////////////////////////////////////////////////////////////////////
52
inline void SceneSetup::set_inverted(bool inverted);

3212 12 get_inverted 0 4 3896 24 SceneSetup::get_inverted 0 1 1473 434
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_inverted
//       Access: Published
//  Description: Returns the current setting of the inverted flag.
//               When this is true, the scene is rendered into the
//               window upside-down, flipped like a mirror along the X
//               axis.
////////////////////////////////////////////////////////////////////
49
inline bool SceneSetup::get_inverted(void) const;

3213 15 get_cull_center 0 4 3896 27 SceneSetup::get_cull_center 0 1 1474 469
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_cull_center
//       Access: Published
//  Description: Returns the point from which the culling operations
//               will be performed.  This is normally the camera, but
//               if camera->set_cull_center() has been specified, it
//               will be that special node instead.
////////////////////////////////////////////////////////////////////
63
inline NodePath const &SceneSetup::get_cull_center(void) const;

3214 15 get_cull_bounds 0 4 3896 27 SceneSetup::get_cull_bounds 0 1 1475 521
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_cull_bounds
//       Access: Published
//  Description: Returns the bounding volume that should be used to
//               perform view-frustum culling (in the space of
//               get_cull_center()).  This is normally the current
//               lens' bounding volume, but it may be overridden with
//               Camera::set_cull_bounds().
////////////////////////////////////////////////////////////////////
75
inline PointerTo< BoundingVolume > SceneSetup::get_cull_bounds(void) const;

3215 17 set_initial_state 0 4 3896 29 SceneSetup::set_initial_state 0 1 1476 378
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_initial_state
//       Access: Published
//  Description: Sets the initial state which is applied to all nodes
//               in the scene, as if it were set at the top of the
//               scene graph.
////////////////////////////////////////////////////////////////////
76
inline void SceneSetup::set_initial_state(RenderState const *initial_state);

3216 17 get_initial_state 0 4 3896 29 SceneSetup::get_initial_state 0 1 1477 321
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_initial_state
//       Access: Published
//  Description: Returns the initial state as set by a previous call
//               to set_initial_state().
////////////////////////////////////////////////////////////////////
68
inline RenderState const *SceneSetup::get_initial_state(void) const;

3217 20 set_camera_transform 0 4 3896 32 SceneSetup::set_camera_transform 0 1 1478 316
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_camera_transform
//       Access: Published
//  Description: Specifies the position of the camera relative to the
//               starting node.
////////////////////////////////////////////////////////////////////
85
inline void SceneSetup::set_camera_transform(TransformState const *camera_transform);

3218 20 get_camera_transform 0 4 3896 32 SceneSetup::get_camera_transform 0 1 1479 314
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_camera_transform
//       Access: Published
//  Description: Returns the position of the camera relative to the
//               starting node.
////////////////////////////////////////////////////////////////////
74
inline TransformState const *SceneSetup::get_camera_transform(void) const;

3219 19 set_world_transform 0 4 3896 31 SceneSetup::set_world_transform 0 1 1480 378
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_world_transform
//       Access: Published
//  Description: Specifies the position of the starting node relative
//               to the camera.  This is the inverse of the camera
//               transform.
////////////////////////////////////////////////////////////////////
83
inline void SceneSetup::set_world_transform(TransformState const *world_transform);

3220 19 get_world_transform 0 4 3896 31 SceneSetup::get_world_transform 0 1 1481 376
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_world_transform
//       Access: Published
//  Description: Returns the position of the starting node relative
//               to the camera.  This is the inverse of the camera
//               transform.
////////////////////////////////////////////////////////////////////
73
inline TransformState const *SceneSetup::get_world_transform(void) const;

3221 16 set_cs_transform 0 4 3896 28 SceneSetup::set_cs_transform 0 1 1482 345
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_cs_transform
//       Access: Published
//  Description: Specifies the transform from the camera's coordinate
//               system to the GSG's internal coordinate system.
////////////////////////////////////////////////////////////////////
77
inline void SceneSetup::set_cs_transform(TransformState const *cs_transform);

3222 16 get_cs_transform 0 4 3896 28 SceneSetup::get_cs_transform 0 1 1483 343
////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_cs_transform
//       Access: Published
//  Description: Returns the transform from the camera's coordinate
//               system to the GSG's internal coordinate system.
////////////////////////////////////////////////////////////////////
70
inline TransformState const *SceneSetup::get_cs_transform(void) const;

3223 14 get_class_type 0 4 3896 26 SceneSetup::get_class_type 0 1 1484 0
51
static TypeHandle SceneSetup::get_class_type(void);

3224 11 ~SceneSetup 0 4 3896 23 SceneSetup::~SceneSetup 0 0 0
30
SceneSetup::~SceneSetup(void);

3225 13 CullTraverser 0 4 3897 28 CullTraverser::CullTraverser 0 2 1485 1486 459
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::Copy Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
92
CullTraverser::CullTraverser(void);
CullTraverser::CullTraverser(CullTraverser const &copy);

3226 7 get_gsg 0 4 3897 22 CullTraverser::get_gsg 0 1 1487 755
// Filename: cullTraverser.I
// Created by:  drose (23Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_gsg
//       Access: Published
//  Description: Returns the GraphicsStateGuardian in effect.
////////////////////////////////////////////////////////////////////
69
inline GraphicsStateGuardianBase *CullTraverser::get_gsg(void) const;

3227 18 get_current_thread 0 4 3897 33 CullTraverser::get_current_thread 0 1 1488 340
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_current_thread
//       Access: Published
//  Description: Returns the currently-executing thread object, as
//               passed to the CullTraverser constructor.
////////////////////////////////////////////////////////////////////
61
inline Thread *CullTraverser::get_current_thread(void) const;

3228 9 set_scene 0 6 3897 24 CullTraverser::set_scene 0 1 1489 388
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_scene
//       Access: Published, Virtual
//  Description: Sets the SceneSetup object that indicates the initial
//               camera position, etc.  This must be called before
//               traversal begins.
////////////////////////////////////////////////////////////////////
122
virtual void CullTraverser::set_scene(SceneSetup *scene_setup, GraphicsStateGuardianBase *gsg, bool dr_incomplete_render);

3229 9 get_scene 0 4 3897 24 CullTraverser::get_scene 0 1 1490 254
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_scene
//       Access: Published
//  Description: Returns the SceneSetup object.
////////////////////////////////////////////////////////////////////
56
inline SceneSetup *CullTraverser::get_scene(void) const;

3230 17 has_tag_state_key 0 4 3897 32 CullTraverser::has_tag_state_key 0 1 1491 349
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::has_tag_state_key
//       Access: Published
//  Description: Returns true if a nonempty tag state key has been
//               specified for the scene's camera, false otherwise.
////////////////////////////////////////////////////////////////////
57
inline bool CullTraverser::has_tag_state_key(void) const;

3231 17 get_tag_state_key 0 4 3897 32 CullTraverser::get_tag_state_key 0 1 1492 330
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_tag_state_key
//       Access: Published
//  Description: Returns the tag state key that has been specified for
//               the scene's camera, if any.
////////////////////////////////////////////////////////////////////
80
inline basic_string< char > const &CullTraverser::get_tag_state_key(void) const;

3232 15 set_camera_mask 0 4 3897 30 CullTraverser::set_camera_mask 0 1 1493 571
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_camera_mask
//       Access: Published
//  Description: Changes the visibility mask for the camera viewing
//               the scene.  This is normally set automatically
//               at the time setup_scene() is called; you should
//               change this only if you want to render some set of
//               objects different from what the camera normally would
//               draw.
////////////////////////////////////////////////////////////////////
91
inline void CullTraverser::set_camera_mask(BitMask< unsigned int, 32 > const &camera_mask);

3233 15 get_camera_mask 0 4 3897 30 CullTraverser::get_camera_mask 0 1 1494 309
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_camera_mask
//       Access: Published
//  Description: Returns the visibility mask from the camera viewing
//               the scene.
////////////////////////////////////////////////////////////////////
85
inline BitMask< unsigned int, 32 > const &CullTraverser::get_camera_mask(void) const;

3234 20 get_camera_transform 0 4 3897 35 CullTraverser::get_camera_transform 0 1 1495 317
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_camera_transform
//       Access: Published
//  Description: Returns the position of the camera relative to the
//               starting node.
////////////////////////////////////////////////////////////////////
77
inline TransformState const *CullTraverser::get_camera_transform(void) const;

3235 19 get_world_transform 0 4 3897 34 CullTraverser::get_world_transform 0 1 1496 689
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_world_transform
//       Access: Published
//  Description: Returns the position of the starting node relative
//               to the camera.  This is the inverse of the camera
//               transform.
//
//               Note that this value is always the position of the
//               starting node, not the current node, even if it is
//               sampled during a traversal.  To get the transform of
//               the current node use
//               CullTraverserData::get_modelview_transform().
////////////////////////////////////////////////////////////////////
76
inline TransformState const *CullTraverser::get_world_transform(void) const;

3236 17 get_initial_state 0 4 3897 32 CullTraverser::get_initial_state 0 1 1497 401
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_initial_state
//       Access: Published
//  Description: Returns the initial RenderState at the top of the
//               scene graph we are traversing, or the empty state if
//               the initial state was never set.
////////////////////////////////////////////////////////////////////
71
inline RenderState const *CullTraverser::get_initial_state(void) const;

3237 23 get_depth_offset_decals 0 4 3897 38 CullTraverser::get_depth_offset_decals 0 1 1498 324
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_depth_offset_decals
//       Access: Published
//  Description: Returns the depth_offset_decals flag.  See
//               set_depth_offset_decals().
////////////////////////////////////////////////////////////////////
63
inline bool CullTraverser::get_depth_offset_decals(void) const;

3238 16 set_view_frustum 0 4 3897 31 CullTraverser::set_view_frustum 0 1 1499 405
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_view_frustum
//       Access: Published
//  Description: Specifies the bounding volume that corresponds to the
//               view frustum.  Any primitives that fall entirely
//               outside of this volume are not drawn.
////////////////////////////////////////////////////////////////////
83
inline void CullTraverser::set_view_frustum(GeometricBoundingVolume *view_frustum);

3239 16 get_view_frustum 0 4 3897 31 CullTraverser::get_view_frustum 0 1 1500 764
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_view_frustum
//       Access: Published
//  Description: Returns the bounding volume that corresponds to the
//               view frustum, or NULL if the view frustum is not in
//               use or has not been set.
//
//               Note that the view frustum returned here is always in
//               the coordinate space of the starting node, not the
//               current node, even if it is sampled during a
//               traversal.  To get the view frustum in the current
//               node's coordinate space, check in the current
//               CullTraverserData.
////////////////////////////////////////////////////////////////////
76
inline GeometricBoundingVolume *CullTraverser::get_view_frustum(void) const;

3240 16 set_cull_handler 0 4 3897 31 CullTraverser::set_cull_handler 0 1 1501 349
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_cull_handler
//       Access: Published
//  Description: Specifies the object that will receive the culled
//               Geoms.  This must be set before calling traverse().
////////////////////////////////////////////////////////////////////
71
inline void CullTraverser::set_cull_handler(CullHandler *cull_handler);

3241 16 get_cull_handler 0 4 3897 31 CullTraverser::get_cull_handler 0 1 1502 302
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_cull_handler
//       Access: Published
//  Description: Returns the object that will receive the culled
//               Geoms.
////////////////////////////////////////////////////////////////////
64
inline CullHandler *CullTraverser::get_cull_handler(void) const;

3242 18 set_portal_clipper 0 4 3897 33 CullTraverser::set_portal_clipper 0 1 1503 345
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_portal_clipper
//       Access: Published
//  Description: Specifies _portal_clipper object pointer that 
//               subsequent traverse() or traverse_below may use.
////////////////////////////////////////////////////////////////////
77
inline void CullTraverser::set_portal_clipper(PortalClipper *portal_clipper);

3243 18 get_portal_clipper 0 4 3897 33 CullTraverser::get_portal_clipper 0 1 1504 268
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_portal_clipper
//       Access: Published
//  Description: Returns the _portal_clipper pointer
////////////////////////////////////////////////////////////////////
68
inline PortalClipper *CullTraverser::get_portal_clipper(void) const;

3244 31 get_effective_incomplete_render 0 4 3897 46 CullTraverser::get_effective_incomplete_render 0 1 1505 666
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_effective_incomplete_render
//       Access: Published
//  Description: Returns true if the cull traversal is effectively in
//               incomplete_render state, considering both the GSG's
//               incomplete_render and the current DisplayRegion's
//               incomplete_render flags.  This returns the flag
//               during the cull traversal; see
//               GSG::get_effective_incomplete_render() for this same
//               flag during the draw traversal.
////////////////////////////////////////////////////////////////////
71
inline bool CullTraverser::get_effective_incomplete_render(void) const;

3245 8 traverse 0 4 3897 23 CullTraverser::traverse 0 2 1506 1507 671
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::traverse
//       Access: Published
//  Description: Begins the traversal from the indicated node.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::traverse
//       Access: Published
//  Description: Traverses from the next node with the given
//               data, which has been constructed with the node but
//               has not yet been converted into the node's space.
////////////////////////////////////////////////////////////////////
106
void CullTraverser::traverse(NodePath const &root);
void CullTraverser::traverse(CullTraverserData &data);

3246 14 traverse_below 0 6 3897 29 CullTraverser::traverse_below 0 1 1508 390
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::traverse_below
//       Access: Published, Virtual
//  Description: Traverses all the children of the indicated node,
//               with the given data, which has been converted into
//               the node's space.
////////////////////////////////////////////////////////////////////
68
virtual void CullTraverser::traverse_below(CullTraverserData &data);

3247 12 end_traverse 0 6 3897 27 CullTraverser::end_traverse 0 1 1509 397
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::end_traverse
//       Access: Published, Virtual
//  Description: Should be called when the traverser has finished
//               traversing its scene, this gives it a chance to do
//               any necessary finalization.
////////////////////////////////////////////////////////////////////
47
virtual void CullTraverser::end_traverse(void);

3248 11 flush_level 0 4 3897 26 CullTraverser::flush_level 0 1 1510 284
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::flush_level
//       Access: Published, Static
//  Description: Flushes the PStatCollectors used during traversal.
////////////////////////////////////////////////////////////////////
52
static inline void CullTraverser::flush_level(void);

3249 20 draw_bounding_volume 0 4 3897 35 CullTraverser::draw_bounding_volume 0 1 1511 320
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::draw_bounding_volume
//       Access: Published
//  Description: Draws an appropriate visualization of the indicated
//               bounding volume.
////////////////////////////////////////////////////////////////////
154
void CullTraverser::draw_bounding_volume(BoundingVolume const *vol, TransformState const *net_transform, TransformState const *modelview_transform) const;

3250 14 get_class_type 0 4 3897 29 CullTraverser::get_class_type 0 1 1512 0
54
static TypeHandle CullTraverser::get_class_type(void);

3251 14 ~CullTraverser 0 4 3897 29 CullTraverser::~CullTraverser 0 0 0
36
CullTraverser::~CullTraverser(void);

3252 18 ~CullTraverserData 0 4 3898 37 CullTraverserData::~CullTraverserData 0 0 226
////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::Destructor
//       Access: Public
//  Description: 
////////////////////////////////////////////////////////////////////
51
inline CullTraverserData::~CullTraverserData(void);

3253 4 node 0 4 3898 23 CullTraverserData::node 0 1 1513 260
////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::node
//       Access: Published
//  Description: Returns the node traversed to so far.
////////////////////////////////////////////////////////////////////
54
inline PandaNode *CullTraverserData::node(void) const;

3254 23 get_modelview_transform 0 4 3898 42 CullTraverserData::get_modelview_transform 0 1 1514 344
////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::get_modelview_transform
//       Access: Published
//  Description: Returns the modelview transform: the relative
//               transform from the camera to the model.
////////////////////////////////////////////////////////////////////
109
ConstPointerTo< TransformState > CullTraverserData::get_modelview_transform(CullTraverser const *trav) const;

3255 17 get_net_transform 0 4 3898 36 CullTraverserData::get_net_transform 0 1 1515 352
////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::get_net_transform
//       Access: Published
//  Description: Returns the net transform: the relative transform
//               from root of the scene graph to the current node.
////////////////////////////////////////////////////////////////////
99
inline TransformState const *CullTraverserData::get_net_transform(CullTraverser const *trav) const;

3256 10 is_in_view 0 4 3898 29 CullTraverserData::is_in_view 0 1 1516 529
////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::is_in_view
//       Access: Published
//  Description: Returns true if the current node is within the view
//               frustum, false otherwise.  If the node's bounding
//               volume falls completely within the view frustum, this
//               will also reset the view frustum pointer, saving some
//               work for future nodes.
////////////////////////////////////////////////////////////////////
90
inline bool CullTraverserData::is_in_view(BitMask< unsigned int, 32 > const &camera_mask);

3257 19 is_this_node_hidden 0 4 3898 38 CullTraverserData::is_this_node_hidden 0 1 1517 523
////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::is_this_node_hidden
//       Access: Published
//  Description: Returns true if this particular node is hidden, even
//               though we might be traversing past this node to find
//               a child node that has had show_through() called for
//               it.  If this returns true, the node should not be
//               rendered.
////////////////////////////////////////////////////////////////////
84
inline bool CullTraverserData::is_this_node_hidden(CullTraverser const *trav) const;

3258 25 apply_transform_and_state 0 4 3898 44 CullTraverserData::apply_transform_and_state 0 2 1518 1519 814
////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::apply_transform_and_state
//       Access: Published
//  Description: Applies the transform and state from the current
//               node onto the current data.  This also evaluates
//               billboards, etc.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::apply_transform_and_state
//       Access: Published
//  Description: Applies the indicated transform and state changes
//               (e.g. as extracted from a node) onto the current
//               data.  This also evaluates billboards, etc.
////////////////////////////////////////////////////////////////////
317
void CullTraverserData::apply_transform_and_state(CullTraverser *trav);
void CullTraverserData::apply_transform_and_state(CullTraverser *trav, ConstPointerTo< TransformState > node_transform, ConstPointerTo< RenderState > node_state, ConstPointerTo< RenderEffects > node_effects, RenderAttrib const *off_clip_planes);

3259 9 make_next 0 4 3899 21 CullResult::make_next 0 1 1520 440
////////////////////////////////////////////////////////////////////
//     Function: CullResult::make_next
//       Access: Published
//  Description: Returns a newly-allocated CullResult object that
//               contains a copy of just the subset of the data from
//               this CullResult object that is worth keeping around
//               for next frame.
////////////////////////////////////////////////////////////////////
58
PointerTo< CullResult > CullResult::make_next(void) const;

3260 7 get_bin 0 4 3899 19 CullResult::get_bin 0 1 1521 505
////////////////////////////////////////////////////////////////////
//     Function: CullResult::get_bin
//       Access: Public
//  Description: Returns the CullBin associated with the indicated
//               bin_index, or NULL if the bin_index is invalid.  If
//               there is the first time this bin_index has been
//               requested for this CullResult, creates a new CullBin
//               object on the fly.
////////////////////////////////////////////////////////////////////
51
inline CullBin *CullResult::get_bin(int bin_index);

3261 10 add_object 0 4 3899 22 CullResult::add_object 0 1 1522 394
////////////////////////////////////////////////////////////////////
//     Function: CullResult::add_object
//       Access: Published
//  Description: Adds the indicated CullableObject to the appropriate
//               bin.  The bin becomes the owner of the object
//               pointer, and will eventually delete it.
////////////////////////////////////////////////////////////////////
84
void CullResult::add_object(CullableObject *object, CullTraverser const *traverser);

3262 11 finish_cull 0 4 3899 23 CullResult::finish_cull 0 1 1523 493
////////////////////////////////////////////////////////////////////
//     Function: CullResult::finish_cull
//       Access: Published
//  Description: Called after all the geoms have been added, this
//               indicates that the cull process is finished for this
//               frame and gives the bins a chance to do any
//               post-processing (like sorting) before moving on to
//               draw.
////////////////////////////////////////////////////////////////////
78
void CullResult::finish_cull(SceneSetup *scene_setup, Thread *current_thread);

3263 4 draw 0 4 3899 16 CullResult::draw 0 1 1524 291
////////////////////////////////////////////////////////////////////
//     Function: CullResult::draw
//       Access: Published
//  Description: Asks all the bins to draw themselves in the correct
//               order.
////////////////////////////////////////////////////////////////////
46
void CullResult::draw(Thread *current_thread);

3264 17 make_result_graph 0 4 3899 29 CullResult::make_result_graph 0 1 1525 865
////////////////////////////////////////////////////////////////////
//     Function: CullResult::make_result_graph
//       Access: Published
//  Description: Returns a special scene graph constructed to
//               represent the results of the cull.  This will be a
//               hierarchy of nodes, one node for each bin, each of
//               which will in term be a parent of a number of
//               GeomNodes, representing the geometry drawn in each
//               bin.
//
//               This is useful mainly for high-level debugging and
//               abstraction tools; it should not be mistaken for the
//               low-level cull result itself.  For the low-level cull
//               result, use draw() to efficiently draw the culled
//               scene.
////////////////////////////////////////////////////////////////////
59
PointerTo< PandaNode > CullResult::make_result_graph(void);

3265 14 get_class_type 0 4 3899 26 CullResult::get_class_type 0 1 1526 0
51
static TypeHandle CullResult::get_class_type(void);

3266 4 make 0 4 3900 17 DecalEffect::make 0 1 1527 261
////////////////////////////////////////////////////////////////////
//     Function: DecalEffect::make
//       Access: Published, Static
//  Description: Constructs a new DecalEffect object.
////////////////////////////////////////////////////////////////////
62
static ConstPointerTo< RenderEffect > DecalEffect::make(void);

3267 14 get_class_type 0 4 3900 27 DecalEffect::get_class_type 0 1 1528 0
52
static TypeHandle DecalEffect::get_class_type(void);

3268 12 ~DecalEffect 0 4 3900 25 DecalEffect::~DecalEffect 0 0 0
32
DecalEffect::~DecalEffect(void);

3269 4 make 0 4 3901 23 DepthOffsetAttrib::make 0 3 1529 1530 1531 1064
////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::make
//       Access: Published, Static
//  Description: Constructs a new DepthOffsetAttrib object that
//               indicates the relative amount of bias to write to the
//               depth buffer for subsequent geometry.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::make
//       Access: Published, Static
//  Description: Constructs a new DepthOffsetAttrib object that
//               indicates the bias, and also specifies a minimum and
//               maximum (or, more precisely, nearest and farthest)
//               values to write to the depth buffer, in the range 0
//               .. 1.  This range is 0, 1 by default; setting it to
//               some other range can be used to create additional
//               depth buffer effects.
////////////////////////////////////////////////////////////////////
189
static ConstPointerTo< RenderAttrib > DepthOffsetAttrib::make(int offset = (1));
static ConstPointerTo< RenderAttrib > DepthOffsetAttrib::make(int offset, float min_value, float max_value);

3270 12 make_default 0 4 3901 31 DepthOffsetAttrib::make_default 0 1 1532 404
////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
76
static ConstPointerTo< RenderAttrib > DepthOffsetAttrib::make_default(void);

3271 10 get_offset 0 4 3901 29 DepthOffsetAttrib::get_offset 0 1 1533 281
////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::get_offset
//       Access: Published
//  Description: Returns the depth offset represented by this attrib.
////////////////////////////////////////////////////////////////////
53
inline int DepthOffsetAttrib::get_offset(void) const;

3272 13 get_min_value 0 4 3901 32 DepthOffsetAttrib::get_min_value 0 1 1534 370
////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::get_min_value
//       Access: Published
//  Description: Returns the value for the minimum (closest) depth
//               value to be stored in the buffer, in the range 0
//               .. 1.
////////////////////////////////////////////////////////////////////
58
inline float DepthOffsetAttrib::get_min_value(void) const;

3273 13 get_max_value 0 4 3901 32 DepthOffsetAttrib::get_max_value 0 1 1535 371
////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::get_max_value
//       Access: Published
//  Description: Returns the value for the maximum (farthest) depth
//               value to be stored in the buffer, in the range 0
//               .. 1.
////////////////////////////////////////////////////////////////////
58
inline float DepthOffsetAttrib::get_max_value(void) const;

3274 14 get_class_slot 0 4 3901 33 DepthOffsetAttrib::get_class_slot 0 1 1536 0
51
static int DepthOffsetAttrib::get_class_slot(void);

3275 14 get_class_type 0 4 3901 33 DepthOffsetAttrib::get_class_type 0 1 1537 0
58
static TypeHandle DepthOffsetAttrib::get_class_type(void);

3276 18 ~DepthOffsetAttrib 0 4 3901 37 DepthOffsetAttrib::~DepthOffsetAttrib 0 0 0
44
DepthOffsetAttrib::~DepthOffsetAttrib(void);

3277 4 make 0 4 3902 21 DepthTestAttrib::make 0 1 1538 269
////////////////////////////////////////////////////////////////////
//     Function: DepthTestAttrib::make
//       Access: Published, Static
//  Description: Constructs a new DepthTestAttrib object.
////////////////////////////////////////////////////////////////////
97
static ConstPointerTo< RenderAttrib > DepthTestAttrib::make(RenderAttrib::PandaCompareFunc mode);

3278 12 make_default 0 4 3902 29 DepthTestAttrib::make_default 0 1 1539 402
////////////////////////////////////////////////////////////////////
//     Function: DepthTestAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
74
static ConstPointerTo< RenderAttrib > DepthTestAttrib::make_default(void);

3279 8 get_mode 0 4 3902 25 DepthTestAttrib::get_mode 0 1 1540 254
////////////////////////////////////////////////////////////////////
//     Function: DepthTestAttrib::get_mode
//       Access: Published
//  Description: Returns the depth write mode.
////////////////////////////////////////////////////////////////////
76
inline RenderAttrib::PandaCompareFunc DepthTestAttrib::get_mode(void) const;

3280 14 get_class_slot 0 4 3902 31 DepthTestAttrib::get_class_slot 0 1 1541 0
49
static int DepthTestAttrib::get_class_slot(void);

3281 14 get_class_type 0 4 3902 31 DepthTestAttrib::get_class_type 0 1 1542 0
56
static TypeHandle DepthTestAttrib::get_class_type(void);

3282 16 ~DepthTestAttrib 0 4 3902 33 DepthTestAttrib::~DepthTestAttrib 0 0 0
40
DepthTestAttrib::~DepthTestAttrib(void);

3283 4 make 0 4 3903 22 DepthWriteAttrib::make 0 1 1543 271
////////////////////////////////////////////////////////////////////
//     Function: DepthWriteAttrib::make
//       Access: Published, Static
//  Description: Constructs a new DepthWriteAttrib object.
////////////////////////////////////////////////////////////////////
90
static ConstPointerTo< RenderAttrib > DepthWriteAttrib::make(DepthWriteAttrib::Mode mode);

3284 12 make_default 0 4 3903 30 DepthWriteAttrib::make_default 0 1 1544 403
////////////////////////////////////////////////////////////////////
//     Function: DepthWriteAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
75
static ConstPointerTo< RenderAttrib > DepthWriteAttrib::make_default(void);

3285 8 get_mode 0 4 3903 26 DepthWriteAttrib::get_mode 0 1 1545 255
////////////////////////////////////////////////////////////////////
//     Function: DepthWriteAttrib::get_mode
//       Access: Published
//  Description: Returns the depth write mode.
////////////////////////////////////////////////////////////////////
69
inline DepthWriteAttrib::Mode DepthWriteAttrib::get_mode(void) const;

3286 14 get_class_slot 0 4 3903 32 DepthWriteAttrib::get_class_slot 0 1 1546 0
50
static int DepthWriteAttrib::get_class_slot(void);

3287 14 get_class_type 0 4 3903 32 DepthWriteAttrib::get_class_type 0 1 1547 0
57
static TypeHandle DepthWriteAttrib::get_class_type(void);

3288 17 ~DepthWriteAttrib 0 4 3903 35 DepthWriteAttrib::~DepthWriteAttrib 0 0 0
42
DepthWriteAttrib::~DepthWriteAttrib(void);

3289 19 EventStorePandaNode 0 4 3905 40 EventStorePandaNode::EventStorePandaNode 0 1 1548 727
// Filename: eventStorePandaNode.I
// Created by:  drose (13Sep06)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: EventStorePandaNode::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
72
inline EventStorePandaNode::EventStorePandaNode(PandaNode const *value);

3290 9 set_value 0 4 3905 30 EventStorePandaNode::set_value 0 1 1549 413
////////////////////////////////////////////////////////////////////
//     Function: EventStorePandaNode::set_value
//       Access: Published
//  Description: Changes the value stored in the parameter.  It is
//               dangerous to do this for a parameter already added to
//               an event, since the parameters may be shared.
////////////////////////////////////////////////////////////////////
67
inline void EventStorePandaNode::set_value(PandaNode const *value);

3291 9 get_value 0 4 3905 30 EventStorePandaNode::get_value 0 1 1550 274
////////////////////////////////////////////////////////////////////
//     Function: EventStorePandaNode::get_value
//       Access: Published
//  Description: Retrieves the value stored in the parameter.
////////////////////////////////////////////////////////////////////
61
inline PandaNode *EventStorePandaNode::get_value(void) const;

3292 14 get_class_type 0 4 3905 35 EventStorePandaNode::get_class_type 0 1 1551 0
60
static TypeHandle EventStorePandaNode::get_class_type(void);

3293 3 Fog 0 4 3907 8 Fog::Fog 0 1 1552 437
////////////////////////////////////////////////////////////////////
//     Function: Fog::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: Fog::Copy Constructor
//       Access: Protected
//  Description:
////////////////////////////////////////////////////////////////////
43
Fog::Fog(basic_string< char > const &name);

3294 8 get_mode 0 4 3907 13 Fog::get_mode 0 1 1553 691
// Filename: fog.I
// Created by:  drose (14Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: Fog::get_mode
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
43
inline Fog::Mode Fog::get_mode(void) const;

3295 8 set_mode 0 4 3907 13 Fog::set_mode 0 1 1554 934
////////////////////////////////////////////////////////////////////
//     Function: Fog::set_mode
//       Access: Published
//  Description: Specifies the computation that is used to determine
//               the fog effect.  If this is M_linear, then the fog
//               will range from linearly from the onset point to the
//               opaque point (or for the distances specified in
//               set_linear_range), and the fog object should be
//               parented into the scene graph, or to the camera.
//
//               If this is anything else, the onset point and opaque
//               point are not used, and the fog effect is based on
//               the value specified to set_exp_density(), and it
//               doesn't matter to which node the fog object is
//               parented, or if it is parented anywhere at all.
////////////////////////////////////////////////////////////////////
42
inline void Fog::set_mode(Fog::Mode mode);

3296 9 get_color 0 4 3907 14 Fog::get_color 0 1 1555 243
////////////////////////////////////////////////////////////////////
//     Function: Fog::get_color
//       Access: Published
//  Description: Returns the color of the fog.
////////////////////////////////////////////////////////////////////
52
inline LVecBase4f const &Fog::get_color(void) const;

3297 9 set_color 0 4 3907 14 Fog::set_color 0 2 1556 1557 533
////////////////////////////////////////////////////////////////////
//     Function: Fog::set_color
//       Access: Published
//  Description: Sets the color of the fog.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: Fog::set_color
//       Access: Published
//  Description: Sets the color of the fog.  The alpha component is
//               not used.
////////////////////////////////////////////////////////////////////
107
inline void Fog::set_color(float r, float g, float b);
inline void Fog::set_color(LVecBase4f const &color);

3298 16 set_linear_range 0 4 3907 21 Fog::set_linear_range 0 1 1558 711
////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_range
//       Access: Published
//  Description: Specifies the effects of the fog in linear distance
//               units.  This is only used if the mode is M_linear.
//
//               This specifies a fog that begins at distance onset
//               units from the origin, and becomes totally opaque at
//               distance opaque units from the origin, along the
//               forward axis (usually Y).
//
//               This function also implicitly sets the mode the
//               M_linear, if it is not already set.
////////////////////////////////////////////////////////////////////
61
inline void Fog::set_linear_range(float onset, float opaque);

3299 22 get_linear_onset_point 0 4 3907 27 Fog::get_linear_onset_point 0 1 1559 338
////////////////////////////////////////////////////////////////////
//     Function: Fog::get_linear_onset_point
//       Access: Published
//  Description: Returns the point in space at which the fog begins.
//               This is only used if the mode is M_linear.
////////////////////////////////////////////////////////////////////
63
inline LPoint3f const &Fog::get_linear_onset_point(void) const;

3300 22 set_linear_onset_point 0 4 3907 27 Fog::set_linear_onset_point 0 2 1560 1561 682
////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_onset_point
//       Access: Published
//  Description: Specifies the point in space at which the fog begins.
//               This is only used if the mode is M_linear.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_onset_point
//       Access: Published
//  Description: Specifies the point in space at which the fog begins.
//               This is only used if the mode is M_linear.
////////////////////////////////////////////////////////////////////
144
inline void Fog::set_linear_onset_point(float x, float y, float z);
inline void Fog::set_linear_onset_point(LPoint3f const &linear_onset_point);

3301 23 get_linear_opaque_point 0 4 3907 28 Fog::get_linear_opaque_point 0 1 1562 379
////////////////////////////////////////////////////////////////////
//     Function: Fog::get_linear_opaque_point
//       Access: Published
//  Description: Returns the point in space at which the fog
//               completely obscures geometry.  This is only used if
//               the mode is M_linear.
////////////////////////////////////////////////////////////////////
64
inline LPoint3f const &Fog::get_linear_opaque_point(void) const;

3302 23 set_linear_opaque_point 0 4 3907 28 Fog::set_linear_opaque_point 0 2 1563 1564 764
////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_opaque_point
//       Access: Published
//  Description: Specifies the point in space at which the fog
//               completely obscures geometry.  This is only used if
//               the mode is M_linear.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_opaque_point
//       Access: Published
//  Description: Specifies the point in space at which the fog
//               completely obscures geometry.  This is only used if
//               the mode is M_linear.
////////////////////////////////////////////////////////////////////
147
inline void Fog::set_linear_opaque_point(LPoint3f const &linear_opaque_point);
inline void Fog::set_linear_opaque_point(float x, float y, float z);

3303 19 set_linear_fallback 0 4 3907 24 Fog::set_linear_fallback 0 1 1565 2210
////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_fallback
//       Access: Published
//  Description: Fog effects are traditionally defined in
//               camera-relative space, but the Panda Fog node has a
//               special mode in which it can define a linear fog
//               effect in an arbitrary coordinate space.
//
//               This is done by specifying 3-d onset and opaque
//               points, and parenting the Fog object somewhere within
//               the scene graph.  In this mode, the fog will be
//               rendered as if it extended along the vector from the
//               onset point to the opaque point, in 3-d space.
//
//               However, the underlying fog effect supported by
//               hardware is generally only one-dimensional, and must
//               be rendered based on linear distance from the camera
//               plane.  Thus, this in-the-world effect is most
//               effective when the fog vector from onset point to
//               opaque point is most nearly parallel to the camera's
//               eye vector.
//
//               As the angle between the fog vector and the eye
//               vector increases, the accuracy of the effect
//               diminishes, up to a complete breakdown of the effect
//               at a 90 degree angle.
//
//               This function exists to define the workaround to this
//               problem.  The linear fallback parameters given here
//               specify how the fog should be rendered when the
//               parameters are exceeded in this way.
//
//               The angle parameter is the minimum angle, in degrees,
//               of the fog vector to the eye vector, at which the
//               fallback effect should be employed.  The onset and
//               opaque parameters specify the camera-relative onset
//               and opaque distances to pass to the rendering
//               hardware when employing the fallback effect.  This
//               supercedes the 3-d onset point and opaque points.
////////////////////////////////////////////////////////////////////
77
inline void Fog::set_linear_fallback(float angle, float onset, float opaque);

3304 15 get_exp_density 0 4 3907 20 Fog::get_exp_density 0 1 1566 362
////////////////////////////////////////////////////////////////////
//     Function: Fog::get_exp_density
//       Access: Published
//  Description: Returns the density of the fog for exponential
//               calculations.  This is only used if the mode is not
//               M_linear.
////////////////////////////////////////////////////////////////////
46
inline float Fog::get_exp_density(void) const;

3305 15 set_exp_density 0 4 3907 20 Fog::set_exp_density 0 1 1567 489
////////////////////////////////////////////////////////////////////
//     Function: Fog::set_exp_density
//       Access: Published
//  Description: Sets the density of the fog for exponential
//               calculations.  This is only used if the mode is not
//               M_linear.
//
//               If the mode is currently set to M_linear, this
//               function implicitly sets it to M_exponential.
////////////////////////////////////////////////////////////////////
52
inline void Fog::set_exp_density(float exp_density);

3306 14 get_class_type 0 4 3907 19 Fog::get_class_type 0 1 1568 0
44
static TypeHandle Fog::get_class_type(void);

3307 4 make 0 4 3909 15 FogAttrib::make 0 1 1569 329
////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::make
//       Access: Published, Static
//  Description: Constructs a new FogAttrib object suitable for
//               rendering the indicated fog onto geometry.
////////////////////////////////////////////////////////////////////
64
static ConstPointerTo< RenderAttrib > FogAttrib::make(Fog *fog);

3308 8 make_off 0 4 3909 19 FogAttrib::make_off 0 1 1570 317
////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new FogAttrib object suitable for
//               rendering unfogd geometry.
////////////////////////////////////////////////////////////////////
64
static ConstPointerTo< RenderAttrib > FogAttrib::make_off(void);

3309 12 make_default 0 4 3909 23 FogAttrib::make_default 0 1 1571 396
////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
68
static ConstPointerTo< RenderAttrib > FogAttrib::make_default(void);

3310 6 is_off 0 4 3909 17 FogAttrib::is_off 0 1 1572 325
////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::is_off
//       Access: Published
//  Description: Returns true if the FogAttrib is an 'off' FogAttrib,
//               indicating that it should disable fog.
////////////////////////////////////////////////////////////////////
42
inline bool FogAttrib::is_off(void) const;

3311 7 get_fog 0 4 3909 18 FogAttrib::get_fog 0 1 1573 356
////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::get_fog
//       Access: Published
//  Description: If the FogAttrib is not an 'off' FogAttrib,
//               returns the fog that is associated.  Otherwise,
//               return NULL.
////////////////////////////////////////////////////////////////////
43
inline Fog *FogAttrib::get_fog(void) const;

3312 14 get_class_slot 0 4 3909 25 FogAttrib::get_class_slot 0 1 1574 0
43
static int FogAttrib::get_class_slot(void);

3313 14 get_class_type 0 4 3909 25 FogAttrib::get_class_type 0 1 1575 0
50
static TypeHandle FogAttrib::get_class_type(void);

3314 10 ~FogAttrib 0 4 3909 21 FogAttrib::~FogAttrib 0 0 0
28
FogAttrib::~FogAttrib(void);

3315 10 get_object 0 4 3910 32 GeomDrawCallbackData::get_object 0 1 1576 312
////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::get_object
//       Access: Published
//  Description: Returns a pointer to the particular object that is
//               being drawn.
////////////////////////////////////////////////////////////////////
68
inline CullableObject *GeomDrawCallbackData::get_object(void) const;

3316 7 get_gsg 0 4 3910 29 GeomDrawCallbackData::get_gsg 0 1 1577 266
////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::get_gsg
//       Access: Published
//  Description: Returns a pointer to the current GSG.
////////////////////////////////////////////////////////////////////
76
inline GraphicsStateGuardianBase *GeomDrawCallbackData::get_gsg(void) const;

3317 9 get_force 0 4 3910 31 GeomDrawCallbackData::get_force 0 1 1578 525
////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::get_force
//       Access: Published
//  Description: Returns true if any required data should be forced
//               into memory if necessary to render the object, or
//               false if the object should be omitted if some of the
//               data is not available (at least until the data
//               becomes available later).
////////////////////////////////////////////////////////////////////
56
inline bool GeomDrawCallbackData::get_force(void) const;

3318 14 set_lost_state 0 4 3910 36 GeomDrawCallbackData::set_lost_state 0 1 1579 807
////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::set_lost_state
//       Access: Published
//  Description: Sets the lost_state flag.  If this is true, the
//               callback does not have to be quite so careful to
//               clean up after itself; Panda will assume that the
//               graphics state is in an unknown state after the
//               callback has finished, and will issue all the
//               necessary calls to restore it.  If this is false,
//               Panda will assume the callback will leave the
//               graphics state exactly as it came in, and won't
//               bother to try to restore it.  The default is true.
////////////////////////////////////////////////////////////////////
66
inline void GeomDrawCallbackData::set_lost_state(bool lost_state);

3319 14 get_lost_state 0 4 3910 36 GeomDrawCallbackData::get_lost_state 0 1 1580 287
////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::get_lost_state
//       Access: Published
//  Description: Returns the lost_state flag.  See set_lost_state().
////////////////////////////////////////////////////////////////////
61
inline bool GeomDrawCallbackData::get_lost_state(void) const;

3320 14 get_class_type 0 4 3910 36 GeomDrawCallbackData::get_class_type 0 1 1581 0
61
static TypeHandle GeomDrawCallbackData::get_class_type(void);

3321 21 ~GeomDrawCallbackData 0 4 3910 43 GeomDrawCallbackData::~GeomDrawCallbackData 0 0 0
50
GeomDrawCallbackData::~GeomDrawCallbackData(void);

3322 22 InternalNameCollection 0 4 3912 46 InternalNameCollection::InternalNameCollection 0 2 1582 1583 475
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::Copy Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
137
InternalNameCollection::InternalNameCollection(void);
InternalNameCollection::InternalNameCollection(InternalNameCollection const &copy);

3323 10 operator = 0 4 3912 34 InternalNameCollection::operator = 0 1 1584 247
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::Copy Assignment Operator
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
76
void InternalNameCollection::operator =(InternalNameCollection const &copy);

3324 23 ~InternalNameCollection 0 4 3912 47 InternalNameCollection::~InternalNameCollection 0 0 731
// Filename: internalNameCollection.I
// Created by:  drose (16Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::Destructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
61
inline InternalNameCollection::~InternalNameCollection(void);

3325 8 add_name 0 4 3912 32 InternalNameCollection::add_name 0 1 1585 274
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::add_name
//       Access: Published
//  Description: Adds a new InternalName to the collection.
////////////////////////////////////////////////////////////////////
58
void InternalNameCollection::add_name(InternalName *name);

3326 11 remove_name 0 4 3912 35 InternalNameCollection::remove_name 0 1 1586 410
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::remove_name
//       Access: Published
//  Description: Removes the indicated InternalName from the collection.
//               Returns true if the name was removed, false if it was
//               not a member of the collection.
////////////////////////////////////////////////////////////////////
61
bool InternalNameCollection::remove_name(InternalName *name);

3327 14 add_names_from 0 4 3912 38 InternalNameCollection::add_names_from 0 1 1587 480
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::add_names_from
//       Access: Published
//  Description: Adds all the InternalNames indicated in the other
//               collection to this name.  The other names are simply
//               appended to the end of the names in this list;
//               duplicates are not automatically removed.
////////////////////////////////////////////////////////////////////
81
void InternalNameCollection::add_names_from(InternalNameCollection const &other);

3328 17 remove_names_from 0 4 3912 41 InternalNameCollection::remove_names_from 0 1 1588 343
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::remove_names_from
//       Access: Published
//  Description: Removes from this collection all of the InternalNames
//               listed in the other collection.
////////////////////////////////////////////////////////////////////
84
void InternalNameCollection::remove_names_from(InternalNameCollection const &other);

3329 22 remove_duplicate_names 0 4 3912 46 InternalNameCollection::remove_duplicate_names 0 1 1589 485
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::remove_duplicate_names
//       Access: Published
//  Description: Removes any duplicate entries of the same InternalNames
//               on this collection.  If a InternalName appears multiple
//               times, the first appearance is retained; subsequent
//               appearances are removed.
////////////////////////////////////////////////////////////////////
58
void InternalNameCollection::remove_duplicate_names(void);

3330 8 has_name 0 4 3912 32 InternalNameCollection::has_name 0 1 1590 336
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::has_name
//       Access: Published
//  Description: Returns true if the indicated InternalName appears in
//               this collection, false otherwise.
////////////////////////////////////////////////////////////////////
64
bool InternalNameCollection::has_name(InternalName *name) const;

3331 5 clear 0 4 3912 29 InternalNameCollection::clear 0 1 1591 275
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::clear
//       Access: Published
//  Description: Removes all InternalNames from the collection.
////////////////////////////////////////////////////////////////////
41
void InternalNameCollection::clear(void);

3332 13 get_num_names 0 4 3912 37 InternalNameCollection::get_num_names 0 1 1592 291
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::get_num_names
//       Access: Published
//  Description: Returns the number of InternalNames in the collection.
////////////////////////////////////////////////////////////////////
54
int InternalNameCollection::get_num_names(void) const;

3333 8 get_name 0 4 3912 32 InternalNameCollection::get_name 0 1 1593 279
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::get_name
//       Access: Published
//  Description: Returns the nth InternalName in the collection.
////////////////////////////////////////////////////////////////////
64
InternalName *InternalNameCollection::get_name(int index) const;

3334 11 operator [] 0 4 3912 35 InternalNameCollection::operator [] 0 1 1594 399
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::operator []
//       Access: Published
//  Description: Returns the nth InternalName in the collection.  This is
//               the same as get_name(), but it may be a more
//               convenient way to access it.
////////////////////////////////////////////////////////////////////
67
InternalName *InternalNameCollection::operator [](int index) const;

3335 4 size 0 4 3912 28 InternalNameCollection::size 0 1 1595 335
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::size
//       Access: Published
//  Description: Returns the number of names in the collection.  This
//               is the same thing as get_num_names().
////////////////////////////////////////////////////////////////////
45
int InternalNameCollection::size(void) const;

3336 11 operator += 0 4 3912 35 InternalNameCollection::operator += 0 1 1596 283
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::operator +=
//       Access: Published
//  Description: Appends the other list onto the end of this one.
////////////////////////////////////////////////////////////////////
85
inline void InternalNameCollection::operator +=(InternalNameCollection const &other);

3337 10 operator + 0 4 3912 34 InternalNameCollection::operator + 0 1 1597 332
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::operator +
//       Access: Published
//  Description: Returns a InternalNameCollection representing the
//               concatenation of the two lists.
////////////////////////////////////////////////////////////////////
108
inline InternalNameCollection InternalNameCollection::operator +(InternalNameCollection const &other) const;

3338 6 output 0 4 3912 30 InternalNameCollection::output 0 1 1598 344
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::output
//       Access: Published
//  Description: Writes a brief one-line description of the
//               InternalNameCollection to the indicated output stream.
////////////////////////////////////////////////////////////////////
56
void InternalNameCollection::output(ostream &out) const;

3339 5 write 0 4 3912 29 InternalNameCollection::write 0 2 1599 1600 348
////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               InternalNameCollection to the indicated output stream.
////////////////////////////////////////////////////////////////////
79
void InternalNameCollection::write(ostream &out, int indent_level = (0)) const;

3340 24 upcast_to_ReferenceCount 0 12 3913 31 Light::upcast_to_ReferenceCount 0 1 1609 35
upcast from Light to ReferenceCount
54
ReferenceCount *Light::upcast_to_ReferenceCount(void);

3341 6 ~Light 0 6 3913 13 Light::~Light 0 0 226
////////////////////////////////////////////////////////////////////
//     Function: Light::Destructor
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
28
virtual Light::~Light(void);

3342 7 as_node 0 6 3913 14 Light::as_node 0 1 1601 0
44
virtual PandaNode *Light::as_node(void) = 0;

3343 16 is_ambient_light 0 6 3913 23 Light::is_ambient_light 0 1 1602 330
////////////////////////////////////////////////////////////////////
//     Function: Light::is_ambient_light
//       Access: Published, Virtual
//  Description: Returns true if this is an AmbientLight, false if it
//               is some other kind of light.
////////////////////////////////////////////////////////////////////
49
virtual bool Light::is_ambient_light(void) const;

3344 9 get_color 0 4 3913 16 Light::get_color 0 1 1603 253
////////////////////////////////////////////////////////////////////
//     Function: Light::get_color
//       Access: Published
//  Description: Returns the basic color of the light.
////////////////////////////////////////////////////////////////////
54
inline LVecBase4f const &Light::get_color(void) const;

3345 9 set_color 0 4 3913 16 Light::set_color 0 1 1604 250
////////////////////////////////////////////////////////////////////
//     Function: Light::set_color
//       Access: Published
//  Description: Sets the basic color of the light.
////////////////////////////////////////////////////////////////////
54
inline void Light::set_color(LVecBase4f const &color);

3346 12 set_priority 0 4 3913 19 Light::set_priority 0 1 1605 740
////////////////////////////////////////////////////////////////////
//     Function: Light::set_priority
//       Access: Published
//  Description: Changes the relative importance of this light
//               relative to the other lights that are applied
//               simultaneously.
//
//               The priority number is used to decide which of the
//               requested lights are to be selected for rendering
//               when more lights are requested than the hardware will
//               support.  The highest-priority n lights are selected
//               for rendering.
//
//               This is similar to TextureStage::set_priority().
////////////////////////////////////////////////////////////////////
46
inline void Light::set_priority(int priority);

3347 12 get_priority 0 4 3913 19 Light::get_priority 0 1 1606 305
////////////////////////////////////////////////////////////////////
//     Function: Light::get_priority
//       Access: Published
//  Description: Returns the priority associated with this light.  See
//               set_priority().
////////////////////////////////////////////////////////////////////
43
inline int Light::get_priority(void) const;

3348 18 get_class_priority 0 6 3913 25 Light::get_class_priority 0 1 1607 0
54
virtual int Light::get_class_priority(void) const = 0;

3349 14 get_class_type 0 4 3913 21 Light::get_class_type 0 1 1608 0
46
static TypeHandle Light::get_class_type(void);

3350 4 make 0 4 3914 17 LightAttrib::make 0 5 1610 1611 1612 1613 1614 2205
// The following is the new, more general interface to the
// LightAttrib.

////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns on (or
//               off, according to op) the indicated light(s).
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns on (or
//               off, according to op) the indicate light(s).
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns on (or
//               off, according to op) the indicate light(s).
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns on (or
//               off, according to op) the indicate light(s).
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that does
//               nothing.
////////////////////////////////////////////////////////////////////
547
static ConstPointerTo< RenderAttrib > LightAttrib::make(LightAttrib::Operation op, Light *light);
static ConstPointerTo< RenderAttrib > LightAttrib::make(LightAttrib::Operation op, Light *light1, Light *light2);
static ConstPointerTo< RenderAttrib > LightAttrib::make(LightAttrib::Operation op, Light *light1, Light *light2, Light *light3);
static ConstPointerTo< RenderAttrib > LightAttrib::make(LightAttrib::Operation op, Light *light1, Light *light2, Light *light3, Light *light4);
static ConstPointerTo< RenderAttrib > LightAttrib::make(void);

3351 12 make_default 0 4 3914 25 LightAttrib::make_default 0 1 1615 398
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
70
static ConstPointerTo< RenderAttrib > LightAttrib::make_default(void);

3352 13 get_operation 0 4 3914 26 LightAttrib::get_operation 0 1 1616 888
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_operation
//       Access: Published
//  Description: Returns the basic operation type of the LightAttrib.
//               If this is O_set, the lights listed here completely
//               replace any lights that were already on.  If this is
//               O_add, the lights here are added to the set of of
//               lights that were already on, and if O_remove, the
//               lights here are removed from the set of lights that
//               were on.
//
//               This method is now deprecated.  LightAttribs nowadays
//               have a separate list of on_lights and off_lights, so
//               this method doesn't make sense.  Query the lists
//               independently.
////////////////////////////////////////////////////////////////////
62
LightAttrib::Operation LightAttrib::get_operation(void) const;

3353 14 get_num_lights 0 4 3914 27 LightAttrib::get_num_lights 0 1 1617 522
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_num_lights
//       Access: Published
//  Description: Returns the number of lights listed in the attribute.
//
//               This method is now deprecated.  LightAttribs nowadays
//               have a separate list of on_lights and off_lights, so
//               this method doesn't make sense.  Query the lists
//               independently.
////////////////////////////////////////////////////////////////////
44
int LightAttrib::get_num_lights(void) const;

3354 9 get_light 0 4 3914 22 LightAttrib::get_light 0 1 1618 510
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_light
//       Access: Published
//  Description: Returns the nth light listed in the attribute.
//
//               This method is now deprecated.  LightAttribs nowadays
//               have a separate list of on_lights and off_lights, so
//               this method doesn't make sense.  Query the lists
//               independently.
////////////////////////////////////////////////////////////////////
43
Light *LightAttrib::get_light(int n) const;

3355 9 has_light 0 4 3914 22 LightAttrib::has_light 0 1 1619 558
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::has_light
//       Access: Published
//  Description: Returns true if the indicated light is listed in the
//               attrib, false otherwise.
//
//               This method is now deprecated.  LightAttribs nowadays
//               have a separate list of on_lights and off_lights, so
//               this method doesn't make sense.  Query the lists
//               independently.
////////////////////////////////////////////////////////////////////
48
bool LightAttrib::has_light(Light *light) const;

3356 9 add_light 0 4 3914 22 LightAttrib::add_light 0 1 1620 459
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::add_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light added to the list of lights.
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
////////////////////////////////////////////////////////////////////
74
ConstPointerTo< RenderAttrib > LightAttrib::add_light(Light *light) const;

3357 12 remove_light 0 4 3914 25 LightAttrib::remove_light 0 1 1621 489
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::remove_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light removed from the list of
//               lights.
//
//               This method is now deprecated.  Use remove_on_light()
//               or remove_off_light() instead.
////////////////////////////////////////////////////////////////////
77
ConstPointerTo< RenderAttrib > LightAttrib::remove_light(Light *light) const;

3358 12 make_all_off 0 4 3914 25 LightAttrib::make_all_off 0 1 1622 418
// The following is the new, more general interface to the
// LightAttrib.

////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make_all_off
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns off
//               all lights (and hence disables lighting).
////////////////////////////////////////////////////////////////////
70
static ConstPointerTo< RenderAttrib > LightAttrib::make_all_off(void);

3359 17 get_num_on_lights 0 4 3914 30 LightAttrib::get_num_on_lights 0 1 1623 312
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_num_on_lights
//       Access: Published
//  Description: Returns the number of lights that are turned on by
//               the attribute.
////////////////////////////////////////////////////////////////////
54
inline int LightAttrib::get_num_on_lights(void) const;

3360 12 get_on_light 0 4 3914 25 LightAttrib::get_on_light 0 1 1624 315
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_on_light
//       Access: Published
//  Description: Returns the nth light turned on by the attribute,
//               sorted in render order.
////////////////////////////////////////////////////////////////////
55
inline NodePath LightAttrib::get_on_light(int n) const;

3361 12 has_on_light 0 4 3914 25 LightAttrib::has_on_light 0 1 1625 322
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::has_on_light
//       Access: Published
//  Description: Returns true if the indicated light is turned on by
//               the attrib, false otherwise.
////////////////////////////////////////////////////////////////////
67
inline bool LightAttrib::has_on_light(NodePath const &light) const;

3362 18 get_num_off_lights 0 4 3914 31 LightAttrib::get_num_off_lights 0 1 1626 314
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_num_off_lights
//       Access: Published
//  Description: Returns the number of lights that are turned off by
//               the attribute.
////////////////////////////////////////////////////////////////////
55
inline int LightAttrib::get_num_off_lights(void) const;

3363 13 get_off_light 0 4 3914 26 LightAttrib::get_off_light 0 1 1627 330
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_off_light
//       Access: Published
//  Description: Returns the nth light turned off by the attribute,
//               sorted in arbitrary (pointer) order.
////////////////////////////////////////////////////////////////////
56
inline NodePath LightAttrib::get_off_light(int n) const;

3364 13 has_off_light 0 4 3914 26 LightAttrib::has_off_light 0 1 1628 324
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::has_off_light
//       Access: Published
//  Description: Returns true if the indicated light is turned off by
//               the attrib, false otherwise.
////////////////////////////////////////////////////////////////////
68
inline bool LightAttrib::has_off_light(NodePath const &light) const;

3365 11 has_all_off 0 4 3914 24 LightAttrib::has_all_off 0 1 1629 326
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::has_all_off
//       Access: Published
//  Description: Returns true if this attrib turns off all lights
//               (although it may also turn some on).
////////////////////////////////////////////////////////////////////
49
inline bool LightAttrib::has_all_off(void) const;

3366 11 is_identity 0 4 3914 24 LightAttrib::is_identity 0 1 1630 329
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::is_identity
//       Access: Published
//  Description: Returns true if this is an identity attrib: it does
//               not change the set of lights in use.
////////////////////////////////////////////////////////////////////
49
inline bool LightAttrib::is_identity(void) const;

3367 12 add_on_light 0 4 3914 25 LightAttrib::add_on_light 0 1 1631 388
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::add_on_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light added to the list of lights
//               turned on by this attrib.
////////////////////////////////////////////////////////////////////
86
ConstPointerTo< RenderAttrib > LightAttrib::add_on_light(NodePath const &light) const;

3368 15 remove_on_light 0 4 3914 28 LightAttrib::remove_on_light 0 1 1632 395
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::remove_on_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light removed from the list of
//               lights turned on by this attrib.
////////////////////////////////////////////////////////////////////
89
ConstPointerTo< RenderAttrib > LightAttrib::remove_on_light(NodePath const &light) const;

3369 13 add_off_light 0 4 3914 26 LightAttrib::add_off_light 0 1 1633 390
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::add_off_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light added to the list of lights
//               turned off by this attrib.
////////////////////////////////////////////////////////////////////
87
ConstPointerTo< RenderAttrib > LightAttrib::add_off_light(NodePath const &light) const;

3370 16 remove_off_light 0 4 3914 29 LightAttrib::remove_off_light 0 1 1634 397
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::remove_off_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light removed from the list of
//               lights turned off by this attrib.
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< RenderAttrib > LightAttrib::remove_off_light(NodePath const &light) const;

3371 13 filter_to_max 0 4 3914 26 LightAttrib::filter_to_max 0 1 1635 705
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::filter_to_max
//       Access: Public
//  Description: Returns a new LightAttrib, very much like this one,
//               but with the number of on_lights reduced to be no
//               more than max_lights.  The number of off_lights in
//               the new LightAttrib is undefined.
//
//               The number of AmbientLights is not included in the
//               count.  All AmbientLights in the original attrib are
//               always included in the result, regardless of the
//               value of max_lights.
////////////////////////////////////////////////////////////////////
79
ConstPointerTo< LightAttrib > LightAttrib::filter_to_max(int max_lights) const;

3372 24 get_most_important_light 0 4 3914 37 LightAttrib::get_most_important_light 0 1 1636 477
////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_most_important_light
//       Access: Public
//  Description: Returns the most important light (that is, the light
//               with the highest priority) in the LightAttrib,
//               excluding any ambient lights.  Returns an empty
//               NodePath if no non-ambient lights are found.
////////////////////////////////////////////////////////////////////
59
NodePath LightAttrib::get_most_important_light(void) const;

3373 14 get_class_slot 0 4 3914 27 LightAttrib::get_class_slot 0 1 1637 0
45
static int LightAttrib::get_class_slot(void);

3374 14 get_class_type 0 4 3914 27 LightAttrib::get_class_type 0 1 1638 0
52
static TypeHandle LightAttrib::get_class_type(void);

3375 12 ~LightAttrib 0 4 3914 25 LightAttrib::~LightAttrib 0 0 0
32
LightAttrib::~LightAttrib(void);

3376 12 make_default 0 4 3916 29 LightRampAttrib::make_default 0 1 1639 408
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_default
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This
//               is the standard OpenGL lighting ramp, which clamps
//               the final light total to the 0-1 range.
////////////////////////////////////////////////////////////////////
74
static ConstPointerTo< RenderAttrib > LightRampAttrib::make_default(void);

3377 13 make_identity 0 4 3916 30 LightRampAttrib::make_identity 0 1 1640 424
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_identity
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This
//               differs from the usual OpenGL lighting model in that
//               it does not clamp the final lighting total to (0,1).
////////////////////////////////////////////////////////////////////
75
static ConstPointerTo< RenderAttrib > LightRampAttrib::make_identity(void);

3378 21 make_single_threshold 0 4 3916 38 LightRampAttrib::make_single_threshold 0 1 1641 652
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_single_threshold
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This 
//               causes the luminance of the diffuse lighting
//               contribution to be quantized using a single threshold:
//               @code
//               if (original_luminance > threshold0) {
//                 luminance = level0;
//               } else {
//                 luminance = 0.0;
//               }
//               @endcode
////////////////////////////////////////////////////////////////////
104
static ConstPointerTo< RenderAttrib > LightRampAttrib::make_single_threshold(float thresh0, float lev0);

3379 21 make_double_threshold 0 4 3916 38 LightRampAttrib::make_double_threshold 0 1 1642 750
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_double_threshold
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This 
//               causes the luminance of the diffuse lighting
//               contribution to be quantized using two thresholds:
//               @code
//               if (original_luminance > threshold1) {
//                 luminance = level1;
//               } else if (original_luminance > threshold0) {
//                 luminance = level0;
//               } else {
//                 luminance = 0.0;
//               }
//               @endcode
////////////////////////////////////////////////////////////////////
131
static ConstPointerTo< RenderAttrib > LightRampAttrib::make_double_threshold(float thresh0, float lev0, float thresh1, float lev1);

3380 9 make_hdr0 0 4 3916 26 LightRampAttrib::make_hdr0 0 1 1643 1249
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_hdr0
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This causes
//               an HDR tone mapping operation to be applied.
//
//               Normally, brightness values greater than 1 cannot be
//               distinguished from each other, causing very brightly lit
//               objects to wash out white and all detail to be erased.
//               HDR tone mapping remaps brightness values in the range
//               0-infinity into the range (0,1), making it possible to
//               distinguish detail in scenes whose brightness exceeds 1.
//
//               However, the monitor has finite contrast.  Normally, all
//               of that contrast is used to represent brightnesses in
//               the range 0-1.  The HDR0 tone mapping operator 'steals'
//               one quarter of that contrast to represent brightnesses in
//               the range 1-infinity.
//               @code
//               FINAL_RGB = (RGB^3 + RGB^2 + RGB) / (RGB^3 + RGB^2 + RGB + 1)
//               @endcode
////////////////////////////////////////////////////////////////////
71
static ConstPointerTo< RenderAttrib > LightRampAttrib::make_hdr0(void);

3381 9 make_hdr1 0 4 3916 26 LightRampAttrib::make_hdr1 0 1 1644 1231
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_hdr1
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This causes
//               an HDR tone mapping operation to be applied.
//
//               Normally, brightness values greater than 1 cannot be
//               distinguished from each other, causing very brightly lit
//               objects to wash out white and all detail to be erased.
//               HDR tone mapping remaps brightness values in the range
//               0-infinity into the range (0,1), making it possible to
//               distinguish detail in scenes whose brightness exceeds 1.
//
//               However, the monitor has finite contrast.  Normally, all
//               of that contrast is used to represent brightnesses in
//               the range 0-1.  The HDR1 tone mapping operator 'steals'
//               one third of that contrast to represent brightnesses in
//               the range 1-infinity.
//               @code
//               FINAL_RGB = (RGB^2 + RGB) / (RGB^2 + RGB + 1)
//               @endcode
////////////////////////////////////////////////////////////////////
71
static ConstPointerTo< RenderAttrib > LightRampAttrib::make_hdr1(void);

3382 9 make_hdr2 0 4 3916 26 LightRampAttrib::make_hdr2 0 1 1645 1214
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_hdr2
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This causes
//               an HDR tone mapping operation to be applied.
//
//               Normally, brightness values greater than 1 cannot be
//               distinguished from each other, causing very brightly lit
//               objects to wash out white and all detail to be erased.
//               HDR tone mapping remaps brightness values in the range
//               0-infinity into the range (0,1), making it possible to
//               distinguish detail in scenes whose brightness exceeds 1.
//
//               However, the monitor has finite contrast.  Normally, all
//               of that contrast is used to represent brightnesses in
//               the range 0-1.  The HDR2 tone mapping operator 'steals'
//               one half of that contrast to represent brightnesses in
//               the range 1-infinity.
//               @code
//               FINAL_RGB = (RGB) / (RGB + 1)
//               @endcode
////////////////////////////////////////////////////////////////////
71
static ConstPointerTo< RenderAttrib > LightRampAttrib::make_hdr2(void);

3383 8 get_mode 0 4 3916 25 LightRampAttrib::get_mode 0 1 1646 258
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::get_mode
//       Access: Published
//  Description: Returns the LightRampAttrib mode.
////////////////////////////////////////////////////////////////////
76
inline LightRampAttrib::LightRampMode LightRampAttrib::get_mode(void) const;

3384 9 get_level 0 4 3916 26 LightRampAttrib::get_level 0 1 1647 257
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::get_level
//       Access: Published
//  Description: Returns the nth lighting level.
////////////////////////////////////////////////////////////////////
53
inline float LightRampAttrib::get_level(int n) const;

3385 13 get_threshold 0 4 3916 30 LightRampAttrib::get_threshold 0 1 1648 262
////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::get_threshold
//       Access: Published
//  Description: Returns the nth threshold level.
////////////////////////////////////////////////////////////////////
57
inline float LightRampAttrib::get_threshold(int n) const;

3386 14 get_class_slot 0 4 3916 31 LightRampAttrib::get_class_slot 0 1 1649 0
49
static int LightRampAttrib::get_class_slot(void);

3387 14 get_class_type 0 4 3916 31 LightRampAttrib::get_class_type 0 1 1650 0
56
static TypeHandle LightRampAttrib::get_class_type(void);

3388 16 ~LightRampAttrib 0 4 3916 33 LightRampAttrib::~LightRampAttrib 0 0 0
40
LightRampAttrib::~LightRampAttrib(void);

3389 29 upcast_to_TypedReferenceCount 0 12 3918 37 Loader::upcast_to_TypedReferenceCount 0 1 1671 41
upcast from Loader to TypedReferenceCount
65
TypedReferenceCount *Loader::upcast_to_TypedReferenceCount(void);

3390 18 downcast_to_Loader 0 12 3869 39 TypedReferenceCount::downcast_to_Loader 0 1 1672 43
downcast from TypedReferenceCount to Loader
54
Loader *TypedReferenceCount::downcast_to_Loader(void);

3391 17 upcast_to_Namable 0 12 3918 25 Loader::upcast_to_Namable 0 1 1673 29
upcast from Loader to Namable
41
Namable *Loader::upcast_to_Namable(void);

3392 18 downcast_to_Loader 0 12 3855 27 Namable::downcast_to_Loader 0 1 1674 31
downcast from Namable to Loader
42
Loader *Namable::downcast_to_Loader(void);

3393 7 Results 0 4 3919 24 Loader::Results::Results 0 2 1675 1676 942
// Filename: loader.I
// Created by:  mike (09Jan97)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::Copy Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
100
inline Loader::Results::Results(void);
inline Loader::Results::Results(Loader::Results const &copy);

3394 10 operator = 0 4 3919 27 Loader::Results::operator = 0 1 1677 240
////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::Copy Assignment Operator
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
69
inline void Loader::Results::operator =(Loader::Results const &copy);

3395 8 ~Results 0 4 3919 25 Loader::Results::~Results 0 0 226
////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::Destructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
39
inline Loader::Results::~Results(void);

3396 5 clear 0 4 3919 22 Loader::Results::clear 0 1 1678 258
////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::clear
//       Access: Published
//  Description: Removes all the files from the list.
////////////////////////////////////////////////////////////////////
41
inline void Loader::Results::clear(void);

3397 13 get_num_files 0 4 3919 30 Loader::Results::get_num_files 0 1 1679 277
////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::get_num_files
//       Access: Published
//  Description: Returns the number of files on the result list.
////////////////////////////////////////////////////////////////////
54
inline int Loader::Results::get_num_files(void) const;

3398 8 get_file 0 4 3919 25 Loader::Results::get_file 0 1 1680 265
////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::get_file
//       Access: Published
//  Description: Returns the nth file on the result list.
////////////////////////////////////////////////////////////////////
62
inline Filename const &Loader::Results::get_file(int n) const;

3399 13 get_file_type 0 4 3919 30 Loader::Results::get_file_type 0 1 1681 304
////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::get_file_type
//       Access: Published
//  Description: Returns the file type of the nth file on the result
//               list.
////////////////////////////////////////////////////////////////////
67
inline LoaderFileType *Loader::Results::get_file_type(int n) const;

3400 6 Loader 0 4 3918 14 Loader::Loader 0 2 1651 1652 218
////////////////////////////////////////////////////////////////////
//     Function: Loader::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
62
Loader::Loader(basic_string< char > const &name = ("loader"));

3401 16 set_task_manager 0 4 3918 24 Loader::set_task_manager 0 1 1653 362
////////////////////////////////////////////////////////////////////
//     Function: Loader::set_task_manager
//       Access: Published
//  Description: Specifies the task manager that is used for
//               asynchronous loads.  The default is the global task
//               manager.
////////////////////////////////////////////////////////////////////
69
inline void Loader::set_task_manager(AsyncTaskManager *task_manager);

3402 16 get_task_manager 0 4 3918 24 Loader::get_task_manager 0 1 1654 302
////////////////////////////////////////////////////////////////////
//     Function: Loader::get_task_manager
//       Access: Published
//  Description: Returns the task manager that is used for
//               asynchronous loads.
////////////////////////////////////////////////////////////////////
62
inline AsyncTaskManager *Loader::get_task_manager(void) const;

3403 14 set_task_chain 0 4 3918 22 Loader::set_task_chain 0 1 1655 372
////////////////////////////////////////////////////////////////////
//     Function: Loader::set_task_chain
//       Access: Published
//  Description: Specifies the task chain that is used for
//               asynchronous loads.  The default is the initial name
//               of the Loader object.
////////////////////////////////////////////////////////////////////
75
inline void Loader::set_task_chain(basic_string< char > const &task_chain);

3404 14 get_task_chain 0 4 3918 22 Loader::get_task_chain 0 1 1656 298
////////////////////////////////////////////////////////////////////
//     Function: Loader::get_task_chain
//       Access: Published
//  Description: Returns the task chain that is used for
//               asynchronous loads.
////////////////////////////////////////////////////////////////////
70
inline basic_string< char > const &Loader::get_task_chain(void) const;

3405 12 stop_threads 0 4 3918 20 Loader::stop_threads 0 1 1657 265
////////////////////////////////////////////////////////////////////
//     Function: Loader::stop_threads
//       Access: Published
//  Description: Stop any threads used for asynchronous loads.
////////////////////////////////////////////////////////////////////
39
inline void Loader::stop_threads(void);

3406 6 remove 0 4 3918 14 Loader::remove 0 1 1658 321
////////////////////////////////////////////////////////////////////
//     Function: Loader::remove
//       Access: Published
//  Description: Removes a pending asynchronous load request.  Returns
//               true if successful, false otherwise.
////////////////////////////////////////////////////////////////////
44
inline bool Loader::remove(AsyncTask *task);

3407 9 load_sync 0 4 3918 17 Loader::load_sync 0 2 1659 1660 455
////////////////////////////////////////////////////////////////////
//     Function: Loader::load_sync
//       Access: Published
//  Description: Loads the file immediately, waiting for it to
//               complete.
//
//               If search is true, the file is searched for along the
//               model path; otherwise, only the exact filename is
//               loaded.
////////////////////////////////////////////////////////////////////
119
inline PointerTo< PandaNode > Loader::load_sync(Filename const &filename, LoaderOptions const &options = ((()))) const;

3408 18 make_async_request 0 4 3918 26 Loader::make_async_request 0 2 1661 1662 346
////////////////////////////////////////////////////////////////////
//     Function: Loader::make_async_request
//       Access: Published
//  Description: Returns a new AsyncTask object suitable for adding to
//               load_async() to start an asynchronous model load.
////////////////////////////////////////////////////////////////////
115
PointerTo< AsyncTask > Loader::make_async_request(Filename const &filename, LoaderOptions const &options = ((())));

3409 10 load_async 0 4 3918 18 Loader::load_async 0 1 1663 944
////////////////////////////////////////////////////////////////////
//     Function: Loader::load_async
//       Access: Published
//  Description: Begins an asynchronous load request.  To use this
//               call, first call make_async_request() to create a new
//               ModelLoadRequest object with the filename you wish to
//               load, and then add that object to the Loader with
//               load_async.  This function will return immediately,
//               and the model will be loaded in the background.
//
//               To determine when the model has completely loaded,
//               you may poll request->is_ready() from time to time,
//               or set the done_event on the request object and
//               listen for that event.  When the model is ready, you
//               may retrieve it via request->get_model().
////////////////////////////////////////////////////////////////////
51
inline void Loader::load_async(AsyncTask *request);

3410 9 save_sync 0 4 3918 17 Loader::save_sync 0 1 1664 289
////////////////////////////////////////////////////////////////////
//     Function: Loader::save_sync
//       Access: Published
//  Description: Saves the file immediately, waiting for it to
//               complete.
////////////////////////////////////////////////////////////////////
109
inline bool Loader::save_sync(Filename const &filename, LoaderOptions const &options, PandaNode *node) const;

3411 23 make_async_save_request 0 4 3918 31 Loader::make_async_save_request 0 1 1665 351
////////////////////////////////////////////////////////////////////
//     Function: Loader::make_async_save_request
//       Access: Published
//  Description: Returns a new AsyncTask object suitable for adding to
//               save_async() to start an asynchronous model save.
////////////////////////////////////////////////////////////////////
128
PointerTo< AsyncTask > Loader::make_async_save_request(Filename const &filename, LoaderOptions const &options, PandaNode *node);

3412 10 save_async 0 4 3918 18 Loader::save_async 0 1 1666 1007
////////////////////////////////////////////////////////////////////
//     Function: Loader::save_async
//       Access: Published
//  Description: Begins an asynchronous save request.  To use this
//               call, first call make_async_save_request() to create
//               a new ModelSaveRequest object with the filename you
//               wish to load, and then add that object to the Loader
//               with save_async.  This function will return
//               immediately, and the model will be loaded in the
//               background.
//
//               To determine when the model has completely loaded,
//               you may poll request->is_ready() from time to time,
//               or set the done_event on the request object and
//               listen for that event.  When the request is ready,
//               you may retrieve the success or failure via
//               request->get_success().
////////////////////////////////////////////////////////////////////
51
inline void Loader::save_async(AsyncTask *request);

3413 15 load_bam_stream 0 4 3918 23 Loader::load_bam_stream 0 1 1667 335
////////////////////////////////////////////////////////////////////
//     Function: Loader::load_bam_stream
//       Access: Published
//  Description: Attempts to read a bam file from the indicated stream
//               and return the scene graph defined there.
////////////////////////////////////////////////////////////////////
60
PointerTo< PandaNode > Loader::load_bam_stream(istream &in);

3414 6 output 0 6 3918 14 Loader::output 0 1 1668 223
////////////////////////////////////////////////////////////////////
//     Function: Loader::output
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
48
virtual void Loader::output(ostream &out) const;

3415 14 get_global_ptr 0 4 3918 22 Loader::get_global_ptr 0 1 1669 344
////////////////////////////////////////////////////////////////////
//     Function: Loader::get_global_ptr
//       Access: Published
//  Description: Returns a pointer to the global Loader.  This is the
//               Loader that most code should use for loading models.
////////////////////////////////////////////////////////////////////
51
static inline Loader *Loader::get_global_ptr(void);

3416 14 get_class_type 0 4 3918 22 Loader::get_class_type 0 1 1670 0
47
static TypeHandle Loader::get_class_type(void);

3417 7 ~Loader 0 4 3918 15 Loader::~Loader 0 0 0
22
Loader::~Loader(void);

3418 8 get_name 0 6 3920 24 LoaderFileType::get_name 0 1 1682 0
70
virtual basic_string< char > LoaderFileType::get_name(void) const = 0;

3419 13 get_extension 0 6 3920 29 LoaderFileType::get_extension 0 1 1683 0
75
virtual basic_string< char > LoaderFileType::get_extension(void) const = 0;

3420 25 get_additional_extensions 0 6 3920 41 LoaderFileType::get_additional_extensions 0 1 1684 416
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::get_additional_extensions
//       Access: Published, Virtual
//  Description: Returns a space-separated list of extension, in
//               addition to the one returned by get_extension(), that
//               are recognized by this loader.
////////////////////////////////////////////////////////////////////
83
virtual basic_string< char > LoaderFileType::get_additional_extensions(void) const;

3421 19 supports_compressed 0 6 3920 35 LoaderFileType::supports_compressed 0 1 1685 389
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::supports_compressed
//       Access: Published, Virtual
//  Description: Returns true if this file type can transparently load
//               compressed files (with a .pz extension), false
//               otherwise.
////////////////////////////////////////////////////////////////////
61
virtual bool LoaderFileType::supports_compressed(void) const;

3422 20 get_allow_disk_cache 0 6 3920 36 LoaderFileType::get_allow_disk_cache 0 1 1686 402
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::get_allow_disk_cache
//       Access: Published, Virtual
//  Description: Returns true if the loader flags allow retrieving the
//               model from the on-disk bam cache (if it is enabled),
//               false otherwise.
////////////////////////////////////////////////////////////////////
86
virtual bool LoaderFileType::get_allow_disk_cache(LoaderOptions const &options) const;

3423 19 get_allow_ram_cache 0 6 3920 35 LoaderFileType::get_allow_ram_cache 0 1 1687 390
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::get_allow_ram_cache
//       Access: Published, Virtual
//  Description: Returns true if the loader flags allow retrieving the
//               model from the in-memory ModelPool cache, false
//               otherwise.
////////////////////////////////////////////////////////////////////
85
virtual bool LoaderFileType::get_allow_ram_cache(LoaderOptions const &options) const;

3424 13 supports_load 0 6 3920 29 LoaderFileType::supports_load 0 1 1688 427
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::supports_load
//       Access: Published, Virtual
//  Description: Returns true if the file type can be used to load
//               files, and load_file() is supported.  Returns false
//               if load_file() is unimplemented and will always fail.
////////////////////////////////////////////////////////////////////
55
virtual bool LoaderFileType::supports_load(void) const;

3425 13 supports_save 0 6 3920 29 LoaderFileType::supports_save 0 1 1689 427
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::supports_save
//       Access: Published, Virtual
//  Description: Returns true if the file type can be used to save
//               files, and save_file() is supported.  Returns false
//               if save_file() is unimplemented and will always fail.
////////////////////////////////////////////////////////////////////
55
virtual bool LoaderFileType::supports_save(void) const;

3426 14 get_class_type 0 4 3920 30 LoaderFileType::get_class_type 0 1 1690 0
55
static TypeHandle LoaderFileType::get_class_type(void);

3427 23 ~LoaderFileTypeRegistry 0 4 3922 47 LoaderFileTypeRegistry::~LoaderFileTypeRegistry 0 0 230
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::Destructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
54
LoaderFileTypeRegistry::~LoaderFileTypeRegistry(void);

3428 13 get_num_types 0 4 3922 37 LoaderFileTypeRegistry::get_num_types 0 1 1691 282
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::get_num_types
//       Access: Published
//  Description: Returns the total number of types registered.
////////////////////////////////////////////////////////////////////
54
int LoaderFileTypeRegistry::get_num_types(void) const;

3429 8 get_type 0 4 3922 32 LoaderFileTypeRegistry::get_type 0 1 1692 264
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::get_type
//       Access: Published
//  Description: Returns the nth type registered.
////////////////////////////////////////////////////////////////////
62
LoaderFileType *LoaderFileTypeRegistry::get_type(int n) const;

3430 23 get_type_from_extension 0 4 3922 47 LoaderFileTypeRegistry::get_type_from_extension 0 1 1693 430
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::get_type_from_extension
//       Access: Published
//  Description: Determines the type of the file based on the indicated
//               extension (without a leading dot).  Returns NULL if
//               the extension matches no known file types.
////////////////////////////////////////////////////////////////////
103
LoaderFileType *LoaderFileTypeRegistry::get_type_from_extension(basic_string< char > const &extension);

3431 5 write 0 4 3922 29 LoaderFileTypeRegistry::write 0 2 1694 1695 329
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::write
//       Access: Published
//  Description: Writes a list of supported file types to the
//               indicated output stream, one per line.
////////////////////////////////////////////////////////////////////
79
void LoaderFileTypeRegistry::write(ostream &out, int indent_level = (0)) const;

3432 14 get_global_ptr 0 4 3922 38 LoaderFileTypeRegistry::get_global_ptr 0 1 1696 325
////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::get_global_ptr
//       Access: Published, Static
//  Description: Returns a pointer to the global LoaderFileTypeRegistry
//               object.
////////////////////////////////////////////////////////////////////
76
static LoaderFileTypeRegistry *LoaderFileTypeRegistry::get_global_ptr(void);

3433 4 make 0 4 3923 20 MaterialAttrib::make 0 1 1697 344
////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::make
//       Access: Published, Static
//  Description: Constructs a new MaterialAttrib object suitable for
//               rendering the indicated material onto geometry.
////////////////////////////////////////////////////////////////////
79
static ConstPointerTo< RenderAttrib > MaterialAttrib::make(Material *material);

3434 8 make_off 0 4 3923 24 MaterialAttrib::make_off 0 1 1698 332
////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new MaterialAttrib object suitable for
//               rendering unmateriald geometry.
////////////////////////////////////////////////////////////////////
69
static ConstPointerTo< RenderAttrib > MaterialAttrib::make_off(void);

3435 12 make_default 0 4 3923 28 MaterialAttrib::make_default 0 1 1699 401
////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
73
static ConstPointerTo< RenderAttrib > MaterialAttrib::make_default(void);

3436 6 is_off 0 4 3923 22 MaterialAttrib::is_off 0 1 1700 374
////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::is_off
//       Access: Published
//  Description: Returns true if the MaterialAttrib is an 'off'
//               MaterialAttrib, indicating that it should disable
//               the use of materials.
////////////////////////////////////////////////////////////////////
47
inline bool MaterialAttrib::is_off(void) const;

3437 12 get_material 0 4 3923 28 MaterialAttrib::get_material 0 1 1701 381
////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::get_material
//       Access: Published
//  Description: If the MaterialAttrib is not an 'off' MaterialAttrib,
//               returns the material that is associated.  Otherwise,
//               return NULL.
////////////////////////////////////////////////////////////////////
58
inline Material *MaterialAttrib::get_material(void) const;

3438 14 get_class_slot 0 4 3923 30 MaterialAttrib::get_class_slot 0 1 1702 0
48
static int MaterialAttrib::get_class_slot(void);

3439 14 get_class_type 0 4 3923 30 MaterialAttrib::get_class_type 0 1 1703 0
55
static TypeHandle MaterialAttrib::get_class_type(void);

3440 15 ~MaterialAttrib 0 4 3923 31 MaterialAttrib::~MaterialAttrib 0 0 0
38
MaterialAttrib::~MaterialAttrib(void);

3441 18 MaterialCollection 0 4 3924 38 MaterialCollection::MaterialCollection 0 2 1704 1705 467
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::Copy Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
117
MaterialCollection::MaterialCollection(void);
MaterialCollection::MaterialCollection(MaterialCollection const &copy);

3442 10 operator = 0 4 3924 30 MaterialCollection::operator = 0 1 1706 243
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::Copy Assignment Operator
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
68
void MaterialCollection::operator =(MaterialCollection const &copy);

3443 19 ~MaterialCollection 0 4 3924 39 MaterialCollection::~MaterialCollection 0 0 723
// Filename: materialCollection.I
// Created by:  drose (16Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::Destructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
53
inline MaterialCollection::~MaterialCollection(void);

3444 12 add_material 0 4 3924 32 MaterialCollection::add_material 0 1 1707 270
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::add_material
//       Access: Published
//  Description: Adds a new Material to the collection.
////////////////////////////////////////////////////////////////////
63
void MaterialCollection::add_material(Material *node_material);

3445 15 remove_material 0 4 3924 35 MaterialCollection::remove_material 0 1 1708 410
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::remove_material
//       Access: Published
//  Description: Removes the indicated Material from the collection.
//               Returns true if the material was removed, false if it was
//               not a member of the collection.
////////////////////////////////////////////////////////////////////
66
bool MaterialCollection::remove_material(Material *node_material);

3446 18 add_materials_from 0 4 3924 38 MaterialCollection::add_materials_from 0 1 1709 488
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::add_materials_from
//       Access: Published
//  Description: Adds all the Materials indicated in the other
//               collection to this material.  The other materials are simply
//               appended to the end of the materials in this list;
//               duplicates are not automatically removed.
////////////////////////////////////////////////////////////////////
77
void MaterialCollection::add_materials_from(MaterialCollection const &other);

3447 21 remove_materials_from 0 4 3924 41 MaterialCollection::remove_materials_from 0 1 1710 339
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::remove_materials_from
//       Access: Published
//  Description: Removes from this collection all of the Materials
//               listed in the other collection.
////////////////////////////////////////////////////////////////////
80
void MaterialCollection::remove_materials_from(MaterialCollection const &other);

3448 26 remove_duplicate_materials 0 4 3924 46 MaterialCollection::remove_duplicate_materials 0 1 1711 477
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::remove_duplicate_materials
//       Access: Published
//  Description: Removes any duplicate entries of the same Materials
//               on this collection.  If a Material appears multiple
//               times, the first appearance is retained; subsequent
//               appearances are removed.
////////////////////////////////////////////////////////////////////
58
void MaterialCollection::remove_duplicate_materials(void);

3449 12 has_material 0 4 3924 32 MaterialCollection::has_material 0 1 1712 332
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::has_material
//       Access: Published
//  Description: Returns true if the indicated Material appears in
//               this collection, false otherwise.
////////////////////////////////////////////////////////////////////
64
bool MaterialCollection::has_material(Material *material) const;

3450 5 clear 0 4 3924 25 MaterialCollection::clear 0 1 1713 267
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::clear
//       Access: Published
//  Description: Removes all Materials from the collection.
////////////////////////////////////////////////////////////////////
37
void MaterialCollection::clear(void);

3451 13 find_material 0 4 3924 33 MaterialCollection::find_material 0 1 1714 376
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::find_material
//       Access: Published
//  Description: Returns the material in the collection with the
//               indicated name, if any, or NULL if no material has
//               that name.
////////////////////////////////////////////////////////////////////
84
Material *MaterialCollection::find_material(basic_string< char > const &name) const;

3452 17 get_num_materials 0 4 3924 37 MaterialCollection::get_num_materials 0 1 1715 287
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::get_num_materials
//       Access: Published
//  Description: Returns the number of Materials in the collection.
////////////////////////////////////////////////////////////////////
54
int MaterialCollection::get_num_materials(void) const;

3453 12 get_material 0 4 3924 32 MaterialCollection::get_material 0 1 1716 275
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::get_material
//       Access: Published
//  Description: Returns the nth Material in the collection.
////////////////////////////////////////////////////////////////////
60
Material *MaterialCollection::get_material(int index) const;

3454 11 operator [] 0 4 3924 31 MaterialCollection::operator [] 0 1 1717 395
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::operator []
//       Access: Published
//  Description: Returns the nth Material in the collection.  This is
//               the same as get_material(), but it may be a more
//               convenient way to access it.
////////////////////////////////////////////////////////////////////
59
Material *MaterialCollection::operator [](int index) const;

3455 4 size 0 4 3924 24 MaterialCollection::size 0 1 1718 339
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::size
//       Access: Published
//  Description: Returns the number of materials in the collection.  This
//               is the same thing as get_num_materials().
////////////////////////////////////////////////////////////////////
41
int MaterialCollection::size(void) const;

3456 11 operator += 0 4 3924 31 MaterialCollection::operator += 0 1 1719 279
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::operator +=
//       Access: Published
//  Description: Appends the other list onto the end of this one.
////////////////////////////////////////////////////////////////////
77
inline void MaterialCollection::operator +=(MaterialCollection const &other);

3457 10 operator + 0 4 3924 30 MaterialCollection::operator + 0 1 1720 324
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::operator +
//       Access: Published
//  Description: Returns a MaterialCollection representing the
//               concatenation of the two lists.
////////////////////////////////////////////////////////////////////
96
inline MaterialCollection MaterialCollection::operator +(MaterialCollection const &other) const;

3458 6 output 0 4 3924 26 MaterialCollection::output 0 1 1721 336
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::output
//       Access: Published
//  Description: Writes a brief one-line description of the
//               MaterialCollection to the indicated output stream.
////////////////////////////////////////////////////////////////////
52
void MaterialCollection::output(ostream &out) const;

3459 5 write 0 4 3924 25 MaterialCollection::write 0 2 1722 1723 340
////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               MaterialCollection to the indicated output stream.
////////////////////////////////////////////////////////////////////
75
void MaterialCollection::write(ostream &out, int indent_level = (0)) const;

3460 19 ModelFlattenRequest 0 4 3925 40 ModelFlattenRequest::ModelFlattenRequest 0 1 1724 851
// Filename: modelFlattenRequest.I
// Created by:  drose (30Mar07)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelFlattenRequest::Constructor
//       Access: Published
//  Description: Create a new ModelFlattenRequest, and add it to the loader
//               via load_async(), to begin an asynchronous load.
////////////////////////////////////////////////////////////////////
65
inline ModelFlattenRequest::ModelFlattenRequest(PandaNode *orig);

3461 8 get_orig 0 4 3925 29 ModelFlattenRequest::get_orig 0 1 1725 268
////////////////////////////////////////////////////////////////////
//     Function: ModelFlattenRequest::get_orig
//       Access: Published
//  Description: Returns the original, unflattened node.
////////////////////////////////////////////////////////////////////
60
inline PandaNode *ModelFlattenRequest::get_orig(void) const;

3462 8 is_ready 0 4 3925 29 ModelFlattenRequest::is_ready 0 1 1726 420
////////////////////////////////////////////////////////////////////
//     Function: ModelFlattenRequest::is_ready
//       Access: Published
//  Description: Returns true if this request has completed, false if
//               it is still pending.  When this returns true, you may
//               retrieve the model loaded by calling get_result().
////////////////////////////////////////////////////////////////////
54
inline bool ModelFlattenRequest::is_ready(void) const;

3463 9 get_model 0 4 3925 30 ModelFlattenRequest::get_model 0 1 1727 348
////////////////////////////////////////////////////////////////////
//     Function: ModelFlattenRequest::get_model
//       Access: Published
//  Description: Returns the flattened copy of the model.  It is an
//               error to call this unless is_ready() returns true.
////////////////////////////////////////////////////////////////////
61
inline PandaNode *ModelFlattenRequest::get_model(void) const;

3464 14 get_class_type 0 4 3925 35 ModelFlattenRequest::get_class_type 0 1 1728 0
60
static TypeHandle ModelFlattenRequest::get_class_type(void);

3465 20 ~ModelFlattenRequest 0 4 3925 41 ModelFlattenRequest::~ModelFlattenRequest 0 0 0
48
ModelFlattenRequest::~ModelFlattenRequest(void);

3466 16 ModelLoadRequest 0 4 3927 34 ModelLoadRequest::ModelLoadRequest 0 1 1729 350
////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::Constructor
//       Access: Published
//  Description: Create a new ModelLoadRequest, and add it to the loader
//               via load_async(), to begin an asynchronous load.
////////////////////////////////////////////////////////////////////
141
ModelLoadRequest::ModelLoadRequest(basic_string< char > const &name, Filename const &filename, LoaderOptions const &options, Loader *loader);

3467 12 get_filename 0 4 3927 30 ModelLoadRequest::get_filename 0 1 1730 811
// Filename: modelLoadRequest.I
// Created by:  drose (29Aug06)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::get_filename
//       Access: Published
//  Description: Returns the filename associated with this
//               asynchronous ModelLoadRequest.
////////////////////////////////////////////////////////////////////
66
inline Filename const &ModelLoadRequest::get_filename(void) const;

3468 11 get_options 0 4 3927 29 ModelLoadRequest::get_options 0 1 1731 323
////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::get_options
//       Access: Published
//  Description: Returns the LoaderOptions associated with this
//               asynchronous ModelLoadRequest.
////////////////////////////////////////////////////////////////////
70
inline LoaderOptions const &ModelLoadRequest::get_options(void) const;

3469 10 get_loader 0 4 3927 28 ModelLoadRequest::get_loader 0 1 1732 322
////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::get_loader
//       Access: Published
//  Description: Returns the Loader object associated with this
//               asynchronous ModelLoadRequest.
////////////////////////////////////////////////////////////////////
56
inline Loader *ModelLoadRequest::get_loader(void) const;

3470 8 is_ready 0 4 3927 26 ModelLoadRequest::is_ready 0 1 1733 416
////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::is_ready
//       Access: Published
//  Description: Returns true if this request has completed, false if
//               it is still pending.  When this returns true, you may
//               retrieve the model loaded by calling get_model().
////////////////////////////////////////////////////////////////////
51
inline bool ModelLoadRequest::is_ready(void) const;

3471 9 get_model 0 4 3927 27 ModelLoadRequest::get_model 0 1 1734 410
////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::get_model
//       Access: Published
//  Description: Returns the model that was loaded asynchronously, if
//               any, or NULL if there was an error.  It is an error
//               to call this unless is_ready() returns true.
////////////////////////////////////////////////////////////////////
58
inline PandaNode *ModelLoadRequest::get_model(void) const;

3472 14 get_class_type 0 4 3927 32 ModelLoadRequest::get_class_type 0 1 1735 0
57
static TypeHandle ModelLoadRequest::get_class_type(void);

3473 17 ~ModelLoadRequest 0 4 3927 35 ModelLoadRequest::~ModelLoadRequest 0 0 0
42
ModelLoadRequest::~ModelLoadRequest(void);

3474 9 ModelNode 0 4 3928 20 ModelNode::ModelNode 0 1 1736 931
// Filename: modelNode.I
// Created by:  drose (16Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelNode::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ModelNode::Copy Constructor
//       Access: Protected
//  Description:
////////////////////////////////////////////////////////////////////
62
inline ModelNode::ModelNode(basic_string< char > const &name);

3475 22 set_preserve_transform 0 4 3928 33 ModelNode::set_preserve_transform 0 1 1737 1760
////////////////////////////////////////////////////////////////////
//     Function: ModelNode::set_preserve_transform
//       Access: Public
//  Description: Sets the preserve_transform flag.  This restricts the
//               ability of a flatten operation to affect the
//               transform stored on this node, and/or the node
//               itself.  In the order from weakest to strongest
//               restrictions, the possible flags are:
//
//               PT_drop_node - This node should be removed at the
//               next flatten call.
//
//               PT_none - The transform may be adjusted at will.  The
//               node itself will not be removed.  This is the
//               default.
//
//               PT_net - Preserve the net transform from the root,
//               but it's acceptable to modify the local transform
//               stored on this particular node if necessary, so long
//               as the net transform is not changed.  This eliminates
//               the need to drop an extra transform on the node
//               above.
//
//               PT_local - The local (and net) transform should not
//               be changed in any way.  If necessary, an extra
//               transform will be left on the node above to guarantee
//               this.  This is a stronger restriction than PT_net.
//
//               PT_no_touch - The local transform will not be
//               changed, the node will not be removed, and
//               furthermore any flatten operation will not continue
//               below this node--this node and all descendents are
//               protected from the effects of flatten.
////////////////////////////////////////////////////////////////////
95
inline void ModelNode::set_preserve_transform(ModelNode::PreserveTransform preserve_transform);

3476 22 get_preserve_transform 0 4 3928 33 ModelNode::get_preserve_transform 0 1 1738 337
////////////////////////////////////////////////////////////////////
//     Function: ModelNode::get_preserve_transform
//       Access: Public
//  Description: Returns the current setting of the preserve_transform
//               flag.  See set_preserve_transform().
////////////////////////////////////////////////////////////////////
82
inline ModelNode::PreserveTransform ModelNode::get_preserve_transform(void) const;

3477 23 set_preserve_attributes 0 4 3928 34 ModelNode::set_preserve_attributes 0 1 1739 591
////////////////////////////////////////////////////////////////////
//     Function: ModelNode::set_preserve_attributes
//       Access: Public
//  Description: Sets the preserve_attributes flag.  This restricts the
//               ability of a flatten operation to affect the
//               render attributes stored on this node.
//
//               The value should be the union of bits from
//               SceneGraphReducer::AttribTypes that represent the
//               attributes that should *not* be changed.
////////////////////////////////////////////////////////////////////
64
inline void ModelNode::set_preserve_attributes(int attrib_mask);

3478 23 get_preserve_attributes 0 4 3928 34 ModelNode::get_preserve_attributes 0 1 1740 340
////////////////////////////////////////////////////////////////////
//     Function: ModelNode::get_preserve_attributes
//       Access: Public
//  Description: Returns the current setting of the preserve_attributes
//               flag.  See set_preserve_attributes().
////////////////////////////////////////////////////////////////////
58
inline int ModelNode::get_preserve_attributes(void) const;

3479 19 set_transform_limit 0 4 3928 30 ModelNode::set_transform_limit 0 1 1741 0
49
void ModelNode::set_transform_limit(float limit);

3480 14 get_class_type 0 4 3928 25 ModelNode::get_class_type 0 1 1742 0
50
static TypeHandle ModelNode::get_class_type(void);

3481 10 ~ModelNode 0 4 3928 21 ModelNode::~ModelNode 0 0 0
28
ModelNode::~ModelNode(void);

3482 9 ModelRoot 0 4 3930 20 ModelRoot::ModelRoot 0 2 1743 1744 1157
// Filename: modelRoot.I
// Created by:  drose (16Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::Copy Constructor
//       Access: Protected
//  Description:
////////////////////////////////////////////////////////////////////
142
inline ModelRoot::ModelRoot(basic_string< char > const &name);
inline ModelRoot::ModelRoot(Filename const &fulllpath, unsigned int timestamp);

3483 19 get_model_ref_count 0 4 3930 30 ModelRoot::get_model_ref_count 0 1 1745 654
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::get_model_ref_count
//       Access: Published
//  Description: Returns the number of copies that exist of this
//               particular ModelRoot node.  Each time
//               ModelRoot::copy_subgraph() or make_copy() is called
//               (or some other copying mechanism, such as
//               NodePath.copy_to(), is used), this count will
//               increment by one in all copies; when one of the
//               copies is destructed, this count will decrement.
////////////////////////////////////////////////////////////////////
54
inline int ModelRoot::get_model_ref_count(void) const;

3484 12 get_fullpath 0 4 3930 23 ModelRoot::get_fullpath 0 1 1746 463
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::get_fullpath
//       Access: Published
//  Description: Returns the full pathname of the model represented by
//               this node, as found on disk.  This is mainly useful
//               for reference purposes, but is also used to index the
//               ModelRoot into the ModelPool.
////////////////////////////////////////////////////////////////////
59
inline Filename const &ModelRoot::get_fullpath(void) const;

3485 12 set_fullpath 0 4 3930 23 ModelRoot::set_fullpath 0 1 1747 714
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::set_fullpath
//       Access: Published
//  Description: Sets the full pathname of the model represented by
//               this node, as found on disk.  This is mainly useful
//               for reference purposes, but is also used to index the
//               ModelRoot into the ModelPool.
//
//               This is normally set automatically when a model is
//               loaded, and should not be set directly by the user.
//               If you change this on a loaded model, then
//               ModelPool::release_model() may fail.
////////////////////////////////////////////////////////////////////
62
inline void ModelRoot::set_fullpath(Filename const &fullpath);

3486 13 get_timestamp 0 4 3930 24 ModelRoot::get_timestamp 0 1 1748 610
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::get_timestamp
//       Access: Published
//  Description: Returns the timestamp of the file on disk that was
//               read for this model, at the time it was read, if it
//               is known.  Returns 0 if the timestamp is not known or
//               could not be provided.  This can be used as a quick
//               (but fallible) check to verify whether the file might
//               have changed since the model was read.
////////////////////////////////////////////////////////////////////
57
inline unsigned int ModelRoot::get_timestamp(void) const;

3487 13 set_timestamp 0 4 3930 24 ModelRoot::set_timestamp 0 1 1749 447
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::set_timestamp
//       Access: Published
//  Description: Sets the timestamp of the file on disk that was read
//               for this model.  This is normally set automatically
//               when a model is loaded, and should not be set
//               directly by the user.
////////////////////////////////////////////////////////////////////
61
inline void ModelRoot::set_timestamp(unsigned int timestamp);

3488 14 ModelReference 0 4 3931 41 ModelRoot::ModelReference::ModelReference 0 1 1753 237
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::ModelReference::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
55
inline ModelRoot::ModelReference::ModelReference(void);

3489 15 ~ModelReference 0 4 3931 42 ModelRoot::ModelReference::~ModelReference 0 0 0
49
ModelRoot::ModelReference::~ModelReference(void);

3490 13 get_reference 0 4 3930 24 ModelRoot::get_reference 0 1 1750 604
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::get_reference
//       Access: Published
//  Description: Returns the pointer that represents the object shared
//               between all copies of this ModelRoot.  Since there's
//               not much associated with this object other than a
//               reference count, normally there's not much reason to
//               get the pointer (though it may be compared
//               pointerwise with other ModelRoot objects).
////////////////////////////////////////////////////////////////////
71
inline ModelRoot::ModelReference *ModelRoot::get_reference(void) const;

3491 13 set_reference 0 4 3930 24 ModelRoot::set_reference 0 1 1751 469
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::set_reference
//       Access: Published
//  Description: Changes the pointer that represents the object shared
//               between all copies of this ModelRoot.  This will
//               disassociate this ModelRoot from all of its copies.
//               Normally, there's no reason to do this.
////////////////////////////////////////////////////////////////////
62
void ModelRoot::set_reference(ModelRoot::ModelReference *ref);

3492 14 get_class_type 0 4 3930 25 ModelRoot::get_class_type 0 1 1752 0
50
static TypeHandle ModelRoot::get_class_type(void);

3493 10 ~ModelRoot 0 4 3930 21 ModelRoot::~ModelRoot 0 0 0
28
ModelRoot::~ModelRoot(void);

3494 9 has_model 0 4 3932 20 ModelPool::has_model 0 1 1754 791
// Filename: modelPool.I
// Created by:  drose (12Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::has_model
//       Access: Public, Static
//  Description: Returns true if the model has ever been loaded,
//               false otherwise.
////////////////////////////////////////////////////////////////////
66
static inline bool ModelPool::has_model(Filename const &filename);

3495 12 verify_model 0 4 3932 23 ModelPool::verify_model 0 1 1755 915
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::verify_model
//       Access: Public, Static
//  Description: Loads the given filename up as a model, if it has
//               not already been loaded, and returns true to indicate
//               success, or false to indicate failure.  If this
//               returns true, it is probable that a subsequent call
//               to load_model() with the same model name will
//               return a valid PandaNode.
//
//               However, even if this returns true, it is still
//               possible for a subsequent call to load_model() to
//               fail.  This can happen if cache-check-timestamps is
//               true, and the on-disk file is subsequently modified
//               to replace it with an invalid model.
////////////////////////////////////////////////////////////////////
69
static inline bool ModelPool::verify_model(Filename const &filename);

3496 10 load_model 0 4 3932 21 ModelPool::load_model 0 2 1756 1757 690
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::load_model
//       Access: Public, Static
//  Description: Loads the given filename up as a model, if it has
//               not already been loaded, and returns the new model.
//               If a model with the same filename was previously
//               loaded, returns that one instead (unless
//               cache-check-timestamps is true and the file has
//               recently changed).  If the model file cannot be
//               found, or cannot be loaded for some reason, returns
//               NULL.
////////////////////////////////////////////////////////////////////
112
static inline ModelRoot *ModelPool::load_model(Filename const &filename, LoaderOptions const &options = ((())));

3497 9 add_model 0 4 3932 20 ModelPool::add_model 0 2 1758 1759 967
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::add_model
//       Access: Public, Static
//  Description: Adds the indicated already-loaded model to the
//               pool.  The model will replace any previously-loaded
//               model in the pool that had the same filename.
//
//               This two-parameter version of this method is
//               deprecated; use the one-parameter add_model(model)
//               instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ModelPool::add_model
//       Access: Public, Static
//  Description: Adds the indicated already-loaded model to the
//               pool.  The model will replace any previously-loaded
//               model in the pool that had the same filename.
////////////////////////////////////////////////////////////////////
143
static inline void ModelPool::add_model(Filename const &filename, ModelRoot *model);
static inline void ModelPool::add_model(ModelRoot *model);

3498 13 release_model 0 4 3932 24 ModelPool::release_model 0 2 1760 1761 1432
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::release_model
//       Access: Public, Static
//  Description: Removes the indicated model from the pool,
//               indicating it will never be loaded again; the model
//               may then be freed.  If this function is never called,
//               a reference count will be maintained on every model
//               every loaded, and models will never be freed.
//
//               This version of this method is deprecated; use
//               release_model(model) instead.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ModelPool::release_model
//       Access: Public, Static
//  Description: Removes the indicated model from the pool,
//               indicating it will never be loaded again; the model
//               may then be freed.  If this function (and
//               garbage_collect()) is never called, a reference count
//               will be maintained on every model every loaded, and
//               models will never be freed.
//
//               The model's get_fullpath() value should not have been
//               changed during its lifetime, or this function may
//               fail to locate it in the pool.
////////////////////////////////////////////////////////////////////
133
static inline void ModelPool::release_model(Filename const &filename);
static inline void ModelPool::release_model(ModelRoot *model);

3499 18 release_all_models 0 4 3932 29 ModelPool::release_all_models 0 1 1762 324
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::release_all_models
//       Access: Public, Static
//  Description: Releases all models in the pool and restores the
//               pool to the empty state.
////////////////////////////////////////////////////////////////////
55
static inline void ModelPool::release_all_models(void);

3500 15 garbage_collect 0 4 3932 26 ModelPool::garbage_collect 0 1 1763 469
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::garbage_collect
//       Access: Public, Static
//  Description: Releases only those models in the pool that have a
//               reference count of exactly 1; i.e. only those
//               models that are not being used outside of the pool.
//               Returns the number of models released.
////////////////////////////////////////////////////////////////////
51
static inline int ModelPool::garbage_collect(void);

3501 13 list_contents 0 4 3932 24 ModelPool::list_contents 0 2 1764 1765 590
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::list_contents
//       Access: Public, Static
//  Description: Lists the contents of the model pool to the
//               indicated output stream.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ModelPool::list_contents
//       Access: Public, Static
//  Description: Lists the contents of the model pool to cout.
////////////////////////////////////////////////////////////////////
109
static inline void ModelPool::list_contents(ostream &out);
static inline void ModelPool::list_contents(void);

3502 5 write 0 4 3932 16 ModelPool::write 0 1 1766 348
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::write
//       Access: Published, Static
//  Description: Lists the contents of the model pool to the
//               indicated output stream.
//               Helps with debugging.
////////////////////////////////////////////////////////////////////
43
static void ModelPool::write(ostream &out);

3503 10 ~ModelPool 0 4 3932 21 ModelPool::~ModelPool 0 0 0
28
ModelPool::~ModelPool(void);

3504 16 ModelSaveRequest 0 4 3933 34 ModelSaveRequest::ModelSaveRequest 0 1 1767 350
////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::Constructor
//       Access: Published
//  Description: Create a new ModelSaveRequest, and add it to the loader
//               via save_async(), to begin an asynchronous save.
////////////////////////////////////////////////////////////////////
158
ModelSaveRequest::ModelSaveRequest(basic_string< char > const &name, Filename const &filename, LoaderOptions const &options, PandaNode *node, Loader *loader);

3505 12 get_filename 0 4 3933 30 ModelSaveRequest::get_filename 0 1 1768 811
// Filename: modelSaveRequest.I
// Created by:  drose (19Dec12)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_filename
//       Access: Published
//  Description: Returns the filename associated with this
//               asynchronous ModelSaveRequest.
////////////////////////////////////////////////////////////////////
66
inline Filename const &ModelSaveRequest::get_filename(void) const;

3506 11 get_options 0 4 3933 29 ModelSaveRequest::get_options 0 1 1769 323
////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_options
//       Access: Published
//  Description: Returns the LoaderOptions associated with this
//               asynchronous ModelSaveRequest.
////////////////////////////////////////////////////////////////////
70
inline LoaderOptions const &ModelSaveRequest::get_options(void) const;

3507 8 get_node 0 4 3933 26 ModelSaveRequest::get_node 0 1 1770 278
////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_node
//       Access: Published
//  Description: Returns the node that was passed to the constructor.
////////////////////////////////////////////////////////////////////
57
inline PandaNode *ModelSaveRequest::get_node(void) const;

3508 10 get_loader 0 4 3933 28 ModelSaveRequest::get_loader 0 1 1771 322
////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_loader
//       Access: Published
//  Description: Returns the Loader object associated with this
//               asynchronous ModelSaveRequest.
////////////////////////////////////////////////////////////////////
56
inline Loader *ModelSaveRequest::get_loader(void) const;

3509 8 is_ready 0 4 3933 26 ModelSaveRequest::is_ready 0 1 1772 412
////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::is_ready
//       Access: Published
//  Description: Returns true if this request has completed, false if
//               it is still pending.  When this returns true, you may
//               retrieve the success flag with get_success().
////////////////////////////////////////////////////////////////////
51
inline bool ModelSaveRequest::is_ready(void) const;

3510 11 get_success 0 4 3933 29 ModelSaveRequest::get_success 0 1 1773 394
////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_success
//       Access: Published
//  Description: Returns the true if the model was saved successfully,
//               false otherwise.  It is an error to call this unless
//               is_ready() returns true.
////////////////////////////////////////////////////////////////////
54
inline bool ModelSaveRequest::get_success(void) const;

3511 14 get_class_type 0 4 3933 32 ModelSaveRequest::get_class_type 0 1 1774 0
57
static TypeHandle ModelSaveRequest::get_class_type(void);

3512 17 ~ModelSaveRequest 0 4 3933 35 ModelSaveRequest::~ModelSaveRequest 0 0 0
42
ModelSaveRequest::~ModelSaveRequest(void);

3513 18 NodePathCollection 0 4 3934 38 NodePathCollection::NodePathCollection 0 3 1775 1776 1777 927
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::Copy Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::Constructor
//       Access: Published
//  Description: This special constructor accepts a Python list of
//               NodePaths.  Since this constructor accepts a generic
//               PyObject *, it should be the last constructor listed
//               in the class record.
////////////////////////////////////////////////////////////////////
193
NodePathCollection::NodePathCollection(void);
NodePathCollection::NodePathCollection(NodePathCollection const &copy);
NodePathCollection::NodePathCollection(PyObject *self, PyObject *sequence);

3514 10 operator = 0 4 3934 30 NodePathCollection::operator = 0 1 1778 243
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::Copy Assignment Operator
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
68
void NodePathCollection::operator =(NodePathCollection const &copy);

3515 19 ~NodePathCollection 0 4 3934 39 NodePathCollection::~NodePathCollection 0 0 723
// Filename: nodePathCollection.I
// Created by:  drose (06Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::Destructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
53
inline NodePathCollection::~NodePathCollection(void);

3516 10 __reduce__ 0 4 3934 30 NodePathCollection::__reduce__ 0 1 1779 0
63
PyObject *NodePathCollection::__reduce__(PyObject *self) const;

3517 8 add_path 0 4 3934 28 NodePathCollection::add_path 0 1 1780 281
// HAVE_PYTHON
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::add_path
//       Access: Published
//  Description: Adds a new NodePath to the collection.
////////////////////////////////////////////////////////////////////
61
void NodePathCollection::add_path(NodePath const &node_path);

3518 11 remove_path 0 4 3934 31 NodePathCollection::remove_path 0 1 1781 402
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::remove_path
//       Access: Published
//  Description: Removes the indicated NodePath from the collection.
//               Returns true if the path was removed, false if it was
//               not a member of the collection.
////////////////////////////////////////////////////////////////////
64
bool NodePathCollection::remove_path(NodePath const &node_path);

3519 14 add_paths_from 0 4 3934 34 NodePathCollection::add_paths_from 0 1 1782 472
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::add_paths_from
//       Access: Published
//  Description: Adds all the NodePaths indicated in the other
//               collection to this path.  The other paths are simply
//               appended to the end of the paths in this list;
//               duplicates are not automatically removed.
////////////////////////////////////////////////////////////////////
73
void NodePathCollection::add_paths_from(NodePathCollection const &other);

3520 17 remove_paths_from 0 4 3934 37 NodePathCollection::remove_paths_from 0 1 1783 335
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::remove_paths_from
//       Access: Published
//  Description: Removes from this collection all of the NodePaths
//               listed in the other collection.
////////////////////////////////////////////////////////////////////
76
void NodePathCollection::remove_paths_from(NodePathCollection const &other);

3521 22 remove_duplicate_paths 0 4 3934 42 NodePathCollection::remove_duplicate_paths 0 1 1784 473
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::remove_duplicate_paths
//       Access: Published
//  Description: Removes any duplicate entries of the same NodePaths
//               on this collection.  If a NodePath appears multiple
//               times, the first appearance is retained; subsequent
//               appearances are removed.
////////////////////////////////////////////////////////////////////
54
void NodePathCollection::remove_duplicate_paths(void);

3522 8 has_path 0 4 3934 28 NodePathCollection::has_path 0 1 1785 328
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::has_path
//       Access: Published
//  Description: Returns true if the indicated NodePath appears in
//               this collection, false otherwise.
////////////////////////////////////////////////////////////////////
62
bool NodePathCollection::has_path(NodePath const &path) const;

3523 5 clear 0 4 3934 25 NodePathCollection::clear 0 1 1786 267
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::clear
//       Access: Published
//  Description: Removes all NodePaths from the collection.
////////////////////////////////////////////////////////////////////
37
void NodePathCollection::clear(void);

3524 8 is_empty 0 4 3934 28 NodePathCollection::is_empty 0 1 1787 319
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::is_empty
//       Access: Published
//  Description: Returns true if there are no NodePaths in the
//               collection, false otherwise.
////////////////////////////////////////////////////////////////////
46
bool NodePathCollection::is_empty(void) const;

3525 13 get_num_paths 0 4 3934 33 NodePathCollection::get_num_paths 0 1 1788 283
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::get_num_paths
//       Access: Published
//  Description: Returns the number of NodePaths in the collection.
////////////////////////////////////////////////////////////////////
50
int NodePathCollection::get_num_paths(void) const;

3526 8 get_path 0 4 3934 28 NodePathCollection::get_path 0 1 1789 271
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::get_path
//       Access: Published
//  Description: Returns the nth NodePath in the collection.
////////////////////////////////////////////////////////////////////
55
NodePath NodePathCollection::get_path(int index) const;

3527 11 operator [] 0 4 3934 31 NodePathCollection::operator [] 0 1 1790 391
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::operator []
//       Access: Published
//  Description: Returns the nth NodePath in the collection.  This is
//               the same as get_path(), but it may be a more
//               convenient way to access it.
////////////////////////////////////////////////////////////////////
58
NodePath NodePathCollection::operator [](int index) const;

3528 4 size 0 4 3934 24 NodePathCollection::size 0 1 1791 331
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::size
//       Access: Published
//  Description: Returns the number of paths in the collection.  This
//               is the same thing as get_num_paths().
////////////////////////////////////////////////////////////////////
41
int NodePathCollection::size(void) const;

3529 11 operator += 0 4 3934 31 NodePathCollection::operator += 0 1 1792 279
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::operator +=
//       Access: Published
//  Description: Appends the other list onto the end of this one.
////////////////////////////////////////////////////////////////////
77
inline void NodePathCollection::operator +=(NodePathCollection const &other);

3530 10 operator + 0 4 3934 30 NodePathCollection::operator + 0 1 1793 324
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::operator +
//       Access: Published
//  Description: Returns a NodePathCollection representing the
//               concatenation of the two lists.
////////////////////////////////////////////////////////////////////
96
inline NodePathCollection NodePathCollection::operator +(NodePathCollection const &other) const;

3531 6 append 0 4 3934 26 NodePathCollection::append 0 1 1794 449
// Method names to satisfy Python's conventions.

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::append
//       Access: Published
//  Description: Adds a new NodePath to the collection.  This method
//               duplicates the add_path() method; it is provided to
//               satisfy Python's naming convention.
////////////////////////////////////////////////////////////////////
66
inline void NodePathCollection::append(NodePath const &node_path);

3532 6 extend 0 4 3934 26 NodePathCollection::extend 0 1 1795 452
// Method names to satisfy Python's conventions.

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::extend
//       Access: Published
//  Description: Appends the other list onto the end of this one.
//               This method duplicates the += operator; it is
//               provided to satisfy Python's naming convention.
////////////////////////////////////////////////////////////////////
72
inline void NodePathCollection::extend(NodePathCollection const &other);

3533 2 ls 0 4 3934 22 NodePathCollection::ls 0 3 1796 1797 1798 728
// Handy operations on many NodePaths at once.

// Handy operations on many NodePaths at once.

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::ls
//       Access: Published
//  Description: Lists all the nodes at and below each node in the
//               collection hierarchically.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::ls
//       Access: Published
//  Description: Lists all the nodes at and below each node in the
//               collection hierarchically.
////////////////////////////////////////////////////////////////////
120
inline void NodePathCollection::ls(void) const;
void NodePathCollection::ls(ostream &out, int indent_level = (0)) const;

3534 16 find_all_matches 0 4 3934 36 NodePathCollection::find_all_matches 0 1 1799 447
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::find_all_matches
//       Access: Published
//  Description: Returns the complete set of all NodePaths that begin
//               with any NodePath in this collection and can be
//               extended by path.  The shortest paths will be listed
//               first.
////////////////////////////////////////////////////////////////////
96
NodePathCollection NodePathCollection::find_all_matches(basic_string< char > const &path) const;

3535 11 reparent_to 0 4 3934 31 NodePathCollection::reparent_to 0 1 1800 316
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::reparent_to
//       Access: Published
//  Description: Reparents all the NodePaths in the collection to the
//               indicated node.
////////////////////////////////////////////////////////////////////
60
void NodePathCollection::reparent_to(NodePath const &other);

3536 15 wrt_reparent_to 0 4 3934 35 NodePathCollection::wrt_reparent_to 0 1 1801 402
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::wrt_reparent_to
//       Access: Published
//  Description: Reparents all the NodePaths in the collection to the
//               indicated node, adjusting each transform so as not to
//               move in world coordinates.
////////////////////////////////////////////////////////////////////
64
void NodePathCollection::wrt_reparent_to(NodePath const &other);

3537 4 show 0 4 3934 24 NodePathCollection::show 0 1 1802 262
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::show
//       Access: Published
//  Description: Shows all NodePaths in the collection.
////////////////////////////////////////////////////////////////////
36
void NodePathCollection::show(void);

3538 4 hide 0 4 3934 24 NodePathCollection::hide 0 1 1803 262
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::show
//       Access: Published
//  Description: Hides all NodePaths in the collection.
////////////////////////////////////////////////////////////////////
36
void NodePathCollection::hide(void);

3539 5 stash 0 4 3934 25 NodePathCollection::stash 0 1 1804 265
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::stash
//       Access: Published
//  Description: Stashes all NodePaths in the collection.
////////////////////////////////////////////////////////////////////
37
void NodePathCollection::stash(void);

3540 7 unstash 0 4 3934 27 NodePathCollection::unstash 0 1 1805 269
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::unstash
//       Access: Published
//  Description: Unstashes all NodePaths in the collection.
////////////////////////////////////////////////////////////////////
39
void NodePathCollection::unstash(void);

3541 6 detach 0 4 3934 26 NodePathCollection::detach 0 1 1806 267
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::detach
//       Access: Published
//  Description: Detaches all NodePaths in the collection.
////////////////////////////////////////////////////////////////////
38
void NodePathCollection::detach(void);

3542 16 get_collide_mask 0 4 3934 36 NodePathCollection::get_collide_mask 0 1 1807 610
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::get_collide_mask
//       Access: Published
//  Description: Returns the union of all of the into_collide_masks
//               for nodes at this level and below.  This is the same
//               thing as node()->get_net_collide_mask().
//
//               If you want to return what the into_collide_mask of
//               this node itself is, without regard to its children,
//               use node()->get_into_collide_mask().
////////////////////////////////////////////////////////////////////
77
BitMask< unsigned int, 32 > NodePathCollection::get_collide_mask(void) const;

3543 16 set_collide_mask 0 4 3934 36 NodePathCollection::set_collide_mask 0 3 1808 1809 1810 681
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_collide_mask
//       Access: Published
//  Description: Recursively applies the indicated CollideMask to the
//               into_collide_masks for all nodes at this level and
//               below.
//
//               The default is to change all bits, but if
//               bits_to_change is not all bits on, then only the bits
//               that are set in bits_to_change are modified, allowing
//               this call to change only a subset of the bits in the
//               subgraph.
////////////////////////////////////////////////////////////////////
174
void NodePathCollection::set_collide_mask(BitMask< unsigned int, 32 > new_mask, BitMask< unsigned int, 32 > bits_to_change = ((all_on())), TypeHandle node_type = ((none())));

3544 17 calc_tight_bounds 0 4 3934 37 NodePathCollection::calc_tight_bounds 0 1 1811 682
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::calc_tight_bounds
//       Access: Published
//  Description: Calculates the minimum and maximum vertices of all
//               Geoms at these NodePath's bottom nodes and below
//               This is a tight bounding box; it will generally be
//               tighter than the bounding volume returned by
//               get_bounds() (but it is more expensive to compute).
//
//               The return value is true if any points are within the
//               bounding volume, or false if none are.
////////////////////////////////////////////////////////////////////
91
bool NodePathCollection::calc_tight_bounds(LPoint3f &min_point, LPoint3f &max_point) const;

3545 16 get_tight_bounds 0 4 3934 36 NodePathCollection::get_tight_bounds 0 1 1812 0
59
PyObject *NodePathCollection::get_tight_bounds(void) const;

3546 11 set_texture 0 4 3934 31 NodePathCollection::set_texture 0 4 1813 1814 1815 1816 1355
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the default texture stage.
//
//               This is the deprecated single-texture variant of this
//               method; it is now superceded by set_texture() that
//               accepts a stage and texture.  However, this method
//               may be used in the presence of multitexture if you
//               just want to adjust the default stage.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the indicated multitexture
//               stage.  If there are multiple texture stages
//               specified (possibly on multiple different nodes at
//               different levels), they will all be applied to
//               geometry together, according to the stage
//               specification set up in the TextureStage object.
////////////////////////////////////////////////////////////////////
164
void NodePathCollection::set_texture(Texture *tex, int priority = (0));
void NodePathCollection::set_texture(TextureStage *stage, Texture *tex, int priority = (0));

3547 15 set_texture_off 0 4 3934 35 NodePathCollection::set_texture_off 0 4 1817 1818 1819 1820 1202
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on any stage.  This is different
//               from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on the indicated stage.  This is
//               different from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
////////////////////////////////////////////////////////////////////
144
void NodePathCollection::set_texture_off(int priority = (0));
void NodePathCollection::set_texture_off(TextureStage *stage, int priority = (0));

3548 9 set_color 0 4 3934 29 NodePathCollection::set_color 0 5 1821 1822 1823 1824 1825 536
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color
//       Access: Published
//  Description: Colors all NodePaths in the collection
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color
//       Access: Published
//  Description: Colors all NodePaths in the collection
////////////////////////////////////////////////////////////////////
185
inline void NodePathCollection::set_color(float r, float g, float b, float a = (1), int priority = (0));
void NodePathCollection::set_color(LVecBase4f const &color, int priority = (0));

3549 15 set_color_scale 0 4 3934 35 NodePathCollection::set_color_scale 0 5 1826 1827 1828 1829 1830 696
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale is replaced.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale is replaced.
////////////////////////////////////////////////////////////////////
197
inline void NodePathCollection::set_color_scale(float r, float g, float b, float a = (1), int priority = (0));
void NodePathCollection::set_color_scale(LVecBase4f const &scale, int priority = (0));

3550 19 compose_color_scale 0 4 3934 39 NodePathCollection::compose_color_scale 0 5 1831 1832 1833 1834 1835 818
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::compose_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale, if any, is
//               multiplied by the specified color scale.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::compose_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale, if any, is
//               multiplied by the specified color scale.
////////////////////////////////////////////////////////////////////
205
inline void NodePathCollection::compose_color_scale(float r, float g, float b, float a = (1), int priority = (0));
void NodePathCollection::compose_color_scale(LVecBase4f const &scale, int priority = (0));

3551 10 set_attrib 0 4 3934 30 NodePathCollection::set_attrib 0 2 1836 1837 504
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_attrib
//       Access: Published
//  Description: Applies the indicated RenderAttrib to all NodePaths
//               in the collection.  An effort is made to apply the
//               attrib to many NodePaths as quickly as possible;
//               redundant RenderState compositions are not
//               duplicated.
////////////////////////////////////////////////////////////////////
84
void NodePathCollection::set_attrib(RenderAttrib const *attrib, int priority = (0));

3552 6 output 0 4 3934 26 NodePathCollection::output 0 1 1838 336
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::output
//       Access: Published
//  Description: Writes a brief one-line description of the
//               NodePathCollection to the indicated output stream.
////////////////////////////////////////////////////////////////////
52
void NodePathCollection::output(ostream &out) const;

3553 5 write 0 4 3934 25 NodePathCollection::write 0 2 1839 1840 340
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               NodePathCollection to the indicated output stream.
////////////////////////////////////////////////////////////////////
75
void NodePathCollection::write(ostream &out, int indent_level = (0)) const;

3554 4 make 0 4 3935 19 TextureAttrib::make 0 2 1841 1842 1089
// These methods are used to create a simple, single-textured layer.
// For multitexture, use the multitexture interfaces, further below.

// The following methods define the new multitexture mode for
// TextureAttrib.  Each TextureAttrib can add or remove individual
// texture stages from the complete set of textures that are to be
// applied; this is similar to the mechanism of LightAttrib.

////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make
//       Access: Published, Static
//  Description: Constructs a new TextureAttrib object suitable for
//               rendering the indicated texture onto geometry, using
//               the default TextureStage.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make
//       Access: Published, Static
//  Description: Constructs a new TextureAttrib object that does
//               nothing.
////////////////////////////////////////////////////////////////////
137
static ConstPointerTo< RenderAttrib > TextureAttrib::make(Texture *tex);
static ConstPointerTo< RenderAttrib > TextureAttrib::make(void);

3555 8 make_off 0 4 3935 23 TextureAttrib::make_off 0 1 1843 468
// These methods are used to create a simple, single-textured layer.
// For multitexture, use the multitexture interfaces, further below.

////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new TextureAttrib object suitable for
//               rendering untextured geometry.
////////////////////////////////////////////////////////////////////
68
static ConstPointerTo< RenderAttrib > TextureAttrib::make_off(void);

3556 12 make_default 0 4 3935 27 TextureAttrib::make_default 0 1 1844 400
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
72
static ConstPointerTo< RenderAttrib > TextureAttrib::make_default(void);

3557 6 is_off 0 4 3935 21 TextureAttrib::is_off 0 1 1845 679
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::is_off
//       Access: Published
//  Description: Returns true if the TextureAttrib is an 'off'
//               TextureAttrib, indicating that it should disable
//               texturing.
//
//               If multitexture is in effect, a TextureAttrib may not
//               be strictly "on" or "off"; therefore, to get a more
//               precise answer to this question, you should consider
//               using has_all_off() or get_num_off_stages() or
//               has_off_stage() instead.
////////////////////////////////////////////////////////////////////
46
inline bool TextureAttrib::is_off(void) const;

3558 11 get_texture 0 4 3935 26 TextureAttrib::get_texture 0 1 1846 386
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_texture
//       Access: Published
//  Description: If the TextureAttrib is not an 'off' TextureAttrib,
//               returns the base-level texture that is associated.
//               Otherwise, return NULL.
////////////////////////////////////////////////////////////////////
55
inline Texture *TextureAttrib::get_texture(void) const;

3559 12 make_all_off 0 4 3935 27 TextureAttrib::make_all_off 0 1 1847 605
// The following methods define the new multitexture mode for
// TextureAttrib.  Each TextureAttrib can add or remove individual
// texture stages from the complete set of textures that are to be
// applied; this is similar to the mechanism of LightAttrib.

////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make_all_off
//       Access: Published, Static
//  Description: Constructs a new TextureAttrib object that turns off
//               all stages (and hence disables texturing).
////////////////////////////////////////////////////////////////////
72
static ConstPointerTo< RenderAttrib > TextureAttrib::make_all_off(void);

3560 17 get_num_on_stages 0 4 3935 32 TextureAttrib::get_num_on_stages 0 1 1848 314
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_num_on_stages
//       Access: Published
//  Description: Returns the number of stages that are turned on by
//               the attribute.
////////////////////////////////////////////////////////////////////
56
inline int TextureAttrib::get_num_on_stages(void) const;

3561 12 get_on_stage 0 4 3935 27 TextureAttrib::get_on_stage 0 1 1849 317
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_on_stage
//       Access: Published
//  Description: Returns the nth stage turned on by the attribute,
//               sorted in render order.
////////////////////////////////////////////////////////////////////
62
inline TextureStage *TextureAttrib::get_on_stage(int n) const;

3562 20 get_num_on_ff_stages 0 4 3935 35 TextureAttrib::get_num_on_ff_stages 0 1 1850 410
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_num_on_ff_stages
//       Access: Published
//  Description: Returns the number of on-stages that are relevant
//               to the classic fixed function pipeline.  This excludes 
//               texture stages such as normal maps.
////////////////////////////////////////////////////////////////////
59
inline int TextureAttrib::get_num_on_ff_stages(void) const;

3563 15 get_on_ff_stage 0 4 3935 30 TextureAttrib::get_on_ff_stage 0 1 1851 480
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_render_ff_stage
//       Access: Published
//  Description: Returns the nth stage turned on by the attribute,
//               sorted in render order, including only those relevant
//               to the classic fixed function pipeline.  This excludes 
//               texture stages such as normal maps.
////////////////////////////////////////////////////////////////////
65
inline TextureStage *TextureAttrib::get_on_ff_stage(int n) const;

3564 15 get_ff_tc_index 0 4 3935 30 TextureAttrib::get_ff_tc_index 0 1 1852 610
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_ff_tc_index
//       Access: Published
//  Description: For each TextureStage listed in get_on_ff_stage(),
//               this returns a unique index number for the texture
//               coordinate name used by that TextureStage.  It is
//               guaranteed to remain the same index number for each
//               texcoord name (for a given set of TextureStages),
//               even if the texture render order changes.
////////////////////////////////////////////////////////////////////
55
inline int TextureAttrib::get_ff_tc_index(int n) const;

3565 12 has_on_stage 0 4 3935 27 TextureAttrib::has_on_stage 0 1 1853 324
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::has_on_stage
//       Access: Published
//  Description: Returns true if the indicated stage is turned on by
//               the attrib, false otherwise.
////////////////////////////////////////////////////////////////////
67
inline bool TextureAttrib::has_on_stage(TextureStage *stage) const;

3566 14 get_on_texture 0 4 3935 29 TextureAttrib::get_on_texture 0 1 1854 339
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_on_texture
//       Access: Published
//  Description: Returns the texture associated with the indicated
//               stage, or NULL if no texture is associated.
////////////////////////////////////////////////////////////////////
73
inline Texture *TextureAttrib::get_on_texture(TextureStage *stage) const;

3567 21 get_on_stage_override 0 4 3935 36 TextureAttrib::get_on_stage_override 0 1 1855 316
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_on_stage_override
//       Access: Published
//  Description: Returns the override value associated with the
//               indicated stage.
////////////////////////////////////////////////////////////////////
75
inline int TextureAttrib::get_on_stage_override(TextureStage *stage) const;

3568 13 find_on_stage 0 4 3935 28 TextureAttrib::find_on_stage 0 1 1856 390
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::find_on_stage
//       Access: Published
//  Description: Returns the index number of the indicated
//               TextureStage within the list of on_stages, or -1 if
//               the indicated stage is not listed.
////////////////////////////////////////////////////////////////////
66
int TextureAttrib::find_on_stage(TextureStage const *stage) const;

3569 18 get_num_off_stages 0 4 3935 33 TextureAttrib::get_num_off_stages 0 1 1857 316
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_num_off_stages
//       Access: Published
//  Description: Returns the number of stages that are turned off by
//               the attribute.
////////////////////////////////////////////////////////////////////
57
inline int TextureAttrib::get_num_off_stages(void) const;

3570 13 get_off_stage 0 4 3935 28 TextureAttrib::get_off_stage 0 1 1858 332
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_off_stage
//       Access: Published
//  Description: Returns the nth stage turned off by the attribute,
//               sorted in arbitrary (pointer) order.
////////////////////////////////////////////////////////////////////
63
inline TextureStage *TextureAttrib::get_off_stage(int n) const;

3571 13 has_off_stage 0 4 3935 28 TextureAttrib::has_off_stage 0 1 1859 326
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::has_off_stage
//       Access: Published
//  Description: Returns true if the indicated stage is turned off by
//               the attrib, false otherwise.
////////////////////////////////////////////////////////////////////
68
inline bool TextureAttrib::has_off_stage(TextureStage *stage) const;

3572 11 has_all_off 0 4 3935 26 TextureAttrib::has_all_off 0 1 1860 328
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::has_all_off
//       Access: Published
//  Description: Returns true if this attrib turns off all stages
//               (although it may also turn some on).
////////////////////////////////////////////////////////////////////
51
inline bool TextureAttrib::has_all_off(void) const;

3573 11 is_identity 0 4 3935 26 TextureAttrib::is_identity 0 1 1861 331
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::is_identity
//       Access: Published
//  Description: Returns true if this is an identity attrib: it does
//               not change the set of stages in use.
////////////////////////////////////////////////////////////////////
51
inline bool TextureAttrib::is_identity(void) const;

3574 12 add_on_stage 0 4 3935 27 TextureAttrib::add_on_stage 0 2 1862 1863 392
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::add_on_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage added to the list of stages
//               turned on by this attrib.
////////////////////////////////////////////////////////////////////
120
ConstPointerTo< RenderAttrib > TextureAttrib::add_on_stage(TextureStage *stage, Texture *tex, int override = (0)) const;

3575 15 remove_on_stage 0 4 3935 30 TextureAttrib::remove_on_stage 0 1 1864 399
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::remove_on_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage removed from the list of
//               stages turned on by this attrib.
////////////////////////////////////////////////////////////////////
89
ConstPointerTo< RenderAttrib > TextureAttrib::remove_on_stage(TextureStage *stage) const;

3576 13 add_off_stage 0 4 3935 28 TextureAttrib::add_off_stage 0 2 1865 1866 394
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::add_off_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage added to the list of stages
//               turned off by this attrib.
////////////////////////////////////////////////////////////////////
107
ConstPointerTo< RenderAttrib > TextureAttrib::add_off_stage(TextureStage *stage, int override = (0)) const;

3577 16 remove_off_stage 0 4 3935 31 TextureAttrib::remove_off_stage 0 1 1867 401
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::remove_off_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage removed from the list of
//               stages turned off by this attrib.
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< RenderAttrib > TextureAttrib::remove_off_stage(TextureStage *stage) const;

3578 20 unify_texture_stages 0 4 3935 35 TextureAttrib::unify_texture_stages 0 1 1868 451
////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::unify_texture_stages
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with any included TextureAttribs that happen to have
//               the same name as the given object replaced with the
//               object.
////////////////////////////////////////////////////////////////////
94
ConstPointerTo< RenderAttrib > TextureAttrib::unify_texture_stages(TextureStage *stage) const;

3579 14 get_class_slot 0 4 3935 29 TextureAttrib::get_class_slot 0 1 1869 0
47
static int TextureAttrib::get_class_slot(void);

3580 14 get_class_type 0 4 3935 29 TextureAttrib::get_class_type 0 1 1870 0
54
static TypeHandle TextureAttrib::get_class_type(void);

3581 14 ~TextureAttrib 0 4 3935 29 TextureAttrib::~TextureAttrib 0 0 0
36
TextureAttrib::~TextureAttrib(void);

3582 4 make 0 4 3936 18 TexGenAttrib::make 0 2 1871 1872 612
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexGenAttrib that generates no stages at
//               all.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexGenAttrib that generates just the
//               indicated stage.
////////////////////////////////////////////////////////////////////
173
static ConstPointerTo< RenderAttrib > TexGenAttrib::make(void);
static ConstPointerTo< RenderAttrib > TexGenAttrib::make(TextureStage *stage, RenderAttrib::TexGenMode mode);

3583 12 make_default 0 4 3936 26 TexGenAttrib::make_default 0 1 1873 399
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
71
static ConstPointerTo< RenderAttrib > TexGenAttrib::make_default(void);

3584 9 add_stage 0 4 3936 23 TexGenAttrib::add_stage 0 3 1874 1875 1876 1581
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::add_stage
//       Access: Published, Static
//  Description: Returns a new TexGenAttrib just like this one,
//               with the indicated generation mode for the given
//               stage.  If this stage already exists, its mode is
//               replaced.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::add_stage
//       Access: Published, Static
//  Description: Returns a new TexGenAttrib just like this one,
//               with the indicated generation mode for the given
//               stage.  If this stage already exists, its mode is
//               replaced.
//
//               This variant also accepts source_name and light,
//               which are only meaningful if mode is M_light_vector.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::add_stage
//       Access: Published, Static
//  Description: Returns a new TexGenAttrib just like this one,
//               with the indicated generation mode for the given
//               stage.  If this stage already exists, its mode is
//               replaced.
//
//               This variant also accepts constant_value, which is
//               only meaningful if mode is M_constant.
////////////////////////////////////////////////////////////////////
437
ConstPointerTo< RenderAttrib > TexGenAttrib::add_stage(TextureStage *stage, RenderAttrib::TexGenMode mode) const;
ConstPointerTo< RenderAttrib > TexGenAttrib::add_stage(TextureStage *stage, RenderAttrib::TexGenMode mode, basic_string< char > const &source_name, NodePath const &light) const;
ConstPointerTo< RenderAttrib > TexGenAttrib::add_stage(TextureStage *stage, RenderAttrib::TexGenMode mode, LPoint3f const &constant_value) const;

3585 12 remove_stage 0 4 3936 26 TexGenAttrib::remove_stage 0 1 1877 331
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::remove_stage
//       Access: Published, Static
//  Description: Returns a new TexGenAttrib just like this one,
//               with the indicated stage removed.
////////////////////////////////////////////////////////////////////
85
ConstPointerTo< RenderAttrib > TexGenAttrib::remove_stage(TextureStage *stage) const;

3586 8 is_empty 0 4 3936 22 TexGenAttrib::is_empty 0 1 1878 323
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::is_empty
//       Access: Published
//  Description: Returns true if no stages are defined in the
//               TexGenAttrib, false if at least one is.
////////////////////////////////////////////////////////////////////
40
bool TexGenAttrib::is_empty(void) const;

3587 9 has_stage 0 4 3936 23 TexGenAttrib::has_stage 0 1 1879 400
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::has_stage
//       Access: Published
//  Description: Returns true if there is a mode associated with
//               the indicated stage, or false otherwise (in which
//               case get_transform(stage) will return M_off).
////////////////////////////////////////////////////////////////////
56
bool TexGenAttrib::has_stage(TextureStage *stage) const;

3588 8 get_mode 0 4 3936 22 TexGenAttrib::get_mode 0 1 1880 384
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_mode
//       Access: Published
//  Description: Returns the generation mode associated with
//               the named texture stage, or M_off if
//               nothing is associated with the indicated stage.
////////////////////////////////////////////////////////////////////
75
RenderAttrib::TexGenMode TexGenAttrib::get_mode(TextureStage *stage) const;

3589 22 has_gen_texcoord_stage 0 4 3936 36 TexGenAttrib::has_gen_texcoord_stage 0 1 1881 477
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::has_gen_texcoord_stage
//       Access: Published
//  Description: Returns true if the indicated TextureStage will have
//               texture coordinates generated for it automatically
//               (and thus there is no need to upload the texture
//               coordinates encoded in the vertices).
////////////////////////////////////////////////////////////////////
69
bool TexGenAttrib::has_gen_texcoord_stage(TextureStage *stage) const;

3590 15 get_source_name 0 4 3936 29 TexGenAttrib::get_source_name 0 1 1882 644
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_source_name
//       Access: Published
//  Description: Returns the source name associated with the named
//               texture stage, or the empty string if no name is
//               associated with the indicated stage.  This is only
//               meaningful if the mode is M_light_vector, in which
//               case it indicates the name of the source texture
//               coordinate set from which the tangent and binormal
//               are derived.
////////////////////////////////////////////////////////////////////
78
basic_string< char > TexGenAttrib::get_source_name(TextureStage *stage) const;

3591 9 get_light 0 4 3936 23 TexGenAttrib::get_light 0 1 1883 462
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_light
//       Access: Published
//  Description: Returns the Light associated with the named texture
//               stage, or the empty NodePath if no light is
//               associated with the indicated stage.  This is only
//               meaningful if the mode is M_light_vector.
////////////////////////////////////////////////////////////////////
60
NodePath TexGenAttrib::get_light(TextureStage *stage) const;

3592 18 get_constant_value 0 4 3936 32 TexGenAttrib::get_constant_value 0 1 1884 385
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_constant_value
//       Access: Published
//  Description: Returns the constant value associated with the named
//               texture stage.  This is only meaningful if the mode
//               is M_constant.
////////////////////////////////////////////////////////////////////
76
LPoint3f const &TexGenAttrib::get_constant_value(TextureStage *stage) const;

3593 18 get_geom_rendering 0 4 3936 32 TexGenAttrib::get_geom_rendering 0 1 1885 448
////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this TexGenAttrib is
//               applied to a geom which includes the indicated
//               geom_rendering bits.
////////////////////////////////////////////////////////////////////
70
inline int TexGenAttrib::get_geom_rendering(int geom_rendering) const;

3594 14 get_class_slot 0 4 3936 28 TexGenAttrib::get_class_slot 0 1 1886 0
46
static int TexGenAttrib::get_class_slot(void);

3595 14 get_class_type 0 4 3936 28 TexGenAttrib::get_class_type 0 1 1887 0
53
static TypeHandle TexGenAttrib::get_class_type(void);

3596 12 OccluderNode 0 4 3937 26 OccluderNode::OccluderNode 0 1 1888 770
////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::Constructor
//       Access: Public
//  Description: The default constructor creates a default occlusion
//               polygon in the XZ plane (or XY plane in a y-up
//               coordinate system).  Use the normal Panda set_pos(),
//               set_hpr(), set_scale() to position it appropriately,
//               or replace the vertices with set_vertices().
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::Copy Constructor
//       Access: Protected
//  Description:
////////////////////////////////////////////////////////////////////
61
OccluderNode::OccluderNode(basic_string< char > const &name);

3597 16 set_double_sided 0 4 3937 30 OccluderNode::set_double_sided 0 1 1889 281
////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::set_double_sided
//       Access: Published
//  Description: If true, the back-face will also be used to occlude
////////////////////////////////////////////////////////////////////
55
inline void OccluderNode::set_double_sided(bool value);

3598 15 is_double_sided 0 4 3937 29 OccluderNode::is_double_sided 0 1 1890 258
////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::is_double_sided
//       Access: Published
//  Description: Is this occluder double-sided
////////////////////////////////////////////////////////////////////
48
inline bool OccluderNode::is_double_sided(void);

3599 16 set_min_coverage 0 4 3937 30 OccluderNode::set_min_coverage 0 1 1891 465
////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::set_min_coverage
//       Access: Published
//  Description: Minimum screen coverage needed before occluder used.
//               Range should be 0 to 1. For example, setting to 0.2
//               would mean that the occluder needs to cover 20% of
//               the screen to be considered.
////////////////////////////////////////////////////////////////////
56
inline void OccluderNode::set_min_coverage(float value);

3600 16 get_min_coverage 0 4 3937 30 OccluderNode::get_min_coverage 0 1 1892 266
////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::get_min_coverage
//       Access: Published
//  Description: Returns the minimum screen coverage.
////////////////////////////////////////////////////////////////////
50
inline float OccluderNode::get_min_coverage(void);

3601 12 set_vertices 0 4 3937 26 OccluderNode::set_vertices 0 1 1893 906
// Filename: occluderNode.I
// Created by:  jenes (11Mar11)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::set_vertices
//       Access: Published
//  Description: Replaces the four vertices of the occluder polygon.
//               The vertices should be defined in a counterclockwise
//               orientation when looking at the face of the occluder.
////////////////////////////////////////////////////////////////////
119
inline void OccluderNode::set_vertices(LPoint3f const &v0, LPoint3f const &v1, LPoint3f const &v2, LPoint3f const &v3);

3602 16 get_num_vertices 0 4 3937 30 OccluderNode::get_num_vertices 0 1 1894 332
////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::get_num_vertices
//       Access: Published
//  Description: Returns the number of vertices in the occluder
//               polygon.  This should always return 4.
////////////////////////////////////////////////////////////////////
54
inline int OccluderNode::get_num_vertices(void) const;

3603 10 get_vertex 0 4 3937 24 OccluderNode::get_vertex 0 1 1895 271
////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::get_vertex
//       Access: Published
//  Description: Returns the nth vertex of the occluder polygon.
////////////////////////////////////////////////////////////////////
61
inline LPoint3f const &OccluderNode::get_vertex(int n) const;

3604 14 get_class_type 0 4 3937 28 OccluderNode::get_class_type 0 1 1896 0
53
static TypeHandle OccluderNode::get_class_type(void);

3605 4 make 0 4 3938 20 OccluderEffect::make 0 1 1897 302
////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::make
//       Access: Published, Static
//  Description: Constructs a new OccluderEffect object that does
//               nothing.
////////////////////////////////////////////////////////////////////
65
static ConstPointerTo< RenderEffect > OccluderEffect::make(void);

3606 20 get_num_on_occluders 0 4 3938 36 OccluderEffect::get_num_on_occluders 0 1 1898 319
////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::get_num_on_occluders
//       Access: Published
//  Description: Returns the number of occluders that are enabled by
//               the effectute.
////////////////////////////////////////////////////////////////////
60
inline int OccluderEffect::get_num_on_occluders(void) const;

3607 15 get_on_occluder 0 4 3938 31 OccluderEffect::get_on_occluder 0 1 1899 322
////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::get_on_occluder
//       Access: Published
//  Description: Returns the nth occluder enabled by the effectute,
//               sorted in render order.
////////////////////////////////////////////////////////////////////
61
inline NodePath OccluderEffect::get_on_occluder(int n) const;

3608 15 has_on_occluder 0 4 3938 31 OccluderEffect::has_on_occluder 0 1 1900 329
////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::has_on_occluder
//       Access: Published
//  Description: Returns true if the indicated occluder is enabled by
//               the effect, false otherwise.
////////////////////////////////////////////////////////////////////
76
inline bool OccluderEffect::has_on_occluder(NodePath const &occluder) const;

3609 11 is_identity 0 4 3938 27 OccluderEffect::is_identity 0 1 1901 335
////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::is_identity
//       Access: Published
//  Description: Returns true if this is an identity effect: it does
//               not change the set of occluders in use.
////////////////////////////////////////////////////////////////////
52
inline bool OccluderEffect::is_identity(void) const;

3610 15 add_on_occluder 0 4 3938 31 OccluderEffect::add_on_occluder 0 1 1902 401
////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::add_on_occluder
//       Access: Published
//  Description: Returns a new OccluderEffect, just like this one, but
//               with the indicated occluder added to the list of occluders
//               enabled by this effect.
////////////////////////////////////////////////////////////////////
95
ConstPointerTo< RenderEffect > OccluderEffect::add_on_occluder(NodePath const &occluder) const;

3611 18 remove_on_occluder 0 4 3938 34 OccluderEffect::remove_on_occluder 0 1 1903 408
////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::remove_on_occluder
//       Access: Published
//  Description: Returns a new OccluderEffect, just like this one, but
//               with the indicated occluder removed from the list of
//               occluders enabled by this effect.
////////////////////////////////////////////////////////////////////
98
ConstPointerTo< RenderEffect > OccluderEffect::remove_on_occluder(NodePath const &occluder) const;

3612 14 get_class_type 0 4 3938 30 OccluderEffect::get_class_type 0 1 1904 0
55
static TypeHandle OccluderEffect::get_class_type(void);

3613 15 ~OccluderEffect 0 4 3938 31 OccluderEffect::~OccluderEffect 0 0 0
38
OccluderEffect::~OccluderEffect(void);

3614 13 PolylightNode 0 4 3939 28 PolylightNode::PolylightNode 0 1 1905 303
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::Constructor
//       Access: Published
//  Description: Use PolylightNode() to construct a new
//               PolylightNode object.
////////////////////////////////////////////////////////////////////
63
PolylightNode::PolylightNode(basic_string< char > const &name);

3615 6 enable 0 4 3939 21 PolylightNode::enable 0 1 1906 238
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::enable
//       Access: Published
//  Description: Enable this light
////////////////////////////////////////////////////////////////////
40
inline void PolylightNode::enable(void);

3616 7 disable 0 4 3939 22 PolylightNode::disable 0 1 1907 240
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::disable
//       Access: Published
//  Description: Disable this light
////////////////////////////////////////////////////////////////////
41
inline void PolylightNode::disable(void);

3617 7 set_pos 0 4 3939 22 PolylightNode::set_pos 0 2 1908 1909 496
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_pos
//       Access: Published
//  Description: Set this light's position
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_pos
//       Access: Published
//  Description: Set this light's position
////////////////////////////////////////////////////////////////////
126
inline void PolylightNode::set_pos(LVecBase3f const &position);
inline void PolylightNode::set_pos(float x, float y, float z);

3618 7 get_pos 0 4 3939 22 PolylightNode::get_pos 0 1 1910 251
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_pos
//       Access: Published
//  Description: Returns position as a LPoint3
////////////////////////////////////////////////////////////////////
53
inline LVecBase3f PolylightNode::get_pos(void) const;

3619 9 set_color 0 4 3939 24 PolylightNode::set_color 0 2 1911 1912 524
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_color
//       Access: Published
//  Description: Set the light's color... 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_color
//       Access: Published
//  Description: Set the light's color... 3 floats between 0 and 1
////////////////////////////////////////////////////////////////////
127
inline void PolylightNode::set_color(LVecBase4f const &color);
inline void PolylightNode::set_color(float r, float g, float b);

3620 9 get_color 0 4 3939 24 PolylightNode::get_color 0 1 1913 259
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_color
//       Access: Published
//  Description: Returns the light's color as LColor
////////////////////////////////////////////////////////////////////
55
inline LVecBase4f PolylightNode::get_color(void) const;

3621 20 get_color_scenegraph 0 4 3939 35 PolylightNode::get_color_scenegraph 0 1 1914 443
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_color_scenegraph
//       Access: Published
//  Description: This differs from get_color in that when applying
//               the light color we need to make sure that a color
//               flattening external to the PolylightNode is not 
//               ignored.
////////////////////////////////////////////////////////////////////
66
inline LVecBase4f PolylightNode::get_color_scenegraph(void) const;

3622 10 set_radius 0 4 3939 25 PolylightNode::set_radius 0 1 1915 265
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_radius
//       Access: Published
//  Description: Set radius of the spherical light volume
////////////////////////////////////////////////////////////////////
47
inline void PolylightNode::set_radius(float r);

3623 10 get_radius 0 4 3939 25 PolylightNode::get_radius 0 1 1916 265
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_radius
//       Access: Published
//  Description: Get radius of the spherical light volume
////////////////////////////////////////////////////////////////////
51
inline float PolylightNode::get_radius(void) const;

3624 15 set_attenuation 0 4 3939 30 PolylightNode::set_attenuation 0 1 1917 267
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_attenuation
//       Access: Published
//  Description: Set ALINEAR or AQUADRATIC attenuation
////////////////////////////////////////////////////////////////////
81
inline bool PolylightNode::set_attenuation(PolylightNode::Attenuation_Type type);

3625 15 get_attenuation 0 4 3939 30 PolylightNode::get_attenuation 0 1 1918 274
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_attenuation
//       Access: Published
//  Description: Get "linear" or "quadratic" attenuation type
////////////////////////////////////////////////////////////////////
82
inline PolylightNode::Attenuation_Type PolylightNode::get_attenuation(void) const;

3626 6 set_a0 0 4 3939 21 PolylightNode::set_a0 0 1 1919 329
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_a0
//       Access: Published
//  Description: Set the quadratic attenuation factor a0
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
////////////////////////////////////////////////////////////////////
44
inline void PolylightNode::set_a0(float a0);

3627 6 set_a1 0 4 3939 21 PolylightNode::set_a1 0 1 1920 329
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_a1
//       Access: Published
//  Description: Set the quadratic attenuation factor a1
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
////////////////////////////////////////////////////////////////////
44
inline void PolylightNode::set_a1(float a1);

3628 6 set_a2 0 4 3939 21 PolylightNode::set_a2 0 1 1921 329
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_a2
//       Access: Published
//  Description: Set the quadratic attenuation factor a2
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
////////////////////////////////////////////////////////////////////
44
inline void PolylightNode::set_a2(float a2);

3629 6 get_a0 0 4 3939 21 PolylightNode::get_a0 0 1 1922 329
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_a0
//       Access: Published
//  Description: Get the quadratic attenuation factor a0
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
////////////////////////////////////////////////////////////////////
47
inline float PolylightNode::get_a0(void) const;

3630 6 get_a1 0 4 3939 21 PolylightNode::get_a1 0 1 1923 329
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_a1
//       Access: Published
//  Description: Get the quadratic attenuation factor a1
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
////////////////////////////////////////////////////////////////////
47
inline float PolylightNode::get_a1(void) const;

3631 6 get_a2 0 4 3939 21 PolylightNode::get_a2 0 1 1924 329
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_a2
//       Access: Published
//  Description: Get the quadratic attenuation factor a2
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
////////////////////////////////////////////////////////////////////
47
inline float PolylightNode::get_a2(void) const;

3632 10 flicker_on 0 4 3939 25 PolylightNode::flicker_on 0 1 1925 332
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::flicker_on
//       Access: Published
//  Description: Set flickering to true so at every loop this light's
//               color is varied based on flicker_type
////////////////////////////////////////////////////////////////////
44
inline void PolylightNode::flicker_on(void);

3633 11 flicker_off 0 4 3939 26 PolylightNode::flicker_off 0 1 1926 245
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::flicker_off
//       Access: Published
//  Description: Turn flickering off
////////////////////////////////////////////////////////////////////
45
inline void PolylightNode::flicker_off(void);

3634 13 is_flickering 0 4 3939 28 PolylightNode::is_flickering 0 1 1927 261
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::is_flickering
//       Access: Published
//  Description: Check is this light is flickering
////////////////////////////////////////////////////////////////////
53
inline bool PolylightNode::is_flickering(void) const;

3635 16 set_flicker_type 0 4 3939 31 PolylightNode::set_flicker_type 0 1 1928 446
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_flicker_type
//       Access: Published
//  Description: Flicker type can be FRANDOM or FSIN
//               At a later point there might be a FCUSTOM
//               Custom flicker will be a set of fix points recorded
//               by animating the light's intensity
////////////////////////////////////////////////////////////////////
78
inline bool PolylightNode::set_flicker_type(PolylightNode::Flicker_Type type);

3636 16 get_flicker_type 0 4 3939 31 PolylightNode::get_flicker_type 0 1 1929 254
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_flicker_type
//       Access: Published
//  Description: Returns FRANDOM or FSIN
////////////////////////////////////////////////////////////////////
79
inline PolylightNode::Flicker_Type PolylightNode::get_flicker_type(void) const;

3637 10 set_offset 0 4 3939 25 PolylightNode::set_offset 0 1 1930 387
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_offset
//       Access: Published
//  Description: Set the offset value for the random and sin
//               flicker variations... used to tweak the flicker
//               This value is added to the variation
////////////////////////////////////////////////////////////////////
52
inline void PolylightNode::set_offset(float offset);

3638 10 get_offset 0 4 3939 25 PolylightNode::get_offset 0 1 1931 304
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_offset
//       Access: Published
//  Description: Get the offset value for the random and sin
//               flicker variations
////////////////////////////////////////////////////////////////////
51
inline float PolylightNode::get_offset(void) const;

3639 9 set_scale 0 4 3939 24 PolylightNode::set_scale 0 1 1932 392
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_scale
//       Access: Published
//  Description: Set the scale value for the random and sin
//               flicker variations... used to tweak the flicker
//               This value is multiplied with the variation
////////////////////////////////////////////////////////////////////
50
inline void PolylightNode::set_scale(float scale);

3640 9 get_scale 0 4 3939 24 PolylightNode::get_scale 0 1 1933 302
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_scale
//       Access: Published
//  Description: Get the scale value for the random and sin
//               flicker variations
////////////////////////////////////////////////////////////////////
50
inline float PolylightNode::get_scale(void) const;

3641 13 set_step_size 0 4 3939 28 PolylightNode::set_step_size 0 1 1934 381
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_step_size
//       Access: Published
//  Description: Set the step size for the sin function in flicker
//               This is the increment size for the value supplied
//               to the sin function
////////////////////////////////////////////////////////////////////
53
inline void PolylightNode::set_step_size(float step);

3642 13 get_step_size 0 4 3939 28 PolylightNode::get_step_size 0 1 1935 381
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_step_size
//       Access: Published
//  Description: Get the step size for the sin function in flicker
//               This is the increment size for the value supplied
//               to the sin function
////////////////////////////////////////////////////////////////////
54
inline float PolylightNode::get_step_size(void) const;

3643 8 set_freq 0 4 3939 23 PolylightNode::set_freq 0 1 1936 251
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_freq
//       Access: Published
//  Description: Set frequency of sin flicker
////////////////////////////////////////////////////////////////////
45
inline void PolylightNode::set_freq(float f);

3644 8 get_freq 0 4 3939 23 PolylightNode::get_freq 0 1 1937 251
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_freq
//       Access: Published
//  Description: Get frequency of sin flicker
////////////////////////////////////////////////////////////////////
49
inline float PolylightNode::get_freq(void) const;

3645 11 operator == 0 4 3939 26 PolylightNode::operator == 0 1 1938 848
// Comparison methods

// Filename: PolylightNodeEffect.I
// Created by:  sshodhan (02Jun04)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::operator ==
//       Access: Published
//  Description: Returns true if the two lights are equivalent
//               that is, all their properties are same
////////////////////////////////////////////////////////////////////
73
inline bool PolylightNode::operator ==(PolylightNode const &other) const;

3646 11 operator != 0 4 3939 26 PolylightNode::operator != 0 1 1939 299
// Comparison methods

////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::operator !=
//       Access: Published
//  Description: Returns true if the two lights are not equivalent.
////////////////////////////////////////////////////////////////////
73
inline bool PolylightNode::operator !=(PolylightNode const &other) const;

3647 10 operator < 0 4 3939 25 PolylightNode::operator < 0 1 1940 541
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::operator <
//       Access: Published
//  Description: Returns true if this PolylightNode sorts before the other
//               one, false otherwise.  The sorting order of two
//               nonequivalent PolylightNodes is consistent but undefined,
//               and is useful only for storing PolylightNodes in a sorted
//               container like an STL set.
////////////////////////////////////////////////////////////////////
72
inline bool PolylightNode::operator <(PolylightNode const &other) const;

3648 10 compare_to 0 4 3939 25 PolylightNode::compare_to 0 1 1941 832
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::compare_to
//       Access: Published
//  Description: Returns a number less than zero if this PolylightNode
//               sorts before the other one, greater than zero if it
//               sorts after, or zero if they are equivalent.
//
//               Two PolylightNodes are considered equivalent if they
//               consist of exactly the same properties
//               Otherwise, they are different; different
//               PolylightNodes will be ranked in a consistent but
//               undefined ordering; the ordering is useful only for
//               placing the PolylightNodes in a sorted container like an
//               STL set.
////////////////////////////////////////////////////////////////////
64
int PolylightNode::compare_to(PolylightNode const &other) const;

3649 10 is_enabled 0 4 3939 25 PolylightNode::is_enabled 0 1 1942 259
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::is_enabled
//       Access: Published
//  Description: Is this light is enabled/disabled?
////////////////////////////////////////////////////////////////////
50
inline bool PolylightNode::is_enabled(void) const;

3650 14 get_class_type 0 4 3939 29 PolylightNode::get_class_type 0 1 1943 0
54
static TypeHandle PolylightNode::get_class_type(void);

3651 14 ~PolylightNode 0 4 3939 29 PolylightNode::~PolylightNode 0 0 0
36
PolylightNode::~PolylightNode(void);

3652 4 make 0 4 3942 21 PolylightEffect::make 0 3 1944 1945 1946 811
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::make
//       Access: Published, Static
//  Description: Constructs a new PolylightEffect object.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::make
//       Access: Published, Static
//  Description: Constructs a new PolylightEffect object.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::make
//       Access: Published, Static
//  Description: Constructs a new PolylightEffect object.
////////////////////////////////////////////////////////////////////
388
static ConstPointerTo< RenderEffect > PolylightEffect::make(void);
static ConstPointerTo< RenderEffect > PolylightEffect::make(float weight, PolylightEffect::ContribType contrib, LPoint3f const &effect_center);
static ConstPointerTo< RenderEffect > PolylightEffect::make(float weight, PolylightEffect::ContribType contrib, LPoint3f const &effect_center, vector< NodePath > const &lights);

3653 9 add_light 0 4 3942 26 PolylightEffect::add_light 0 1 1947 308
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::add_light
//       Access: Published
//  Description: Add a PolylightNode object to this effect and return
//               a new effect
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< RenderEffect > PolylightEffect::add_light(NodePath const &newlight) const;

3654 12 remove_light 0 4 3942 29 PolylightEffect::remove_light 0 1 1948 308
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::remove_light
//       Access: Published
//  Description: Remove a light from this effect. Return the new updated
//               effect
////////////////////////////////////////////////////////////////////
93
ConstPointerTo< RenderEffect > PolylightEffect::remove_light(NodePath const &newlight) const;

3655 10 set_weight 0 4 3942 27 PolylightEffect::set_weight 0 1 1949 517
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::set_weight
//       Access: Published
//  Description: Set weight and return a new effect... the reason
//               this couldnt be done through make was because
//               that would return a new effect without the 
//               lightgroup which is static and cant be accessed
//               Here, we just pass that to the make
////////////////////////////////////////////////////////////////////
74
ConstPointerTo< RenderEffect > PolylightEffect::set_weight(float w) const;

3656 11 set_contrib 0 4 3942 28 PolylightEffect::set_contrib 0 1 1950 524
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::set_contrib
//       Access: Published
//  Description: Set Contrib Type and return a new effect... the reason
//               this couldnt be done through make was because
//               that would return a new effect without the 
//               lightgroup which is static and cant be accessed
//               Here, we just pass that to the make
////////////////////////////////////////////////////////////////////
98
ConstPointerTo< RenderEffect > PolylightEffect::set_contrib(PolylightEffect::ContribType c) const;

3657 17 set_effect_center 0 4 3942 34 PolylightEffect::set_effect_center 0 1 1951 524
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::set_effect_center
//       Access: Published
//  Description: Set weight and return a new effect... the reason
//               this couldnt be done through make was because
//               that would return a new effect without the 
//               lightgroup which is static and cant be accessed
//               Here, we just pass that to the make
////////////////////////////////////////////////////////////////////
92
ConstPointerTo< RenderEffect > PolylightEffect::set_effect_center(LPoint3f const &ec) const;

3658 10 get_weight 0 4 3942 27 PolylightEffect::get_weight 0 1 1952 247
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::get_weight
//       Access: Published
//  Description: Get the weight value
////////////////////////////////////////////////////////////////////
53
inline float PolylightEffect::get_weight(void) const;

3659 11 get_contrib 0 4 3942 28 PolylightEffect::get_contrib 0 1 1953 257
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::get_contrib
//       Access: Published
//  Description: Returns CT_all or CT_proximal
////////////////////////////////////////////////////////////////////
77
inline PolylightEffect::ContribType PolylightEffect::get_contrib(void) const;

3660 17 get_effect_center 0 4 3942 34 PolylightEffect::get_effect_center 0 1 1954 272
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::get_effect_center
//       Access: Published
//  Description: Return the value of the _effect_center
////////////////////////////////////////////////////////////////////
63
inline LPoint3f PolylightEffect::get_effect_center(void) const;

3661 9 has_light 0 4 3942 26 PolylightEffect::has_light 0 1 1955 329
////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::has_light
//       Access: Published
//  Description: Returns true if the indicated light is listed in the
//               PolylightEffect, false otherwise.
////////////////////////////////////////////////////////////////////
61
bool PolylightEffect::has_light(NodePath const &light) const;

3662 14 get_class_type 0 4 3942 31 PolylightEffect::get_class_type 0 1 1956 0
56
static TypeHandle PolylightEffect::get_class_type(void);

3663 16 ~PolylightEffect 0 4 3942 33 PolylightEffect::~PolylightEffect 0 0 0
40
PolylightEffect::~PolylightEffect(void);

3664 9 get_blank 0 4 3944 22 ShaderInput::get_blank 0 1 2021 371
////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_blank
//       Access: Public, Static
//  Description: Returns a static ShaderInput object with
//               name NULL, priority zero, type INVALID, and
//               all value-fields cleared.
////////////////////////////////////////////////////////////////////
55
static ShaderInput const *ShaderInput::get_blank(void);

3665 11 ShaderInput 0 4 3944 24 ShaderInput::ShaderInput 0 64 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 7230
////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
3473
inline ShaderInput::ShaderInput(InternalName const *id, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, NodePath const &np, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, Texture *tex, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< float > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< UnalignedLVecBase4f > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< LVecBase3f > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< LVecBase2f > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< UnalignedLMatrix4f > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< LMatrix3f > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LVecBase4f const &vec, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LVecBase3f const &vec, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LVecBase2f const &vec, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LMatrix4f const &mat, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LMatrix3f const &mat, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< double > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< UnalignedLVecBase4d > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< LVecBase3d > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< LVecBase2d > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< UnalignedLMatrix4d > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< LMatrix3d > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LVecBase4d const &vec, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LVecBase3d const &vec, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LVecBase2d const &vec, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LMatrix4d const &mat, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LMatrix3d const &mat, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< int > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< UnalignedLVecBase4i > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< LVecBase3i > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, PointerToArray< LVecBase2i > const &ptr, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LVecBase4i const &vec, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LVecBase3i const &vec, int priority = (0));
inline ShaderInput::ShaderInput(InternalName const *id, LVecBase2i const &vec, int priority = (0));

3666 8 get_name 0 4 3944 21 ShaderInput::get_name 0 1 2022 221
////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_name
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
61
inline InternalName const *ShaderInput::get_name(void) const;

3667 14 get_value_type 0 4 3944 27 ShaderInput::get_value_type 0 1 2023 227
////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_value_type
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
51
inline int ShaderInput::get_value_type(void) const;

3668 12 get_priority 0 4 3944 25 ShaderInput::get_priority 0 1 2024 225
////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_priority
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
49
inline int ShaderInput::get_priority(void) const;

3669 11 get_texture 0 4 3944 24 ShaderInput::get_texture 0 1 2025 224
////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_texture
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
53
inline Texture *ShaderInput::get_texture(void) const;

3670 12 get_nodepath 0 4 3944 25 ShaderInput::get_nodepath 0 1 2026 225
////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_nodepath
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
61
inline NodePath const &ShaderInput::get_nodepath(void) const;

3671 10 get_vector 0 4 3944 23 ShaderInput::get_vector 0 1 2027 223
////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_vector
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
61
inline LVecBase4f const &ShaderInput::get_vector(void) const;

3672 7 get_ptr 0 4 3944 20 ShaderInput::get_ptr 0 1 2028 220
////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_ptr
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
69
inline Shader::ShaderPtrData const &ShaderInput::get_ptr(void) const;

3673 14 get_class_type 0 4 3944 27 ShaderInput::get_class_type 0 1 2029 0
52
static TypeHandle ShaderInput::get_class_type(void);

3674 4 make 0 4 3946 18 ShaderAttrib::make 0 2 2030 2031 297
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ShaderAttrib object with nothing
//               set.
////////////////////////////////////////////////////////////////////
95
static ConstPointerTo< RenderAttrib > ShaderAttrib::make(Shader const *shader = ((void *)(0)));

3675 8 make_off 0 4 3946 22 ShaderAttrib::make_off 0 1 2032 383
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ShaderAttrib object that disables
//               the use of shaders (it does not clear out all shader
//               data, however.)
////////////////////////////////////////////////////////////////////
67
static ConstPointerTo< RenderAttrib > ShaderAttrib::make_off(void);

3676 12 make_default 0 4 3946 26 ShaderAttrib::make_default 0 1 2033 399
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
71
static ConstPointerTo< RenderAttrib > ShaderAttrib::make_default(void);

3677 10 has_shader 0 4 3946 24 ShaderAttrib::has_shader 0 1 2034 336
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::has_shader
//       Access: Published
//  Description: If true, the shader field of this attribute overrides
//               the shader field of the parent attribute.
////////////////////////////////////////////////////////////////////
49
inline bool ShaderAttrib::has_shader(void) const;

3678 11 auto_shader 0 4 3946 25 ShaderAttrib::auto_shader 0 1 2035 387
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_shader
//       Access: Published
//  Description: If true, then this ShaderAttrib does not contain an
//               explicit shader - instead, it requests the automatic
//               generation of a shader.
////////////////////////////////////////////////////////////////////
50
inline bool ShaderAttrib::auto_shader(void) const;

3679 19 get_shader_priority 0 4 3946 33 ShaderAttrib::get_shader_priority 0 1 2036 233
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_priority
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
57
inline int ShaderAttrib::get_shader_priority(void) const;

3680 18 get_instance_count 0 4 3946 32 ShaderAttrib::get_instance_count 0 1 2037 339
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_instance_count
//       Access: Published
//  Description: Returns the number of geometry instances. A value
//               of 0 means not to use instancing at all.
////////////////////////////////////////////////////////////////////
56
inline int ShaderAttrib::get_instance_count(void) const;

3681 14 auto_normal_on 0 4 3946 28 ShaderAttrib::auto_normal_on 0 1 2038 239
//weifengh
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_normal_on
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
53
inline bool ShaderAttrib::auto_normal_on(void) const;

3682 12 auto_glow_on 0 4 3946 26 ShaderAttrib::auto_glow_on 0 1 2039 226
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_glow_on
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
51
inline bool ShaderAttrib::auto_glow_on(void) const;

3683 13 auto_gloss_on 0 4 3946 27 ShaderAttrib::auto_gloss_on 0 1 2040 227
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_gloss_on
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
52
inline bool ShaderAttrib::auto_gloss_on(void) const;

3684 12 auto_ramp_on 0 4 3946 26 ShaderAttrib::auto_ramp_on 0 1 2041 226
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_ramp_on
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
51
inline bool ShaderAttrib::auto_ramp_on(void) const;

3685 14 auto_shadow_on 0 4 3946 28 ShaderAttrib::auto_shadow_on 0 1 2042 228
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_shadow_on
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
53
inline bool ShaderAttrib::auto_shadow_on(void) const;

3686 10 set_shader 0 4 3946 24 ShaderAttrib::set_shader 0 2 2043 2044 224
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
99
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader(Shader const *s, int priority = (0)) const;

3687 14 set_shader_off 0 4 3946 28 ShaderAttrib::set_shader_off 0 2 2045 2046 228
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_off
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
86
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_off(int priority = (0)) const;

3688 15 set_shader_auto 0 4 3946 29 ShaderAttrib::set_shader_auto 0 4 2047 2048 2049 2050 554
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_auto
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_auto
//       Access: Published
//  Description: Set auto shader with bitmask to customize use,
//  e.g., to keep normal, glow, etc., on or off
////////////////////////////////////////////////////////////////////
218
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_auto(int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_auto(BitMask< unsigned int, 32 > shader_switch, int priority = (0)) const;

3689 12 clear_shader 0 4 3946 26 ShaderAttrib::clear_shader 0 1 2051 226
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_shader
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
70
ConstPointerTo< RenderAttrib > ShaderAttrib::clear_shader(void) const;

3690 16 set_shader_input 0 4 3946 30 ShaderAttrib::set_shader_input 0 35 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 3770
// Shader Inputs

// InternalName* id

// InternalName* id

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
2272
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(ShaderInput const *inp) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, Texture *tex, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, NodePath const &np, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, PointerToArray< float > const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, PointerToArray< double > const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, PointerToArray< UnalignedLMatrix4f > const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, PointerToArray< LMatrix3f > const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, PointerToArray< UnalignedLVecBase4f > const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, PointerToArray< LVecBase3f > const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, PointerToArray< LVecBase2f > const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, LVecBase4f const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, LVecBase3f const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, LVecBase2f const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, LMatrix4f const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, LMatrix3f const &v, int priority = (0)) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input(InternalName const *id, double n1 = (0), double n2 = (0), double n3 = (0), double n4 = (1), int priority = (0)) const;

3691 18 set_instance_count 0 4 3946 32 ShaderAttrib::set_instance_count 0 1 2087 475
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_instance_count
//       Access: Published
//  Description: Sets the geometry instance count. Do not confuse
//               this with instanceTo, which is used for animation
//               instancing, and has nothing to do with this.
//               A value of 0 means not to use instancing at all.
////////////////////////////////////////////////////////////////////
90
ConstPointerTo< RenderAttrib > ShaderAttrib::set_instance_count(int instance_count) const;

3692 8 set_flag 0 4 3946 22 ShaderAttrib::set_flag 0 1 2088 222
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_flag
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
82
ConstPointerTo< RenderAttrib > ShaderAttrib::set_flag(int flag, bool value) const;

3693 10 clear_flag 0 4 3946 24 ShaderAttrib::clear_flag 0 1 2089 224
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_flag
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
72
ConstPointerTo< RenderAttrib > ShaderAttrib::clear_flag(int flag) const;

3694 18 clear_shader_input 0 4 3946 32 ShaderAttrib::clear_shader_input 0 2 2090 2091 466
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_shader_input
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
197
ConstPointerTo< RenderAttrib > ShaderAttrib::clear_shader_input(InternalName const *id) const;
ConstPointerTo< RenderAttrib > ShaderAttrib::clear_shader_input(basic_string< char > const &id) const;

3695 23 clear_all_shader_inputs 0 4 3946 37 ShaderAttrib::clear_all_shader_inputs 0 1 2092 280
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_all_shader_inputs
//       Access: Published
//  Description: Clears all the shader inputs on the attrib.
////////////////////////////////////////////////////////////////////
81
ConstPointerTo< RenderAttrib > ShaderAttrib::clear_all_shader_inputs(void) const;

3696 8 get_flag 0 4 3946 22 ShaderAttrib::get_flag 0 1 2093 222
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_flag
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
51
inline bool ShaderAttrib::get_flag(int flag) const;

3697 10 get_shader 0 4 3946 24 ShaderAttrib::get_shader 0 1 2094 444
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader
//       Access: Published
//  Description: Returns the shader object associated with the node.
//               If get_override returns true, but get_shader 
//               returns NULL, that means that this attribute should
//               disable the shader.
////////////////////////////////////////////////////////////////////
51
Shader const *ShaderAttrib::get_shader(void) const;

3698 16 get_shader_input 0 4 3946 30 ShaderAttrib::get_shader_input 0 2 2095 2096 818
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input
//       Access: Published
//  Description: Returns the ShaderInput of the given name.  If
//               no such name is found, this function does not return
//               NULL --- it returns the "blank" ShaderInput.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input
//       Access: Published
//  Description: Returns the ShaderInput of the given name.  If
//               no such name is found, this function does not return
//               NULL --- it returns the "blank" ShaderInput.
////////////////////////////////////////////////////////////////////
169
ShaderInput const *ShaderAttrib::get_shader_input(InternalName const *id) const;
ShaderInput const *ShaderAttrib::get_shader_input(basic_string< char > const &id) const;

3699 25 get_shader_input_nodepath 0 4 3946 39 ShaderAttrib::get_shader_input_nodepath 0 1 2097 358
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_nodepath
//       Access: Published
//  Description: Returns the ShaderInput as a nodepath.  Assertion 
//               fails if there is none, or if it is not a nodepath.
////////////////////////////////////////////////////////////////////
86
NodePath const &ShaderAttrib::get_shader_input_nodepath(InternalName const *id) const;

3700 23 get_shader_input_vector 0 4 3946 37 ShaderAttrib::get_shader_input_vector 0 1 2098 352
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_vector
//       Access: Published
//  Description: Returns the ShaderInput as a vector.  Assertion 
//               fails if there is none, or if it is not a vector.
////////////////////////////////////////////////////////////////////
80
LVecBase4f const &ShaderAttrib::get_shader_input_vector(InternalName *id) const;

3701 24 get_shader_input_texture 0 4 3946 38 ShaderAttrib::get_shader_input_texture 0 1 2099 355
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_texture
//       Access: Published
//  Description: Returns the ShaderInput as a texture.  Assertion 
//               fails if there is none, or if it is not a texture.
////////////////////////////////////////////////////////////////////
78
Texture *ShaderAttrib::get_shader_input_texture(InternalName const *id) const;

3702 20 get_shader_input_ptr 0 4 3946 34 ShaderAttrib::get_shader_input_ptr 0 1 2100 390
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_ptr
//       Access: Published
//  Description: Returns the ShaderInput as a ShaderPtrData struct. 
//               Assertion fails if there is none. or if it is not 
//               a PTA(double/float)
////////////////////////////////////////////////////////////////////
94
Shader::ShaderPtrData const *ShaderAttrib::get_shader_input_ptr(InternalName const *id) const;

3703 23 get_shader_input_matrix 0 4 3946 37 ShaderAttrib::get_shader_input_matrix 0 1 2101 380
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_matrix
//       Access: Published
//  Description: Returns the ShaderInput as a matrix.  Assertion
//               fails if there is none, or if it is not a matrix
//               or NodePath.
////////////////////////////////////////////////////////////////////
104
LMatrix4f const &ShaderAttrib::get_shader_input_matrix(InternalName const *id, LMatrix4f &matrix) const;

3704 26 register_with_read_factory 0 4 3946 40 ShaderAttrib::register_with_read_factory 0 1 2102 287
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::register_with_read_factory
//       Access: Public, Static
//  Description: Factory method to generate a Shader object
////////////////////////////////////////////////////////////////////
59
static void ShaderAttrib::register_with_read_factory(void);

3705 14 get_class_slot 0 4 3946 28 ShaderAttrib::get_class_slot 0 1 2103 0
46
static int ShaderAttrib::get_class_slot(void);

3706 14 get_class_type 0 4 3946 28 ShaderAttrib::get_class_type 0 1 2104 0
53
static TypeHandle ShaderAttrib::get_class_type(void);

3707 13 ~ShaderAttrib 0 4 3946 27 ShaderAttrib::~ShaderAttrib 0 0 0
34
ShaderAttrib::~ShaderAttrib(void);

3708 4 make 0 4 3947 22 ShowBoundsEffect::make 0 2 2105 2106 271
////////////////////////////////////////////////////////////////////
//     Function: ShowBoundsEffect::make
//       Access: Published, Static
//  Description: Constructs a new ShowBoundsEffect object.
////////////////////////////////////////////////////////////////////
79
static ConstPointerTo< RenderEffect > ShowBoundsEffect::make(bool tight = (0));

3709 9 get_tight 0 4 3947 27 ShowBoundsEffect::get_tight 0 1 2107 404
////////////////////////////////////////////////////////////////////
//     Function: ShowBoundsEffect::get_tight
//       Access: Published
//  Description: Returns true if the "tight" flag was set, meaning the
//               effect should compute and draw the tight bounding-box
//               of the node's vertices every frame.
////////////////////////////////////////////////////////////////////
52
inline bool ShowBoundsEffect::get_tight(void) const;

3710 14 get_class_type 0 4 3947 32 ShowBoundsEffect::get_class_type 0 1 2108 0
57
static TypeHandle ShowBoundsEffect::get_class_type(void);

3711 17 ~ShowBoundsEffect 0 4 3947 35 ShowBoundsEffect::~ShowBoundsEffect 0 0 0
42
ShowBoundsEffect::~ShowBoundsEffect(void);

3712 4 make 0 4 3948 24 TexProjectorEffect::make 0 1 2109 312
////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::make
//       Access: Published, Static
//  Description: Constructs a TexProjectorEffect that modifies
//               no stages at all.
////////////////////////////////////////////////////////////////////
69
static ConstPointerTo< RenderEffect > TexProjectorEffect::make(void);

3713 9 add_stage 0 4 3948 29 TexProjectorEffect::add_stage 0 2 2110 2111 910
////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::add_stage
//       Access: Published, Static
//  Description: Returns a new TexProjectorEffect just like this one,
//               with the indicated projection for the given stage.
//               If this stage already exists, its projection
//               definition is replaced.
//
//               The relative transform between the "from" and the
//               "to" nodes is automatically applied to the texture
//               transform each frame.
//
//               Furthermore, if the "to" node is a LensNode, its
//               projection matrix is also applied to the texture
//               transform.  In this case, the lens_index may be used
//               to select the particular lens that should be used.
////////////////////////////////////////////////////////////////////
152
ConstPointerTo< RenderEffect > TexProjectorEffect::add_stage(TextureStage *stage, NodePath const &from, NodePath const &to, int lens_index = (0)) const;

3714 12 remove_stage 0 4 3948 32 TexProjectorEffect::remove_stage 0 1 2112 343
////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::remove_stage
//       Access: Published, Static
//  Description: Returns a new TexProjectorEffect just like this one,
//               with the indicated stage removed.
////////////////////////////////////////////////////////////////////
91
ConstPointerTo< RenderEffect > TexProjectorEffect::remove_stage(TextureStage *stage) const;

3715 8 is_empty 0 4 3948 28 TexProjectorEffect::is_empty 0 1 2113 335
////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::is_empty
//       Access: Published
//  Description: Returns true if no stages are defined in the
//               TexProjectorEffect, false if at least one is.
////////////////////////////////////////////////////////////////////
46
bool TexProjectorEffect::is_empty(void) const;

3716 9 has_stage 0 4 3948 29 TexProjectorEffect::has_stage 0 1 2114 445
////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::has_stage
//       Access: Published
//  Description: Returns true if there is a transform associated with
//               the indicated stage, or false otherwise (in which
//               case get_transform(stage) will return the identity
//               transform).
////////////////////////////////////////////////////////////////////
62
bool TexProjectorEffect::has_stage(TextureStage *stage) const;

3717 8 get_from 0 4 3948 28 TexProjectorEffect::get_from 0 1 2115 506
////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::get_from
//       Access: Published
//  Description: Returns the "from" node associated with the
//               TexProjectorEffect on the indicated stage.  The
//               relative transform between the "from" and the "to"
//               nodes is automatically applied to the texture
//               transform each frame.
////////////////////////////////////////////////////////////////////
65
NodePath TexProjectorEffect::get_from(TextureStage *stage) const;

3718 6 get_to 0 4 3948 26 TexProjectorEffect::get_to 0 1 2116 665
////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::get_to
//       Access: Published
//  Description: Returns the "to" node associated with the
//               TexProjectorEffect on the indicated stage.  The
//               relative transform between the "from" and the "to"
//               nodes is automatically applied to the texture
//               transform each frame.
//
//               Furthermore, if the "to" node is a LensNode, its
//               projection matrix is also applied to the texture
//               transform.
////////////////////////////////////////////////////////////////////
63
NodePath TexProjectorEffect::get_to(TextureStage *stage) const;

3719 14 get_lens_index 0 4 3948 34 TexProjectorEffect::get_lens_index 0 1 2117 506
////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::get_lens_index
//       Access: Published
//  Description: Returns the lens_index associated with the
//               TexProjectorEffect on the indicated stage.  This is
//               only used if the "to" node is a LensNode, in which
//               case it specifies the particular lens that should be
//               used.
////////////////////////////////////////////////////////////////////
66
int TexProjectorEffect::get_lens_index(TextureStage *stage) const;

3720 14 get_class_type 0 4 3948 34 TexProjectorEffect::get_class_type 0 1 2118 0
59
static TypeHandle TexProjectorEffect::get_class_type(void);

3721 11 make_screen 0 4 3949 26 ScissorEffect::make_screen 0 2 2119 2120 420
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_screen
//       Access: Published, Static
//  Description: Constructs a new screen-relative ScissorEffect.  The
//               frame defines a left, right, bottom, top region,
//               relative to the DisplayRegion.  See ScissorAttrib.
////////////////////////////////////////////////////////////////////
107
static ConstPointerTo< RenderEffect > ScissorEffect::make_screen(LVecBase4f const &frame, bool clip = (1));

3722 9 make_node 0 4 3949 24 ScissorEffect::make_node 0 6 2121 2122 2123 2124 2125 2126 1525
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_node
//       Access: Published, Static
//  Description: Constructs a new node-relative ScissorEffect, with no
//               points.  This empty ScissorEffect does nothing.  You
//               must then call add_point a number of times to add the
//               points you require.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_node
//       Access: Published, Static
//  Description: Constructs a new node-relative ScissorEffect.  The
//               two points are understood to be relative to the
//               indicated node, or the current node if the NodePath
//               is empty, and determine the diagonally opposite
//               corners of the scissor region.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_node
//       Access: Published, Static
//  Description: Constructs a new node-relative ScissorEffect.  The
//               four points are understood to be relative to the
//               indicated node, or the current node if the indicated
//               NodePath is empty, and determine four points
//               surrounding the scissor region.
////////////////////////////////////////////////////////////////////
384
static ConstPointerTo< RenderEffect > ScissorEffect::make_node(bool clip = (1));
static ConstPointerTo< RenderEffect > ScissorEffect::make_node(LPoint3f const &a, LPoint3f const &b, NodePath const &node = ((())));
static ConstPointerTo< RenderEffect > ScissorEffect::make_node(LPoint3f const &a, LPoint3f const &b, LPoint3f const &c, LPoint3f const &d, NodePath const &node = ((())));

3723 9 add_point 0 4 3949 24 ScissorEffect::add_point 0 2 2127 2128 628
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::add_point
//       Access: Published
//  Description: Returns a new ScissorEffect with the indicated point
//               added.  It is only valid to call this on a "node"
//               type ScissorEffect.  The full set of points,
//               projected into screen space, defines the bounding
//               volume of the rectangular scissor region.
//
//               Each point may be relative to a different node, if
//               desired.
////////////////////////////////////////////////////////////////////
116
ConstPointerTo< RenderEffect > ScissorEffect::add_point(LPoint3f const &point, NodePath const &node = ((()))) const;

3724 9 is_screen 0 4 3949 24 ScissorEffect::is_screen 0 1 2129 882
// Filename: scissorEffect.I
// Created by:  drose (30Jul08)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::is_screen
//       Access: Published
//  Description: Returns true if the ScissorEffect is a screen-based
//               effect, meaning get_frame() has a meaningful value,
//               but get_a() and get_b() do not.
////////////////////////////////////////////////////////////////////
49
inline bool ScissorEffect::is_screen(void) const;

3725 9 get_frame 0 4 3949 24 ScissorEffect::get_frame 0 1 2130 524
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_frame
//       Access: Published
//  Description: If is_screen() returns true, this method may be
//               called to query the screen-based scissor frame.  This
//               is a series of left, right, bottom, top, representing
//               the scissor frame relative to the current
//               DisplayRegion.  See ScissorAttrib.
////////////////////////////////////////////////////////////////////
62
inline LVecBase4f const &ScissorEffect::get_frame(void) const;

3726 14 get_num_points 0 4 3949 29 ScissorEffect::get_num_points 0 1 2131 312
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_num_points
//       Access: Published
//  Description: Returns the number of node-based scissor points.  See
//               get_point().
////////////////////////////////////////////////////////////////////
53
inline int ScissorEffect::get_num_points(void) const;

3727 9 get_point 0 4 3949 24 ScissorEffect::get_point 0 1 2132 582
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_point
//       Access: Published
//  Description: If is_screen() returns false, then get_num_points() and
//               get_point() may be called to query the node-based scissor
//               frame.  These return n points (at least two), which
//               are understood to be in the space of this node, and
//               which define any opposite corners of the scissor
//               frame.
////////////////////////////////////////////////////////////////////
61
inline LPoint3f const &ScissorEffect::get_point(int n) const;

3728 8 get_node 0 4 3949 23 ScissorEffect::get_node 0 1 2133 340
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_node
//       Access: Published
//  Description: Returns the node to which the nth point is relative,
//               or empty NodePath to indicate the current node.
////////////////////////////////////////////////////////////////////
53
inline NodePath ScissorEffect::get_node(int n) const;

3729 8 get_clip 0 4 3949 23 ScissorEffect::get_clip 0 1 2134 330
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_clip
//       Access: Published
//  Description: Returns true if this ScissorEffect actually enables
//               scissoring, or false if it culls only.
////////////////////////////////////////////////////////////////////
48
inline bool ScissorEffect::get_clip(void) const;

3730 14 get_class_type 0 4 3949 29 ScissorEffect::get_class_type 0 1 2135 0
54
static TypeHandle ScissorEffect::get_class_type(void);

3731 14 ~ScissorEffect 0 4 3949 29 ScissorEffect::~ScissorEffect 0 0 0
36
ScissorEffect::~ScissorEffect(void);

3732 17 SceneGraphReducer 0 4 3950 36 SceneGraphReducer::SceneGraphReducer 0 2 2136 2137 722
// Filename: sceneGraphReducer.I
// Created by:  drose (14Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
92
inline SceneGraphReducer::SceneGraphReducer(GraphicsStateGuardianBase *gsg = ((void *)(0)));

3733 18 ~SceneGraphReducer 0 4 3950 37 SceneGraphReducer::~SceneGraphReducer 0 0 228
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::Destructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
51
inline SceneGraphReducer::~SceneGraphReducer(void);

3734 7 set_gsg 0 4 3950 26 SceneGraphReducer::set_gsg 0 1 2138 664
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::set_gsg
//       Access: Published
//  Description: Specifies the particular GraphicsStateGuardian that
//               this object will attempt to optimize to.  The GSG may
//               specify parameters such as maximum number of vertices
//               per vertex data, max number of vertices per
//               primitive, and whether triangle strips are preferred.
//               It also affects the types of vertex column data that
//               is created by premunge().
////////////////////////////////////////////////////////////////////
64
void SceneGraphReducer::set_gsg(GraphicsStateGuardianBase *gsg);

3735 9 clear_gsg 0 4 3950 28 SceneGraphReducer::clear_gsg 0 1 2139 480
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::clear_gsg
//       Access: Published
//  Description: Specifies that no particular GraphicsStateGuardian
//               will be used to guide the optimization.  The
//               SceneGraphReducer will instead use config variables
//               such as max-collect-vertices and max-collect-indices.
////////////////////////////////////////////////////////////////////
40
void SceneGraphReducer::clear_gsg(void);

3736 7 get_gsg 0 4 3950 26 SceneGraphReducer::get_gsg 0 1 2140 366
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::get_gsg
//       Access: Published
//  Description: Returns the particular GraphicsStateGuardian that
//               this object will attempt to optimize to. 
//               See set_gsg().
////////////////////////////////////////////////////////////////////
73
inline GraphicsStateGuardianBase *SceneGraphReducer::get_gsg(void) const;

3737 18 set_combine_radius 0 4 3950 37 SceneGraphReducer::set_combine_radius 0 1 2141 757
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::set_combine_radius
//       Access: Published
//  Description: Specifies the radius that is used in conjunction with
//               CS_within_radius to decide whether a subgraph's
//               siblings should be combined into a single node or
//               not.
//
//               If the CS_within_radius bit is included in the
//               combine_siblings_bits parameter passed to flatten,
//               than any nodes whose bounding volume is smaller than
//               the indicated radius will be combined together (as if
//               CS_other were set).
////////////////////////////////////////////////////////////////////
72
inline void SceneGraphReducer::set_combine_radius(float combine_radius);

3738 18 get_combine_radius 0 4 3950 37 SceneGraphReducer::get_combine_radius 0 1 2142 350
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::get_combine_radius
//       Access: Published
//  Description: Returns the radius that is used in conjunction with
//               CS_within_radius.  See set_combine_radius().
////////////////////////////////////////////////////////////////////
63
inline float SceneGraphReducer::get_combine_radius(void) const;

3739 13 apply_attribs 0 4 3950 32 SceneGraphReducer::apply_attribs 0 3 2143 2144 2145 1409
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::apply_attribs
//       Access: Published
//  Description: Walks the scene graph, accumulating attribs of
//               the indicated types, applying them to the vertices,
//               and removing them from the scene graph.  This has a
//               performance optimization benefit in itself, but is
//               especially useful to pave the way for a call to
//               flatten() and greatly improve the effectiveness of
//               the flattening operation.
//
//               Multiply instanced geometry is duplicated before the
//               attribs are applied.
//
//               Of course, this operation does make certain dynamic
//               operations impossible.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::apply_attribs
//       Access: Published
//  Description: This flavor of apply_attribs() can be called
//               recursively from within another flatten process
//               (e.g. from PandaNode::apply_attribs_to_vertices()).
//               The parameters were presumably received from a parent
//               SceneGraphReducer object.
////////////////////////////////////////////////////////////////////
292
inline void SceneGraphReducer::apply_attribs(PandaNode *node, int attrib_types = ((~ ((TT_clip_plane | TT_cull_face) | TT_apply_texture_color))));
inline void SceneGraphReducer::apply_attribs(PandaNode *node, AccumulatedAttribs const &attribs, int attrib_types, GeomTransformer &transformer);

3740 7 flatten 0 4 3950 26 SceneGraphReducer::flatten 0 1 2146 940
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::flatten
//       Access: Published
//  Description: Simplifies the graph by removing unnecessary nodes
//               and nodes.
//
//               In general, a node (and its parent node) is a
//               candidate for removal if the node has no siblings and
//               the node has no special properties.
//
//               If combine_siblings_bits is nonzero, some sibling
//               nodes (according to the bits set in
//               combine_siblings_bits) may also be collapsed into a
//               single node.  This will further reduce scene graph
//               complexity, sometimes substantially, at the cost of
//               reduced spatial separation.
//
//               Returns the number of nodes removed from the graph.
////////////////////////////////////////////////////////////////////
75
int SceneGraphReducer::flatten(PandaNode *root, int combine_siblings_bits);

3741 13 remove_column 0 4 3950 32 SceneGraphReducer::remove_column 0 1 2147 406
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::remove_column
//       Access: Published
//  Description: Removes the indicated data column from any
//               GeomVertexDatas found at the indicated root and
//               below.  Returns the number of GeomNodes modified.
////////////////////////////////////////////////////////////////////
82
int SceneGraphReducer::remove_column(PandaNode *root, InternalName const *column);

3742 21 make_compatible_state 0 4 3950 40 SceneGraphReducer::make_compatible_state 0 1 2148 542
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::make_compatible_state
//       Access: Published
//  Description: Searches for GeomNodes that contain multiple Geoms
//               that differ only in their ColorAttribs.  If such a
//               GeomNode is found, then all the colors are pushed
//               down into the vertices.  This makes it feasible for
//               the geoms to be unified later.
////////////////////////////////////////////////////////////////////
62
int SceneGraphReducer::make_compatible_state(PandaNode *root);

3743 22 make_compatible_format 0 4 3950 41 SceneGraphReducer::make_compatible_format 0 2 2149 2150 1154
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::make_compatible_format
//       Access: Published
//  Description: Walks through the tree at this node and below and
//               unifies the GeomVertexFormat for any GeomVertexData
//               objects that are found, so that all eligible vdatas
//               (according to collect_bits; see collect_vertex_data)
//               will share the same vertex format.
//
//               This will add unused columns where necessary to match
//               formats.  It can result in suboptimal performance if
//               used needlessly.
//
//               There is usually no reason to call this explicitly,
//               since collect_vertex_data() will do this anyway if it
//               has not been done already.  However, calling it ahead
//               of time can make that future call to
//               collect_vertex_data() run a little bit faster.
//
//               The return value is the number of vertex datas
//               modified.
////////////////////////////////////////////////////////////////////
98
inline int SceneGraphReducer::make_compatible_format(PandaNode *root, int collect_bits = ((~ 0)));

3744 9 decompose 0 4 3950 28 SceneGraphReducer::decompose 0 1 2151 716
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::decompose
//       Access: Published
//  Description: Calls decompose() on every GeomNode at this level and
//               below.
//
//               There is usually no reason to call this explicitly,
//               since unify() will do this anyway if it needs to be
//               done.  However, calling it ahead of time can make
//               that future call to unify() run a little bit faster.
//
//               This operation has no effect if the config variable
//               preserve-triangle-strips has been set true.
////////////////////////////////////////////////////////////////////
51
void SceneGraphReducer::decompose(PandaNode *root);

3745 19 collect_vertex_data 0 4 3950 38 SceneGraphReducer::collect_vertex_data 0 2 2152 2153 955
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::collect_vertex_data
//       Access: Published
//  Description: Collects all different GeomVertexData blocks that
//               have compatible formats at this node and below into a
//               single, unified block (or at least multiple larger
//               blocks).  This is intended to reduce rendering
//               overhead incurred by switching vertex buffers.  It
//               can also make a subsequent call to unify() much more
//               effective than it would have been otherwise.
//
//               The set of bits passed in collect_bits indicates
//               which properties are used to differentiate
//               GeomVertexData blocks.  If it is 0, then more blocks
//               will be combined together than if it is nonzero.
////////////////////////////////////////////////////////////////////
95
inline int SceneGraphReducer::collect_vertex_data(PandaNode *root, int collect_bits = ((~ 0)));

3746 15 make_nonindexed 0 4 3950 34 SceneGraphReducer::make_nonindexed 0 2 2154 2155 604
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::make_nonindexed
//       Access: Published
//  Description: Converts indexed geometry to nonindexed geometry at
//               the indicated node and below, by duplicating vertices
//               where necessary.  The parameter nonindexed_bits is a
//               union of bits defined in
//               SceneGraphReducer::MakeNonindexed, which specifes
//               which types of geometry to avoid making nonindexed.
////////////////////////////////////////////////////////////////////
94
inline int SceneGraphReducer::make_nonindexed(PandaNode *root, int nonindexed_bits = ((~ 0)));

3747 5 unify 0 4 3950 24 SceneGraphReducer::unify 0 1 2156 499
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::unify
//       Access: Published
//  Description: Calls unify() on every GeomNode at this level and
//               below.  This attempts to reduce the total number of
//               individual Geoms and GeomPrimitives by combining
//               these objects wherever possible.  See
//               GeomNode::unify().
////////////////////////////////////////////////////////////////////
68
void SceneGraphReducer::unify(PandaNode *root, bool preserve_order);

3748 22 remove_unused_vertices 0 4 3950 41 SceneGraphReducer::remove_unused_vertices 0 1 2157 579
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::remove_unused_vertices
//       Access: Published
//  Description: Removes any vertices in GeomVertexDatas that are no
//               longer used at this level and below.  This requires
//               remapping vertex indices in all of the
//               GeomPrimitives, to remove holes in the
//               GeomVertexDatas.  It is normally not necessary to
//               call this explicitly.
////////////////////////////////////////////////////////////////////
64
void SceneGraphReducer::remove_unused_vertices(PandaNode *root);

3749 8 premunge 0 4 3950 27 SceneGraphReducer::premunge 0 1 2158 609
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::premunge
//       Access: Published
//  Description: Walks the scene graph rooted at this node and below,
//               and uses the indicated GSG to premunge every Geom
//               found to optimize it for eventual rendering on the
//               indicated GSG.  If there is no GSG indicated for the
//               SceneGraphReducer, this is a no-op.
//
//               This operation will also apply to stashed children.
////////////////////////////////////////////////////////////////////
91
inline void SceneGraphReducer::premunge(PandaNode *root, RenderState const *initial_state);

3750 18 check_live_flatten 0 4 3950 37 SceneGraphReducer::check_live_flatten 0 1 2159 672
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::check_live_flatten
//       Access: Published
//  Description: In a non-release build, returns false if the node is
//               correctly not in a live scene graph.  (Calling
//               flatten on a node that is part of a live scene graph,
//               for instance, a node somewhere under render, can
//               cause problems in a multithreaded environment.)
//
//               If allow_live_flatten is true, or in a release build,
//               this always returns true.
////////////////////////////////////////////////////////////////////
60
bool SceneGraphReducer::check_live_flatten(PandaNode *node);

3751 22 TextureStageCollection 0 4 3955 46 TextureStageCollection::TextureStageCollection 0 2 2160 2161 475
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::Copy Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
137
TextureStageCollection::TextureStageCollection(void);
TextureStageCollection::TextureStageCollection(TextureStageCollection const &copy);

3752 10 operator = 0 4 3955 34 TextureStageCollection::operator = 0 1 2162 247
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::Copy Assignment Operator
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
76
void TextureStageCollection::operator =(TextureStageCollection const &copy);

3753 23 ~TextureStageCollection 0 4 3955 47 TextureStageCollection::~TextureStageCollection 0 0 731
// Filename: textureStageCollection.I
// Created by:  drose (23Jul04)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::Destructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
61
inline TextureStageCollection::~TextureStageCollection(void);

3754 17 add_texture_stage 0 4 3955 41 TextureStageCollection::add_texture_stage 0 1 2163 283
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::add_texture_stage
//       Access: Published
//  Description: Adds a new TextureStage to the collection.
////////////////////////////////////////////////////////////////////
81
void TextureStageCollection::add_texture_stage(TextureStage *node_texture_stage);

3755 20 remove_texture_stage 0 4 3955 44 TextureStageCollection::remove_texture_stage 0 1 2164 428
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::remove_texture_stage
//       Access: Published
//  Description: Removes the indicated TextureStage from the collection.
//               Returns true if the texture_stage was removed, false if it was
//               not a member of the collection.
////////////////////////////////////////////////////////////////////
84
bool TextureStageCollection::remove_texture_stage(TextureStage *node_texture_stage);

3756 23 add_texture_stages_from 0 4 3955 47 TextureStageCollection::add_texture_stages_from 0 1 2165 516
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::add_texture_stages_from
//       Access: Published
//  Description: Adds all the TextureStages indicated in the other
//               collection to this texture_stage.  The other texture_stages are simply
//               appended to the end of the texture_stages in this list;
//               duplicates are not automatically removed.
////////////////////////////////////////////////////////////////////
90
void TextureStageCollection::add_texture_stages_from(TextureStageCollection const &other);

3757 26 remove_texture_stages_from 0 4 3955 50 TextureStageCollection::remove_texture_stages_from 0 1 2166 352
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::remove_texture_stages_from
//       Access: Published
//  Description: Removes from this collection all of the TextureStages
//               listed in the other collection.
////////////////////////////////////////////////////////////////////
93
void TextureStageCollection::remove_texture_stages_from(TextureStageCollection const &other);

3758 31 remove_duplicate_texture_stages 0 4 3955 55 TextureStageCollection::remove_duplicate_texture_stages 0 1 2167 494
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::remove_duplicate_texture_stages
//       Access: Published
//  Description: Removes any duplicate entries of the same TextureStages
//               on this collection.  If a TextureStage appears multiple
//               times, the first appearance is retained; subsequent
//               appearances are removed.
////////////////////////////////////////////////////////////////////
67
void TextureStageCollection::remove_duplicate_texture_stages(void);

3759 17 has_texture_stage 0 4 3955 41 TextureStageCollection::has_texture_stage 0 1 2168 345
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::has_texture_stage
//       Access: Published
//  Description: Returns true if the indicated TextureStage appears in
//               this collection, false otherwise.
////////////////////////////////////////////////////////////////////
82
bool TextureStageCollection::has_texture_stage(TextureStage *texture_stage) const;

3760 5 clear 0 4 3955 29 TextureStageCollection::clear 0 1 2169 275
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::clear
//       Access: Published
//  Description: Removes all TextureStages from the collection.
////////////////////////////////////////////////////////////////////
41
void TextureStageCollection::clear(void);

3761 18 find_texture_stage 0 4 3955 42 TextureStageCollection::find_texture_stage 0 1 2170 395
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::find_texture_stage
//       Access: Published
//  Description: Returns the texture_stage in the collection with the
//               indicated name, if any, or NULL if no texture_stage has
//               that name.
////////////////////////////////////////////////////////////////////
97
TextureStage *TextureStageCollection::find_texture_stage(basic_string< char > const &name) const;

3762 22 get_num_texture_stages 0 4 3955 46 TextureStageCollection::get_num_texture_stages 0 1 2171 300
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::get_num_texture_stages
//       Access: Published
//  Description: Returns the number of TextureStages in the collection.
////////////////////////////////////////////////////////////////////
63
int TextureStageCollection::get_num_texture_stages(void) const;

3763 17 get_texture_stage 0 4 3955 41 TextureStageCollection::get_texture_stage 0 1 2172 288
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::get_texture_stage
//       Access: Published
//  Description: Returns the nth TextureStage in the collection.
////////////////////////////////////////////////////////////////////
73
TextureStage *TextureStageCollection::get_texture_stage(int index) const;

3764 11 operator [] 0 4 3955 35 TextureStageCollection::operator [] 0 1 2173 408
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::operator []
//       Access: Published
//  Description: Returns the nth TextureStage in the collection.  This is
//               the same as get_texture_stage(), but it may be a more
//               convenient way to access it.
////////////////////////////////////////////////////////////////////
67
TextureStage *TextureStageCollection::operator [](int index) const;

3765 4 size 0 4 3955 28 TextureStageCollection::size 0 1 2174 370
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::size
//       Access: Published
//  Description: Returns the number of texture stages in the
//               collection.  This is the same thing as
//               get_num_texture_stages().
////////////////////////////////////////////////////////////////////
45
int TextureStageCollection::size(void) const;

3766 11 operator += 0 4 3955 35 TextureStageCollection::operator += 0 1 2175 283
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::operator +=
//       Access: Published
//  Description: Appends the other list onto the end of this one.
////////////////////////////////////////////////////////////////////
85
inline void TextureStageCollection::operator +=(TextureStageCollection const &other);

3767 10 operator + 0 4 3955 34 TextureStageCollection::operator + 0 1 2176 332
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::operator +
//       Access: Published
//  Description: Returns a TextureStageCollection representing the
//               concatenation of the two lists.
////////////////////////////////////////////////////////////////////
108
inline TextureStageCollection TextureStageCollection::operator +(TextureStageCollection const &other) const;

3768 4 sort 0 4 3955 28 TextureStageCollection::sort 0 1 2177 347
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::sort
//       Access: Published
//  Description: Sorts the TextureStages in this collection into order
//               by TextureStage::sort(), from lowest to highest.
////////////////////////////////////////////////////////////////////
40
void TextureStageCollection::sort(void);

3769 6 output 0 4 3955 30 TextureStageCollection::output 0 1 2178 344
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::output
//       Access: Published
//  Description: Writes a brief one-line description of the
//               TextureStageCollection to the indicated output stream.
////////////////////////////////////////////////////////////////////
56
void TextureStageCollection::output(ostream &out) const;

3770 5 write 0 4 3955 29 TextureStageCollection::write 0 2 2179 2180 348
////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               TextureStageCollection to the indicated output stream.
////////////////////////////////////////////////////////////////////
79
void TextureStageCollection::write(ostream &out, int indent_level = (0)) const;

3771 34 py_decode_NodePath_from_bam_stream 0 1 0 34 py_decode_NodePath_from_bam_stream 0 1 2243 319
////////////////////////////////////////////////////////////////////
//     Function: py_decode_NodePath_from_bam_stream
//       Access: Published
//  Description: This wrapper is defined as a global function to suit
//               pickle's needs.
////////////////////////////////////////////////////////////////////
78
NodePath py_decode_NodePath_from_bam_stream(basic_string< char > const &data);

3772 42 py_decode_NodePath_from_bam_stream_persist 0 1 0 42 py_decode_NodePath_from_bam_stream_persist 0 1 2244 327
////////////////////////////////////////////////////////////////////
//     Function: py_decode_NodePath_from_bam_stream_persist
//       Access: Published
//  Description: This wrapper is defined as a global function to suit
//               pickle's needs.
////////////////////////////////////////////////////////////////////
107
NodePath py_decode_NodePath_from_bam_stream_persist(PyObject *unpickler, basic_string< char > const &data);

3773 10 PortalNode 0 4 3956 22 PortalNode::PortalNode 0 3 2181 2182 2183 1041
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::Constructor
//       Access: Public
//  Description: Default constructor, just an empty node, no geo
//               This is used to read portal from model. You can also
//               use this from python to create an empty portal. Then
//               you can set the vertices yourself, with addVertex.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PortalNode::Constructor
//       Access: Public
//  Description: Create a default rectangle as portal. Use this
//               to create an arbitrary portal and setup from Python
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PortalNode::Copy Constructor
//       Access: Protected
//  Description:
////////////////////////////////////////////////////////////////////
149
PortalNode::PortalNode(basic_string< char > const &name);
PortalNode::PortalNode(basic_string< char > const &name, LPoint3f pos, float scale = (10));

3774 15 set_portal_mask 0 4 3956 27 PortalNode::set_portal_mask 0 1 2184 813
// Filename: portalNode.I
// Created by:  masad (13May04)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_portal_mask
//       Access: Published
//  Description: Simultaneously sets both the "from" and "into"
//               PortalMask values to the same thing.
////////////////////////////////////////////////////////////////////
74
inline void PortalNode::set_portal_mask(BitMask< unsigned int, 32 > mask);

3775 20 set_from_portal_mask 0 4 3956 32 PortalNode::set_from_portal_mask 0 1 2185 501
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_from_portal_mask
//       Access: Published
//  Description: Sets the "from" PortalMask.  In order for a
//               portal to be detected from this object into
//               another object, the intersection of this object's
//               "from" mask and the other object's "into" mask must
//               be nonzero.
////////////////////////////////////////////////////////////////////
79
inline void PortalNode::set_from_portal_mask(BitMask< unsigned int, 32 > mask);

3776 20 set_into_portal_mask 0 4 3956 32 PortalNode::set_into_portal_mask 0 1 2186 501
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_into_portal_mask
//       Access: Published
//  Description: Sets the "into" PortalMask.  In order for a
//               portal to be detected from another object into
//               this object, the intersection of the other object's
//               "from" mask and this object's "into" mask must be
//               nonzero.
////////////////////////////////////////////////////////////////////
79
inline void PortalNode::set_into_portal_mask(BitMask< unsigned int, 32 > mask);

3777 20 get_from_portal_mask 0 4 3956 32 PortalNode::get_from_portal_mask 0 1 2187 512
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_from_portal_mask
//       Access: Published
//  Description: Returns the current "from" PortalMask.  In order for
//               a portal to be detected from this object into
//               another object, the intersection of this object's
//               "from" mask and the other object's "into" mask must
//               be nonzero.
////////////////////////////////////////////////////////////////////
80
inline BitMask< unsigned int, 32 > PortalNode::get_from_portal_mask(void) const;

3778 20 get_into_portal_mask 0 4 3956 32 PortalNode::get_into_portal_mask 0 1 2188 512
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_into_portal_mask
//       Access: Published
//  Description: Returns the current "into" PortalMask.  In order for
//               a portal to be detected from another object into
//               this object, the intersection of the other object's
//               "from" mask and this object's "into" mask must be
//               nonzero.
////////////////////////////////////////////////////////////////////
80
inline BitMask< unsigned int, 32 > PortalNode::get_into_portal_mask(void) const;

3779 15 set_portal_geom 0 4 3956 27 PortalNode::set_portal_geom 0 1 2189 847
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_portal_geom
//       Access: Published
//  Description: Sets the state of the "portal geom" flag for this
//               PortalNode.  Normally, this is false; when this is
//               set true, the PortalSolids in this node will test
//               for portals with actual renderable geometry, in
//               addition to whatever PortalSolids may be indicated
//               by the from_portal_mask.
//
//               Setting this to true causes this to test *all*
//               GeomNodes for portals.  It is an all-or-none
//               thing; there is no way to portal with only some
//               GeomNodes, as GeomNodes have no into_portal_mask.
////////////////////////////////////////////////////////////////////
51
inline void PortalNode::set_portal_geom(bool flag);

3780 15 get_portal_geom 0 4 3956 27 PortalNode::get_portal_geom 0 1 2190 317
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_portal_geom
//       Access: Published
//  Description: Returns the current state of the portal_geom flag.
//               See set_portal_geom().
////////////////////////////////////////////////////////////////////
52
inline bool PortalNode::get_portal_geom(void) const;

3781 14 clear_vertices 0 4 3956 26 PortalNode::clear_vertices 0 1 2191 278
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::clear_vertices
//       Access: Published
//  Description: Resets the vertices of the portal to the empty list.
////////////////////////////////////////////////////////////////////
45
inline void PortalNode::clear_vertices(void);

3782 10 add_vertex 0 4 3956 22 PortalNode::add_vertex 0 1 2192 395
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::add_vertex
//       Access: Published
//  Description: Adds a new vertex to the portal polygon.  The
//               vertices should be defined in a counterclockwise
//               orientation when viewing through the portal.
////////////////////////////////////////////////////////////////////
59
inline void PortalNode::add_vertex(LPoint3f const &vertex);

3783 16 get_num_vertices 0 4 3956 28 PortalNode::get_num_vertices 0 1 2193 281
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_num_vertices
//       Access: Published
//  Description: Returns the number of vertices in the portal polygon.
////////////////////////////////////////////////////////////////////
52
inline int PortalNode::get_num_vertices(void) const;

3784 10 get_vertex 0 4 3956 22 PortalNode::get_vertex 0 1 2194 267
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_vertex
//       Access: Published
//  Description: Returns the nth vertex of the portal polygon.
////////////////////////////////////////////////////////////////////
59
inline LPoint3f const &PortalNode::get_vertex(int n) const;

3785 11 set_cell_in 0 4 3956 23 PortalNode::set_cell_in 0 1 2195 264
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_cell_in
//       Access: Published
//  Description: Sets the cell that this portal belongs to
////////////////////////////////////////////////////////////////////
58
inline void PortalNode::set_cell_in(NodePath const &cell);

3786 11 get_cell_in 0 4 3956 23 PortalNode::get_cell_in 0 1 2196 264
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_cell_in
//       Access: Published
//  Description: Sets the cell that this portal belongs to
////////////////////////////////////////////////////////////////////
52
inline NodePath PortalNode::get_cell_in(void) const;

3787 12 set_cell_out 0 4 3956 24 PortalNode::set_cell_out 0 1 2197 267
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_cell_out
//       Access: Published
//  Description: Sets the cell that this portal leads out to
////////////////////////////////////////////////////////////////////
59
inline void PortalNode::set_cell_out(NodePath const &cell);

3788 12 get_cell_out 0 4 3956 24 PortalNode::get_cell_out 0 1 2198 267
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_cell_out
//       Access: Published
//  Description: Sets the cell that this portal leads out to
////////////////////////////////////////////////////////////////////
53
inline NodePath PortalNode::get_cell_out(void) const;

3789 14 set_clip_plane 0 4 3956 26 PortalNode::set_clip_plane 0 1 2199 313
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_clip_plane
//       Access: Published
//  Description: this is set if the portal will clip against its 
//               left and right planes
////////////////////////////////////////////////////////////////////
51
inline void PortalNode::set_clip_plane(bool value);

3790 13 is_clip_plane 0 4 3956 25 PortalNode::is_clip_plane 0 1 2200 278
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::is_clip_plane
//       Access: Published
//  Description: Is this portal clipping against its left-right planes
////////////////////////////////////////////////////////////////////
44
inline bool PortalNode::is_clip_plane(void);

3791 11 set_visible 0 4 3956 23 PortalNode::set_visible 0 1 2201 265
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_visible
//       Access: Published
//  Description: this is set if the portal is facing camera
////////////////////////////////////////////////////////////////////
48
inline void PortalNode::set_visible(bool value);

3792 10 is_visible 0 4 3956 22 PortalNode::is_visible 0 1 2202 254
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::is_visible
//       Access: Published
//  Description: Is this portal facing the camera
////////////////////////////////////////////////////////////////////
41
inline bool PortalNode::is_visible(void);

3793 13 set_max_depth 0 4 3956 25 PortalNode::set_max_depth 0 1 2203 277
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_max_depth
//       Access: Published
//  Description: Set the maximum depth this portal will be visible at
////////////////////////////////////////////////////////////////////
49
inline void PortalNode::set_max_depth(int value);

3794 13 get_max_depth 0 4 3956 25 PortalNode::get_max_depth 0 1 2204 281
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_max_depth
//       Access: Published
//  Description: Returns the maximum depth this portal will be visible at
////////////////////////////////////////////////////////////////////
43
inline int PortalNode::get_max_depth(void);

3795 8 set_open 0 4 3956 20 PortalNode::set_open 0 1 2205 264
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_open
//       Access: Published
//  Description: Python sets this based on curent camera zone
////////////////////////////////////////////////////////////////////
45
inline void PortalNode::set_open(bool value);

3796 7 is_open 0 4 3956 19 PortalNode::is_open 0 1 2206 263
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::is_open
//       Access: Published
//  Description: Is this portal open from current camera zone
////////////////////////////////////////////////////////////////////
38
inline bool PortalNode::is_open(void);

3797 14 get_class_type 0 4 3956 26 PortalNode::get_class_type 0 1 2207 0
51
static TypeHandle PortalNode::get_class_type(void);

3798 4 make 0 4 3957 25 RescaleNormalAttrib::make 0 1 2208 419
////////////////////////////////////////////////////////////////////
//     Function: RescaleNormalAttrib::make
//       Access: Published, Static
//  Description: Constructs a new RescaleNormalAttrib object that
//               specifies whether to rescale normals to compensate
//               for transform scales or incorrectly defined normals.
////////////////////////////////////////////////////////////////////
96
static ConstPointerTo< RenderAttrib > RescaleNormalAttrib::make(RescaleNormalAttrib::Mode mode);

3799 12 make_default 0 4 3957 33 RescaleNormalAttrib::make_default 0 1 2209 483
////////////////////////////////////////////////////////////////////
//     Function: RescaleNormalAttrib::make_default
//       Access: Published, Static
//  Description: Constructs a RescaleNoramlAttrib object that's
//               suitable for putting at the top of a scene graph.
//               This will contain whatever attrib was suggested by
//               the user's rescale-normals Config variable.
////////////////////////////////////////////////////////////////////
78
static ConstPointerTo< RenderAttrib > RescaleNormalAttrib::make_default(void);

3800 8 get_mode 0 4 3957 29 RescaleNormalAttrib::get_mode 0 1 2210 253
////////////////////////////////////////////////////////////////////
//     Function: RescaleNormalAttrib::get_mode
//       Access: Published
//  Description: Returns the render mode.
////////////////////////////////////////////////////////////////////
75
inline RescaleNormalAttrib::Mode RescaleNormalAttrib::get_mode(void) const;

3801 14 get_class_slot 0 4 3957 35 RescaleNormalAttrib::get_class_slot 0 1 2211 0
53
static int RescaleNormalAttrib::get_class_slot(void);

3802 14 get_class_type 0 4 3957 35 RescaleNormalAttrib::get_class_type 0 1 2212 0
60
static TypeHandle RescaleNormalAttrib::get_class_type(void);

3803 20 ~RescaleNormalAttrib 0 4 3957 41 RescaleNormalAttrib::~RescaleNormalAttrib 0 0 0
48
RescaleNormalAttrib::~RescaleNormalAttrib(void);

3804 8 make_off 0 4 3959 23 ScissorAttrib::make_off 0 1 2213 346
////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ScissorAttrib object that removes
//               the scissor region and fills the DisplayRegion.
////////////////////////////////////////////////////////////////////
68
static ConstPointerTo< RenderAttrib > ScissorAttrib::make_off(void);

3805 4 make 0 4 3959 19 ScissorAttrib::make 0 2 2214 2215 1445
// Filename: scissorAttrib.I
// Created by:  drose (29Jul08)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::make
//       Access: Published, Static
//  Description: Constructs a ScissorAttrib that restricts rendering
//               to the indicated frame within the current
//               DisplayRegion.  (0,0) is the lower-left corner of the
//               DisplayRegion, and (1,1) is the upper-right corner.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::make
//       Access: Published, Static
//  Description: Constructs a ScissorAttrib that restricts rendering
//               to the indicated frame within the current
//               DisplayRegion.  (0,0) is the lower-left corner of the
//               DisplayRegion, and (1,1) is the upper-right corner.
////////////////////////////////////////////////////////////////////
199
static inline ConstPointerTo< RenderAttrib > ScissorAttrib::make(float left, float right, float bottom, float top);
static ConstPointerTo< RenderAttrib > ScissorAttrib::make(LVecBase4f const &frame);

3806 12 make_default 0 4 3959 27 ScissorAttrib::make_default 0 1 2216 400
////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
72
static ConstPointerTo< RenderAttrib > ScissorAttrib::make_default(void);

3807 9 get_frame 0 4 3959 24 ScissorAttrib::get_frame 0 1 2217 510
////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::get_frame
//       Access: Published
//  Description: Returns the left, right, bottom, top coordinates of
//               the scissor frame.  This defines a frame within the
//               current DisplayRegion, where 0,0 is the lower-left
//               corner of the DisplayRegion, and 1,1 is the
//               upper-right corner.
////////////////////////////////////////////////////////////////////
62
inline LVecBase4f const &ScissorAttrib::get_frame(void) const;

3808 14 get_class_slot 0 4 3959 29 ScissorAttrib::get_class_slot 0 1 2218 0
47
static int ScissorAttrib::get_class_slot(void);

3809 14 get_class_type 0 4 3959 29 ScissorAttrib::get_class_type 0 1 2219 0
54
static TypeHandle ScissorAttrib::get_class_type(void);

3810 14 ~ScissorAttrib 0 4 3959 29 ScissorAttrib::~ScissorAttrib 0 0 0
36
ScissorAttrib::~ScissorAttrib(void);

3811 4 make 0 4 3960 22 ShadeModelAttrib::make 0 1 2220 399
////////////////////////////////////////////////////////////////////
//     Function: ShadeModelAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ShadeModelAttrib object that specifies
//               whether to draw polygons with flat shading or with
//               per-vertex (smooth) shading.
////////////////////////////////////////////////////////////////////
90
static ConstPointerTo< RenderAttrib > ShadeModelAttrib::make(ShadeModelAttrib::Mode mode);

3812 12 make_default 0 4 3960 30 ShadeModelAttrib::make_default 0 1 2221 403
////////////////////////////////////////////////////////////////////
//     Function: ShadeModelAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
75
static ConstPointerTo< RenderAttrib > ShadeModelAttrib::make_default(void);

3813 8 get_mode 0 4 3960 26 ShadeModelAttrib::get_mode 0 1 2222 249
////////////////////////////////////////////////////////////////////
//     Function: ShadeModelAttrib::get_mode
//       Access: Published
//  Description: Returns the shade mode.
////////////////////////////////////////////////////////////////////
69
inline ShadeModelAttrib::Mode ShadeModelAttrib::get_mode(void) const;

3814 14 get_class_slot 0 4 3960 32 ShadeModelAttrib::get_class_slot 0 1 2223 0
50
static int ShadeModelAttrib::get_class_slot(void);

3815 14 get_class_type 0 4 3960 32 ShadeModelAttrib::get_class_type 0 1 2224 0
57
static TypeHandle ShadeModelAttrib::get_class_type(void);

3816 17 ~ShadeModelAttrib 0 4 3960 35 ShadeModelAttrib::~ShadeModelAttrib 0 0 0
42
ShadeModelAttrib::~ShadeModelAttrib(void);

3817 8 make_off 0 4 3962 23 StencilAttrib::make_off 0 1 2225 307
////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a StencilAttrib that has stenciling 
//               turned off.
////////////////////////////////////////////////////////////////////
68
static ConstPointerTo< RenderAttrib > StencilAttrib::make_off(void);

3818 12 make_default 0 4 3962 27 StencilAttrib::make_default 0 1 2226 400
////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
////////////////////////////////////////////////////////////////////
72
static ConstPointerTo< RenderAttrib > StencilAttrib::make_default(void);

3819 4 make 0 4 3962 19 StencilAttrib::make 0 1 2227 265
////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make
//       Access: Published, Static
//  Description: Constructs a front face StencilAttrib.
////////////////////////////////////////////////////////////////////
329
static ConstPointerTo< RenderAttrib > StencilAttrib::make(unsigned int front_enable, unsigned int front_comparison_function, unsigned int stencil_fail_operation, unsigned int stencil_pass_z_fail_operation, unsigned int front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask);

3820 12 make_2_sided 0 4 3962 27 StencilAttrib::make_2_sided 0 1 2228 272
////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make_2_sided
//       Access: Published, Static
//  Description: Constructs a two-sided StencilAttrib.
////////////////////////////////////////////////////////////////////
542
static ConstPointerTo< RenderAttrib > StencilAttrib::make_2_sided(unsigned int front_enable, unsigned int back_enable, unsigned int front_comparison_function, unsigned int stencil_fail_operation, unsigned int stencil_pass_z_fail_operation, unsigned int front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask, unsigned int back_comparison_function, unsigned int back_stencil_fail_operation, unsigned int back_stencil_pass_z_fail_operation, unsigned int back_stencil_pass_z_pass_operation);

3821 15 make_with_clear 0 4 3962 30 StencilAttrib::make_with_clear 0 1 2229 265
////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make
//       Access: Published, Static
//  Description: Constructs a front face StencilAttrib.
////////////////////////////////////////////////////////////////////
386
static ConstPointerTo< RenderAttrib > StencilAttrib::make_with_clear(unsigned int front_enable, unsigned int front_comparison_function, unsigned int stencil_fail_operation, unsigned int stencil_pass_z_fail_operation, unsigned int front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask, unsigned int clear, unsigned int clear_value);

3822 23 make_2_sided_with_clear 0 4 3962 38 StencilAttrib::make_2_sided_with_clear 0 1 2230 272
////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make_2_sided
//       Access: Published, Static
//  Description: Constructs a two-sided StencilAttrib.
////////////////////////////////////////////////////////////////////
599
static ConstPointerTo< RenderAttrib > StencilAttrib::make_2_sided_with_clear(unsigned int front_enable, unsigned int back_enable, unsigned int front_comparison_function, unsigned int stencil_fail_operation, unsigned int stencil_pass_z_fail_operation, unsigned int front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask, unsigned int back_comparison_function, unsigned int back_stencil_fail_operation, unsigned int back_stencil_pass_z_fail_operation, unsigned int back_stencil_pass_z_pass_operation, unsigned int clear, unsigned int clear_value);

3823 16 get_render_state 0 4 3962 31 StencilAttrib::get_render_state 0 1 2231 744
// Filename: stencilAttrib.I
// Created by:  aignacio (18May06)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::get_render_state
//       Access: Published
//  Description: Returns render state.
////////////////////////////////////////////////////////////////////
96
inline unsigned int StencilAttrib::get_render_state(unsigned int render_state_identifier) const;

3824 14 get_class_slot 0 4 3962 29 StencilAttrib::get_class_slot 0 1 2232 0
47
static int StencilAttrib::get_class_slot(void);

3825 14 get_class_type 0 4 3962 29 StencilAttrib::get_class_type 0 1 2233 0
54
static TypeHandle StencilAttrib::get_class_type(void);

3826 14 ~StencilAttrib 0 4 3962 29 StencilAttrib::~StencilAttrib 0 0 0
36
StencilAttrib::~StencilAttrib(void);

3827 10 has_shader 0 4 3967 22 ShaderPool::has_shader 0 1 2234 796
// Filename: shaderPool.I
// Created by:  aignacio (Mar06)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::has_shader
//       Access: Public, Static
//  Description: Returns true if the shader has ever been loaded,
//               false otherwise.
////////////////////////////////////////////////////////////////////
68
static inline bool ShaderPool::has_shader(Filename const &filename);

3828 13 verify_shader 0 4 3967 25 ShaderPool::verify_shader 0 1 2235 602
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::verify_shader
//       Access: Public, Static
//  Description: Loads the given filename up into a shader, if it has
//               not already been loaded, and returns true to indicate
//               success, or false to indicate failure.  If this
//               returns true, it is guaranteed that a subsequent call
//               to load_shader() with the same shader name will
//               return a valid Shader pointer.
////////////////////////////////////////////////////////////////////
71
static inline bool ShaderPool::verify_shader(Filename const &filename);

3829 11 load_shader 0 4 3967 23 ShaderPool::load_shader 0 1 2236 536
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::load_shader
//       Access: Public, Static
//  Description: Loads the given filename up into a shader, if it has
//               not already been loaded, and returns the new shader.
//               If a shader with the same filename was previously
//               loaded, returns that one instead.  If the shader
//               file cannot be found, returns NULL.
////////////////////////////////////////////////////////////////////
89
static inline ConstPointerTo< Shader > ShaderPool::load_shader(Filename const &filename);

3830 10 add_shader 0 4 3967 22 ShaderPool::add_shader 0 1 2237 432
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::add_shader
//       Access: Public, Static
//  Description: Adds the indicated already-loaded shader to the
//               pool.  The shader will always replace any
//               previously-loaded shader in the pool that had the
//               same filename.
////////////////////////////////////////////////////////////////////
84
static inline void ShaderPool::add_shader(Filename const &filename, Shader *shader);

3831 14 release_shader 0 4 3967 26 ShaderPool::release_shader 0 1 2238 549
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::release_shader
//       Access: Public, Static
//  Description: Removes the indicated shader from the pool,
//               indicating it will never be loaded again; the shader
//               may then be freed.  If this function is never called,
//               a reference count will be maintained on every shader
//               every loaded, and shaders will never be freed.
////////////////////////////////////////////////////////////////////
72
static inline void ShaderPool::release_shader(Filename const &filename);

3832 19 release_all_shaders 0 4 3967 31 ShaderPool::release_all_shaders 0 1 2239 327
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::release_all_shaders
//       Access: Public, Static
//  Description: Releases all shaders in the pool and restores the
//               pool to the empty state.
////////////////////////////////////////////////////////////////////
57
static inline void ShaderPool::release_all_shaders(void);

3833 15 garbage_collect 0 4 3967 27 ShaderPool::garbage_collect 0 1 2240 473
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::garbage_collect
//       Access: Public, Static
//  Description: Releases only those shaders in the pool that have a
//               reference count of exactly 1; i.e. only those
//               shaders that are not being used outside of the pool.
//               Returns the number of shaders released.
////////////////////////////////////////////////////////////////////
52
static inline int ShaderPool::garbage_collect(void);

3834 13 list_contents 0 4 3967 25 ShaderPool::list_contents 0 1 2241 316
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::list_contents
//       Access: Public, Static
//  Description: Lists the contents of the shader pool to the
//               indicated output stream.
////////////////////////////////////////////////////////////////////
59
static inline void ShaderPool::list_contents(ostream &out);

3835 5 write 0 4 3967 17 ShaderPool::write 0 1 2242 311
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::write
//       Access: Published, Static
//  Description: Lists the contents of the shader pool to the
//               indicated output stream.
////////////////////////////////////////////////////////////////////
44
static void ShaderPool::write(ostream &out);

3836 11 ~ShaderPool 0 4 3967 23 ShaderPool::~ShaderPool 0 0 0
30
ShaderPool::~ShaderPool(void);

2244
1 14 Dtool_w0CqQ1lR 0 6 3 3970 0 14 Dtool_w0CqQ1lR 899 // Filename: transformState.I
// Created by:  drose (25Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: TransformState::operator <
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               TransformStates, so we can store the essentially
//               different ones in a big set and throw away the rest.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  5 other 1 3968  
2 14 Dtool_w0CquklB 0 6 4 3971 0 14 Dtool_w0CquklB 409 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               TransformStates, so we can store the essentially
//               different ones in a big set and throw away the rest.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  5 other 1 3968  
3 14 Dtool_w0CqM0Qo 0 6 4 3971 0 14 Dtool_w0CqM0Qo 696 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               TransformStates, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               If uniquify_matrix is true, then matrix-defined
//               TransformStates are also uniqified.  If
//               uniquify_matrix is false, then only component-defined
//               TransformStates are uniquified, which is less
//               expensive.
//////////////////////////////////////////////////////////////////// 3 4 this 3 3968  5 other 1 3968  15 uniquify_matrix 1 3970  
4 14 Dtool_w0CqNPd4 0 6 5 3972 0 14 Dtool_w0CqNPd4 268 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_hash
//       Access: Published
//  Description: Returns a suitable hash value for phash_map.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
5 14 Dtool_w0CqoK5A 0 7 6 3968 0 14 Dtool_w0CqoK5A 270 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_identity
//       Access: Published, Static
//  Description: Constructs an identity transform.
//////////////////////////////////////////////////////////////////// 0 
6 14 Dtool_w0Cq0MDC 0 7 7 3968 0 14 Dtool_w0Cq0MDC 342 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_invalid
//       Access: Published, Static
//  Description: Constructs an invalid transform; for instance, the
//               result of inverting a singular matrix.
//////////////////////////////////////////////////////////////////// 0 
7 14 Dtool_w0Cqe_gZ 0 7 8 3968 0 14 Dtool_w0Cqe_gZ 306 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 3 pos 1 3973  
8 14 Dtool_w0Cqnj11 0 7 9 3968 0 14 Dtool_w0Cqnj11 306 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_hpr
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 3 hpr 1 3973  
9 14 Dtool_w0Cq_1bt 0 7 10 3968 0 14 Dtool_w0Cq_1bt 307 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_quat
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 4 quat 1 3976  
10 14 Dtool_w0Cqm6_l 0 7 11 3968 0 14 Dtool_w0Cqm6_l 310 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_hpr
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 2 3 pos 1 3973  3 hpr 1 3973  
11 14 Dtool_w0CqeCL8 0 7 12 3968 0 14 Dtool_w0CqeCL8 308 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_scale
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 5 scale 1 3973  
12 14 Dtool_w0CqUwg8 0 7 12 3968 0 14 Dtool_w0CqUwg8 308 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_scale
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 5 scale 1 3979  
13 14 Dtool_w0Cq7OFW 0 7 13 3968 0 14 Dtool_w0Cq7OFW 308 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_shear
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 5 shear 1 3973  
14 14 Dtool_w0CqrG32 0 7 14 3968 0 14 Dtool_w0CqrG32 316 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_hpr_scale
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 3 3 pos 1 3973  3 hpr 1 3973  5 scale 1 3973  
15 14 Dtool_w0CqR_EG 0 7 15 3968 0 14 Dtool_w0CqR_EG 317 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_quat_scale
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 3 3 pos 1 3973  4 quat 1 3976  5 scale 1 3973  
16 14 Dtool_w0CqFwpz 0 7 16 3968 0 14 Dtool_w0CqFwpz 322 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_hpr_scale_shear
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 4 3 pos 1 3973  3 hpr 1 3973  5 scale 1 3973  5 shear 1 3973  
17 14 Dtool_w0CqDFJS 0 7 17 3968 0 14 Dtool_w0CqDFJS 323 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_quat_scale_shear
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 4 3 pos 1 3973  4 quat 1 3976  5 scale 1 3973  5 shear 1 3973  
18 14 Dtool_w0CqyOW1 0 7 18 3968 0 14 Dtool_w0CqyOW1 317 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_mat
//       Access: Published, Static
//  Description: Makes a new TransformState with the specified
//               transformation matrix.
//////////////////////////////////////////////////////////////////// 1 3 mat 1 3980  
19 14 Dtool_w0Cqn4_7 0 7 19 3968 0 14 Dtool_w0Cqn4_7 312 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 3 pos 1 3983  
20 14 Dtool_w0Cq6tOv 0 7 20 3968 0 14 Dtool_w0Cq6tOv 315 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_rotate2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 6 rotate 1 3979  
21 14 Dtool_w0CqJlYf 0 7 21 3968 0 14 Dtool_w0CqJlYf 319 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_rotate2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 2 3 pos 1 3983  6 rotate 1 3979  
22 14 Dtool_w0Cq_u6x 0 7 22 3968 0 14 Dtool_w0Cq_u6x 314 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_scale2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 5 scale 1 3983  
23 14 Dtool_w0CqMyK9 0 7 22 3968 0 14 Dtool_w0CqMyK9 314 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_scale2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 5 scale 1 3979  
24 14 Dtool_w0CqPaEX 0 7 23 3968 0 14 Dtool_w0CqPaEX 314 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_shear2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 1 5 shear 1 3979  
25 14 Dtool_w0CqzgBF 0 7 24 3968 0 14 Dtool_w0CqzgBF 325 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_rotate_scale2d
//       Access: Published, Static
//  Description: Makes a new 2-d TransformState with the specified
//               components.
//////////////////////////////////////////////////////////////////// 3 3 pos 1 3983  6 rotate 1 3979  5 scale 1 3983  
26 14 Dtool_w0CqQpLJ 0 7 25 3968 0 14 Dtool_w0CqQpLJ 343 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_pos_rotate_scale_shear2d
//       Access: Published, Static
//  Description: Makes a new two-dimensional TransformState with the
//               specified components.
//////////////////////////////////////////////////////////////////// 4 3 pos 1 3983  6 rotate 1 3979  5 scale 1 3983  5 shear 1 3979  
27 14 Dtool_w0Cqvwaf 0 7 26 3968 0 14 Dtool_w0Cqvwaf 338 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::make_mat3
//       Access: Published, Static
//  Description: Makes a new two-dimensional TransformState with the
//               specified 3x3 transformation matrix.
//////////////////////////////////////////////////////////////////// 1 3 mat 1 3986  
28 14 Dtool_w0Cq70HT 0 6 27 3970 0 14 Dtool_w0Cq70HT 322 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::is_identity
//       Access: Published
//  Description: Returns true if the transform represents the identity
//               matrix, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
29 14 Dtool_w0Cq5m5t 0 6 28 3970 0 14 Dtool_w0Cq5m5t 411 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::is_invalid
//       Access: Published
//  Description: Returns true if the transform represents an invalid
//               matrix, for instance the result of inverting a
//               singular matrix, or false if the transform is valid.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
30 14 Dtool_w0Cq83Ub 0 6 29 3970 0 14 Dtool_w0Cq83Ub 401 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::is_singular
//       Access: Published
//  Description: Returns true if the transform represents a singular
//               transform (that is, it has a zero scale, and it
//               cannot be inverted), or false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
31 14 Dtool_w0CqFbzh 0 6 30 3970 0 14 Dtool_w0CqFbzh 460 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::is_2d
//       Access: Published
//  Description: Returns true if the transform has been constructed
//               entirely using the 2-d transform operations,
//               e.g. make_pos2d(), and therefore operates strictly in
//               two-dimensional space on X and Y only.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
32 14 Dtool_w0Cq3N1T 0 6 31 3970 0 14 Dtool_w0Cq3N1T 1050 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_components
//       Access: Published
//  Description: Returns true if the transform can be described by
//               separate pos, hpr, and scale components.  Most
//               transforms we use in everyday life can be so
//               described, but some kinds of transforms (for
//               instance, those involving a skew) cannot.
//
//               This is not related to whether the transform was
//               originally described componentwise.  Even a transform
//               that was constructed with a 4x4 may return true here
//               if the matrix is a simple affine matrix with no skew.
//
//               If this returns true, you may safely call get_hpr()
//               and get_scale() to retrieve the components.  (You
//               may always safely call get_pos() whether this returns
//               true or false.)
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
33 14 Dtool_w0CqoeA_ 0 6 32 3970 0 14 Dtool_w0CqoeA_ 796 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::components_given
//       Access: Published
//  Description: Returns true if the transform was specified
//               componentwise, or false if it was specified with a
//               general 4x4 matrix.  If this is true, the components
//               returned by get_pos() and get_scale() will be exactly
//               those that were set; otherwise, these functions will
//               return computed values.  If this is true, the
//               rotation may have been set either with a hpr trio or
//               with a quaternion; hpr_given() or quat_given() can
//               resolve the difference.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
34 14 Dtool_w0CqePnm 0 6 33 3970 0 14 Dtool_w0CqePnm 459 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::hpr_given
//       Access: Published
//  Description: Returns true if the rotation was specified via a trio
//               of Euler angles, false otherwise.  If this is true,
//               get_hpr() will be exactly as set; otherwise, it will
//               return a computed value.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
35 14 Dtool_w0CqfBB6 0 6 34 3970 0 14 Dtool_w0CqfBB6 452 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::quat_given
//       Access: Published
//  Description: Returns true if the rotation was specified via a 
//               quaternion, false otherwise.  If this is true,
//               get_quat() will be exactly as set; otherwise, it will
//               return a computed value.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
36 14 Dtool_w0Cqd7_k 0 6 35 3970 0 14 Dtool_w0Cqd7_k 450 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_pos
//       Access: Published
//  Description: Returns true if the transform's pos component can be
//               extracted out separately.  This is generally always
//               true, unless the transform is invalid
//               (i.e. is_invalid() returns true).
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
37 14 Dtool_w0CqaR4z 0 6 36 3970 0 14 Dtool_w0CqaR4z 456 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_hpr
//       Access: Published
//  Description: Returns true if the transform's rotation component
//               can be extracted out separately and described as a
//               set of Euler angles.  This is generally true only
//               when has_components() is true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
38 14 Dtool_w0Cqbgn7 0 6 37 3970 0 14 Dtool_w0Cqbgn7 448 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_quat
//       Access: Published
//  Description: Returns true if the transform's rotation component
//               can be extracted out separately and described as a
//               quaternion.  This is generally true only when
//               has_components() is true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
39 14 Dtool_w0CqeXCQ 0 6 38 3970 0 14 Dtool_w0CqeXCQ 399 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_scale
//       Access: Published
//  Description: Returns true if the transform's scale component
//               can be extracted out separately.  This is generally
//               true only when has_components() is true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
40 14 Dtool_w0CqtKCi 0 6 39 3970 0 14 Dtool_w0CqtKCi 335 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_identity_scale
//       Access: Published
//  Description: Returns true if the scale is uniform 1.0, or false if
//               the scale has some real value.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
41 14 Dtool_w0CqCj8m 0 6 40 3970 0 14 Dtool_w0CqCj8m 468 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_uniform_scale
//       Access: Published
//  Description: Returns true if the scale is uniform across all three
//               axes (and therefore can be expressed as a single
//               number), or false if the transform has a different
//               scale in different dimensions.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
42 14 Dtool_w0CqQZ2I 0 6 41 3970 0 14 Dtool_w0CqQZ2I 399 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_shear
//       Access: Published
//  Description: Returns true if the transform's shear component
//               can be extracted out separately.  This is generally
//               true only when has_components() is true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
43 14 Dtool_w0CqUk2V 0 6 42 3970 0 14 Dtool_w0CqUk2V 374 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_nonzero_shear
//       Access: Published
//  Description: Returns true if the shear component is non-zero,
//               false if it is zero or if the matrix cannot be
//               decomposed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
44 14 Dtool_w0CqSx0T 0 6 43 3970 0 14 Dtool_w0CqSx0T 377 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::has_mat
//       Access: Published
//  Description: Returns true if the transform can be described as a
//               matrix.  This is generally always true, unless
//               is_invalid() is true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
45 14 Dtool_w0Cq1Y_X 0 6 44 3989 0 14 Dtool_w0Cq1Y_X 341 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_pos
//       Access: Published
//  Description: Returns the pos component of the transform.  It is an
//               error to call this if has_pos() returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
46 14 Dtool_w0Cqyy3m 0 6 45 3973 0 14 Dtool_w0Cqyy3m 396 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_hpr
//       Access: Published
//  Description: Returns the rotation component of the transform as a
//               trio of Euler angles.  It is an error to call this if
//               has_components() returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
47 14 Dtool_w0CqzDmu 0 6 46 3976 0 14 Dtool_w0CqzDmu 746 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_quat
//       Access: Published
//  Description: Returns the rotation component of the transform as a
//               quaternion.  The return value will be normalized if a
//               normalized quaternion was given to the constructor
//               (or if the quaternion was computed implicitly); it
//               will be non-normalized if a non-normalized quaternion
//               was given to the constructor.  See also
//               get_norm_quat().
//
//               It is an error to call this if has_components()
//               returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
48 14 Dtool_w0CqTdVR 0 6 47 3976 0 14 Dtool_w0CqTdVR 524 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_norm_quat
//       Access: Published
//  Description: Returns the rotation component of the transform as a
//               quaternion.  Unlike the result of get_quat(), the
//               return value of this method is guaranteed to be
//               normalized.  It is an error to call this if
//               has_components() returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
49 14 Dtool_w0CqmyBD 0 6 48 3973 0 14 Dtool_w0CqmyBD 369 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_scale
//       Access: Published
//  Description: Returns the scale component of the transform.  It is an
//               error to call this if has_components() returned
//               false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
50 14 Dtool_w0Cq6_8Z 0 6 49 3979 0 14 Dtool_w0Cq6_8Z 400 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_uniform_scale
//       Access: Published
//  Description: Returns the scale component of the transform, as a
//               single number.  It is an error to call this if
//               has_uniform_scale() returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
51 14 Dtool_w0Cqn_27 0 6 50 3973 0 14 Dtool_w0Cqn_27 369 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_shear
//       Access: Published
//  Description: Returns the shear component of the transform.  It is
//               an error to call this if has_components() returned
//               false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
52 14 Dtool_w0CqKS0G 0 6 51 3980 0 14 Dtool_w0CqKS0G 271 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_mat
//       Access: Published
//  Description: Returns the matrix that describes the transform.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
53 14 Dtool_w0CqGSGD 0 7 52 3992 0 14 Dtool_w0CqGSGD 375 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_pos2d
//       Access: Published
//  Description: Returns the pos component of the 2-d transform.  It
//               is an error to call this if has_pos() or is_2d()
//               returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
54 14 Dtool_w0Cqguij 0 6 53 3979 0 14 Dtool_w0Cqguij 456 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_rotate2d
//       Access: Published
//  Description: Returns the rotation component of the 2-d transform
//               as an angle in degrees clockwise about the origin.
//               It is an error to call this if has_components() or
//               is_2d() returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
55 14 Dtool_w0CqJEJy 0 7 54 3992 0 14 Dtool_w0CqJEJy 386 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_scale2d
//       Access: Published
//  Description: Returns the scale component of the 2-d transform.  It
//               is an error to call this if has_components() or
//               is_2d() returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
56 14 Dtool_w0Cqay8q 0 6 55 3979 0 14 Dtool_w0Cqay8q 386 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_shear2d
//       Access: Published
//  Description: Returns the shear component of the 2-d transform.  It
//               is an error to call this if has_components() or
//               is_2d() returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
57 14 Dtool_w0CqjHYM 0 7 56 3993 0 14 Dtool_w0CqjHYM 370 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_mat3
//       Access: Published
//  Description: Returns the 3x3 matrix that describes the 2-d
//               transform.  It is an error to call this if is_2d()
//               returned false.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
58 14 Dtool_w0Cqw_sj 0 7 57 3968 0 14 Dtool_w0Cqw_sj 394 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_pos
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its pos component
//               replaced with the indicated value.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  3 pos 1 3973  
59 14 Dtool_w0CqtUny 0 7 58 3968 0 14 Dtool_w0CqtUny 412 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_hpr
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its rotation component
//               replaced with the indicated value, if possible.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  3 hpr 1 3973  
60 14 Dtool_w0CqAH3z 0 7 59 3968 0 14 Dtool_w0CqAH3z 413 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_quat
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its rotation component
//               replaced with the indicated value, if possible.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  4 quat 1 3976  
61 14 Dtool_w0Cq9kl0 0 7 60 3968 0 14 Dtool_w0Cq9kl0 411 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_scale
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its scale component
//               replaced with the indicated value, if possible.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  5 scale 1 3973  
62 14 Dtool_w0CqIVYt 0 7 61 3968 0 14 Dtool_w0CqIVYt 411 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_shear
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original TransformState with its shear component
//               replaced with the indicated value, if possible.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  5 shear 1 3973  
63 14 Dtool_w0Cq2_j0 0 7 62 3968 0 14 Dtool_w0Cq2_j0 400 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_pos2d
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original 2-d TransformState with its pos component
//               replaced with the indicated value.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  3 pos 1 3983  
64 14 Dtool_w0CqwLZY 0 7 63 3968 0 14 Dtool_w0CqwLZY 421 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_rotate2d
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original 2-d TransformState with its rotation component
//               replaced with the indicated value, if possible.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  6 rotate 1 3979  
65 14 Dtool_w0CqDWpr 0 7 64 3968 0 14 Dtool_w0CqDWpr 417 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_scale2d
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original 2-d TransformState with its scale component
//               replaced with the indicated value, if possible.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  5 scale 1 3983  
66 14 Dtool_w0CquRUH 0 7 65 3968 0 14 Dtool_w0CquRUH 417 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::set_shear2d
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               original 2-d TransformState with its shear component
//               replaced with the indicated value, if possible.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  5 shear 1 3979  
67 14 Dtool_w0CqNCSV 0 7 66 3968 0 14 Dtool_w0CqNCSV 723 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::compose
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               composition of this state with the other state.
//
//               The result of this operation is cached, and will be
//               retained as long as both this TransformState object and
//               the other TransformState object continue to exist.
//               Should one of them destruct, the cached entry will be
//               removed, and its pointer will be allowed to destruct
//               as well.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  5 other 1 3968  
68 14 Dtool_w0Cq4b4F 0 7 67 3968 0 14 Dtool_w0Cq4b4F 563 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::invert_compose
//       Access: Published
//  Description: Returns a new TransformState object that represents the
//               composition of this state's inverse with the other
//               state.
//
//               This is similar to compose(), but is particularly
//               useful for computing the relative state of a node as
//               viewed from some other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  5 other 1 3968  
69 14 Dtool_w0CqQVGV 0 7 68 3968 0 14 Dtool_w0CqQVGV 460 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_inverse
//       Access: Published
//  Description: Returns the inverse of this transform.  If you are
//               going to immediately compose this result with another
//               TransformState, it is faster to do it in one
//               operation with invert_compose().
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
70 14 Dtool_w0CqnkWq 0 7 69 3968 0 14 Dtool_w0CqnkWq 619 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_unique
//       Access: Published
//  Description: Returns the pointer to the unique TransformState in
//               the cache that is equivalent to this one.  This may
//               be the same pointer as this object, or it may be a
//               different pointer; but it will be an equivalent
//               object, and it will be a shared pointer.  This may be
//               called from time to time to improve cache benefits.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
71 14 Dtool_w0Cq_HK4 0 6 70 3971 0 14 Dtool_w0Cq_HK4 560 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this TransformState is
//               applied to a geom which includes the indicated
//               geom_rendering bits.  The RenderState's
//               get_geom_rendering() should already have been
//               applied.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  14 geom_rendering 1 3971  
72 14 Dtool_w0CqWr2Z 0 4 71 3994 0 14 Dtool_w0CqWr2Z 278 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::cache_ref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
73 14 Dtool_w0Cq6hq2 0 6 72 3970 0 14 Dtool_w0Cq6hq2 280 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::cache_unref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
74 14 Dtool_w0Cqvh_1 0 4 73 3994 0 14 Dtool_w0Cqvh_1 277 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::node_ref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
75 14 Dtool_w0Cqpm4c 0 6 74 3970 0 14 Dtool_w0Cqpm4c 279 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::node_unref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
76 14 Dtool_w0CqMO_Z 0 6 75 3971 0 14 Dtool_w0CqMO_Z 575 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_composition_cache_num_entries
//       Access: Published
//  Description: Returns the number of entries in the composition
//               cache for this TransformState.  This is the number of
//               other TransformStates whose composition with this one
//               has been cached.  This number is not useful for any
//               practical reason other than performance analysis.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
77 14 Dtool_w0CqeOXi 0 6 76 3971 0 14 Dtool_w0CqeOXi 559 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_invert_composition_cache_num_entries
//       Access: Published
//  Description: Returns the number of entries in the
//               invert_composition cache for this TransformState.
//               This is similar to the composition cache, but it
//               records cache entries for the invert_compose()
//               operation.  See get_composition_cache_num_entries().
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
78 14 Dtool_w0CqZ_rG 0 6 77 3971 0 14 Dtool_w0CqZ_rG 655 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_composition_cache_size
//       Access: Published
//  Description: Returns the number of slots in the composition
//               cache for this TransformState.  You may use this as
//               an upper bound when walking through all of the
//               composition cache results via
//               get_composition_cache_source() or result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
79 14 Dtool_w0CqY_83 0 7 78 3968 0 14 Dtool_w0CqY_83 608 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_composition_cache_source
//       Access: Published
//  Description: Returns the source TransformState of the nth element
//               in the composition cache.  Returns NULL if there
//               doesn't happen to be an entry in the nth element.
//               See get_composition_cache_result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  1 n 1 3971  
80 14 Dtool_w0CqoMdw 0 7 79 3968 0 14 Dtool_w0CqoMdw 707 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_composition_cache_result
//       Access: Published
//  Description: Returns the result TransformState of the nth element
//               in the composition cache.  Returns NULL if there
//               doesn't happen to be an entry in the nth element.
//
//               In general,
//               a->compose(a->get_composition_cache_source(n)) ==
//               a->get_composition_cache_result(n).
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  1 n 1 3971  
81 14 Dtool_w0Cq9hkw 0 6 80 3971 0 14 Dtool_w0Cq9hkw 669 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_invert_composition_cache_size
//       Access: Published
//  Description: Returns the number of slots in the composition
//               cache for this TransformState.  You may use this as
//               an upper bound when walking through all of the
//               composition cache results via
//               get_invert_composition_cache_source() or result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
82 14 Dtool_w0CqffG4 0 7 81 3968 0 14 Dtool_w0CqffG4 630 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_invert_composition_cache_source
//       Access: Published
//  Description: Returns the source TransformState of the nth element
//               in the invert composition cache.  Returns NULL if
//               there doesn't happen to be an entry in the nth
//               element.  See get_invert_composition_cache_result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  1 n 1 3971  
83 14 Dtool_w0CquybI 0 7 82 3968 0 14 Dtool_w0CquybI 759 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_invert_composition_cache_result
//       Access: Published
//  Description: Returns the result TransformState of the nth element
//               in the invert composition cache.  Returns NULL if
//               there doesn't happen to be an entry in the nth
//               element.
//
//               In general,
//               a->invert_compose(a->get_invert_composition_cache_source(n))
//               == a->get_invert_composition_cache_result(n).
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  1 n 1 3971  
84 14 Dtool_w0CqUvQD 0 6 83 3970 0 14 Dtool_w0CqUvQD 425 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::validate_composition_cache
//       Access: Published
//  Description: Returns true if the composition cache and invert
//               composition cache for this particular TransformState
//               are self-consistent and valid, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 3968  
85 14 Dtool_w0CqrFw8 0 6 84 3995 0 14 Dtool_w0CqrFw8 0 1 4 this 3 3968  
86 14 Dtool_w0CqA_4X 0 6 85 3995 0 14 Dtool_w0CqA_4X 0 1 4 this 3 3968  
87 14 Dtool_w0Cqpd25 0 4 86 3994 0 14 Dtool_w0Cqpd25 222 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::output
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 3968  3 out 1 3997  
88 14 Dtool_w0CqREBo 0 4 87 3994 0 14 Dtool_w0CqREBo 221 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::write
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 3968  3 out 1 3997  12 indent_level 1 3971  
89 14 Dtool_w0CqnxWT 0 4 88 3994 0 14 Dtool_w0CqnxWT 481 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::write_composition_cache
//       Access: Published
//  Description: Writes a brief description of the composition cache
//               and invert composition cache to the indicated
//               ostream.  This is not useful except for performance
//               analysis, to examine the cache structure.
//////////////////////////////////////////////////////////////////// 3 4 this 3 3968  3 out 1 3997  12 indent_level 1 3971  
90 14 Dtool_w0Cqft1r 0 6 89 3971 0 14 Dtool_w0Cqft1r 405 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_num_states
//       Access: Published, Static
//  Description: Returns the total number of unique TransformState
//               objects allocated in the world.  This will go up and
//               down during normal operations.
//////////////////////////////////////////////////////////////////// 0 
91 14 Dtool_w0CqfD2f 0 6 90 3971 0 14 Dtool_w0CqfD2f 1009 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::get_num_unused_states
//       Access: Published, Static
//  Description: Returns the total number of TransformState objects that
//               have been allocated but have no references outside of
//               the internal TransformState cache.
//
//               A nonzero return value is not necessarily indicative
//               of leaked references; it is normal for two
//               TransformState objects, both of which have references
//               held outside the cache, to have the result of their
//               composition stored within the cache.  This result
//               will be retained within the cache until one of the
//               base TransformStates is released.
//
//               Use list_cycles() to get an idea of the number of
//               actual "leaked" TransformState objects.
//////////////////////////////////////////////////////////////////// 0 
92 14 Dtool_w0Cq8dXE 0 6 91 3971 0 14 Dtool_w0Cq8dXE 1021 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::clear_cache
//       Access: Published, Static
//  Description: Empties the cache of composed TransformStates.  This
//               makes every TransformState forget what results when
//               it is composed with other TransformStates.
//
//               This will eliminate any TransformState objects that
//               have been allocated but have no references outside of
//               the internal TransformState map.  It will not
//               eliminate TransformState objects that are still in
//               use.
//
//               Nowadays, this method should not be necessary, as
//               reference-count cycles in the composition cache
//               should be automatically detected and broken.
//
//               The return value is the number of TransformStates
//               freed by this operation.
//////////////////////////////////////////////////////////////////// 0 
93 14 Dtool_w0CqttHm 0 6 92 3971 0 14 Dtool_w0CqttHm 601 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::garbage_collect
//       Access: Published, Static
//  Description: Performs a garbage-collection cycle.  This must be
//               called periodically if garbage-collect-states is true
//               to ensure that TransformStates get cleaned up
//               appropriately.  It does no harm to call it even if
//               this variable is not true, but there is probably no
//               advantage in that case.
//////////////////////////////////////////////////////////////////// 0 
94 14 Dtool_w0CqCbxp 0 4 93 3994 0 14 Dtool_w0CqCbxp 951 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::list_cycles
//       Access: Published, Static
//  Description: Detects all of the reference-count cycles in the
//               cache and reports them to standard output.
//
//               These cycles may be inadvertently created when state
//               compositions cycle back to a starting point.
//               Nowadays, these cycles should be automatically
//               detected and broken, so this method should never list
//               any cycles unless there is a bug in that detection
//               logic.
//
//               The cycles listed here are not leaks in the strictest
//               sense of the word, since they can be reclaimed by a
//               call to clear_cache(); but they will not be reclaimed
//               automatically.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
95 14 Dtool_w0CqIP9P 0 4 94 3994 0 14 Dtool_w0CqIP9P 424 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::list_states
//       Access: Published, Static
//  Description: Lists all of the TransformStates in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
96 14 Dtool_w0CqidJ2 0 6 95 3970 0 14 Dtool_w0CqidJ2 586 ////////////////////////////////////////////////////////////////////
//     Function: TransformState::validate_states
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order, and that none of the cache elements have been
//               inadvertently deleted.  Returns true if so, false if
//               there is a problem (which implies someone has
//               modified one of the supposedly-const TransformState
//               objects).
//////////////////////////////////////////////////////////////////// 0 
97 14 Dtool_w0CqSnP2 0 6 96 3995 0 14 Dtool_w0CqSnP2 0 0 
98 14 Dtool_w0Cqk7B3 0 6 97 3995 0 14 Dtool_w0Cqk7B3 0 0 
99 14 Dtool_w0CqOzaR 0 7 98 4000 0 14 Dtool_w0CqOzaR 0 0 
100 14 Dtool_w0CqfX3c 0 6 100 3971 0 14 Dtool_w0CqfX3c 846 // Filename: renderAttribRegistry.I
// Created by:  drose (13Nov08)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_slot
//       Access: Published
//  Description: Returns the slot number assigned to the indicated
//               TypeHandle, or 0 if no slot number has been assigned.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4001  11 type_handle 1 4000  
101 14 Dtool_w0CqZk5x 0 6 101 3971 0 14 Dtool_w0CqZk5x 709 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_max_slots
//       Access: Published
//  Description: Returns the maximum number that any slot number is
//               allowed to grow.  Actually, this number will be one
//               higher than the highest possible slot number.  This
//               puts an upper bound on the number of RenderAttrib
//               slots that may be allocated, and allows other code to
//               define an array of slots.
//
//               This number will not change during the lifetime of
//               the application.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4001  
102 14 Dtool_w0CqNQ5i 0 6 102 3971 0 14 Dtool_w0CqNQ5i 390 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_num_slots
//       Access: Published
//  Description: Returns the number of RenderAttrib slots that have
//               been allocated.  This is one more than the highest
//               slot number in use.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4001  
103 14 Dtool_w0CqHhxA 0 7 103 4000 0 14 Dtool_w0CqHhxA 281 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_slot_type
//       Access: Published
//  Description: Returns the TypeHandle associated with slot n.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4001  4 slot 1 3971  
104 14 Dtool_w0CqADW5 0 6 104 3971 0 14 Dtool_w0CqADW5 282 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_slot_sort
//       Access: Published
//  Description: Returns the sort number associated with slot n.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4001  4 slot 1 3971  
105 14 Dtool_w0CqMnQ_ 0 4 105 3994 0 14 Dtool_w0CqMnQ_ 282 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::set_slot_sort
//       Access: Published
//  Description: Changes the sort number associated with slot n.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4003  4 slot 1 3971  4 sort 1 3971  
106 14 Dtool_w0CqsrqJ 0 7 106 4005 0 14 Dtool_w0CqsrqJ 444 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_slot_default
//       Access: Published
//  Description: Returns the default RenderAttrib object associated
//               with slot n.  This is the attrib that should be
//               applied in the absence of any other attrib of this
//               type.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4001  4 slot 1 3971  
107 14 Dtool_w0CqPoxa 0 6 107 3971 0 14 Dtool_w0CqPoxa 314 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_num_sorted_slots
//       Access: Published
//  Description: Returns the number of entries in the sorted_slots
//               list.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4001  
108 14 Dtool_w0CqXftp 0 6 108 3971 0 14 Dtool_w0CqXftp 424 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_sorted_slot
//       Access: Published
//  Description: Returns the nth slot in sorted order.  By traversing
//               this list, you will retrieve all the slot numbers in
//               order according to their registered sort value.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4001  1 n 1 3971  
109 14 Dtool_w0CqgOhD 0 6 109 4006 0 14 Dtool_w0CqgOhD 400 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_array_chain
//       Access: Published
//  Description: Returns the DeletedBufferChain object that may be
//               used to allocated appropriately-sized arrays of
//               RenderState::Attribute objects.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4001  
110 14 Dtool_w0CqVi_6 0 6 110 4003 0 14 Dtool_w0CqVi_6 243 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttribRegistry::get_global_ptr
//       Access: Published, Static
//  Description:
//////////////////////////////////////////////////////////////////// 0 
111 14 Dtool_w0CqYxD_ 0 7 113 4005 0 14 Dtool_w0CqYxD_ 1093 // Filename: renderAttrib.I
// Created by:  drose (21Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::compose
//       Access: Published
//  Description: Returns a new RenderAttrib object that represents the
//               composition of this attrib with the other attrib.  In
//               most cases, this is the same as the other attrib; a
//               compose b produces b.  Some kinds of attributes, like
//               a TextureTransform, for instance, might produce a new
//               result: a compose b produces c.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4005  5 other 1 4005  
112 14 Dtool_w0Cqa9kQ 0 7 114 4005 0 14 Dtool_w0Cqa9kQ 946 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::invert_compose
//       Access: Published
//  Description: Returns a new RenderAttrib object that represents the
//               composition of the inverse of this attrib with the
//               other attrib.  In most cases, this is the same as the
//               other attrib; !a compose b produces b.  Some kinds of
//               attributes, like a TextureTransform, for instance,
//               might produce a new result: !a compose b produces c.
//
//               This is similar to compose() except that the source
//               attrib is inverted first.  This is used to compute
//               the relative attribute for one node as viewed from
//               some other node, which is especially useful for
//               transform-type attributes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4005  5 other 1 4005  
113 14 Dtool_w0Cq6RBU 0 6 115 3970 0 14 Dtool_w0Cq6RBU 1472 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::lower_attrib_can_override
//       Access: Public, Virtual
//  Description: Intended to be overridden by derived RenderAttrib
//               types to specify how two consecutive RenderAttrib
//               objects of the same type interact.
//
//               This should return false if a RenderAttrib on a
//               higher node will compose into a RenderAttrib on a
//               lower node that has a higher override value, or true
//               if the lower RenderAttrib will completely replace the
//               state.
//
//               The default behavior is false: normally, a
//               RenderAttrib in the graph cannot completely override
//               a RenderAttrib above it, regardless of its override
//               value--instead, the two attribs are composed.  But
//               for some kinds of RenderAttribs, it is useful to
//               allow this kind of override.
//
//               This method only handles the one special case of a
//               lower RenderAttrib with a higher override value.  If
//               the higher RenderAttrib has a higher override value,
//               it always completely overrides.  And if both
//               RenderAttribs have the same override value, they are
//               always composed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4005  
114 14 Dtool_w0CqvruE 0 6 116 3971 0 14 Dtool_w0CqvruE 671 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               RenderAttribs, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               This method is not needed outside of the RenderAttrib
//               class because all equivalent RenderAttrib objects are
//               guaranteed to share the same pointer; thus, a pointer
//               comparison is always sufficient.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4005  5 other 1 4005  
115 14 Dtool_w0CqVD97 0 6 117 3972 0 14 Dtool_w0CqVD97 266 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::get_hash
//       Access: Published
//  Description: Returns a suitable hash value for phash_map.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4005  
116 14 Dtool_w0CqA7kY 0 7 118 4005 0 14 Dtool_w0CqA7kY 615 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::get_unique
//       Access: Published
//  Description: Returns the pointer to the unique RenderAttrib in
//               the cache that is equivalent to this one.  This may
//               be the same pointer as this object, or it may be a
//               different pointer; but it will be an equivalent
//               object, and it will be a shared pointer.  This may be
//               called from time to time to improve cache benefits.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4005  
117 14 Dtool_w0CqX_52 0 7 119 4005 0 14 Dtool_w0CqX_52 1198 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::get_auto_shader_attrib
//       Access: Published
//  Description: Returns the variant of this RenderAttrib that's most
//               relevant for associating with an auto-generated
//               shader.  This should be a new RenderAttrib of the
//               same type as this one, with any superfluous data set
//               to neutral.  Only the parts of the attrib that
//               contribute to the shader should be reflected in the
//               returned attrib.  The idea is to associate the
//               auto-generated shader with the most neutral form of
//               all states, to allow it to be shared across as many
//               RenderState objects as possible.
//
//               If this RenderAttrib is completely irrelevant to the
//               auto-shader, this should return NULL to indicate that
//               the attrib won't be assocaited with the shader at
//               all.  In this case the attrib does not contribute to
//               the shader meaningfully.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4005  5 state 1 4008  
118 14 Dtool_w0CqoTLC 0 4 120 3994 0 14 Dtool_w0CqoTLC 229 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::output
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4005  3 out 1 3997  
119 14 Dtool_w0CqdBRS 0 4 121 3994 0 14 Dtool_w0CqdBRS 228 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::write
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4005  3 out 1 3997  12 indent_level 1 3971  
120 14 Dtool_w0CqHzox 0 6 122 3971 0 14 Dtool_w0CqHzox 402 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::get_num_attribs
//       Access: Published, Static
//  Description: Returns the total number of unique RenderAttrib
//               objects allocated in the world.  This will go up and
//               down during normal operations.
//////////////////////////////////////////////////////////////////// 0 
121 14 Dtool_w0CqHw_H 0 4 123 3994 0 14 Dtool_w0CqHw_H 421 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::list_attribs
//       Access: Published, Static
//  Description: Lists all of the RenderAttribs in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
122 14 Dtool_w0CqioME 0 6 124 3971 0 14 Dtool_w0CqioME 412 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::garbage_collect
//       Access: Published, Static
//  Description: Performs a garbage-collection cycle.  This is called
//               automatically from RenderState::garbage_collect();
//               see that method for more information.
//////////////////////////////////////////////////////////////////// 0 
123 14 Dtool_w0CqnA2d 0 6 125 3970 0 14 Dtool_w0CqnA2d 480 ////////////////////////////////////////////////////////////////////
//     Function: RenderAttrib::validate_attribs
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order.  Returns true if so, false if there is a
//               problem (which implies someone has modified one of
//               the supposedly-const RenderAttrib objects).
//////////////////////////////////////////////////////////////////// 0 
124 14 Dtool_w0CqFEBd 0 6 126 3971 0 14 Dtool_w0CqFEBd 0 1 4 this 3 4005  
125 14 Dtool_w0CqLWjP 0 7 129 4000 0 14 Dtool_w0CqLWjP 0 0 
126 14 Dtool_w0CqAgj2 0 7 132 4005 0 14 Dtool_w0CqAgj2 1219 ////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::make
//       Access: Published, Static
//  Description: Constructs a new RenderModeAttrib object that specifies
//               whether to draw polygons in the normal, filled mode,
//               or wireframe mode, or in some other yet-to-be-defined
//               mode.
//
//               The thickness parameter specifies the thickness to be
//               used for wireframe lines, as well as for ordinary
//               linestrip lines; it also specifies the diameter of
//               points.  (Thick lines are presently only supported in
//               OpenGL; but thick points are supported on either
//               platform.)
//
//               If perspective is true, the point thickness
//               represented is actually a width in 3-d units, and the
//               points should scale according to perspective.  When
//               it is false, the point thickness is actually a width
//               in pixels, and points are a uniform screen size
//               regardless of distance from the camera.
//////////////////////////////////////////////////////////////////// 3 4 mode 1 3845  9 thickness 1 3979  11 perspective 1 3970  
127 14 Dtool_w0Cq8VB1 0 7 132 4005 0 14 Dtool_w0Cq8VB1 1219 ////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::make
//       Access: Published, Static
//  Description: Constructs a new RenderModeAttrib object that specifies
//               whether to draw polygons in the normal, filled mode,
//               or wireframe mode, or in some other yet-to-be-defined
//               mode.
//
//               The thickness parameter specifies the thickness to be
//               used for wireframe lines, as well as for ordinary
//               linestrip lines; it also specifies the diameter of
//               points.  (Thick lines are presently only supported in
//               OpenGL; but thick points are supported on either
//               platform.)
//
//               If perspective is true, the point thickness
//               represented is actually a width in 3-d units, and the
//               points should scale according to perspective.  When
//               it is false, the point thickness is actually a width
//               in pixels, and points are a uniform screen size
//               regardless of distance from the camera.
//////////////////////////////////////////////////////////////////// 2 4 mode 1 3845  9 thickness 1 3979  
128 14 Dtool_w0Cq9BMo 0 7 132 4005 0 14 Dtool_w0Cq9BMo 1219 ////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::make
//       Access: Published, Static
//  Description: Constructs a new RenderModeAttrib object that specifies
//               whether to draw polygons in the normal, filled mode,
//               or wireframe mode, or in some other yet-to-be-defined
//               mode.
//
//               The thickness parameter specifies the thickness to be
//               used for wireframe lines, as well as for ordinary
//               linestrip lines; it also specifies the diameter of
//               points.  (Thick lines are presently only supported in
//               OpenGL; but thick points are supported on either
//               platform.)
//
//               If perspective is true, the point thickness
//               represented is actually a width in 3-d units, and the
//               points should scale according to perspective.  When
//               it is false, the point thickness is actually a width
//               in pixels, and points are a uniform screen size
//               regardless of distance from the camera.
//////////////////////////////////////////////////////////////////// 1 4 mode 1 3845  
129 14 Dtool_w0CqKKJ2 0 7 133 4005 0 14 Dtool_w0CqKKJ2 403 ////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
130 14 Dtool_w0CqEaf_ 0 6 134 3845 0 14 Dtool_w0CqEaf_ 250 ////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::get_mode
//       Access: Published
//  Description: Returns the render mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4010  
131 14 Dtool_w0Cq8Zwq 0 6 135 3979 0 14 Dtool_w0Cq8Zwq 517 ////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::get_thickness
//       Access: Published
//  Description: Returns the line width or point thickness.  This is
//               only relevant when rendering points or lines, such as
//               when the mode is M_wireframe or M_point (or when
//               rendering actual points or lines primitives in
//               M_polygon mode).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4010  
132 14 Dtool_w0CqzILX 0 6 136 3970 0 14 Dtool_w0CqzILX 676 ////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::get_perspective
//       Access: Published
//  Description: Returns the perspective flag.  When this is true, the
//               point thickness represented by get_thickness() is
//               actually a width in 3-d units, and the points should
//               scale according to perspective.  When it is false,
//               the default, the point thickness is actually a width
//               in pixels, and points are a uniform size regardless
//               of distance from the camera.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4010  
133 14 Dtool_w0CqKD5y 0 6 137 3971 0 14 Dtool_w0CqKD5y 456 ////////////////////////////////////////////////////////////////////
//     Function: RenderModeAttrib::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this RenderModeAttrib is
//               applied to a geom which includes the indicated
//               geom_rendering bits.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4010  14 geom_rendering 1 3971  
134 14 Dtool_w0CqGbwj 0 6 138 3971 0 14 Dtool_w0CqGbwj 0 0 
135 14 Dtool_w0CqN0p3 0 7 139 4000 0 14 Dtool_w0CqN0p3 0 0 
136 14 Dtool_w0CqFUDw 0 7 142 4005 0 14 Dtool_w0CqFUDw 305 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexMatrixAttrib that applies
//               no stages at all.
//////////////////////////////////////////////////////////////////// 0 
137 14 Dtool_w0CqiX3D 0 7 142 4005 0 14 Dtool_w0CqiX3D 386 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexMatrixAttrib that applies the
//               indicated matrix to the default texture stage.  This
//               interface is deprecated.
//////////////////////////////////////////////////////////////////// 1 3 mat 1 3980  
138 14 Dtool_w0CqKQGr 0 7 142 4005 0 14 Dtool_w0CqKQGr 339 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexMatrixAttrib that applies the
//               indicated transform to the named texture stage.
//////////////////////////////////////////////////////////////////// 2 5 stage 1 4012  9 transform 1 3968  
139 14 Dtool_w0CqAK88 0 7 143 4005 0 14 Dtool_w0CqAK88 402 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
140 14 Dtool_w0CqTTkW 0 7 144 4005 0 14 Dtool_w0CqTTkW 425 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::add_stage
//       Access: Published, Static
//  Description: Returns a new TexMatrixAttrib just like this one,
//               with the indicated transform for the given stage.  If
//               this stage already exists, its transform is replaced.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4014  5 stage 1 4012  9 transform 1 3968  8 override 1 3971  
141 14 Dtool_w0Cq6Dmh 0 7 144 4005 0 14 Dtool_w0Cq6Dmh 425 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::add_stage
//       Access: Published, Static
//  Description: Returns a new TexMatrixAttrib just like this one,
//               with the indicated transform for the given stage.  If
//               this stage already exists, its transform is replaced.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4014  5 stage 1 4012  9 transform 1 3968  
142 14 Dtool_w0CqlqcR 0 7 145 4005 0 14 Dtool_w0CqlqcR 337 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::remove_stage
//       Access: Published, Static
//  Description: Returns a new TexMatrixAttrib just like this one,
//               with the indicated stage removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4014  5 stage 1 4012  
143 14 Dtool_w0Cq6GHq 0 6 146 3970 0 14 Dtool_w0Cq6GHq 329 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::is_empty
//       Access: Published
//  Description: Returns true if no stages are defined in the
//               TexMatrixAttrib, false if at least one is.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4014  
144 14 Dtool_w0CqogDz 0 6 147 3970 0 14 Dtool_w0CqogDz 442 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::has_stage
//       Access: Published
//  Description: Returns true if there is a transform associated with
//               the indicated stage, or false otherwise (in which
//               case get_transform(stage) will return the identity
//               transform).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4014  5 stage 1 4012  
145 14 Dtool_w0CqCetZ 0 6 148 3971 0 14 Dtool_w0CqCetZ 313 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_num_stages
//       Access: Published
//  Description: Returns the number of stages that are represented by
//               this attrib.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4014  
146 14 Dtool_w0Cq8HUI 0 7 149 4012 0 14 Dtool_w0Cq8HUI 364 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_stage
//       Access: Published
//  Description: Returns the nth stage that is represented by this
//               attrib.  The TextureStages are in no particular
//               order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4014  1 n 1 3971  
147 14 Dtool_w0Cqjqir 0 6 150 3980 0 14 Dtool_w0Cqjqir 317 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_mat
//       Access: Published
//  Description: Returns the transformation matrix associated with
//               the default texture stage.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4014  
148 14 Dtool_w0Cqd7Oo 0 6 150 3980 0 14 Dtool_w0Cqd7Oo 406 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_mat
//       Access: Published
//  Description: Returns the transformation matrix associated with
//               the indicated texture stage, or identity matrix if
//               nothing is associated with the indicated stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4014  5 stage 1 4012  
149 14 Dtool_w0CqQoZM 0 7 151 3968 0 14 Dtool_w0CqQoZM 405 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_transform
//       Access: Published
//  Description: Returns the transformation associated with
//               the indicated texture stage, or identity matrix if
//               nothing is associated with the indicated stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4014  5 stage 1 4012  
150 14 Dtool_w0CqHwsN 0 6 152 3971 0 14 Dtool_w0CqHwsN 309 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_override
//       Access: Published
//  Description: Returns the override value associated with the
//               indicated stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4014  5 stage 1 4012  
151 14 Dtool_w0CqPyyY 0 6 153 3971 0 14 Dtool_w0CqPyyY 454 ////////////////////////////////////////////////////////////////////
//     Function: TexMatrixAttrib::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this TexMatrixAttrib is
//               applied to a geom which includes the indicated
//               geom_rendering bits.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4014  14 geom_rendering 1 3971  
152 14 Dtool_w0Cq7BY0 0 6 154 3971 0 14 Dtool_w0Cq7BY0 0 0 
153 14 Dtool_w0Cq3OB_ 0 7 155 4000 0 14 Dtool_w0Cq3OB_ 0 0 
154 14 Dtool_w0Cqtw5H 0 6 157 3971 0 14 Dtool_w0Cqtw5H 667 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               RenderStates, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               This method is not needed outside of the RenderState
//               class because all equivalent RenderState objects are
//               guaranteed to share the same pointer; thus, a pointer
//               comparison is always sufficient.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  5 other 1 4008  
155 14 Dtool_w0CqfAFv 0 6 158 3971 0 14 Dtool_w0CqfAFv 620 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::compare_sort
//       Access: Published
//  Description: Returns -1, 0, or 1 according to the relative sorting
//               of these two RenderStates, with regards to rendering
//               performance, so that "heavier" RenderAttribs (as
//               defined by RenderAttribRegistry::get_slot_sort()) are
//               more likely to be grouped together.  This is not
//               related to the sorting order defined by compare_to.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  5 other 1 4008  
156 14 Dtool_w0CqxGYM 0 6 159 3972 0 14 Dtool_w0CqxGYM 752 // Filename: renderState.I
// Created by:  drose (21Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_hash
//       Access: Published
//  Description: Returns a suitable hash value for phash_map.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
157 14 Dtool_w0CqbG0o 0 6 160 3970 0 14 Dtool_w0CqbG0o 273 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::is_empty
//       Access: Published
//  Description: Returns true if the state is empty, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
158 14 Dtool_w0Cq8NWA 0 6 161 3970 0 14 Dtool_w0Cq8NWA 371 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::has_cull_callback
//       Access: Published
//  Description: Returns true if any of the RenderAttribs in this
//               state request a cull_callback(), false if none of
//               them do.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
159 14 Dtool_w0Cq8pTl 0 6 162 3970 0 14 Dtool_w0Cq8pTl 443 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::cull_callback
//       Access: Published
//  Description: Calls cull_callback() on each attrib.  If any attrib
//               returns false, interrupts the list and returns false
//               immediately; otherwise, completes the list and
//               returns true.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4008  4 trav 1 4016  4 data 1 4017  
160 14 Dtool_w0CqGuHJ 0 7 163 4008 0 14 Dtool_w0CqGuHJ 276 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make_empty
//       Access: Published, Static
//  Description: Returns a RenderState with no attributes set.
//////////////////////////////////////////////////////////////////// 0 
161 14 Dtool_w0CqZyDQ 0 7 164 4008 0 14 Dtool_w0CqZyDQ 333 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make_full_default
//       Access: Published, Static
//  Description: Returns a RenderState with all possible attributes
//               set to their default value.
//////////////////////////////////////////////////////////////////// 0 
162 14 Dtool_w0CqRRYz 0 7 165 4008 0 14 Dtool_w0CqRRYz 272 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with four attributes set.
//////////////////////////////////////////////////////////////////// 5 7 attrib1 1 4005  7 attrib2 1 4005  7 attrib3 1 4005  7 attrib4 1 4005  8 override 1 3971  
163 14 Dtool_w0CqjeWF 0 7 165 4008 0 14 Dtool_w0CqjeWF 272 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with four attributes set.
//////////////////////////////////////////////////////////////////// 4 7 attrib1 1 4005  7 attrib2 1 4005  7 attrib3 1 4005  7 attrib4 1 4005  
164 14 Dtool_w0CqK6X3 0 7 165 4008 0 14 Dtool_w0CqK6X3 273 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with three attributes set.
//////////////////////////////////////////////////////////////////// 4 7 attrib1 1 4005  7 attrib2 1 4005  7 attrib3 1 4005  8 override 1 3971  
165 14 Dtool_w0CqbtvX 0 7 165 4008 0 14 Dtool_w0CqbtvX 273 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with three attributes set.
//////////////////////////////////////////////////////////////////// 3 7 attrib1 1 4005  7 attrib2 1 4005  7 attrib3 1 4005  
166 14 Dtool_w0Cqu7vK 0 7 165 4008 0 14 Dtool_w0Cqu7vK 271 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with two attributes set.
//////////////////////////////////////////////////////////////////// 3 7 attrib1 1 4005  7 attrib2 1 4005  8 override 1 3971  
167 14 Dtool_w0CqSK5z 0 7 165 4008 0 14 Dtool_w0CqSK5z 271 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with two attributes set.
//////////////////////////////////////////////////////////////////// 2 7 attrib1 1 4005  7 attrib2 1 4005  
168 14 Dtool_w0CqiqB_ 0 7 165 4008 0 14 Dtool_w0CqiqB_ 270 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with one attribute set.
//////////////////////////////////////////////////////////////////// 2 6 attrib 1 4005  8 override 1 3971  
169 14 Dtool_w0CqT9E9 0 7 165 4008 0 14 Dtool_w0CqT9E9 270 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::make
//       Access: Published, Static
//  Description: Returns a RenderState with one attribute set.
//////////////////////////////////////////////////////////////////// 1 6 attrib 1 4005  
170 14 Dtool_w0CqsYED 0 7 166 4008 0 14 Dtool_w0CqsYED 711 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::compose
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               composition of this state with the other state.
//
//               The result of this operation is cached, and will be
//               retained as long as both this RenderState object and
//               the other RenderState object continue to exist.
//               Should one of them destruct, the cached entry will be
//               removed, and its pointer will be allowed to destruct
//               as well.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  5 other 1 4008  
171 14 Dtool_w0Cq_7EZ 0 7 167 4008 0 14 Dtool_w0Cq_7EZ 557 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::invert_compose
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               composition of this state's inverse with the other
//               state.
//
//               This is similar to compose(), but is particularly
//               useful for computing the relative state of a node as
//               viewed from some other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  5 other 1 4008  
172 14 Dtool_w0CqMVE4 0 7 168 4008 0 14 Dtool_w0CqMVE4 505 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::add_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the new RenderAttrib
//               added.  If there is already a RenderAttrib with the
//               same type, it is replaced (unless the override is
//               lower).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4008  6 attrib 1 4005  8 override 1 3971  
173 14 Dtool_w0CqyvO6 0 7 168 4008 0 14 Dtool_w0CqyvO6 505 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::add_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the new RenderAttrib
//               added.  If there is already a RenderAttrib with the
//               same type, it is replaced (unless the override is
//               lower).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  6 attrib 1 4005  
174 14 Dtool_w0CqTzrr 0 7 169 4008 0 14 Dtool_w0CqTzrr 520 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::set_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the new RenderAttrib
//               added.  If there is already a RenderAttrib with the
//               same type, it is replaced unconditionally.  The
//               override is not changed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  6 attrib 1 4005  
175 14 Dtool_w0Cqtlgp 0 7 169 4008 0 14 Dtool_w0Cqtlgp 538 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::set_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the new RenderAttrib
//               added.  If there is already a RenderAttrib with the
//               same type, it is replaced unconditionally.  The
//               override is also replaced unconditionally.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4008  6 attrib 1 4005  8 override 1 3971  
176 14 Dtool_w0CqyYRK 0 7 170 4008 0 14 Dtool_w0CqyYRK 379 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::remove_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the indicated
//               RenderAttrib removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  4 type 1 4000  
177 14 Dtool_w0CqfoiT 0 7 170 4008 0 14 Dtool_w0CqfoiT 379 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::remove_attrib
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with the indicated
//               RenderAttrib removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  4 slot 1 3971  
178 14 Dtool_w0Cq_mZy 0 7 171 4008 0 14 Dtool_w0Cq_mZy 543 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::adjust_all_priorities
//       Access: Published
//  Description: Returns a new RenderState object that represents the
//               same as the source state, with all attributes'
//               override values incremented (or decremented, if
//               negative) by the indicated amount.  If the override
//               would drop below zero, it is set to zero.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  10 adjustment 1 3971  
179 14 Dtool_w0Cq2r9x 0 6 172 3970 0 14 Dtool_w0Cq2r9x 316 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::has_attrib
//       Access: Published
//  Description: Returns true if an attrib of the indicated type is
//               present, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  4 type 1 4000  
180 14 Dtool_w0CquEau 0 6 172 3970 0 14 Dtool_w0CquEau 316 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::has_attrib
//       Access: Published
//  Description: Returns true if an attrib of the indicated type is
//               present, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  4 slot 1 3971  
181 14 Dtool_w0CqQqmu 0 7 173 4005 0 14 Dtool_w0CqQqmu 370 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_attrib
//       Access: Published
//  Description: Looks for a RenderAttrib of the indicated type in the
//               state, and returns it if it is found, or NULL if it
//               is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  4 type 1 4000  
182 14 Dtool_w0CqUEFr 0 7 173 4005 0 14 Dtool_w0CqUEFr 367 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_attrib
//       Access: Published
//  Description: Returns the RenderAttrib with the indicated slot
//               index, or NULL if there is no such RenderAttrib in
//               the state.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  4 slot 1 3971  
183 14 Dtool_w0Cqo_W5 0 7 174 4005 0 14 Dtool_w0Cqo_W5 399 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_attrib_def
//       Access: Published
//  Description: Returns the RenderAttrib with the indicated slot
//               index, or the default attrib for that slot if there
//               is no such RenderAttrib in the state.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  4 slot 1 3971  
184 14 Dtool_w0CquZNq 0 6 175 3971 0 14 Dtool_w0CquZNq 385 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_override
//       Access: Published
//  Description: Looks for a RenderAttrib of the indicated type in the
//               state, and returns its override value if it is found,
//               or 0 if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  4 type 1 4000  
185 14 Dtool_w0Cqbchm 0 6 175 3971 0 14 Dtool_w0Cqbchm 385 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_override
//       Access: Published
//  Description: Looks for a RenderAttrib of the indicated type in the
//               state, and returns its override value if it is found,
//               or 0 if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  4 slot 1 3971  
186 14 Dtool_w0Cq9oPR 0 7 176 4008 0 14 Dtool_w0Cq9oPR 613 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_unique
//       Access: Published
//  Description: Returns the pointer to the unique RenderState in
//               the cache that is equivalent to this one.  This may
//               be the same pointer as this object, or it may be a
//               different pointer; but it will be an equivalent
//               object, and it will be a shared pointer.  This may be
//               called from time to time to improve cache benefits.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
187 14 Dtool_w0CqrMAG 0 4 177 3994 0 14 Dtool_w0CqrMAG 275 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::cache_ref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
188 14 Dtool_w0CqK_kx 0 6 178 3970 0 14 Dtool_w0CqK_kx 277 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::cache_unref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
189 14 Dtool_w0CqlWCY 0 4 179 3994 0 14 Dtool_w0CqlWCY 274 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::node_ref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
190 14 Dtool_w0CqVnZl 0 6 180 3970 0 14 Dtool_w0CqVnZl 276 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::node_unref
//       Access: Published
//  Description: Overrides this method to update PStats appropriately.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
191 14 Dtool_w0CqTur9 0 6 181 3971 0 14 Dtool_w0CqTur9 566 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_composition_cache_num_entries
//       Access: Published
//  Description: Returns the number of entries in the composition
//               cache for this RenderState.  This is the number of
//               other RenderStates whose composition with this one
//               has been cached.  This number is not useful for any
//               practical reason other than performance analysis.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
192 14 Dtool_w0CqGL_W 0 6 182 3971 0 14 Dtool_w0CqGL_W 553 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_invert_composition_cache_num_entries
//       Access: Published
//  Description: Returns the number of entries in the
//               invert_composition cache for this RenderState.
//               This is similar to the composition cache, but it
//               records cache entries for the invert_compose()
//               operation.  See get_composition_cache_num_entries().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
193 14 Dtool_w0CqvxQh 0 6 183 3971 0 14 Dtool_w0CqvxQh 649 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_composition_cache_size
//       Access: Published
//  Description: Returns the number of slots in the composition
//               cache for this RenderState.  You may use this as
//               an upper bound when walking through all of the
//               composition cache results via
//               get_composition_cache_source() or result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
194 14 Dtool_w0Cql_Jz 0 7 184 4008 0 14 Dtool_w0Cql_Jz 602 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_composition_cache_source
//       Access: Published
//  Description: Returns the source RenderState of the nth element
//               in the composition cache.  Returns NULL if there
//               doesn't happen to be an entry in the nth element.
//               See get_composition_cache_result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  1 n 1 3971  
195 14 Dtool_w0CqdwO3 0 7 185 4008 0 14 Dtool_w0CqdwO3 701 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_composition_cache_result
//       Access: Published
//  Description: Returns the result RenderState of the nth element
//               in the composition cache.  Returns NULL if there
//               doesn't happen to be an entry in the nth element.
//
//               In general,
//               a->compose(a->get_composition_cache_source(n)) ==
//               a->get_composition_cache_result(n).
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  1 n 1 3971  
196 14 Dtool_w0Cqs0y1 0 6 186 3971 0 14 Dtool_w0Cqs0y1 663 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_invert_composition_cache_size
//       Access: Published
//  Description: Returns the number of slots in the composition
//               cache for this RenderState.  You may use this as
//               an upper bound when walking through all of the
//               composition cache results via
//               get_invert_composition_cache_source() or result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
197 14 Dtool_w0Cq2x2Q 0 7 187 4008 0 14 Dtool_w0Cq2x2Q 624 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_invert_composition_cache_source
//       Access: Published
//  Description: Returns the source RenderState of the nth element
//               in the invert composition cache.  Returns NULL if
//               there doesn't happen to be an entry in the nth
//               element.  See get_invert_composition_cache_result().
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  1 n 1 3971  
198 14 Dtool_w0Cqx5X0 0 7 188 4008 0 14 Dtool_w0Cqx5X0 753 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_invert_composition_cache_result
//       Access: Published
//  Description: Returns the result RenderState of the nth element
//               in the invert composition cache.  Returns NULL if
//               there doesn't happen to be an entry in the nth
//               element.
//
//               In general,
//               a->invert_compose(a->get_invert_composition_cache_source(n))
//               == a->get_invert_composition_cache_result(n).
//
//               This has no practical value other than for examining
//               the cache for performance analysis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  1 n 1 3971  
199 14 Dtool_w0Cqk_E7 0 6 189 3995 0 14 Dtool_w0Cqk_E7 0 1 4 this 3 4008  
200 14 Dtool_w0CqiZLJ 0 6 190 3995 0 14 Dtool_w0CqiZLJ 0 1 4 this 3 4008  
201 14 Dtool_w0CqI6t9 0 7 191 4008 0 14 Dtool_w0CqI6t9 831 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_auto_shader_state
//       Access: Published
//  Description: Returns the base RenderState that should have the
//               generated_shader stored within it, for generated
//               shader states.  The returned object might be the same
//               as this object, or it might be a different
//               RenderState with certain attributes removed, or set
//               to their default values.
//
//               The point is to avoid needless regeneration of the
//               shader attrib by storing the generated shader on a
//               common RenderState object, with all irrelevant
//               attributes removed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
202 14 Dtool_w0Cq5YiO 0 4 192 3994 0 14 Dtool_w0Cq5YiO 219 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::output
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  3 out 1 3997  
203 14 Dtool_w0CqArA3 0 4 193 3994 0 14 Dtool_w0CqArA3 218 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::write
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4008  3 out 1 3997  12 indent_level 1 3971  
204 14 Dtool_w0CqV3mc 0 6 194 3971 0 14 Dtool_w0CqV3mc 599 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_max_priority
//       Access: Published, Static
//  Description: Returns the maximum priority number (sometimes called
//               override) that may be set on any node.  This may or
//               may not be enforced, but the scene graph code assumes
//               that no priority numbers will be larger than this,
//               and some effects may not work properly if you use a
//               larger number.
//////////////////////////////////////////////////////////////////// 0 
205 14 Dtool_w0CqSXJI 0 6 195 3971 0 14 Dtool_w0CqSXJI 399 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_num_states
//       Access: Published, Static
//  Description: Returns the total number of unique RenderState
//               objects allocated in the world.  This will go up and
//               down during normal operations.
//////////////////////////////////////////////////////////////////// 0 
206 14 Dtool_w0CqB8ph 0 6 196 3971 0 14 Dtool_w0CqB8ph 990 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_num_unused_states
//       Access: Published, Static
//  Description: Returns the total number of RenderState objects that
//               have been allocated but have no references outside of
//               the internal RenderState cache.
//
//               A nonzero return value is not necessarily indicative
//               of leaked references; it is normal for two
//               RenderState objects, both of which have references
//               held outside the cache, to have to result of their
//               composition stored within the cache.  This result
//               will be retained within the cache until one of the
//               base RenderStates is released.
//
//               Use list_cycles() to get an idea of the number of
//               actual "leaked" RenderState objects.
//////////////////////////////////////////////////////////////////// 0 
207 14 Dtool_w0CqfP1U 0 6 197 3971 0 14 Dtool_w0CqfP1U 997 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::clear_cache
//       Access: Published, Static
//  Description: Empties the cache of composed RenderStates.  This
//               makes every RenderState forget what results when
//               it is composed with other RenderStates.
//
//               This will eliminate any RenderState objects that
//               have been allocated but have no references outside of
//               the internal RenderState map.  It will not
//               eliminate RenderState objects that are still in
//               use.
//
//               Nowadays, this method should not be necessary, as
//               reference-count cycles in the composition cache
//               should be automatically detected and broken.
//
//               The return value is the number of RenderStates
//               freed by this operation.
//////////////////////////////////////////////////////////////////// 0 
208 14 Dtool_w0CqMpuX 0 4 198 3994 0 14 Dtool_w0CqMpuX 405 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::clear_munger_cache
//       Access: Published, Static
//  Description: Completely empties the cache of state + gsg ->
//               munger, for all states and all gsg's.  Normally there
//               is no need to empty this cache.
//////////////////////////////////////////////////////////////////// 0 
209 14 Dtool_w0CqGhmY 0 6 199 3971 0 14 Dtool_w0CqGhmY 698 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::garbage_collect
//       Access: Published, Static
//  Description: Performs a garbage-collection cycle.  This must be
//               called periodically if garbage-collect-states is true
//               to ensure that RenderStates get cleaned up
//               appropriately.  It does no harm to call it even if
//               this variable is not true, but there is probably no
//               advantage in that case.
//
//               This automatically calls
//               RenderAttrib::garbage_collect() as well.
//////////////////////////////////////////////////////////////////// 0 
210 14 Dtool_w0Cqyu1u 0 4 200 3994 0 14 Dtool_w0Cqyu1u 948 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::list_cycles
//       Access: Published, Static
//  Description: Detects all of the reference-count cycles in the
//               cache and reports them to standard output.
//
//               These cycles may be inadvertently created when state
//               compositions cycle back to a starting point.
//               Nowadays, these cycles should be automatically
//               detected and broken, so this method should never list
//               any cycles unless there is a bug in that detection
//               logic.
//
//               The cycles listed here are not leaks in the strictest
//               sense of the word, since they can be reclaimed by a
//               call to clear_cache(); but they will not be reclaimed
//               automatically.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
211 14 Dtool_w0CqMySM 0 4 201 3994 0 14 Dtool_w0CqMySM 418 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::list_states
//       Access: Published, Static
//  Description: Lists all of the RenderStates in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
212 14 Dtool_w0CqYm1k 0 6 202 3970 0 14 Dtool_w0CqYm1k 580 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::validate_states
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order, and that none of the cache elements have been
//               inadvertently deleted.  Returns true if so, false if
//               there is a problem (which implies someone has
//               modified one of the supposedly-const RenderState
//               objects).
//////////////////////////////////////////////////////////////////// 0 
213 14 Dtool_w0CqXnnR 0 6 203 3995 0 14 Dtool_w0CqXnnR 0 0 
214 14 Dtool_w0Cqwxn3 0 6 204 3971 0 14 Dtool_w0Cqwxn3 407 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_draw_order
//       Access: Published
//  Description: Returns the draw order indicated by the
//               CullBinAttrib, if any, associated by this state (or 0
//               if there is no CullBinAttrib).  See get_bin_index().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
215 14 Dtool_w0CqP6sb 0 6 205 3971 0 14 Dtool_w0CqP6sb 520 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_bin_index
//       Access: Published
//  Description: Returns the bin index indicated by the CullBinAttrib,
//               if any, associated by this state (or the default bin
//               index if there is no CullBinAttrib).  This function
//               is provided as an optimization for determining this
//               at render time.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4008  
216 14 Dtool_w0CqaUkU 0 6 206 3971 0 14 Dtool_w0CqaUkU 446 ////////////////////////////////////////////////////////////////////
//     Function: RenderState::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this RenderState is
//               applied to a geom which includes the indicated
//               geom_rendering bits.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4008  14 geom_rendering 1 3971  
217 14 Dtool_w0CqF592 0 7 207 4000 0 14 Dtool_w0CqF592 0 0 
218 14 Dtool_w0CqQcHT 0 7 209 4005 0 14 Dtool_w0CqQcHT 269 ////////////////////////////////////////////////////////////////////
//     Function: AlphaTestAttrib::make
//       Access: Published, Static
//  Description: Constructs a new AlphaTestAttrib object.
//////////////////////////////////////////////////////////////////// 2 4 mode 1 3842  15 reference_alpha 1 3979  
219 14 Dtool_w0Cq9su6 0 7 210 4005 0 14 Dtool_w0Cq9su6 402 ////////////////////////////////////////////////////////////////////
//     Function: AlphaTestAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
220 14 Dtool_w0Cqhz_c 0 6 211 3979 0 14 Dtool_w0Cqhz_c 270 ////////////////////////////////////////////////////////////////////
//     Function: AlphaTestAttrib::get_reference_alpha
//       Access: Published
//  Description: Returns the alpha reference value.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4019  
221 14 Dtool_w0CqoV_S 0 6 212 3842 0 14 Dtool_w0CqoV_S 254 ////////////////////////////////////////////////////////////////////
//     Function: AlphaTestAttrib::get_mode
//       Access: Published
//  Description: Returns the alpha write mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4019  
222 14 Dtool_w0CqL7Jy 0 6 213 3971 0 14 Dtool_w0CqL7Jy 0 0 
223 14 Dtool_w0CqP7w8 0 7 214 4000 0 14 Dtool_w0CqP7w8 0 0 
224 14 Dtool_w0CqPS8H 0 7 218 4005 0 14 Dtool_w0CqPS8H 1915 ////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::make
//       Access: Published, Static
//  Description: Constructs a new AntialiasAttrib object.
//
//               The mode should be either M_none, M_auto, or a union
//               of any or all of M_point, M_line, M_polygon, and
//               M_multisample.  Also, in addition to the above
//               choices, it may include either of M_better of
//               M_faster to specify a performance/quality tradeoff
//               hint.
//
//               If M_none is specified, no antialiasing is performed.
//
//               If M_multisample is specified, it means to use the
//               special framebuffer multisample bits for
//               antialiasing, if it is available.  If so, the
//               M_point, M_line, and M_polygon modes are ignored.
//               This advanced antialiasing mode is only available on
//               certain graphics hardware.  If it is not available,
//               the M_multisample bit is ignored (and the other modes
//               may be used instead, if specified).
//
//               M_point, M_line, and/or M_polygon specify
//               per-primitive smoothing.  When enabled, M_point and
//               M_line may force transparency on.  M_polygon requires
//               a frame buffer that includes an alpha channel, and it
//               works best if the primitives are sorted
//               front-to-back.
//
//               If M_auto is specified, M_multisample is selected if
//               it is available, otherwise M_polygon is selected,
//               unless drawing lines or points, in which case M_line
//               or M_point is selected (these two generally produce
//               better results than M_multisample)
//////////////////////////////////////////////////////////////////// 1 4 mode 1 4021  
225 14 Dtool_w0Cq40_f 0 7 219 4005 0 14 Dtool_w0Cq40_f 402 ////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
226 14 Dtool_w0CqUNQ4 0 6 220 4021 0 14 Dtool_w0CqUNQ4 262 ////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::get_mode
//       Access: Published
//  Description: Returns the specified antialias mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4022  
227 14 Dtool_w0Cq0ILz 0 6 221 4021 0 14 Dtool_w0Cq0ILz 465 ////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::get_mode_type
//       Access: Published
//  Description: Returns the specified antialias mode, with the
//               quality bits masked out.  This therefore indicates
//               only the requested type of antialiasing: M_none,
//               M_auto, or some specific combination.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4022  
228 14 Dtool_w0CqodxW 0 6 222 4021 0 14 Dtool_w0CqodxW 478 ////////////////////////////////////////////////////////////////////
//     Function: AntialiasAttrib::get_mode_quality
//       Access: Published
//  Description: Returns the specified antialias mode, with the type
//               bits masked out.  This therefore indicates only the
//               requested quality settings: one of M_faster,
//               M_better, M_dont_care, or zero (unspecified).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4022  
229 14 Dtool_w0CqowaX 0 6 223 3971 0 14 Dtool_w0CqowaX 0 0 
230 14 Dtool_w0CqqzDi 0 7 224 4000 0 14 Dtool_w0CqqzDi 0 0 
231 14 Dtool_w0CqZvzD 0 6 227 3971 0 14 Dtool_w0CqZvzD 1159 // Filename: renderEffect.I
// Created by:  drose (14Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::compare_to
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               RenderEffects, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               This method is not needed outside of the RenderEffect
//               class because all equivalent RenderEffect objects are
//               guaranteed to share the same pointer; thus, a pointer
//               comparison is always sufficient.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4024  5 other 1 4024  
232 14 Dtool_w0CqLgOf 0 4 228 3994 0 14 Dtool_w0CqLgOf 229 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::output
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4024  3 out 1 3997  
233 14 Dtool_w0CqeXUv 0 4 229 3994 0 14 Dtool_w0CqeXUv 228 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::write
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4024  3 out 1 3997  12 indent_level 1 3971  
234 14 Dtool_w0Cqvz2e 0 6 230 3971 0 14 Dtool_w0Cqvz2e 402 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::get_num_effects
//       Access: Published, Static
//  Description: Returns the total number of unique RenderEffect
//               objects allocated in the world.  This will go up and
//               down during normal operations.
//////////////////////////////////////////////////////////////////// 0 
235 14 Dtool_w0CqrBxm 0 4 231 3994 0 14 Dtool_w0CqrBxm 421 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::list_effects
//       Access: Published, Static
//  Description: Lists all of the RenderEffects in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
236 14 Dtool_w0CqLUB_ 0 6 232 3970 0 14 Dtool_w0CqLUB_ 480 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffect::validate_effects
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order.  Returns true if so, false if there is a
//               problem (which implies someone has modified one of
//               the supposedly-const RenderEffect objects).
//////////////////////////////////////////////////////////////////// 0 
237 14 Dtool_w0Cq3Lms 0 7 233 4000 0 14 Dtool_w0Cq3Lms 0 0 
238 14 Dtool_w0CqmaIr 0 6 235 3970 0 14 Dtool_w0CqmaIr 674 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::operator <
//       Access: Published
//  Description: Provides an arbitrary ordering among all unique
//               RenderEffects, so we can store the essentially
//               different ones in a big set and throw away the rest.
//
//               This method is not needed outside of the RenderEffects
//               class because all equivalent RenderEffects objects are
//               guaranteed to share the same pointer; thus, a pointer
//               comparison is always sufficient.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4026  5 other 1 4026  
239 14 Dtool_w0Cqm56U 0 6 236 3970 0 14 Dtool_w0Cqm56U 275 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::is_empty
//       Access: Published
//  Description: Returns true if the state is empty, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4026  
240 14 Dtool_w0CqiXcl 0 6 237 3971 0 14 Dtool_w0CqiXcl 309 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::get_num_effects
//       Access: Published
//  Description: Returns the number of separate effects indicated
//               in the state.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4026  
241 14 Dtool_w0Cq_AJ6 0 7 238 4024 0 14 Dtool_w0Cq_AJ6 381 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::get_effect
//       Access: Published, Virtual
//  Description: Looks for a RenderEffect of the indicated type in the
//               state, and returns it if it is found, or NULL if it
//               is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4026  4 type 1 4000  
242 14 Dtool_w0Cqpvc2 0 7 238 4024 0 14 Dtool_w0Cqpvc2 261 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::get_effect
//       Access: Published
//  Description: Returns the nth effect in the state.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4026  1 n 1 3971  
243 14 Dtool_w0CqNzuE 0 6 239 3971 0 14 Dtool_w0CqNzuE 378 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::find_effect
//       Access: Published
//  Description: Searches for an effect with the indicated type in
//               the state, and returns its index if it is found, or
//               -1 if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4026  4 type 1 4000  
244 14 Dtool_w0CqgrKD 0 7 240 4026 0 14 Dtool_w0CqgrKD 277 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make_empty
//       Access: Published, Static
//  Description: Returns a RenderEffects with no effects set.
//////////////////////////////////////////////////////////////////// 0 
245 14 Dtool_w0CqiDSO 0 7 241 4026 0 14 Dtool_w0CqiDSO 271 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make
//       Access: Published, Static
//  Description: Returns a RenderEffects with one effect set.
//////////////////////////////////////////////////////////////////// 1 6 effect 1 4024  
246 14 Dtool_w0Cq3y67 0 7 241 4026 0 14 Dtool_w0Cq3y67 272 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make
//       Access: Published, Static
//  Description: Returns a RenderEffects with two effects set.
//////////////////////////////////////////////////////////////////// 2 7 effect1 1 4024  7 effect2 1 4024  
247 14 Dtool_w0CqZQ3C 0 7 241 4026 0 14 Dtool_w0CqZQ3C 274 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make
//       Access: Published, Static
//  Description: Returns a RenderEffects with three effects set.
//////////////////////////////////////////////////////////////////// 3 7 effect1 1 4024  7 effect2 1 4024  7 effect3 1 4024  
248 14 Dtool_w0Cqzo_d 0 7 241 4026 0 14 Dtool_w0Cqzo_d 273 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::make
//       Access: Published, Static
//  Description: Returns a RenderEffects with four effects set.
//////////////////////////////////////////////////////////////////// 4 7 effect1 1 4024  7 effect2 1 4024  7 effect3 1 4024  7 effect4 1 4024  
249 14 Dtool_w0Cq8sn3 0 7 242 4026 0 14 Dtool_w0Cq8sn3 461 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::add_effect
//       Access: Published
//  Description: Returns a new RenderEffects object that represents the
//               same as the source state, with the new RenderEffect
//               added.  If there is already a RenderEffect with the
//               same type, it is replaced.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4026  6 effect 1 4024  
250 14 Dtool_w0CqNxu4 0 7 243 4026 0 14 Dtool_w0CqNxu4 383 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::remove_effect
//       Access: Published
//  Description: Returns a new RenderEffects object that represents the
//               same as the source state, with the indicated
//               RenderEffect removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4026  4 type 1 4000  
251 14 Dtool_w0CqxmDR 0 4 244 3994 0 14 Dtool_w0CqxmDR 230 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::output
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4026  3 out 1 3997  
252 14 Dtool_w0Cq_6eU 0 4 245 3994 0 14 Dtool_w0Cq_6eU 229 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::write
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4026  3 out 1 3997  12 indent_level 1 3971  
253 14 Dtool_w0CqELqs 0 6 246 3971 0 14 Dtool_w0CqELqs 403 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::get_num_states
//       Access: Published, Static
//  Description: Returns the total number of unique RenderEffects
//               objects allocated in the world.  This will go up and
//               down during normal operations.
//////////////////////////////////////////////////////////////////// 0 
254 14 Dtool_w0CqFHwJ 0 4 247 3994 0 14 Dtool_w0CqFHwJ 421 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::list_states
//       Access: Published, Static
//  Description: Lists all of the RenderEffects in the cache to the
//               output stream, one per line.  This can be quite a lot
//               of output if the cache is large, so be prepared.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
255 14 Dtool_w0CqP68o 0 6 248 3970 0 14 Dtool_w0CqP68o 481 ////////////////////////////////////////////////////////////////////
//     Function: RenderEffects::validate_states
//       Access: Published, Static
//  Description: Ensures that the cache is still stored in sorted
//               order.  Returns true if so, false if there is a
//               problem (which implies someone has modified one of
//               the supposedly-const RenderEffects objects).
//////////////////////////////////////////////////////////////////// 0 
256 14 Dtool_w0Cqpe17 0 7 249 4000 0 14 Dtool_w0Cqpe17 0 0 
257 14 Dtool_w0CqmVfc 0 7 262 4029 2486 14 Dtool_w0CqmVfc 1394 //
// There are two different interfaces here for making and breaking
// parent-child connections: the fundamental PandaNode interface, via
// add_child() and remove_child() (and related functions), and the
// NodePath support interface, via attach(), detach(), and reparent().
// They both do essentially the same thing, but with slightly
// different inputs.  The PandaNode interfaces try to guess which
// NodePaths should be updated as a result of the scene graph change,
// while the NodePath interfaces already know.
//
// The NodePath support interface functions are strictly called from
// within the NodePath class, and are used to implement
// NodePath::reparent_to() and NodePath::remove_node(), etc.  The
// fundamental interface, on the other hand, is intended to be called
// directly by the user.
//
// The fundamental interface has a slightly lower overhead because it
// does not need to create a NodePathComponent chain where one does
// not already exist; however, the NodePath support interface is more
// useful when the NodePath already does exist, because it ensures
// that the particular NodePath calling it is kept appropriately
// up-to-date.
//
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
258 14 Dtool_w0CqozEb 0 7 264 4029 2486 14 Dtool_w0CqozEb 828 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::combine_with
//       Access: Public, Virtual
//  Description: Collapses this PandaNode with the other PandaNode, if
//               possible, and returns a pointer to the combined
//               PandaNode, or NULL if the two PandaNodes cannot
//               safely be combined.
//
//               The return value may be this, other, or a new
//               PandaNode altogether.
//
//               This function is called from GraphReducer::flatten(),
//               and need not deal with children; its job is just to
//               decide whether to collapse the two PandaNodes and
//               what the collapsed PandaNode should look like.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  5 other 1 4029  
259 14 Dtool_w0Cql3aT 0 7 265 4029 2486 14 Dtool_w0Cql3aT 514 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::make_copy
//       Access: Published, Virtual
//  Description: Returns a newly-allocated PandaNode that is a shallow
//               copy of this one.  It will be a different pointer,
//               but its internal data may or may not be shared with
//               that of the original PandaNode.  No children will be
//               copied.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
260 14 Dtool_w0CqcUmi 0 7 266 4029 2486 14 Dtool_w0CqcUmi 535 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_subgraph
//       Access: Published
//  Description: Allocates and returns a complete copy of this
//               PandaNode and the entire scene graph rooted at this
//               PandaNode.  Some data may still be shared from the
//               original (e.g. vertex index tables), but nothing that
//               will impede normal use of the PandaNode.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
261 14 Dtool_w0CqFYnx 0 7 266 4029 2486 14 Dtool_w0CqFYnx 535 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_subgraph
//       Access: Published
//  Description: Allocates and returns a complete copy of this
//               PandaNode and the entire scene graph rooted at this
//               PandaNode.  Some data may still be shared from the
//               original (e.g. vertex index tables), but nothing that
//               will impede normal use of the PandaNode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
262 14 Dtool_w0CqDEly 0 7 267 4029 2486 14 Dtool_w0CqDEly 0 1 4 this 3 4030  
263 14 Dtool_w0CqkWM2 0 6 268 3995 0 14 Dtool_w0CqkWM2 0 3 4 this 3 4030  4 self 1 3995  4 memo 1 3995  
264 14 Dtool_w0CqQZtc 0 6 269 3971 0 14 Dtool_w0CqQZtc 1023 // Filename: pandaNode.I
// Created by:  drose (20Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_num_parents
//       Access: Published
//  Description: Returns the number of parent nodes this node has.  If
//               this number is greater than 1, the node has been
//               multiply instanced.  The order of the parent nodes is
//               not meaningful and is not related to the order in
//               which the node was instanced to them.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
265 14 Dtool_w0CqI9bH 0 6 269 3971 0 14 Dtool_w0CqI9bH 1023 // Filename: pandaNode.I
// Created by:  drose (20Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_num_parents
//       Access: Published
//  Description: Returns the number of parent nodes this node has.  If
//               this number is greater than 1, the node has been
//               multiply instanced.  The order of the parent nodes is
//               not meaningful and is not related to the order in
//               which the node was instanced to them.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
266 14 Dtool_w0CqLi8_ 0 7 270 4029 2486 14 Dtool_w0CqLi8_ 474 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_parent
//       Access: Published
//  Description: Returns the nth parent node of this node.  See
//               get_num_parents().  Also see get_parents(), if your
//               intention is to iterate through the complete list of
//               parents; get_parents() is preferable in this case.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  1 n 1 3971  14 current_thread 1 4032  
267 14 Dtool_w0Cqh0xF 0 7 270 4029 2486 14 Dtool_w0Cqh0xF 474 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_parent
//       Access: Published
//  Description: Returns the nth parent node of this node.  See
//               get_num_parents().  Also see get_parents(), if your
//               intention is to iterate through the complete list of
//               parents; get_parents() is preferable in this case.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  1 n 1 3971  
268 14 Dtool_w0CqJ9Xm 0 6 271 3971 0 14 Dtool_w0CqJ9Xm 325 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::find_parent
//       Access: Published
//  Description: Returns the index of the indicated parent node, if it
//               is a parent, or -1 if it is not.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  4 node 1 4029  14 current_thread 1 4032  
269 14 Dtool_w0CqMWG_ 0 6 271 3971 0 14 Dtool_w0CqMWG_ 325 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::find_parent
//       Access: Published
//  Description: Returns the index of the indicated parent node, if it
//               is a parent, or -1 if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 node 1 4029  
270 14 Dtool_w0Cq_i8R 0 6 272 3971 0 14 Dtool_w0Cq_i8R 489 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_num_children
//       Access: Published
//  Description: Returns the number of child nodes this node has.  The
//               order of the child nodes *is* meaningful and is based
//               on the sort number that was passed to add_child(),
//               and also on the order in which the nodes were added.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
271 14 Dtool_w0Cq78Bo 0 6 272 3971 0 14 Dtool_w0Cq78Bo 489 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_num_children
//       Access: Published
//  Description: Returns the number of child nodes this node has.  The
//               order of the child nodes *is* meaningful and is based
//               on the sort number that was passed to add_child(),
//               and also on the order in which the nodes were added.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
272 14 Dtool_w0CqwRT3 0 7 273 4029 2486 14 Dtool_w0CqwRT3 476 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_child
//       Access: Published
//  Description: Returns the nth child node of this node.  See
//               get_num_children().  Also see get_children(), if your
//               intention is to iterate through the complete list of
//               children; get_children() is preferable in this case.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  1 n 1 3971  14 current_thread 1 4032  
273 14 Dtool_w0CqkZg9 0 7 273 4029 2486 14 Dtool_w0CqkZg9 476 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_child
//       Access: Published
//  Description: Returns the nth child node of this node.  See
//               get_num_children().  Also see get_children(), if your
//               intention is to iterate through the complete list of
//               children; get_children() is preferable in this case.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  1 n 1 3971  
274 14 Dtool_w0CqkRF6 0 6 274 3971 0 14 Dtool_w0CqkRF6 395 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_child_sort
//       Access: Published
//  Description: Returns the sort index of the nth child node of this
//               node (that is, the number that was passed to
//               add_child()).  See get_num_children().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  1 n 1 3971  14 current_thread 1 4032  
275 14 Dtool_w0CqMzeG 0 6 274 3971 0 14 Dtool_w0CqMzeG 395 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_child_sort
//       Access: Published
//  Description: Returns the sort index of the nth child node of this
//               node (that is, the number that was passed to
//               add_child()).  See get_num_children().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  1 n 1 3971  
276 14 Dtool_w0CqkP7k 0 6 275 3971 0 14 Dtool_w0CqkP7k 322 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::find_child
//       Access: Published
//  Description: Returns the index of the indicated child node, if it
//               is a child, or -1 if it is not.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  4 node 1 4029  14 current_thread 1 4032  
277 14 Dtool_w0CqKHuN 0 6 275 3971 0 14 Dtool_w0CqKHuN 322 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::find_child
//       Access: Published
//  Description: Returns the index of the indicated child node, if it
//               is a child, or -1 if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 node 1 4029  
278 14 Dtool_w0CqVcTo 0 6 276 3971 0 14 Dtool_w0CqVcTo 284 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::count_num_descendants
//       Access: Published
//  Description: Returns the number of nodes at and below this level.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
279 14 Dtool_w0Cq1AGw 0 4 277 3994 0 14 Dtool_w0Cq1AGw 567 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::add_child
//       Access: Published
//  Description: Adds a new child to the node.  The child is added in
//               the relative position indicated by sort; if all
//               children have the same sort index, the child is added
//               at the end.
//
//               If the same child is added to a node more than once,
//               the previous instance is first removed.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4029  10 child_node 1 4029  4 sort 1 3971  14 current_thread 1 4032  
280 14 Dtool_w0CqA9tQ 0 4 277 3994 0 14 Dtool_w0CqA9tQ 567 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::add_child
//       Access: Published
//  Description: Adds a new child to the node.  The child is added in
//               the relative position indicated by sort; if all
//               children have the same sort index, the child is added
//               at the end.
//
//               If the same child is added to a node more than once,
//               the previous instance is first removed.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  10 child_node 1 4029  4 sort 1 3971  
281 14 Dtool_w0Cq27ri 0 4 277 3994 0 14 Dtool_w0Cq27ri 567 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::add_child
//       Access: Published
//  Description: Adds a new child to the node.  The child is added in
//               the relative position indicated by sort; if all
//               children have the same sort index, the child is added
//               at the end.
//
//               If the same child is added to a node more than once,
//               the previous instance is first removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  10 child_node 1 4029  
282 14 Dtool_w0CqGA1V 0 6 278 3970 0 14 Dtool_w0CqGA1V 475 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_child
//       Access: Published
//  Description: Removes the indicated child from the node.  Returns
//               true if the child was removed, false if it was not
//               already a child of the node.  This will also
//               successfully remove the child if it had been stashed.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  10 child_node 1 4029  14 current_thread 1 4032  
283 14 Dtool_w0CqzFZb 0 6 278 3970 0 14 Dtool_w0CqzFZb 475 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_child
//       Access: Published
//  Description: Removes the indicated child from the node.  Returns
//               true if the child was removed, false if it was not
//               already a child of the node.  This will also
//               successfully remove the child if it had been stashed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  10 child_node 1 4029  
284 14 Dtool_w0CqQQCt 0 4 278 3994 0 14 Dtool_w0CqQQCt 259 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_child
//       Access: Published
//  Description: Removes the nth child from the node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  11 child_index 1 3971  14 current_thread 1 4032  
285 14 Dtool_w0CqDqN1 0 4 278 3994 0 14 Dtool_w0CqDqN1 259 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_child
//       Access: Published
//  Description: Removes the nth child from the node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  11 child_index 1 3971  
286 14 Dtool_w0CqAkgX 0 6 279 3970 0 14 Dtool_w0CqAkgX 513 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::replace_child
//       Access: Published
//  Description: Searches for the orig_child node in the node's list
//               of children, and replaces it with the new_child
//               instead.  Returns true if the replacement is made, or
//               false if the node is not a child or if there is some
//               other problem.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4029  10 orig_child 1 4029  9 new_child 1 4029  14 current_thread 1 4032  
287 14 Dtool_w0CqgW5Y 0 6 279 3970 0 14 Dtool_w0CqgW5Y 513 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::replace_child
//       Access: Published
//  Description: Searches for the orig_child node in the node's list
//               of children, and replaces it with the new_child
//               instead.  Returns true if the replacement is made, or
//               false if the node is not a child or if there is some
//               other problem.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  10 orig_child 1 4029  9 new_child 1 4029  
288 14 Dtool_w0CqtzoI 0 6 280 3970 0 14 Dtool_w0CqtzoI 919 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::stash_child
//       Access: Published
//  Description: Stashes the indicated child node.  This removes the
//               child from the list of active children and puts it on
//               a special list of stashed children.  This child node
//               no longer contributes to the bounding volume of the
//               PandaNode, and is not visited in normal traversals.
//               It is invisible and uncollidable.  The child may
//               later be restored by calling unstash_child().
//
//               This function returns true if the child node was
//               successfully stashed, or false if it was not a child
//               of the node in the first place (e.g. it was
//               previously stashed).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  10 child_node 1 4029  14 current_thread 1 4032  
289 14 Dtool_w0CqjC1w 0 6 280 3970 0 14 Dtool_w0CqjC1w 919 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::stash_child
//       Access: Published
//  Description: Stashes the indicated child node.  This removes the
//               child from the list of active children and puts it on
//               a special list of stashed children.  This child node
//               no longer contributes to the bounding volume of the
//               PandaNode, and is not visited in normal traversals.
//               It is invisible and uncollidable.  The child may
//               later be restored by calling unstash_child().
//
//               This function returns true if the child node was
//               successfully stashed, or false if it was not a child
//               of the node in the first place (e.g. it was
//               previously stashed).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  10 child_node 1 4029  
290 14 Dtool_w0CqVnZH 0 4 280 3994 0 14 Dtool_w0CqVnZH 787 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::stash_child
//       Access: Published
//  Description: Stashes the indicated child node.  This removes the
//               child from the list of active children and puts it on
//               a special list of stashed children.  This child node
//               no longer contributes to the bounding volume of the
//               PandaNode, and is not visited in normal traversals.
//               It is invisible and uncollidable.  The child may
//               later be restored by calling unstash_child().
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  11 child_index 1 3971  14 current_thread 1 4032  
291 14 Dtool_w0CqrWqz 0 4 280 3994 0 14 Dtool_w0CqrWqz 787 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::stash_child
//       Access: Published
//  Description: Stashes the indicated child node.  This removes the
//               child from the list of active children and puts it on
//               a special list of stashed children.  This child node
//               no longer contributes to the bounding volume of the
//               PandaNode, and is not visited in normal traversals.
//               It is invisible and uncollidable.  The child may
//               later be restored by calling unstash_child().
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  11 child_index 1 3971  
292 14 Dtool_w0CqQNEb 0 6 281 3970 0 14 Dtool_w0CqQNEb 885 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::unstash_child
//       Access: Published
//  Description: Returns the indicated stashed node to normal child
//               status.  This removes the child from the list of
//               stashed children and puts it on the normal list of
//               active children.  This child node once again
//               contributes to the bounding volume of the PandaNode,
//               and will be visited in normal traversals.  It is
//               visible and collidable.
//
//               This function returns true if the child node was
//               successfully stashed, or false if it was not a child
//               of the node in the first place (e.g. it was
//               previously stashed).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  10 child_node 1 4029  14 current_thread 1 4032  
293 14 Dtool_w0CqqJGM 0 6 281 3970 0 14 Dtool_w0CqqJGM 885 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::unstash_child
//       Access: Published
//  Description: Returns the indicated stashed node to normal child
//               status.  This removes the child from the list of
//               stashed children and puts it on the normal list of
//               active children.  This child node once again
//               contributes to the bounding volume of the PandaNode,
//               and will be visited in normal traversals.  It is
//               visible and collidable.
//
//               This function returns true if the child node was
//               successfully stashed, or false if it was not a child
//               of the node in the first place (e.g. it was
//               previously stashed).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  10 child_node 1 4029  
294 14 Dtool_w0CqsIFB 0 4 281 3994 0 14 Dtool_w0CqsIFB 753 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::unstash_child
//       Access: Published
//  Description: Returns the indicated stashed node to normal child
//               status.  This removes the child from the list of
//               stashed children and puts it on the normal list of
//               active children.  This child node once again
//               contributes to the bounding volume of the PandaNode,
//               and will be visited in normal traversals.  It is
//               visible and collidable.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  13 stashed_index 1 3971  14 current_thread 1 4032  
295 14 Dtool_w0CqeWxF 0 4 281 3994 0 14 Dtool_w0CqeWxF 753 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::unstash_child
//       Access: Published
//  Description: Returns the indicated stashed node to normal child
//               status.  This removes the child from the list of
//               stashed children and puts it on the normal list of
//               active children.  This child node once again
//               contributes to the bounding volume of the PandaNode,
//               and will be visited in normal traversals.  It is
//               visible and collidable.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  13 stashed_index 1 3971  
296 14 Dtool_w0CqGnOV 0 6 282 3971 0 14 Dtool_w0CqGnOV 416 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_num_stashed
//       Access: Published
//  Description: Returns the number of stashed nodes this node has.
//               These are former children of the node that have been
//               moved to the special stashed list via stash_child().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
297 14 Dtool_w0CqOR8_ 0 6 282 3971 0 14 Dtool_w0CqOR8_ 416 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_num_stashed
//       Access: Published
//  Description: Returns the number of stashed nodes this node has.
//               These are former children of the node that have been
//               moved to the special stashed list via stash_child().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
298 14 Dtool_w0CqnMF3 0 7 283 4029 2486 14 Dtool_w0CqnMF3 503 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_stashed
//       Access: Published
//  Description: Returns the nth stashed child of this node.  See
//               get_num_stashed().  Also see get_stashed(), if your
//               intention is to iterate through the complete list of
//               stashed children; get_stashed() is preferable in this
//               case.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  1 n 1 3971  14 current_thread 1 4032  
299 14 Dtool_w0Cqk8qw 0 7 283 4029 2486 14 Dtool_w0Cqk8qw 503 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_stashed
//       Access: Published
//  Description: Returns the nth stashed child of this node.  See
//               get_num_stashed().  Also see get_stashed(), if your
//               intention is to iterate through the complete list of
//               stashed children; get_stashed() is preferable in this
//               case.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  1 n 1 3971  
300 14 Dtool_w0Cqdx9j 0 6 284 3971 0 14 Dtool_w0Cqdx9j 398 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_stashed_sort
//       Access: Published
//  Description: Returns the sort index of the nth stashed node of this
//               node (that is, the number that was passed to
//               add_child()).  See get_num_stashed().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  1 n 1 3971  14 current_thread 1 4032  
301 14 Dtool_w0CqE1FX 0 6 284 3971 0 14 Dtool_w0CqE1FX 398 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_stashed_sort
//       Access: Published
//  Description: Returns the sort index of the nth stashed node of this
//               node (that is, the number that was passed to
//               add_child()).  See get_num_stashed().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  1 n 1 3971  
302 14 Dtool_w0CqlSwr 0 6 285 3971 0 14 Dtool_w0CqlSwr 334 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::find_stashed
//       Access: Published
//  Description: Returns the index of the indicated stashed node, if
//               it is a stashed child, or -1 if it is not.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  4 node 1 4029  14 current_thread 1 4032  
303 14 Dtool_w0Cqyw9C 0 6 285 3971 0 14 Dtool_w0Cqyw9C 334 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::find_stashed
//       Access: Published
//  Description: Returns the index of the indicated stashed node, if
//               it is a stashed child, or -1 if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 node 1 4029  
304 14 Dtool_w0CqQwdX 0 4 286 3994 0 14 Dtool_w0CqQwdX 675 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::add_stashed
//       Access: Published
//  Description: Adds a new child to the node, directly as a stashed
//               child.  The child is not added in the normal sense,
//               but will be revealed if unstash_child() is called on
//               it later.
//
//               If the same child is added to a node more than once,
//               the previous instance is first removed.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
//////////////////////////////////////////////////////////////////// 4 4 this 3 4029  10 child_node 1 4029  4 sort 1 3971  14 current_thread 1 4032  
305 14 Dtool_w0CqXQ0n 0 4 286 3994 0 14 Dtool_w0CqXQ0n 675 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::add_stashed
//       Access: Published
//  Description: Adds a new child to the node, directly as a stashed
//               child.  The child is not added in the normal sense,
//               but will be revealed if unstash_child() is called on
//               it later.
//
//               If the same child is added to a node more than once,
//               the previous instance is first removed.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  10 child_node 1 4029  4 sort 1 3971  
306 14 Dtool_w0CqswLI 0 4 286 3994 0 14 Dtool_w0CqswLI 675 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::add_stashed
//       Access: Published
//  Description: Adds a new child to the node, directly as a stashed
//               child.  The child is not added in the normal sense,
//               but will be revealed if unstash_child() is called on
//               it later.
//
//               If the same child is added to a node more than once,
//               the previous instance is first removed.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  10 child_node 1 4029  
307 14 Dtool_w0CquXWn 0 4 287 3994 0 14 Dtool_w0CquXWn 269 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_stashed
//       Access: Published
//  Description: Removes the nth stashed child from the node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  11 child_index 1 3971  14 current_thread 1 4032  
308 14 Dtool_w0CqZHe7 0 4 287 3994 0 14 Dtool_w0CqZHe7 269 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_stashed
//       Access: Published
//  Description: Removes the nth stashed child from the node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  11 child_index 1 3971  
309 14 Dtool_w0CqQp5s 0 4 288 3994 0 14 Dtool_w0CqQp5s 428 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_all_children
//       Access: Published
//  Description: Removes all the children from the node at once,
//               including stashed children.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  14 current_thread 1 4032  
310 14 Dtool_w0Cqbyap 0 4 288 3994 0 14 Dtool_w0Cqbyap 428 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::remove_all_children
//       Access: Published
//  Description: Removes all the children from the node at once,
//               including stashed children.
//
//               This can only be called from the top pipeline stage
//               (i.e. from App).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4029  
311 14 Dtool_w0CqNzAL 0 4 289 3994 0 14 Dtool_w0CqNzAL 436 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::steal_children
//       Access: Published
//  Description: Moves all the children from the other node onto this
//               node.
//
//               Any NodePaths to child nodes of the other node are
//               truncated, rather than moved to the new parent.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  5 other 1 4029  14 current_thread 1 4032  
312 14 Dtool_w0Cqjgnr 0 4 289 3994 0 14 Dtool_w0Cqjgnr 436 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::steal_children
//       Access: Published
//  Description: Moves all the children from the other node onto this
//               node.
//
//               Any NodePaths to child nodes of the other node are
//               truncated, rather than moved to the new parent.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  5 other 1 4029  
313 14 Dtool_w0CqrnCS 0 4 290 3994 0 14 Dtool_w0CqrnCS 329 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_children
//       Access: Published
//  Description: Makes another instance of all the children of the
//               other node, copying them to this node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  5 other 1 4029  14 current_thread 1 4032  
314 14 Dtool_w0CqhfED 0 4 290 3994 0 14 Dtool_w0CqhfED 329 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_children
//       Access: Published
//  Description: Makes another instance of all the children of the
//               other node, copying them to this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  5 other 1 4029  
315 14 Dtool_w0Cq48Bd 0 4 291 3994 0 14 Dtool_w0Cq48Bd 475 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_attrib
//       Access: Published
//  Description: Adds the indicated render attribute to the scene
//               graph on this node.  This attribute will now apply to
//               this node and everything below.  If there was already
//               an attribute of the same type, it is replaced.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  6 attrib 1 4005  8 override 1 3971  
316 14 Dtool_w0CqDD5k 0 4 291 3994 0 14 Dtool_w0CqDD5k 475 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_attrib
//       Access: Published
//  Description: Adds the indicated render attribute to the scene
//               graph on this node.  This attribute will now apply to
//               this node and everything below.  If there was already
//               an attribute of the same type, it is replaced.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  6 attrib 1 4005  
317 14 Dtool_w0CqaDfJ 0 7 292 4005 0 14 Dtool_w0CqaDfJ 538 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_attrib
//       Access: Published
//  Description: Returns the render attribute of the indicated type,
//               if it is defined on the node, or NULL if it is not.
//               This checks only what is set on this particular node
//               level, and has nothing to do with what render
//               attributes may be inherited from parent nodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 type 1 4000  
318 14 Dtool_w0CqabHO 0 7 292 4005 0 14 Dtool_w0CqabHO 538 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_attrib
//       Access: Published
//  Description: Returns the render attribute of the indicated type,
//               if it is defined on the node, or NULL if it is not.
//               This checks only what is set on this particular node
//               level, and has nothing to do with what render
//               attributes may be inherited from parent nodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 slot 1 3971  
319 14 Dtool_w0Cq2W_P 0 6 293 3970 0 14 Dtool_w0Cq2W_P 368 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_attrib
//       Access: Published
//  Description: Returns true if there is a render attribute of the
//               indicated type defined on this node, or false if
//               there is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 type 1 4000  
320 14 Dtool_w0CquInU 0 6 293 3970 0 14 Dtool_w0CquInU 368 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_attrib
//       Access: Published
//  Description: Returns true if there is a render attribute of the
//               indicated type defined on this node, or false if
//               there is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 slot 1 3971  
321 14 Dtool_w0CqDSEu 0 4 294 3994 0 14 Dtool_w0CqDSEu 451 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_attrib
//       Access: Published
//  Description: Removes the render attribute of the given type from
//               this node.  This node, and the subgraph below, will
//               now inherit the indicated render attribute from the
//               nodes above this one.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  4 type 1 4000  
322 14 Dtool_w0CqWqh9 0 4 294 3994 0 14 Dtool_w0CqWqh9 451 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_attrib
//       Access: Published
//  Description: Removes the render attribute of the given type from
//               this node.  This node, and the subgraph below, will
//               now inherit the indicated render attribute from the
//               nodes above this one.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  4 slot 1 3971  
323 14 Dtool_w0CqKWvI 0 4 295 3994 0 14 Dtool_w0CqKWvI 386 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_effect
//       Access: Published
//  Description: Adds the indicated render effect to the scene
//               graph on this node.  If there was already an effect
//               of the same type, it is replaced.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  6 effect 1 4024  
324 14 Dtool_w0Cq07Hl 0 7 296 4024 0 14 Dtool_w0Cq07Hl 338 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_effect
//       Access: Published
//  Description: Returns the render effect of the indicated type,
//               if it is defined on the node, or NULL if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 type 1 4000  
325 14 Dtool_w0CqI1nr 0 6 297 3970 0 14 Dtool_w0CqI1nr 365 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_effect
//       Access: Published
//  Description: Returns true if there is a render effect of the
//               indicated type defined on this node, or false if
//               there is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 type 1 4000  
326 14 Dtool_w0CqNUJ2 0 4 298 3994 0 14 Dtool_w0CqNUJ2 299 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_effect
//       Access: Published
//  Description: Removes the render effect of the given type from
//               this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  4 type 1 4000  
327 14 Dtool_w0CqemfK 0 4 299 3994 0 14 Dtool_w0CqemfK 620 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_state
//       Access: Published
//  Description: Sets the complete RenderState that will be applied to
//               all nodes at this level and below.  (The actual state
//               that will be applied to lower nodes is based on the
//               composition of RenderStates from above this node as
//               well).  This completely replaces whatever has been
//               set on this node via repeated calls to set_attrib().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  5 state 1 4008  14 current_thread 1 4032  
328 14 Dtool_w0CqGDjV 0 4 299 3994 0 14 Dtool_w0CqGDjV 620 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_state
//       Access: Published
//  Description: Sets the complete RenderState that will be applied to
//               all nodes at this level and below.  (The actual state
//               that will be applied to lower nodes is based on the
//               composition of RenderStates from above this node as
//               well).  This completely replaces whatever has been
//               set on this node via repeated calls to set_attrib().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  5 state 1 4008  
329 14 Dtool_w0Cqbxvz 0 7 300 4008 0 14 Dtool_w0Cqbxvz 533 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_state
//       Access: Published
//  Description: Returns the complete RenderState that will be applied
//               to all nodes at this level and below, as set on this
//               node.  This returns only the RenderState set on this
//               particular node, and has nothing to do with state
//               that might be inherited from above.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
330 14 Dtool_w0CqJocj 0 7 300 4008 0 14 Dtool_w0CqJocj 533 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_state
//       Access: Published
//  Description: Returns the complete RenderState that will be applied
//               to all nodes at this level and below, as set on this
//               node.  This returns only the RenderState set on this
//               particular node, and has nothing to do with state
//               that might be inherited from above.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
331 14 Dtool_w0CqIX0F 0 4 301 3994 0 14 Dtool_w0CqIX0F 438 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_state
//       Access: Published
//  Description: Resets this node to leave the render state alone.
//               Nodes at this level and below will once again inherit
//               their render state unchanged from the nodes above
//               this level.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  14 current_thread 1 4032  
332 14 Dtool_w0CqtySF 0 4 301 3994 0 14 Dtool_w0CqtySF 438 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_state
//       Access: Published
//  Description: Resets this node to leave the render state alone.
//               Nodes at this level and below will once again inherit
//               their render state unchanged from the nodes above
//               this level.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4029  
333 14 Dtool_w0CqCQ8C 0 4 302 3994 0 14 Dtool_w0CqCQ8C 433 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_effects
//       Access: Published
//  Description: Sets the complete RenderEffects that will be applied
//               this node.  This completely replaces whatever has
//               been set on this node via repeated calls to
//               set_attrib().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  7 effects 1 4026  14 current_thread 1 4032  
334 14 Dtool_w0Cqxlpj 0 4 302 3994 0 14 Dtool_w0Cqxlpj 433 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_effects
//       Access: Published
//  Description: Sets the complete RenderEffects that will be applied
//               this node.  This completely replaces whatever has
//               been set on this node via repeated calls to
//               set_attrib().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  7 effects 1 4026  
335 14 Dtool_w0Cq8_I0 0 7 303 4026 0 14 Dtool_w0Cq8_I0 308 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_effects
//       Access: Published
//  Description: Returns the complete RenderEffects that will be
//               applied to this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
336 14 Dtool_w0Cq1WLf 0 7 303 4026 0 14 Dtool_w0Cq1WLf 308 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_effects
//       Access: Published
//  Description: Returns the complete RenderEffects that will be
//               applied to this node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
337 14 Dtool_w0Cq6KSB 0 4 304 3994 0 14 Dtool_w0Cq6KSB 267 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_effects
//       Access: Published
//  Description: Resets this node to have no render effects.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  14 current_thread 1 4032  
338 14 Dtool_w0Cq6yPH 0 4 304 3994 0 14 Dtool_w0Cq6yPH 267 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_effects
//       Access: Published
//  Description: Resets this node to have no render effects.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4029  
339 14 Dtool_w0CqqB_f 0 4 305 3994 0 14 Dtool_w0CqqB_f 402 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_transform
//       Access: Published
//  Description: Sets the transform that will be applied to this node
//               and below.  This defines a new coordinate space at
//               this point in the scene graph and below.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  9 transform 1 3968  14 current_thread 1 4032  
340 14 Dtool_w0Cq55Ti 0 4 305 3994 0 14 Dtool_w0Cq55Ti 402 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_transform
//       Access: Published
//  Description: Sets the transform that will be applied to this node
//               and below.  This defines a new coordinate space at
//               this point in the scene graph and below.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  9 transform 1 3968  
341 14 Dtool_w0CqJmGn 0 7 306 3968 0 14 Dtool_w0CqJmGn 435 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_transform
//       Access: Published
//  Description: Returns the transform that has been set on this
//               particular node.  This is not the net transform from
//               the root, but simply the transform on this particular
//               node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
342 14 Dtool_w0CqydH2 0 7 306 3968 0 14 Dtool_w0CqydH2 435 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_transform
//       Access: Published
//  Description: Returns the transform that has been set on this
//               particular node.  This is not the net transform from
//               the root, but simply the transform on this particular
//               node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
343 14 Dtool_w0Cqu6N3 0 4 307 3994 0 14 Dtool_w0Cqu6N3 303 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_transform
//       Access: Published
//  Description: Resets the transform on this node to the identity
//               transform.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  14 current_thread 1 4032  
344 14 Dtool_w0CqEjK_ 0 4 307 3994 0 14 Dtool_w0CqEjK_ 303 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_transform
//       Access: Published
//  Description: Resets the transform on this node to the identity
//               transform.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4029  
345 14 Dtool_w0Cqou8E 0 4 308 3994 0 14 Dtool_w0Cqou8E 436 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_prev_transform
//       Access: Published
//  Description: Sets the transform that represents this node's
//               "previous" position, one frame ago, for the purposes
//               of detecting motion for accurate collision
//               calculations.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  9 transform 1 3968  14 current_thread 1 4032  
346 14 Dtool_w0Cq_3nJ 0 4 308 3994 0 14 Dtool_w0Cq_3nJ 436 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_prev_transform
//       Access: Published
//  Description: Sets the transform that represents this node's
//               "previous" position, one frame ago, for the purposes
//               of detecting motion for accurate collision
//               calculations.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  9 transform 1 3968  
347 14 Dtool_w0Cq01ew 0 7 309 3968 0 14 Dtool_w0Cq01ew 365 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_prev_transform
//       Access: Published
//  Description: Returns the transform that has been set as this
//               node's "previous" position.  See
//               set_prev_transform().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
348 14 Dtool_w0Cqr3cO 0 7 309 3968 0 14 Dtool_w0Cqr3cO 365 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_prev_transform
//       Access: Published
//  Description: Returns the transform that has been set as this
//               node's "previous" position.  See
//               set_prev_transform().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
349 14 Dtool_w0CqCOg_ 0 4 310 3994 0 14 Dtool_w0CqCOg_ 444 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::reset_prev_transform
//       Access: Published
//  Description: Resets the transform that represents this node's
//               "previous" position to the same as the current
//               transform.  This is not the same thing as clearing it
//               to identity.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  14 current_thread 1 4032  
350 14 Dtool_w0CqGfcO 0 4 310 3994 0 14 Dtool_w0CqGfcO 444 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::reset_prev_transform
//       Access: Published
//  Description: Resets the transform that represents this node's
//               "previous" position to the same as the current
//               transform.  This is not the same thing as clearing it
//               to identity.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4029  
351 14 Dtool_w0CqraRv 0 6 311 3970 0 14 Dtool_w0CqraRv 533 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_dirty_prev_transform
//       Access: Published
//  Description: Returns true if this node has the
//               _dirty_prev_transform flag set, which indicates its
//               _prev_transform is different from its _transform
//               value (in pipeline stage 0).  In this case, the node
//               will be visited by reset_prev_transform().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
352 14 Dtool_w0Cq_NX9 0 4 312 3994 0 14 Dtool_w0Cq_NX9 533 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::reset_all_prev_transform
//       Access: Published, Static
//  Description: Visits all nodes in the world with the
//               _dirty_prev_transform flag--that is, all nodes whose
//               _prev_transform is different from the _transform in
//               pipeline stage 0--and resets the _prev_transform to
//               be the same as _transform.
//////////////////////////////////////////////////////////////////// 1 14 current_thread 1 4032  
353 14 Dtool_w0CqSKY2 0 4 312 3994 0 14 Dtool_w0CqSKY2 533 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::reset_all_prev_transform
//       Access: Published, Static
//  Description: Visits all nodes in the world with the
//               _dirty_prev_transform flag--that is, all nodes whose
//               _prev_transform is different from the _transform in
//               pipeline stage 0--and resets the _prev_transform to
//               be the same as _transform.
//////////////////////////////////////////////////////////////////// 0 
354 14 Dtool_w0CqCAeo 0 4 313 3994 0 14 Dtool_w0CqCAeo 701 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_tag
//       Access: Published
//  Description: Associates a user-defined value with a user-defined
//               key which is stored on the node.  This value has no
//               meaning to Panda; but it is stored indefinitely on
//               the node until it is requested again.
//
//               Each unique key stores a different string value.
//               There is no effective limit on the number of
//               different keys that may be stored or on the length of
//               any one key's value.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4029  3 key 1 4028  5 value 1 4028  14 current_thread 1 4032  
355 14 Dtool_w0CqTNEJ 0 4 313 3994 0 14 Dtool_w0CqTNEJ 701 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_tag
//       Access: Published
//  Description: Associates a user-defined value with a user-defined
//               key which is stored on the node.  This value has no
//               meaning to Panda; but it is stored indefinitely on
//               the node until it is requested again.
//
//               Each unique key stores a different string value.
//               There is no effective limit on the number of
//               different keys that may be stored or on the length of
//               any one key's value.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  3 key 1 4028  5 value 1 4028  
356 14 Dtool_w0CqJI3z 0 6 314 4028 0 14 Dtool_w0CqJI3z 434 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_tag
//       Access: Published
//  Description: Retrieves the user-defined value that was previously
//               set on this node for the particular key, if any.  If
//               no value has been previously set, returns the empty
//               string.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  3 key 1 4028  14 current_thread 1 4032  
357 14 Dtool_w0Cq5tVl 0 6 314 4028 0 14 Dtool_w0Cq5tVl 434 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_tag
//       Access: Published
//  Description: Retrieves the user-defined value that was previously
//               set on this node for the particular key, if any.  If
//               no value has been previously set, returns the empty
//               string.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  3 key 1 4028  
358 14 Dtool_w0CqdfX6 0 6 315 3970 0 14 Dtool_w0CqdfX6 405 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_tag
//       Access: Published
//  Description: Returns true if a value has been defined on this node
//               for the particular key (even if that value is the
//               empty string), or false if no value has been set.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  3 key 1 4028  14 current_thread 1 4032  
359 14 Dtool_w0Cqte2r 0 6 315 3970 0 14 Dtool_w0Cqte2r 405 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_tag
//       Access: Published
//  Description: Returns true if a value has been defined on this node
//               for the particular key (even if that value is the
//               empty string), or false if no value has been set.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  3 key 1 4028  
360 14 Dtool_w0CqnoMi 0 4 316 3994 0 14 Dtool_w0CqnoMi 398 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_tag
//       Access: Published
//  Description: Removes the value defined for this key on this
//               particular node.  After a call to clear_tag(),
//               has_tag() will return false for the indicated key.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  3 key 1 4028  14 current_thread 1 4032  
361 14 Dtool_w0CqiRPE 0 4 316 3994 0 14 Dtool_w0CqiRPE 398 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_tag
//       Access: Published
//  Description: Removes the value defined for this key on this
//               particular node.  After a call to clear_tag(),
//               has_tag() will return false for the indicated key.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  3 key 1 4028  
362 14 Dtool_w0CqFghL 0 6 317 3995 0 14 Dtool_w0CqFghL 0 1 4 this 3 4030  
363 14 Dtool_w0Cqe8RL 0 4 317 3994 0 14 Dtool_w0Cqe8RL 504 ////////////////////////////////////////////////////////////////////
//     Function: Filename::get_tag_keys
//       Access: Published
//  Description: Fills the given vector up with the
//               list of tags on this PandaNode.
//
//               It is the user's responsibility to ensure that the
//               keys vector is empty before making this call;
//               otherwise, the new keys will be appended to it.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  4 keys 1 4034  
364 14 Dtool_w0Cqnv2I 0 4 318 3994 0 14 Dtool_w0Cqnv2I 0 3 4 this 3 4029  3 key 1 4028  5 value 1 3995  
365 14 Dtool_w0Cq_RhW 0 6 319 3995 0 14 Dtool_w0Cq_RhW 0 2 4 this 3 4030  3 key 1 4028  
366 14 Dtool_w0CqCjBd 0 6 320 3970 0 14 Dtool_w0CqCjBd 0 2 4 this 3 4030  3 key 1 4028  
367 14 Dtool_w0CqCWBq 0 4 321 3994 0 14 Dtool_w0CqCWBq 0 2 4 this 3 4029  3 key 1 4028  
368 14 Dtool_w0CqKPte 0 6 322 3995 0 14 Dtool_w0CqKPte 0 1 4 this 3 4030  
369 14 Dtool_w0Cqia_q 0 4 322 3994 0 14 Dtool_w0Cqia_q 0 2 4 this 3 4030  4 keys 1 4034  
370 14 Dtool_w0CqUT5V 0 6 323 3970 0 14 Dtool_w0CqUT5V 324 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::has_tags
//       Access: Published
//  Description: Returns true if the node has any tags (or any Python
//               tags) at all, false if it has none.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
371 14 Dtool_w0CqxMQi 0 4 324 3994 0 14 Dtool_w0CqxMQi 445 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_tags
//       Access: Published
//  Description: Copies all of the tags stored on the other node onto
//               this node.  If a particular tag exists on both nodes,
//               the contents of this node's value is replaced by that
//               of the other.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  5 other 1 4029  
372 14 Dtool_w0Cq3itg 0 4 325 3994 0 14 Dtool_w0Cq3itg 660 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::list_tags
//       Access: Published
//  Description: Writes a list of all the tag keys assigned to the
//               node to the indicated stream.  Writes one instance of
//               the separator following each key (but does not write
//               a terminal separator).  The value associated with
//               each key is not written.
//
//               This is mainly for the benefit of the realtime user,
//               to see the list of all of the associated tag keys.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  3 out 1 3997  9 separator 1 4028  
373 14 Dtool_w0CqcRES 0 4 325 3994 0 14 Dtool_w0CqcRES 660 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::list_tags
//       Access: Published
//  Description: Writes a list of all the tag keys assigned to the
//               node to the indicated stream.  Writes one instance of
//               the separator following each key (but does not write
//               a terminal separator).  The value associated with
//               each key is not written.
//
//               This is mainly for the benefit of the realtime user,
//               to see the list of all of the associated tag keys.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  3 out 1 3997  
374 14 Dtool_w0Cq5bPJ 0 6 326 3971 0 14 Dtool_w0Cq5bPJ 643 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::compare_tags
//       Access: Published
//  Description: Returns a number less than 0, 0, or greater than 0,
//               to indicate the similarity of tags between this node
//               and the other one.  If this returns 0, the tags are
//               identical.  If it returns other than 0, then the tags
//               are different; and the nodes may be sorted into a
//               consistent (but arbitrary) ordering based on this
//               number.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  5 other 1 4030  
375 14 Dtool_w0CqPMTU 0 4 327 3994 0 14 Dtool_w0CqPMTU 542 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::copy_all_properties
//       Access: Published
//  Description: Copies the TransformState, RenderState,
//               RenderEffects, tags, Python tags, and the show/hide
//               state from the other node onto this one.  Typically
//               this is used to prepare a node to replace another
//               node in the scene graph (also see replace_node()).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  5 other 1 4029  
376 14 Dtool_w0Cq5edC 0 4 328 3994 0 14 Dtool_w0Cq5edC 976 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::replace_node
//       Access: Published
//  Description: Inserts this node into the scene graph in place of
//               the other one, and removes the other node.  All scene
//               graph attributes (TransformState, RenderState, etc.)
//               are copied to this node.  
//
//               All children are moved to this node, and removed from
//               the old node.  The new node is left in the same place
//               in the old node's parent's list of children.
//
//               Even NodePaths that reference the old node are
//               updated in-place to reference the new node instead.
//
//               This method is intended to be used to replace a node
//               of a given type in the scene graph with a node of a
//               different type.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  5 other 1 4029  
377 14 Dtool_w0CqhV2Y 0 4 330 3994 0 14 Dtool_w0CqhV2Y 1028 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_unexpected_change
//       Access: Published
//  Description: Sets one or more of the PandaNode::UnexpectedChange
//               bits on, indicating that the corresponding property
//               should not change again on this node.  Once one of
//               these bits has been set, if the property changes, an
//               assertion failure will be raised, which is designed
//               to assist the developer in identifying the
//               troublesome code that modified the property
//               unexpectedly.
//
//               The input parameter is the union of bits that are to
//               be set.  To clear these bits later, use
//               clear_unexpected_change().
//
//               Since this is a developer debugging tool only, this
//               function does nothing in a production (NDEBUG) build.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  5 flags 1 3972  
378 14 Dtool_w0Cq9YBk 0 6 331 3972 0 14 Dtool_w0Cq9YBk 751 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_unexpected_change
//       Access: Published
//  Description: Returns nonzero if any of the bits in the input
//               parameter are set on this node, or zero if none of
//               them are set.  More specifically, this returns the
//               particular set of bits (masked by the input
//               parameter) that have been set on this node.  See
//               set_unexpected_change().
//
//               Since this is a developer debugging tool only, this
//               function always returns zero in a production (NDEBUG)
//               build.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  5 flags 1 3972  
379 14 Dtool_w0CqDKYD 0 4 332 3994 0 14 Dtool_w0CqDKYD 700 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_unexpected_change
//       Access: Published
//  Description: Sets one or more of the PandaNode::UnexpectedChange
//               bits off, indicating that the corresponding property
//               may once again change on this node.  See
//               set_unexpected_change().
//
//               The input parameter is the union of bits that are to
//               be cleared.
//
//               Since this is a developer debugging tool only, this
//               function does nothing in a production (NDEBUG) build.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  5 flags 1 3972  
380 14 Dtool_w0CqMVSB 0 7 333 4037 0 14 Dtool_w0CqMVSB 457 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_overall_bit
//       Access: Published, Static
//  Description: Returns the special bit that, when specifically
//               cleared in the node's DrawMask, indicates that the
//               node is hidden to all cameras, regardless of the
//               remaining DrawMask bits.
//////////////////////////////////////////////////////////////////// 0 
381 14 Dtool_w0CqD1n5 0 7 334 4037 0 14 Dtool_w0CqD1n5 323 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_all_camera_mask
//       Access: Published, Static
//  Description: Returns a DrawMask that is appropriate for rendering
//               to all cameras.
//////////////////////////////////////////////////////////////////// 0 
382 14 Dtool_w0Cqc4fq 0 6 335 3970 0 14 Dtool_w0Cqc4fq 337 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_overall_hidden
//       Access: Published, Static
//  Description: Returns true if the node has been hidden to all
//               cameras by clearing its overall bit.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
383 14 Dtool_w0CqpN5m 0 4 336 3994 0 14 Dtool_w0CqpN5m 750 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_overall_hidden
//       Access: Published
//  Description: Sets or clears the hidden flag.  When the hidden flag
//               is true, the node and all of its children are
//               invisible to all cameras, regardless of the setting
//               of any draw masks.  Setting the hidden flag to false
//               restores the previous visibility as established by
//               the draw masks.
//
//               This actually works by twiddling the reserved
//               _overall_bit in the node's draw mask, which has
//               special meaning.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  14 overall_hidden 1 3970  
384 14 Dtool_w0CqdFVQ 0 4 337 3994 0 14 Dtool_w0CqdFVQ 1941 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::adjust_draw_mask
//       Access: Published
//  Description: Adjusts the hide/show bits of this particular node.
//
//               These three parameters can be used to adjust the
//               _draw_control_mask and _draw_show_mask independently,
//               which work together to provide per-camera visibility
//               for the node and its descendents.
//
//               _draw_control_mask indicates the bits in
//               _draw_show_mask that are significant.  Each different
//               bit corresponds to a different camera (and these bits
//               are assigned via Camera::set_camera_mask()).
//
//               Where _draw_control_mask has a 1 bit, a 1 bit in
//               _draw_show_mask indicates the node is visible to that
//               camera, and a 0 bit indicates the node is hidden to
//               that camera.  Where _draw_control_mask is 0, the node
//               is hidden only if a parent node is hidden.
//
//               The meaning of the three parameters is as follows:
//
//               * Wherever show_mask is 1, _draw_show_mask and
//               _draw_control_mask will be set 1.  Thus, show_mask
//               indicates the set of cameras to which the node should
//               be shown.
//
//               * Wherever hide_mask is 1, _draw_show_mask will be
//               set 0 and _draw_control_mask will be set 1.  Thus,
//               hide_mask indicates the set of cameras from which the
//               node should be hidden.
//
//               * Wherever clear_mask is 1, _draw_control_mask will
//               be set 0.  Thus, clear_mask indicates the set of
//               cameras from which the hidden state should be
//               inherited from a parent.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4029  9 show_mask 1 4037  9 hide_mask 1 4037  10 clear_mask 1 4037  
385 14 Dtool_w0CqaVGC 0 7 338 4037 0 14 Dtool_w0CqaVGC 347 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_draw_control_mask
//       Access: Published
//  Description: Returns the set of bits in draw_show_mask that are
//               considered meaningful.  See adjust_draw_mask().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
386 14 Dtool_w0CqkxUA 0 7 339 4037 0 14 Dtool_w0CqkxUA 321 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_draw_show_mask
//       Access: Published
//  Description: Returns the hide/show bits of this particular node.
//               See adjust_draw_mask().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
387 14 Dtool_w0CqVZQn 0 7 340 4037 0 14 Dtool_w0CqVZQn 681 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_net_draw_control_mask
//       Access: Published
//  Description: Returns the set of bits in get_net_draw_show_mask()
//               that have been explicitly set via adjust_draw_mask(),
//               rather than implicitly inherited.
//
//               A 1 bit in any position of this mask indicates that
//               (a) this node has renderable children, and (b) some
//               child of this node has made an explicit hide() or
//               show_through() call for the corresponding bit.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
388 14 Dtool_w0CqthHn 0 7 341 4037 0 14 Dtool_w0CqthHn 943 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_net_draw_show_mask
//       Access: Published
//  Description: Returns the union of all draw_show_mask values--of
//               renderable nodes only--at this level and below.  If
//               any bit in this mask is 0, there is no reason to
//               traverse below this node for a camera with the
//               corresponding camera_mask.
//
//               The bits in this mask that do not correspond to a 1
//               bit in the net_draw_control_mask are meaningless (and
//               will be set to 1).  For bits that *do* correspond to
//               a 1 bit in the net_draw_control_mask, a 1 bit
//               indicates that at least one child should be visible,
//               while a 0 bit indicates that all children are hidden.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
389 14 Dtool_w0CqAdj3 0 4 342 3994 0 14 Dtool_w0CqAdj3 882 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_into_collide_mask
//       Access: Published
//  Description: Sets the "into" CollideMask.  
//
//               This specifies the set of bits that must be shared
//               with a CollisionNode's "from" CollideMask in order
//               for the CollisionNode to detect a collision with this
//               particular node.
//
//               The actual CollideMask that will be set is masked by
//               the return value from get_legal_collide_mask().
//               Thus, the into_collide_mask cannot be set to anything
//               other than nonzero except for those types of nodes
//               that can be collided into, such as CollisionNodes and
//               GeomNodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  4 mask 1 4037  
390 14 Dtool_w0Cqc3Cf 0 7 343 4037 0 14 Dtool_w0Cqc3Cf 278 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_into_collide_mask
//       Access: Published
//  Description: Returns the "into" collide mask for this node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
391 14 Dtool_w0CqtnOA 0 7 344 4037 0 14 Dtool_w0CqtnOA 618 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_legal_collide_mask
//       Access: Published, Virtual
//  Description: Returns the subset of CollideMask bits that may be
//               set for this particular type of PandaNode.  For most
//               nodes, this is 0; it doesn't make sense to set a
//               CollideMask for most kinds of nodes.
//
//               For nodes that can be collided with, such as GeomNode
//               and CollisionNode, this returns all bits on.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
392 14 Dtool_w0CqBjl_ 0 7 345 4037 0 14 Dtool_w0CqBjl_ 346 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_net_collide_mask
//       Access: Published
//  Description: Returns the union of all into_collide_mask() values
//               set at CollisionNodes at this level and below.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
393 14 Dtool_w0Cq4l_T 0 7 345 4037 0 14 Dtool_w0Cq4l_T 346 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_net_collide_mask
//       Access: Published
//  Description: Returns the union of all into_collide_mask() values
//               set at CollisionNodes at this level and below.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
394 14 Dtool_w0CqK84o 0 7 346 4005 0 14 Dtool_w0CqK84o 395 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_off_clip_planes
//       Access: Published
//  Description: Returns a ClipPlaneAttrib which represents the union
//               of all of the clip planes that have been turned *off*
//               at this level and below.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
395 14 Dtool_w0CqIxkn 0 7 346 4005 0 14 Dtool_w0CqIxkn 395 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_off_clip_planes
//       Access: Published
//  Description: Returns a ClipPlaneAttrib which represents the union
//               of all of the clip planes that have been turned *off*
//               at this level and below.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
396 14 Dtool_w0Cq9vAT 0 4 347 3994 0 14 Dtool_w0Cq9vAT 818 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::prepare_scene
//       Access: Published
//  Description: Walks through the scene graph beginning at this node,
//               and does whatever initialization is required to
//               render the scene properly with the indicated GSG.  It
//               is not strictly necessary to call this, since the GSG
//               will initialize itself when the scene is rendered,
//               but this may take some of the overhead away from that
//               process.
//
//               In particular, this will ensure that textures and
//               vertex buffers within the scene are loaded into
//               graphics memory.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4029  3 gsg 1 4038  10 node_state 1 4008  
397 14 Dtool_w0CqhUEh 0 6 348 3970 0 14 Dtool_w0CqhUEh 431 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_scene_root
//       Access: Published
//  Description: Returns true if this particular node is known to be
//               the render root of some active DisplayRegion
//               associated with the global GraphicsEngine, false
//               otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
398 14 Dtool_w0CqUA6g 0 6 349 3970 0 14 Dtool_w0CqUA6g 601 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_under_scene_root
//       Access: Published
//  Description: Returns true if this particular node is in a live
//               scene graph: that is, it is a child or descendent of
//               a node that is itself a scene root.  If this is true,
//               this node may potentially be traversed by the render
//               traverser.  Stashed nodes don't count for this
//               purpose, but hidden nodes do.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
399 14 Dtool_w0CqW23T 0 4 350 3994 0 14 Dtool_w0CqW23T 226 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::output
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  3 out 1 3997  
400 14 Dtool_w0CqSz8K 0 4 351 3994 0 14 Dtool_w0CqSz8K 225 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::write
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  3 out 1 3997  12 indent_level 1 3971  
401 14 Dtool_w0CqpBSg 0 4 352 3994 0 14 Dtool_w0CqpBSg 295 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::ls
//       Access: Published
//  Description: Lists all the nodes at and below the current path
//               hierarchically.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  3 out 1 3997  12 indent_level 1 3971  
402 14 Dtool_w0Cqb2UJ 0 4 353 3994 0 14 Dtool_w0Cqb2UJ 1042 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_bounds_type
//       Access: Published
//  Description: Specifies the desired type of bounding volume that
//               will be created for this node.  This is normally
//               BoundingVolume::BT_default, which means to set the
//               type according to the config variable "bounds-type".
//
//               If this is BT_sphere or BT_box, a BoundingSphere or
//               BoundingBox is explicitly created.  If it is BT_best,
//               the appropriate type to best enclose the node's
//               children is created.
//
//               This affects the bounding volume returned by
//               get_bounds(), which is not exactly the same bounding
//               volume modified by set_bounds(), because a new
//               bounding volume has to be created that includes this
//               node and all of its children.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  11 bounds_type 1 4040  
403 14 Dtool_w0Cq6V3e 0 6 354 4040 0 14 Dtool_w0Cq6V3e 644 // A node has three bounding volumes: an "external" bounding volume
// that represents the node and all of its children, an "internal"
// bounding volume which represents only the node itself (and is
// usually empty, unless a specific node type sets it otherwise),
// and a "user" bounding volume which is specified by the user.
// We define set_bounds() and get_bounds() functions so that
// set_bounds() sets the user bounding volume, while get_bounds()
// returns the external bounding volume.  Although it might seem
// strange and confusing to do this, this is actually the natural
// way the user thinks about nodes and bounding volumes. 1 4 this 3 4030  
404 14 Dtool_w0CqAQ3k 0 4 355 3994 0 14 Dtool_w0CqAQ3k 806 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_bounds
//       Access: Published
//  Description: Resets the bounding volume so that it is the
//               indicated volume.  When it is explicitly set, the
//               bounding volume will no longer be automatically
//               computed according to the contents of the node
//               itself, for nodes like GeomNodes and TextNodes that
//               contain substance (but the bounding volume will still
//               be automatically expanded to include its children).
//
//               Call clear_bounds() if you would like to return the
//               bounding volume to its default behavior later.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  6 volume 1 4042  
405 14 Dtool_w0CqphxO 0 4 356 3994 0 14 Dtool_w0CqphxO 258 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_bound
//       Access: Published
//  Description: Deprecated.  Use set_bounds() instead.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  6 volume 1 4042  
406 14 Dtool_w0Cqzkwy 0 4 357 3994 0 14 Dtool_w0Cqzkwy 441 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::clear_bounds
//       Access: Published
//  Description: Reverses the effect of a previous call to
//               set_bounds(), and allows the node's bounding volume
//               to be automatically computed once more based on the
//               contents of the node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4029  
407 14 Dtool_w0CqDKe6 0 7 358 4042 0 14 Dtool_w0CqDKe6 454 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_bounds
//       Access: Published
//  Description: Returns the external bounding volume of this node: a
//               bounding volume that contains the user bounding
//               volume, the internal bounding volume, and all of the
//               children's bounding volumes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
408 14 Dtool_w0Cq9E3v 0 7 358 4042 0 14 Dtool_w0Cq9E3v 454 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_bounds
//       Access: Published
//  Description: Returns the external bounding volume of this node: a
//               bounding volume that contains the user bounding
//               volume, the internal bounding volume, and all of the
//               children's bounding volumes.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
409 14 Dtool_w0CqmNRe 0 7 358 4042 0 14 Dtool_w0CqmNRe 947 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_bounds
//       Access: Published
//  Description: This flavor of get_bounds() return the external
//               bounding volume, and also fills in seq with the
//               bounding volume's current sequence number.  When this
//               sequence number changes, it indicates that the
//               bounding volume might have changed, e.g. because some
//               nested child's bounding volume has changed.
//
//               Although this might occasionally increment without
//               changing the bounding volume, the bounding volume
//               will never change without incrementing this counter,
//               so as long as this counter remains unchanged you can
//               be confident the bounding volume is also unchanged.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4030  3 seq 1 4044  14 current_thread 1 4032  
410 14 Dtool_w0Cq9yDH 0 7 358 4042 0 14 Dtool_w0Cq9yDH 947 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_bounds
//       Access: Published
//  Description: This flavor of get_bounds() return the external
//               bounding volume, and also fills in seq with the
//               bounding volume's current sequence number.  When this
//               sequence number changes, it indicates that the
//               bounding volume might have changed, e.g. because some
//               nested child's bounding volume has changed.
//
//               Although this might occasionally increment without
//               changing the bounding volume, the bounding volume
//               will never change without incrementing this counter,
//               so as long as this counter remains unchanged you can
//               be confident the bounding volume is also unchanged.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  3 seq 1 4044  
411 14 Dtool_w0Cqauzv 0 6 359 3971 0 14 Dtool_w0Cqauzv 744 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_nested_vertices
//       Access: Published
//  Description: Returns the total number of vertices that will be
//               rendered by this node and all of its descendents.
//
//               This is not necessarily an accurate count of vertices
//               that will actually be rendered, since this will
//               include all vertices of all LOD's, and it will also
//               include hidden nodes.  It may also omit or only
//               approximate certain kinds of dynamic geometry.
//               However, it will not include stashed nodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
412 14 Dtool_w0CqRfeu 0 6 359 3971 0 14 Dtool_w0CqRfeu 744 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_nested_vertices
//       Access: Published
//  Description: Returns the total number of vertices that will be
//               rendered by this node and all of its descendents.
//
//               This is not necessarily an accurate count of vertices
//               that will actually be rendered, since this will
//               include all vertices of all LOD's, and it will also
//               include hidden nodes.  It may also omit or only
//               approximate certain kinds of dynamic geometry.
//               However, it will not include stashed nodes.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
413 14 Dtool_w0CqxMGh 0 7 360 4042 0 14 Dtool_w0CqxMGh 502 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_internal_bounds
//       Access: Published
//  Description: Returns the node's internal bounding volume.  This is
//               the bounding volume around the node alone, without
//               including children.  If the user has called
//               set_bounds(), it will be the specified bounding
//               volume.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
414 14 Dtool_w0Cqjqxf 0 7 360 4042 0 14 Dtool_w0Cqjqxf 502 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_internal_bounds
//       Access: Published
//  Description: Returns the node's internal bounding volume.  This is
//               the bounding volume around the node alone, without
//               including children.  If the user has called
//               set_bounds(), it will be the specified bounding
//               volume.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
415 14 Dtool_w0CqOmTK 0 6 361 3971 0 14 Dtool_w0CqOmTK 488 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_internal_vertices
//       Access: Published
//  Description: Returns the total number of vertices that will be
//               rendered by this particular node alone, not
//               accounting for its children.
//
//               This may not include all vertices for certain dynamic
//               effects.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
416 14 Dtool_w0CqxQZ2 0 6 361 3971 0 14 Dtool_w0CqxQZ2 488 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_internal_vertices
//       Access: Published
//  Description: Returns the total number of vertices that will be
//               rendered by this particular node alone, not
//               accounting for its children.
//
//               This may not include all vertices for certain dynamic
//               effects.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
417 14 Dtool_w0CqIbN9 0 4 362 3994 0 14 Dtool_w0CqIbN9 926 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::mark_bounds_stale
//       Access: Published
//  Description: Indicates that the bounding volume, or something that
//               influences the bounding volume (or any of the other
//               things stored in CData, like net_collide_mask),
//               may have changed for this node, and that it must be
//               recomputed.
//
//               With no parameters, this means to iterate through all
//               stages including and upstream of the current pipeline
//               stage.
//
//               This method is intended for internal use; usually it
//               is not necessary for a user to call this directly.
//               It will be called automatically by derived classes
//               when appropriate.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
418 14 Dtool_w0CqddK_ 0 4 362 3994 0 14 Dtool_w0CqddK_ 926 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::mark_bounds_stale
//       Access: Published
//  Description: Indicates that the bounding volume, or something that
//               influences the bounding volume (or any of the other
//               things stored in CData, like net_collide_mask),
//               may have changed for this node, and that it must be
//               recomputed.
//
//               With no parameters, this means to iterate through all
//               stages including and upstream of the current pipeline
//               stage.
//
//               This method is intended for internal use; usually it
//               is not necessary for a user to call this directly.
//               It will be called automatically by derived classes
//               when appropriate.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
419 14 Dtool_w0Cql4WP 0 4 363 3994 0 14 Dtool_w0Cql4WP 822 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::mark_internal_bounds_stale
//       Access: Published
//  Description: Should be called by a derived class to mark the
//               internal bounding volume stale, so that
//               compute_internal_bounds() will be called when the
//               bounding volume is next requested.
//
//               With no parameters, this means to iterate through all
//               stages including and upstream of the current pipeline
//               stage.
//
//               It is normally not necessary to call this method
//               directly; each node should be responsible for calling
//               it when its internals have changed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  14 current_thread 1 4032  
420 14 Dtool_w0Cqpy5K 0 4 363 3994 0 14 Dtool_w0Cqpy5K 822 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::mark_internal_bounds_stale
//       Access: Published
//  Description: Should be called by a derived class to mark the
//               internal bounding volume stale, so that
//               compute_internal_bounds() will be called when the
//               bounding volume is next requested.
//
//               With no parameters, this means to iterate through all
//               stages including and upstream of the current pipeline
//               stage.
//
//               It is normally not necessary to call this method
//               directly; each node should be responsible for calling
//               it when its internals have changed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4029  
421 14 Dtool_w0Cq8mxQ 0 6 364 3970 0 14 Dtool_w0Cq8mxQ 457 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_bounds_stale
//       Access: Published
//  Description: Returns true if the bounding volume of this node is
//                stale and will be implicitly recomputed at the next
//                call to get_bounds(), or false if it is fresh and
//                need not be recomputed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
422 14 Dtool_w0CqfUw8 0 4 365 3994 0 14 Dtool_w0CqfUw8 995 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::set_final
//       Access: Published
//  Description: Sets the "final" flag on this PandaNode.  If
//               this is true, than no bounding volume need be tested
//               below it; a positive intersection with this node's
//               bounding volume is deemed to be a positive
//               intersection with all geometry inside.
//
//               This is useful to quickly force a larger bounding
//               volume around a node when the GeomNodes themselves
//               are inaccurate for some reason, without forcing a
//               recompute of every nested bounding volume.  It's also
//               helpful when the bounding volume is tricked by some
//               special properties, like billboards, that may move
//               geometry out of its bounding volume otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4029  4 flag 1 3970  
423 14 Dtool_w0CqitT8 0 6 366 3970 0 14 Dtool_w0CqitT8 429 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_final
//       Access: Published
//  Description: Returns the current state of the "final" flag.
//               Initially, this flag is off (false), but it may be
//               changed by an explicit call to set_final().  See
//               set_final().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
424 14 Dtool_w0Cq8p0D 0 6 366 3970 0 14 Dtool_w0Cq8p0D 429 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_final
//       Access: Published
//  Description: Returns the current state of the "final" flag.
//               Initially, this flag is off (false), but it may be
//               changed by an explicit call to set_final().  See
//               set_final().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
425 14 Dtool_w0CqxAx3 0 6 367 3970 0 14 Dtool_w0CqxAx3 570 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_geom_node
//       Access: Published, Virtual
//  Description: A simple downcast check.  Returns true if this kind
//               of node happens to inherit from GeomNode, false
//               otherwise.
//
//               This is provided as a a faster alternative to calling
//               is_of_type(GeomNode::get_class_type()), since this
//               test is so important to rendering.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
426 14 Dtool_w0CqhW8z 0 6 368 3970 0 14 Dtool_w0CqhW8z 504 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_lod_node
//       Access: Published, Virtual
//  Description: A simple downcast check.  Returns true if this kind
//               of node happens to inherit from LODNode, false
//               otherwise.
//
//               This is provided as a a faster alternative to calling
//               is_of_type(LODNode::get_class_type()).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
427 14 Dtool_w0Cq5usX 0 6 369 3970 0 14 Dtool_w0Cq5usX 522 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_collision_node
//       Access: Published, Virtual
//  Description: A simple downcast check.  Returns true if this kind
//               of node happens to inherit from CollisionNode, false
//               otherwise.
//
//               This is provided as a a faster alternative to calling
//               is_of_type(CollisionNode::get_class_type()).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
428 14 Dtool_w0CqbCbs 0 7 370 4046 3341 14 Dtool_w0CqbCbs 379 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::as_light
//       Access: Published, Virtual
//  Description: Cross-casts the node to a Light pointer, if it is one
//               of the four kinds of Light nodes, or returns NULL if
//               it is not.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4029  
429 14 Dtool_w0Cqz1Gk 0 6 371 3970 0 14 Dtool_w0Cqz1Gk 356 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::is_ambient_light
//       Access: Published, Virtual
//  Description: Returns true if this is an AmbientLight, false if it
//               is not a light, or it is some other kind of light.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
430 14 Dtool_w0CqoTW8 0 6 373 3971 0 14 Dtool_w0CqoTW8 617 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_fancy_bits
//       Access: Published
//  Description: Returns the union of all of the enum FancyBits values
//               corresponding to the various "fancy" attributes that
//               are set on the node.  If this returns 0, the node has
//               nothing interesting about it.  This is intended to
//               speed traversal by quickly skipping past nodes that
//               don't particularly affect the render state.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4030  14 current_thread 1 4032  
431 14 Dtool_w0Cqnxtb 0 6 373 3971 0 14 Dtool_w0Cqnxtb 617 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::get_fancy_bits
//       Access: Published
//  Description: Returns the union of all of the enum FancyBits values
//               corresponding to the various "fancy" attributes that
//               are set on the node.  If this returns 0, the node has
//               nothing interesting about it.  This is intended to
//               speed traversal by quickly skipping past nodes that
//               don't particularly affect the render state.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4030  
432 14 Dtool_w0CqU_2M 0 7 374 4029 2486 14 Dtool_w0CqU_2M 819 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::decode_from_bam_stream
//       Access: Published, Static
//  Description: Reads the string created by a previous call to
//               encode_to_bam_stream(), and extracts and returns the
//               single object on that string.  Returns NULL on error.
//
//               This method is intended to replace
//               decode_raw_from_bam_stream() when you know the stream
//               in question returns an object of type PandaNode,
//               allowing for easier reference count management.  Note
//               that the caller is still responsible for maintaining
//               the reference count on the return value.
//////////////////////////////////////////////////////////////////// 2 4 data 1 4028  6 reader 1 4047  
433 14 Dtool_w0Cqvo58 0 7 374 4029 2486 14 Dtool_w0Cqvo58 819 ////////////////////////////////////////////////////////////////////
//     Function: PandaNode::decode_from_bam_stream
//       Access: Published, Static
//  Description: Reads the string created by a previous call to
//               encode_to_bam_stream(), and extracts and returns the
//               single object on that string.  Returns NULL on error.
//
//               This method is intended to replace
//               decode_raw_from_bam_stream() when you know the stream
//               in question returns an object of type PandaNode,
//               allowing for easier reference count management.  Note
//               that the caller is still responsible for maintaining
//               the reference count on the return value.
//////////////////////////////////////////////////////////////////// 1 4 data 1 4028  
434 14 Dtool_w0Cq6Ap_ 0 7 375 4000 0 14 Dtool_w0Cq6Ap_ 0 0 
435 14 Dtool_w0CqEBYy 0 6 252 4049 0 14 Dtool_w0CqEBYy 0 1 4 this 3 4029  
436 14 Dtool_w0CqvIpo 0 7 253 4029 2486 14 Dtool_w0CqvIpo 0 1 4 this 3 4049  
437 14 Dtool_w0Cqjprb 0 6 255 4050 0 14 Dtool_w0Cqjprb 0 1 4 this 3 4029  
438 14 Dtool_w0CqPzAU 0 7 256 4029 2486 14 Dtool_w0CqPzAU 0 1 4 this 3 4050  
439 14 Dtool_w0CqX_n6 0 6 258 4051 0 14 Dtool_w0CqX_n6 0 1 4 this 3 4029  
440 14 Dtool_w0CqKjNt 0 7 259 4029 2486 14 Dtool_w0CqKjNt 0 1 4 this 3 4051  
441 14 Dtool_w0Cqgdrc 0 7 261 4052 0 14 Dtool_w0Cqgdrc 0 1 4 this 3 4029  
442 14 Dtool_w0CqMVvF 0 7 378 4005 0 14 Dtool_w0CqMVvF 275 ////////////////////////////////////////////////////////////////////
//     Function: TransparencyAttrib::make
//       Access: Published, Static
//  Description: Constructs a new TransparencyAttrib object.
//////////////////////////////////////////////////////////////////// 1 4 mode 1 3861  
443 14 Dtool_w0Cq6IgE 0 7 379 4005 0 14 Dtool_w0Cq6IgE 405 ////////////////////////////////////////////////////////////////////
//     Function: TransparencyAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
444 14 Dtool_w0CqrW44 0 6 380 3861 0 14 Dtool_w0CqrW44 258 ////////////////////////////////////////////////////////////////////
//     Function: TransparencyAttrib::get_mode
//       Access: Published
//  Description: Returns the transparency mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4053  
445 14 Dtool_w0CqOcs2 0 6 381 3971 0 14 Dtool_w0CqOcs2 0 0 
446 14 Dtool_w0Cq2mWN 0 7 382 4000 0 14 Dtool_w0Cq2mWN 0 0 
447 14 Dtool_w0Cqdx9g 0 7 386 4055 2948 14 Dtool_w0Cqdx9g 761 // Filename: nodePath.I
// Created by:  drose (25Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: NodePath::Default Constructor
//       Access: Published
//  Description: This constructs an empty NodePath with no nodes.
//////////////////////////////////////////////////////////////////// 0 
448 14 Dtool_w0CqJaJj 0 7 386 4055 2948 14 Dtool_w0CqJaJj 225 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::Copy Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 copy 1 4056  
449 14 Dtool_w0Cqvecb 0 7 386 4055 2948 14 Dtool_w0Cqvecb 448 // ***End temporary transition code for operator bool
////////////////////////////////////////////////////////////////////
//     Function: NodePath::Constructor
//       Access: Published
//  Description: Constructs a NodePath with the indicated parent
//               NodePath and child node; the child node must be a
//               stashed or unstashed child of the parent.
//////////////////////////////////////////////////////////////////// 3 6 parent 1 4056  10 child_node 1 4029  14 current_thread 1 4032  
450 14 Dtool_w0CqnAhm 0 7 386 4055 2948 14 Dtool_w0CqnAhm 448 // ***End temporary transition code for operator bool
////////////////////////////////////////////////////////////////////
//     Function: NodePath::Constructor
//       Access: Published
//  Description: Constructs a NodePath with the indicated parent
//               NodePath and child node; the child node must be a
//               stashed or unstashed child of the parent.
//////////////////////////////////////////////////////////////////// 2 6 parent 1 4056  10 child_node 1 4029  
451 14 Dtool_w0CqGF9J 0 7 386 4055 2948 14 Dtool_w0CqGF9J 670 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::Constructor
//       Access: Published
//  Description: This constructs a NodePath for the indicated node.
//               If the node does not have any parents, this creates a
//               singleton NodePath; otherwise, it automatically finds
//               the path from the node to the root.  If the node has
//               multiple paths to the root, one path is chosen
//               arbitrarily and a warning message is printed (but see
//               also NodePath::any_path(), below).
//////////////////////////////////////////////////////////////////// 2 4 node 1 4029  14 current_thread 1 4032  
452 14 Dtool_w0CqH4wM 0 7 386 4055 2948 14 Dtool_w0CqH4wM 670 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::Constructor
//       Access: Published
//  Description: This constructs a NodePath for the indicated node.
//               If the node does not have any parents, this creates a
//               singleton NodePath; otherwise, it automatically finds
//               the path from the node to the root.  If the node has
//               multiple paths to the root, one path is chosen
//               arbitrarily and a warning message is printed (but see
//               also NodePath::any_path(), below).
//////////////////////////////////////////////////////////////////// 1 4 node 1 4029  
453 14 Dtool_w0CqAFt_ 0 7 386 4055 2948 14 Dtool_w0CqAFt_ 376 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::Constructor
//       Access: Published
//  Description: This constructs a new NodePath with a single
//               node.  An ordinary, unattached PandaNode is created
//               with the indicated name.
//////////////////////////////////////////////////////////////////// 2 13 top_node_name 1 4028  14 current_thread 1 4032  
454 14 Dtool_w0CqH_EQ 0 7 386 4055 2948 14 Dtool_w0CqH_EQ 376 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::Constructor
//       Access: Published
//  Description: This constructs a new NodePath with a single
//               node.  An ordinary, unattached PandaNode is created
//               with the indicated name.
//////////////////////////////////////////////////////////////////// 1 13 top_node_name 1 4028  
455 14 Dtool_w0Cqh5bc 0 7 387 4055 2948 14 Dtool_w0Cqh5bc 531 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::any_path named constructor
//       Access: Published, Static
//  Description: Returns a new NodePath that represents any arbitrary
//               path from the root to the indicated node.  This is
//               the same thing that would be returned by
//               NodePath(node), except that no warning is issued if
//               the path is ambiguous.
//////////////////////////////////////////////////////////////////// 2 4 node 1 4029  14 current_thread 1 4032  
456 14 Dtool_w0CqoGNf 0 7 387 4055 2948 14 Dtool_w0CqoGNf 531 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::any_path named constructor
//       Access: Published, Static
//  Description: Returns a new NodePath that represents any arbitrary
//               path from the root to the indicated node.  This is
//               the same thing that would be returned by
//               NodePath(node), except that no warning is issued if
//               the path is ambiguous.
//////////////////////////////////////////////////////////////////// 1 4 node 1 4029  
457 14 Dtool_w0Cqrj60 0 6 388 4055 0 14 Dtool_w0Cqrj60 233 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::Copy Assignment Operator
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 copy 1 4056  
458 14 Dtool_w0CqLNYF 0 7 389 4055 2948 14 Dtool_w0CqLNYF 0 1 4 this 3 4056  
459 14 Dtool_w0Cq9waX 0 6 390 3995 0 14 Dtool_w0Cq9waX 0 3 4 this 3 4056  4 self 1 3995  4 memo 1 3995  
460 14 Dtool_w0CqEvGb 0 6 391 3995 0 14 Dtool_w0CqEvGb 0 2 4 this 3 4056  4 self 1 3995  
461 14 Dtool_w0CqgaU9 0 6 392 3995 0 14 Dtool_w0CqgaU9 0 3 4 this 3 4056  4 self 1 3995  7 pickler 1 3995  
462 14 Dtool_w0CqH6GR 0 7 393 4055 2948 14 Dtool_w0CqH6GR 318 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::not_found named constructor
//       Access: Published, Static
//  Description: Creates a NodePath with the ET_not_found error type
//               set.
//////////////////////////////////////////////////////////////////// 0 
463 14 Dtool_w0CqcqkY 0 7 394 4055 2948 14 Dtool_w0CqcqkY 314 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::removed named constructor
//       Access: Published, Static
//  Description: Creates a NodePath with the ET_removed error type
//               set.
//////////////////////////////////////////////////////////////////// 0 
464 14 Dtool_w0CqKvgx 0 7 395 4055 2948 14 Dtool_w0CqKvgx 308 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::fail named constructor
//       Access: Published, Static
//  Description: Creates a NodePath with the ET_fail error type
//               set.
//////////////////////////////////////////////////////////////////// 0 
465 14 Dtool_w0CqF4FI 0 4 396 3994 0 14 Dtool_w0CqF4FI 1267 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_max_search_depth
//       Access: Published, Static
//  Description: Certain operations, such as find() or
//               find_all_matches(), require a traversal of the scene
//               graph to search for the target node or nodes.  This
//               traversal does not attempt to detect cycles, so an
//               arbitrary cap is set on the depth of the traversal as
//               a poor man's cycle detection, in the event that a
//               cycle has inadvertently been introduced into the
//               scene graph.
//
//               There may be other reasons you'd want to truncate a
//               search before the bottom of the scene graph has been
//               reached.  In any event, this function sets the limit
//               on the number of levels that a traversal will
//               continue, and hence the maximum length of a path that
//               may be returned by a traversal.
//
//               This is a static method, and so changing this
//               parameter affects all of the NodePaths in the
//               universe.
//////////////////////////////////////////////////////////////////// 1 16 max_search_depth 1 3971  
466 14 Dtool_w0CqjBwf 0 6 397 3971 0 14 Dtool_w0CqjBwf 336 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_max_search_depth
//       Access: Published, Static
//  Description: Returns the current setting of the search depth
//               limit.  See set_max_search_depth.
//////////////////////////////////////////////////////////////////// 0 
467 14 Dtool_w0Cq6BVO 0 6 398 3970 0 14 Dtool_w0Cq6BVO 265 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_empty
//       Access: Published
//  Description: Returns true if the NodePath contains no nodes.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
468 14 Dtool_w0CqfPMM 0 6 400 3970 0 14 Dtool_w0CqfPMM 294 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_singleton
//       Access: Published
//  Description: Returns true if the NodePath contains exactly one
//               node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
469 14 Dtool_w0CqnHP3 0 6 400 3970 0 14 Dtool_w0CqnHP3 294 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_singleton
//       Access: Published
//  Description: Returns true if the NodePath contains exactly one
//               node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
470 14 Dtool_w0CqdRIU 0 6 401 3971 0 14 Dtool_w0CqdRIU 263 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_num_nodes
//       Access: Published
//  Description: Returns the number of nodes in the path.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
471 14 Dtool_w0CqMbn0 0 6 401 3971 0 14 Dtool_w0CqMbn0 263 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_num_nodes
//       Access: Published
//  Description: Returns the number of nodes in the path.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
472 14 Dtool_w0CqOx_k 0 7 402 4029 2486 14 Dtool_w0CqOx_k 812 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_node
//       Access: Published
//  Description: Returns the nth node of the path, where 0 is the
//               referenced (bottom) node and get_num_nodes() - 1 is
//               the top node.  This requires iterating through the
//               path.
//
//               Also see node(), which is a convenience function to
//               return the same thing as get_node(0) (since the
//               bottom node is the most important node in the
//               NodePath, and is the one most frequently referenced).
//
//               Note that this function returns the same thing as
//               get_ancestor(index).node().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 index 1 3971  14 current_thread 1 4032  
473 14 Dtool_w0Cq5Kz9 0 7 402 4029 2486 14 Dtool_w0Cq5Kz9 812 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_node
//       Access: Published
//  Description: Returns the nth node of the path, where 0 is the
//               referenced (bottom) node and get_num_nodes() - 1 is
//               the top node.  This requires iterating through the
//               path.
//
//               Also see node(), which is a convenience function to
//               return the same thing as get_node(0) (since the
//               bottom node is the most important node in the
//               NodePath, and is the one most frequently referenced).
//
//               Note that this function returns the same thing as
//               get_ancestor(index).node().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 index 1 3971  
474 14 Dtool_w0CqH5pa 0 7 403 4055 2948 14 Dtool_w0CqH5pa 531 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_ancestor
//       Access: Published
//  Description: Returns the nth ancestor of the path, where 0 is the
//               NodePath itself and get_num_nodes() - 1 is get_top().
//               This requires iterating through the path.
//
//               Also see get_node(), which returns the same thing as
//               a PandaNode pointer, not a NodePath.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 index 1 3971  14 current_thread 1 4032  
475 14 Dtool_w0Cq4QOU 0 7 403 4055 2948 14 Dtool_w0Cq4QOU 531 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_ancestor
//       Access: Published
//  Description: Returns the nth ancestor of the path, where 0 is the
//               NodePath itself and get_num_nodes() - 1 is get_top().
//               This requires iterating through the path.
//
//               Also see get_node(), which returns the same thing as
//               a PandaNode pointer, not a NodePath.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 index 1 3971  
476 14 Dtool_w0Cq17Vc 0 6 404 3863 0 14 Dtool_w0Cq17Vc 337 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_error_type
//       Access: Published
//  Description: If is_empty() is true, this returns a code that
//               represents the reason why the NodePath is empty.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
477 14 Dtool_w0CqbOLd 0 7 405 4029 2486 14 Dtool_w0CqbOLd 345 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_top_node
//       Access: Published
//  Description: Returns the top node of the path, or NULL if the path
//               is empty.  This requires iterating through the path.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
478 14 Dtool_w0CqCGOI 0 7 405 4029 2486 14 Dtool_w0CqCGOI 345 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_top_node
//       Access: Published
//  Description: Returns the top node of the path, or NULL if the path
//               is empty.  This requires iterating through the path.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
479 14 Dtool_w0CqFyxv 0 7 406 4055 2948 14 Dtool_w0CqFyxv 340 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_top
//       Access: Published
//  Description: Returns a singleton NodePath that represents the top
//               of the path, or empty NodePath if this path is empty.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
480 14 Dtool_w0CqHiQF 0 7 406 4055 2948 14 Dtool_w0CqHiQF 340 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_top
//       Access: Published
//  Description: Returns a singleton NodePath that represents the top
//               of the path, or empty NodePath if this path is empty.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
481 14 Dtool_w0CqC92U 0 7 407 4029 2486 14 Dtool_w0CqC92U 254 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::node
//       Access: Published
//  Description: Returns the referenced node of the path.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
482 14 Dtool_w0Cqumo_ 0 6 408 3971 0 14 Dtool_w0Cqumo_ 988 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_key
//       Access: Published
//  Description: Returns an integer that is guaranteed to be the same
//               for all NodePaths that represent the same node
//               instance, and different for all NodePaths that
//               represent a different node instance.  
//
//               The same key will be returned for a particular
//               instance as long as at least one NodePath exists that
//               represents that instance; if all NodePaths for a
//               particular instance destruct and a new one is later
//               created, it may have a different index.  However, a
//               given key will never be reused for a different
//               instance (unless the app has been running long enough
//               that we overflow the integer key value).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
483 14 Dtool_w0CquVQo 0 6 409 3972 0 14 Dtool_w0CquVQo 866 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::add_hash
//       Access: Published
//  Description: Adds the NodePath into the running hash.  This is
//               intended to be used by lower-level code that computes
//               a hash for each NodePath.  It modifies the hash value
//               passed in by a unique adjustment for each NodePath,
//               and returns the modified hash.
//
//               This is similar to the unique integer returned by
//               get_key(), but it is not guaranteed to remain unique
//               beyond the lifetime of this particular NodePath.
//               Once this NodePath destructs, a different NodePath
//               may be created which shares the same hash value.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 hash 1 3972  
484 14 Dtool_w0Cqanz3 0 6 410 3970 0 14 Dtool_w0Cqanz3 526 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_same_graph
//       Access: Published
//  Description: Returns true if the node represented by this NodePath
//               is parented within the same graph as that of the
//               other NodePath.  This is essentially the same thing
//               as asking whether get_top() of both NodePaths is the
//               same (e.g., both "render").
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  14 current_thread 1 4032  
485 14 Dtool_w0CqRlGb 0 6 410 3970 0 14 Dtool_w0CqRlGb 526 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_same_graph
//       Access: Published
//  Description: Returns true if the node represented by this NodePath
//               is parented within the same graph as that of the
//               other NodePath.  This is essentially the same thing
//               as asking whether get_top() of both NodePaths is the
//               same (e.g., both "render").
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
486 14 Dtool_w0CqY3g7 0 6 411 3970 0 14 Dtool_w0CqY3g7 387 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_ancestor_of
//       Access: Published
//  Description: Returns true if the node represented by this NodePath
//               is a parent or other ancestor of the other NodePath,
//               or false if it is not.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  14 current_thread 1 4032  
487 14 Dtool_w0CqFCVk 0 6 411 3970 0 14 Dtool_w0CqFCVk 387 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_ancestor_of
//       Access: Published
//  Description: Returns true if the node represented by this NodePath
//               is a parent or other ancestor of the other NodePath,
//               or false if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
488 14 Dtool_w0CqT79O 0 7 412 4055 2948 14 Dtool_w0CqT79O 468 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_common_ancestor
//       Access: Published
//  Description: Returns the lowest NodePath that both of these two
//               NodePaths have in common: the first ancestor that
//               both of them share.  If the two NodePaths are
//               unrelated, returns NodePath::not_found().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  14 current_thread 1 4032  
489 14 Dtool_w0CqiMjg 0 7 412 4055 2948 14 Dtool_w0CqiMjg 468 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_common_ancestor
//       Access: Published
//  Description: Returns the lowest NodePath that both of these two
//               NodePaths have in common: the first ancestor that
//               both of them share.  If the two NodePaths are
//               unrelated, returns NodePath::not_found().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
490 14 Dtool_w0Cqbz5q 0 7 413 4058 3515 14 Dtool_w0Cqbz5q 297 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_children
//       Access: Published
//  Description: Returns the set of all child nodes of the referenced
//               node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
491 14 Dtool_w0Cqgb8V 0 7 413 4058 3515 14 Dtool_w0Cqgb8V 297 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_children
//       Access: Published
//  Description: Returns the set of all child nodes of the referenced
//               node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
492 14 Dtool_w0CqjAV2 0 6 414 3971 0 14 Dtool_w0CqjAV2 280 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_num_children
//       Access: Published
//  Description: Returns the number of children of the referenced node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
493 14 Dtool_w0CqSTCh 0 6 414 3971 0 14 Dtool_w0CqSTCh 280 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_num_children
//       Access: Published
//  Description: Returns the number of children of the referenced node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
494 14 Dtool_w0CqxKe9 0 7 415 4055 2948 14 Dtool_w0CqxKe9 305 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_child
//       Access: Published
//  Description: Returns a NodePath representing the nth child of the
//               referenced node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  1 n 1 3971  14 current_thread 1 4032  
495 14 Dtool_w0CqaFtX 0 7 415 4055 2948 14 Dtool_w0CqaFtX 305 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_child
//       Access: Published
//  Description: Returns a NodePath representing the nth child of the
//               referenced node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  1 n 1 3971  
496 14 Dtool_w0CqOQxT 0 7 416 4058 3515 14 Dtool_w0CqOQxT 474 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_stashed_children
//       Access: Published
//  Description: Returns the set of all child nodes of the referenced
//               node that have been stashed.  These children are not
//               normally visible on the node, and do not appear in
//               the list returned by get_children().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
497 14 Dtool_w0CqwedS 0 7 416 4058 3515 14 Dtool_w0CqwedS 474 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_stashed_children
//       Access: Published
//  Description: Returns the set of all child nodes of the referenced
//               node that have been stashed.  These children are not
//               normally visible on the node, and do not appear in
//               the list returned by get_children().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
498 14 Dtool_w0CqGzBj 0 6 417 3971 0 14 Dtool_w0CqGzBj 283 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::count_num_descendants
//       Access: Published
//  Description: Returns the number of nodes at and below this level.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
499 14 Dtool_w0CqkmIB 0 6 418 3970 0 14 Dtool_w0CqkmIB 339 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_parent
//       Access: Published
//  Description: Returns true if the referenced node has a parent;
//               i.e. the NodePath chain contains at least two nodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
500 14 Dtool_w0Cqhc1w 0 6 418 3970 0 14 Dtool_w0Cqhc1w 339 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_parent
//       Access: Published
//  Description: Returns true if the referenced node has a parent;
//               i.e. the NodePath chain contains at least two nodes.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
501 14 Dtool_w0CqBn7Y 0 7 419 4055 2948 14 Dtool_w0CqBn7Y 448 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_parent
//       Access: Published
//  Description: Returns the NodePath to the parent of the referenced
//               node: that is, this NodePath, shortened by one node.
//               The parent of a singleton NodePath is defined to be
//               the empty NodePath.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
502 14 Dtool_w0CqDcoI 0 7 419 4055 2948 14 Dtool_w0CqDcoI 448 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_parent
//       Access: Published
//  Description: Returns the NodePath to the parent of the referenced
//               node: that is, this NodePath, shortened by one node.
//               The parent of a singleton NodePath is defined to be
//               the empty NodePath.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
503 14 Dtool_w0CqHJFY 0 6 420 3971 0 14 Dtool_w0CqHJFY 513 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sort
//       Access: Published
//  Description: Returns the sort value of the referenced node within
//               its parent; that is, the sort number passed on the
//               last reparenting operation for this node.  This will
//               control the position of the node within its parent's
//               list of children.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
504 14 Dtool_w0CqFeVI 0 6 420 3971 0 14 Dtool_w0CqFeVI 513 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sort
//       Access: Published
//  Description: Returns the sort value of the referenced node within
//               its parent; that is, the sort number passed on the
//               last reparenting operation for this node.  This will
//               control the position of the node within its parent's
//               list of children.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
505 14 Dtool_w0CqO9_b 0 7 421 4055 2948 14 Dtool_w0CqO9_b 435 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find
//       Access: Published
//  Description: Searches for a node below the referenced node that
//               matches the indicated string.  Returns the shortest
//               match found, if any, or an empty NodePath if no match
//               can be found.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 path 1 4028  
506 14 Dtool_w0CqQFrr 0 7 422 4055 2948 14 Dtool_w0CqQFrr 340 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_path_to
//       Access: Published
//  Description: Searches for the indicated node below this node and
//               returns the shortest NodePath that connects them.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 node 1 4029  
507 14 Dtool_w0CqupHP 0 7 423 4058 3515 14 Dtool_w0CqupHP 419 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_matches
//       Access: Published
//  Description: Returns the complete set of all NodePaths that begin
//               with this NodePath and can be extended by
//               path.  The shortest paths will be listed
//               first.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 path 1 4028  
508 14 Dtool_w0CqO6Sn 0 7 424 4058 3515 14 Dtool_w0CqO6Sn 394 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_paths_to
//       Access: Published
//  Description: Returns the set of all NodePaths that extend from
//               this NodePath down to the indicated node.  The
//               shortest paths will be listed first.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 node 1 4029  
509 14 Dtool_w0CqdxiE 0 4 425 3994 0 14 Dtool_w0CqdxiE 710 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::reparent_to
//       Access: Published
//  Description: Removes the referenced node of the NodePath from its
//               current parent and attaches it to the referenced node
//               of the indicated NodePath.  
//
//               If the destination NodePath is empty, this is the
//               same thing as detach_node().
//
//               If the referenced node is already a child of the
//               indicated NodePath (via some other instance), this
//               operation fails and leaves the NodePath detached.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  4 sort 1 3971  14 current_thread 1 4032  
510 14 Dtool_w0Cq4WHK 0 4 425 3994 0 14 Dtool_w0Cq4WHK 710 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::reparent_to
//       Access: Published
//  Description: Removes the referenced node of the NodePath from its
//               current parent and attaches it to the referenced node
//               of the indicated NodePath.  
//
//               If the destination NodePath is empty, this is the
//               same thing as detach_node().
//
//               If the referenced node is already a child of the
//               indicated NodePath (via some other instance), this
//               operation fails and leaves the NodePath detached.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  4 sort 1 3971  
511 14 Dtool_w0CqzsyP 0 4 425 3994 0 14 Dtool_w0CqzsyP 710 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::reparent_to
//       Access: Published
//  Description: Removes the referenced node of the NodePath from its
//               current parent and attaches it to the referenced node
//               of the indicated NodePath.  
//
//               If the destination NodePath is empty, this is the
//               same thing as detach_node().
//
//               If the referenced node is already a child of the
//               indicated NodePath (via some other instance), this
//               operation fails and leaves the NodePath detached.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 other 1 4056  
512 14 Dtool_w0CqUB2k 0 4 426 3994 0 14 Dtool_w0CqUB2k 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::stash_to
//       Access: Published
//  Description: Similar to reparent_to(), but the node is added to
//               its new parent's stashed list, so that the result is
//               equivalent to calling reparent_to() immediately
//               followed by stash().
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  4 sort 1 3971  14 current_thread 1 4032  
513 14 Dtool_w0Cqn8L1 0 4 426 3994 0 14 Dtool_w0Cqn8L1 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::stash_to
//       Access: Published
//  Description: Similar to reparent_to(), but the node is added to
//               its new parent's stashed list, so that the result is
//               equivalent to calling reparent_to() immediately
//               followed by stash().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  4 sort 1 3971  
514 14 Dtool_w0CqzzL_ 0 4 426 3994 0 14 Dtool_w0CqzzL_ 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::stash_to
//       Access: Published
//  Description: Similar to reparent_to(), but the node is added to
//               its new parent's stashed list, so that the result is
//               equivalent to calling reparent_to() immediately
//               followed by stash().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 other 1 4056  
515 14 Dtool_w0CqVNjc 0 4 427 3994 0 14 Dtool_w0CqVNjc 514 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::wrt_reparent_to
//       Access: Published
//  Description: This functions identically to reparent_to(), except
//               the transform on this node is also adjusted so that
//               the node remains in the same place in world
//               coordinates, even if it is reparented into a
//               different coordinate system.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  4 sort 1 3971  14 current_thread 1 4032  
516 14 Dtool_w0Cqln7s 0 4 427 3994 0 14 Dtool_w0Cqln7s 514 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::wrt_reparent_to
//       Access: Published
//  Description: This functions identically to reparent_to(), except
//               the transform on this node is also adjusted so that
//               the node remains in the same place in world
//               coordinates, even if it is reparented into a
//               different coordinate system.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  4 sort 1 3971  
517 14 Dtool_w0CqwFTN 0 4 427 3994 0 14 Dtool_w0CqwFTN 514 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::wrt_reparent_to
//       Access: Published
//  Description: This functions identically to reparent_to(), except
//               the transform on this node is also adjusted so that
//               the node remains in the same place in world
//               coordinates, even if it is reparented into a
//               different coordinate system.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 other 1 4056  
518 14 Dtool_w0CqCtbj 0 7 428 4055 2948 14 Dtool_w0CqCtbj 1455 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::instance_to
//       Access: Published
//  Description: Adds the referenced node of the NodePath as a child
//               of the referenced node of the indicated other
//               NodePath.  Any other parent-child relations of the
//               node are unchanged; in particular, the node is not
//               removed from its existing parent, if any.
//
//               If the node already had an existing parent, this
//               method will create a new instance of the node within
//               the scene graph.
//
//               This does not change the NodePath itself, but does
//               return a new NodePath that reflects the new instance
//               node.
//
//               If the destination NodePath is empty, this creates a
//               new instance which is not yet parented to any node.
//               A new instance of this sort cannot easily be
//               differentiated from other similar instances, but it
//               is nevertheless a different instance and it will
//               return a different get_id() value.
//
//               If the referenced node is already a child of the
//               indicated NodePath, returns that already-existing
//               instance, unstashing it first if necessary.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4056  5 other 1 4056  4 sort 1 3971  14 current_thread 1 4032  
519 14 Dtool_w0Cq2Mo6 0 7 428 4055 2948 14 Dtool_w0Cq2Mo6 1455 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::instance_to
//       Access: Published
//  Description: Adds the referenced node of the NodePath as a child
//               of the referenced node of the indicated other
//               NodePath.  Any other parent-child relations of the
//               node are unchanged; in particular, the node is not
//               removed from its existing parent, if any.
//
//               If the node already had an existing parent, this
//               method will create a new instance of the node within
//               the scene graph.
//
//               This does not change the NodePath itself, but does
//               return a new NodePath that reflects the new instance
//               node.
//
//               If the destination NodePath is empty, this creates a
//               new instance which is not yet parented to any node.
//               A new instance of this sort cannot easily be
//               differentiated from other similar instances, but it
//               is nevertheless a different instance and it will
//               return a different get_id() value.
//
//               If the referenced node is already a child of the
//               indicated NodePath, returns that already-existing
//               instance, unstashing it first if necessary.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  4 sort 1 3971  
520 14 Dtool_w0CqTlPD 0 7 428 4055 2948 14 Dtool_w0CqTlPD 1455 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::instance_to
//       Access: Published
//  Description: Adds the referenced node of the NodePath as a child
//               of the referenced node of the indicated other
//               NodePath.  Any other parent-child relations of the
//               node are unchanged; in particular, the node is not
//               removed from its existing parent, if any.
//
//               If the node already had an existing parent, this
//               method will create a new instance of the node within
//               the scene graph.
//
//               This does not change the NodePath itself, but does
//               return a new NodePath that reflects the new instance
//               node.
//
//               If the destination NodePath is empty, this creates a
//               new instance which is not yet parented to any node.
//               A new instance of this sort cannot easily be
//               differentiated from other similar instances, but it
//               is nevertheless a different instance and it will
//               return a different get_id() value.
//
//               If the referenced node is already a child of the
//               indicated NodePath, returns that already-existing
//               instance, unstashing it first if necessary.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
521 14 Dtool_w0Cq8RrM 0 7 429 4055 2948 14 Dtool_w0Cq8RrM 516 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::instance_under_node
//       Access: Published
//  Description: Behaves like instance_to(), but implicitly creates a
//               new node to instance the geometry under, and returns a
//               NodePath to that new node.  This allows the
//               programmer to set a unique state and/or transform on
//               this instance.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4056  5 other 1 4056  4 name 1 4028  4 sort 1 3971  14 current_thread 1 4032  
522 14 Dtool_w0CqHSFZ 0 7 429 4055 2948 14 Dtool_w0CqHSFZ 516 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::instance_under_node
//       Access: Published
//  Description: Behaves like instance_to(), but implicitly creates a
//               new node to instance the geometry under, and returns a
//               NodePath to that new node.  This allows the
//               programmer to set a unique state and/or transform on
//               this instance.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4056  5 other 1 4056  4 name 1 4028  4 sort 1 3971  
523 14 Dtool_w0Cqfsm_ 0 7 429 4055 2948 14 Dtool_w0Cqfsm_ 516 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::instance_under_node
//       Access: Published
//  Description: Behaves like instance_to(), but implicitly creates a
//               new node to instance the geometry under, and returns a
//               NodePath to that new node.  This allows the
//               programmer to set a unique state and/or transform on
//               this instance.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  4 name 1 4028  
524 14 Dtool_w0Cqtacp 0 7 430 4055 2948 14 Dtool_w0Cqtacp 489 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::copy_to
//       Access: Published
//  Description: Functions like instance_to(), except a deep
//               copy is made of the referenced node and all of its
//               descendents, which is then parented to the indicated
//               node.  A NodePath to the newly created copy is
//               returned.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4056  5 other 1 4056  4 sort 1 3971  14 current_thread 1 4032  
525 14 Dtool_w0CqxTlc 0 7 430 4055 2948 14 Dtool_w0CqxTlc 489 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::copy_to
//       Access: Published
//  Description: Functions like instance_to(), except a deep
//               copy is made of the referenced node and all of its
//               descendents, which is then parented to the indicated
//               node.  A NodePath to the newly created copy is
//               returned.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  4 sort 1 3971  
526 14 Dtool_w0CqtI_l 0 7 430 4055 2948 14 Dtool_w0CqtI_l 489 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::copy_to
//       Access: Published
//  Description: Functions like instance_to(), except a deep
//               copy is made of the referenced node and all of its
//               descendents, which is then parented to the indicated
//               node.  A NodePath to the newly created copy is
//               returned.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
527 14 Dtool_w0Cq6KoR 0 7 431 4055 2948 14 Dtool_w0Cq6KoR 800 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::attach_new_node
//       Access: Published
//  Description: Attaches a new node, with or without existing
//               parents, to the scene graph below the referenced node
//               of this NodePath.  This is the preferred way to add
//               nodes to the graph.
//
//               If the node was already a child of the parent, this
//               returns a NodePath to the existing child.
//
//               This does *not* automatically extend the current
//               NodePath to reflect the attachment; however, a
//               NodePath that does reflect this extension is
//               returned.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4056  4 node 1 4029  4 sort 1 3971  14 current_thread 1 4032  
528 14 Dtool_w0CqnUwe 0 7 431 4055 2948 14 Dtool_w0CqnUwe 800 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::attach_new_node
//       Access: Published
//  Description: Attaches a new node, with or without existing
//               parents, to the scene graph below the referenced node
//               of this NodePath.  This is the preferred way to add
//               nodes to the graph.
//
//               If the node was already a child of the parent, this
//               returns a NodePath to the existing child.
//
//               This does *not* automatically extend the current
//               NodePath to reflect the attachment; however, a
//               NodePath that does reflect this extension is
//               returned.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  4 node 1 4029  4 sort 1 3971  
529 14 Dtool_w0Cq9EWP 0 7 431 4055 2948 14 Dtool_w0Cq9EWP 800 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::attach_new_node
//       Access: Published
//  Description: Attaches a new node, with or without existing
//               parents, to the scene graph below the referenced node
//               of this NodePath.  This is the preferred way to add
//               nodes to the graph.
//
//               If the node was already a child of the parent, this
//               returns a NodePath to the existing child.
//
//               This does *not* automatically extend the current
//               NodePath to reflect the attachment; however, a
//               NodePath that does reflect this extension is
//               returned.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 node 1 4029  
530 14 Dtool_w0CqhRzz 0 7 431 4055 2948 14 Dtool_w0CqhRzz 377 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::attach_new_node
//       Access: Published
//  Description: Creates an ordinary PandaNode and attaches it below
//               the current NodePath, returning a new NodePath that
//               references it.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4056  4 name 1 4028  4 sort 1 3971  14 current_thread 1 4032  
531 14 Dtool_w0Cqlodl 0 7 431 4055 2948 14 Dtool_w0Cqlodl 377 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::attach_new_node
//       Access: Published
//  Description: Creates an ordinary PandaNode and attaches it below
//               the current NodePath, returning a new NodePath that
//               references it.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  4 name 1 4028  4 sort 1 3971  
532 14 Dtool_w0Cq8rj7 0 7 431 4055 2948 14 Dtool_w0Cq8rj7 377 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::attach_new_node
//       Access: Published
//  Description: Creates an ordinary PandaNode and attaches it below
//               the current NodePath, returning a new NodePath that
//               references it.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4028  
533 14 Dtool_w0CqMmwt 0 4 432 3994 0 14 Dtool_w0CqMmwt 1171 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::remove_node
//       Access: Published
//  Description: Disconnects the referenced node from the scene graph.
//               This will also delete the node if there are no other
//               pointers to it.
//
//               Normally, this should be called only when you are
//               really done with the node.  If you want to remove a
//               node from the scene graph but keep it around for
//               later, you should probably use detach_node() instead.
//
//               In practice, the only difference between
//               remove_node() and detach_node() is that remove_node()
//               also resets the NodePath to empty, which will cause
//               the node to be deleted immediately if there are no
//               other references.  On the other hand, detach_node()
//               leaves the NodePath referencing the node, which will
//               keep at least one reference to the node for as long
//               as the NodePath exists.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  14 current_thread 1 4032  
534 14 Dtool_w0CqliuR 0 4 432 3994 0 14 Dtool_w0CqliuR 1171 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::remove_node
//       Access: Published
//  Description: Disconnects the referenced node from the scene graph.
//               This will also delete the node if there are no other
//               pointers to it.
//
//               Normally, this should be called only when you are
//               really done with the node.  If you want to remove a
//               node from the scene graph but keep it around for
//               later, you should probably use detach_node() instead.
//
//               In practice, the only difference between
//               remove_node() and detach_node() is that remove_node()
//               also resets the NodePath to empty, which will cause
//               the node to be deleted immediately if there are no
//               other references.  On the other hand, detach_node()
//               leaves the NodePath referencing the node, which will
//               keep at least one reference to the node for as long
//               as the NodePath exists.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
535 14 Dtool_w0CqrQzO 0 4 433 3994 0 14 Dtool_w0CqrQzO 1153 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::detach_node
//       Access: Published
//  Description: Disconnects the referenced node from its parent, but
//               does not immediately delete it.  The NodePath retains
//               a pointer to the node, and becomes a singleton
//               NodePath.
//
//               This should be called to detach a node from the scene
//               graph, with the option of reattaching it later to the
//               same parent or to a different parent.
//
//               In practice, the only difference between
//               remove_node() and detach_node() is that remove_node()
//               also resets the NodePath to empty, which will cause
//               the node to be deleted immediately if there are no
//               other references.  On the other hand, detach_node()
//               leaves the NodePath referencing the node, which will
//               keep at least one reference to the node for as long
//               as the NodePath exists.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  14 current_thread 1 4032  
536 14 Dtool_w0Cqgfzy 0 4 433 3994 0 14 Dtool_w0Cqgfzy 1153 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::detach_node
//       Access: Published
//  Description: Disconnects the referenced node from its parent, but
//               does not immediately delete it.  The NodePath retains
//               a pointer to the node, and becomes a singleton
//               NodePath.
//
//               This should be called to detach a node from the scene
//               graph, with the option of reattaching it later to the
//               same parent or to a different parent.
//
//               In practice, the only difference between
//               remove_node() and detach_node() is that remove_node()
//               also resets the NodePath to empty, which will cause
//               the node to be deleted immediately if there are no
//               other references.  On the other hand, detach_node()
//               leaves the NodePath referencing the node, which will
//               keep at least one reference to the node for as long
//               as the NodePath exists.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
537 14 Dtool_w0CqoCbM 0 4 434 3994 0 14 Dtool_w0CqoCbM 310 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::output
//       Access: Published
//  Description: Writes a sensible description of the NodePath to the
//               indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 out 1 3997  
538 14 Dtool_w0CqvoLL 0 4 435 3994 0 14 Dtool_w0CqvoLL 265 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::ls
//       Access: Published
//  Description: Lists the hierarchy at and below the referenced node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
539 14 Dtool_w0Cq1zyE 0 4 435 3994 0 14 Dtool_w0Cq1zyE 265 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::ls
//       Access: Published
//  Description: Lists the hierarchy at and below the referenced node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  3 out 1 3997  12 indent_level 1 3971  
540 14 Dtool_w0Cqu02a 0 4 435 3994 0 14 Dtool_w0Cqu02a 265 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::ls
//       Access: Published
//  Description: Lists the hierarchy at and below the referenced node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 out 1 3997  
541 14 Dtool_w0Cqh7pG 0 4 436 3994 0 14 Dtool_w0Cqh7pG 273 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::reverse_ls
//       Access: Published
//  Description: Lists the hierarchy at and above the referenced node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
542 14 Dtool_w0CqtiSZ 0 6 436 3971 0 14 Dtool_w0CqtiSZ 273 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::reverse_ls
//       Access: Published
//  Description: Lists the hierarchy at and above the referenced node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  3 out 1 3997  12 indent_level 1 3971  
543 14 Dtool_w0Cq4b6h 0 6 436 3971 0 14 Dtool_w0Cq4b6h 273 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::reverse_ls
//       Access: Published
//  Description: Lists the hierarchy at and above the referenced node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 out 1 3997  
544 14 Dtool_w0Cq8qvj 0 7 437 4008 0 14 Dtool_w0Cq8qvj 384 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_state
//       Access: Published
//  Description: Returns the state changes that must be made to
//               transition to the render state of this node from the
//               render state of the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  14 current_thread 1 4032  
545 14 Dtool_w0Cqu5LY 0 7 437 4008 0 14 Dtool_w0Cqu5LY 384 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_state
//       Access: Published
//  Description: Returns the state changes that must be made to
//               transition to the render state of this node from the
//               render state of the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
546 14 Dtool_w0CqNmZv 0 7 437 4008 0 14 Dtool_w0CqNmZv 270 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_state
//       Access: Published
//  Description: Returns the complete state object set on this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
547 14 Dtool_w0CqMd52 0 7 437 4008 0 14 Dtool_w0CqMd52 270 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_state
//       Access: Published
//  Description: Returns the complete state object set on this node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
548 14 Dtool_w0CqIp0D 0 4 438 3994 0 14 Dtool_w0CqIp0D 433 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_state
//       Access: Published
//  Description: Sets the state object on this node, relative to
//               the other node.  This computes a new state object
//               that will have the indicated value when seen from the
//               other node.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 state 1 4008  14 current_thread 1 4032  
549 14 Dtool_w0CqojNF 0 4 438 3994 0 14 Dtool_w0CqojNF 433 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_state
//       Access: Published
//  Description: Sets the state object on this node, relative to
//               the other node.  This computes a new state object
//               that will have the indicated value when seen from the
//               other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  5 state 1 4008  
550 14 Dtool_w0CqDhE4 0 4 438 3994 0 14 Dtool_w0CqDhE4 266 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_state
//       Access: Published
//  Description: Changes the complete state object on this node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 state 1 4008  14 current_thread 1 4032  
551 14 Dtool_w0CqYTbI 0 4 438 3994 0 14 Dtool_w0CqYTbI 266 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_state
//       Access: Published
//  Description: Changes the complete state object on this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 state 1 4008  
552 14 Dtool_w0CqT2Wy 0 7 439 4008 0 14 Dtool_w0CqT2Wy 272 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_state
//       Access: Published
//  Description: Returns the net state on this node from the root.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
553 14 Dtool_w0Cqxk0S 0 7 439 4008 0 14 Dtool_w0Cqxk0S 272 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_state
//       Access: Published
//  Description: Returns the net state on this node from the root.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
554 14 Dtool_w0Cq_hqK 0 4 440 3994 0 14 Dtool_w0Cq_hqK 474 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_attrib
//       Access: Published
//  Description: Adds the indicated render attribute to the scene
//               graph on this node.  This attribute will now apply to
//               this node and everything below.  If there was already
//               an attribute of the same type, it is replaced.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  6 attrib 1 4005  8 priority 1 3971  
555 14 Dtool_w0Cqsv7c 0 4 440 3994 0 14 Dtool_w0Cqsv7c 474 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_attrib
//       Access: Published
//  Description: Adds the indicated render attribute to the scene
//               graph on this node.  This attribute will now apply to
//               this node and everything below.  If there was already
//               an attribute of the same type, it is replaced.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  6 attrib 1 4005  
556 14 Dtool_w0CqEHFA 0 7 441 4005 0 14 Dtool_w0CqEHFA 537 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_attrib
//       Access: Published
//  Description: Returns the render attribute of the indicated type,
//               if it is defined on the node, or NULL if it is not.
//               This checks only what is set on this particular node
//               level, and has nothing to do with what render
//               attributes may be inherited from parent nodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 type 1 4000  
557 14 Dtool_w0Cq_GQo 0 6 442 3970 0 14 Dtool_w0Cq_GQo 367 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_attrib
//       Access: Published
//  Description: Returns true if there is a render attribute of the
//               indicated type defined on this node, or false if
//               there is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 type 1 4000  
558 14 Dtool_w0Cq9ZOD 0 4 443 3994 0 14 Dtool_w0Cq9ZOD 450 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_attrib
//       Access: Published
//  Description: Removes the render attribute of the given type from
//               this node.  This node, and the subgraph below, will
//               now inherit the indicated render attribute from the
//               nodes above this one.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 type 1 4000  
559 14 Dtool_w0CqDDCe 0 4 444 3994 0 14 Dtool_w0CqDDCe 385 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_effect
//       Access: Published
//  Description: Adds the indicated render effect to the scene
//               graph on this node.  If there was already an effect
//               of the same type, it is replaced.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  6 effect 1 4024  
560 14 Dtool_w0CqYm6g 0 7 445 4024 0 14 Dtool_w0CqYm6g 337 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_effect
//       Access: Published
//  Description: Returns the render effect of the indicated type,
//               if it is defined on the node, or NULL if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 type 1 4000  
561 14 Dtool_w0Cq_pJJ 0 6 446 3970 0 14 Dtool_w0Cq_pJJ 364 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_effect
//       Access: Published
//  Description: Returns true if there is a render effect of the
//               indicated type defined on this node, or false if
//               there is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 type 1 4000  
562 14 Dtool_w0CqEpe3 0 4 447 3994 0 14 Dtool_w0CqEpe3 298 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_effect
//       Access: Published
//  Description: Removes the render effect of the given type from
//               this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 type 1 4000  
563 14 Dtool_w0CqPD2Q 0 4 448 3994 0 14 Dtool_w0CqPD2Q 432 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_effects
//       Access: Published
//  Description: Sets the complete RenderEffects that will be applied
//               this node.  This completely replaces whatever has
//               been set on this node via repeated calls to
//               set_attrib().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  7 effects 1 4026  
564 14 Dtool_w0CquJzu 0 7 449 4026 0 14 Dtool_w0CquJzu 307 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_effects
//       Access: Published
//  Description: Returns the complete RenderEffects that will be
//               applied to this node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
565 14 Dtool_w0CqZ8BC 0 4 450 3994 0 14 Dtool_w0CqZ8BC 266 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_effects
//       Access: Published
//  Description: Resets this node to have no render effects.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
566 14 Dtool_w0Cqu8Qi 0 7 451 3968 0 14 Dtool_w0Cqu8Qi 387 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_transform
//       Access: Published
//  Description: Returns the relative transform to this node from the
//               other node; i.e. the transformation of this node
//               as seen from the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  14 current_thread 1 4032  
567 14 Dtool_w0Cq25iF 0 7 451 3968 0 14 Dtool_w0Cq25iF 387 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_transform
//       Access: Published
//  Description: Returns the relative transform to this node from the
//               other node; i.e. the transformation of this node
//               as seen from the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
568 14 Dtool_w0Cq_qAT 0 7 451 3968 0 14 Dtool_w0Cq_qAT 278 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_transform
//       Access: Published
//  Description: Returns the complete transform object set on this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
569 14 Dtool_w0CqbFez 0 7 451 3968 0 14 Dtool_w0CqbFez 278 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_transform
//       Access: Published
//  Description: Returns the complete transform object set on this node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
570 14 Dtool_w0Cq4KfH 0 4 452 3994 0 14 Dtool_w0Cq4KfH 413 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_transform
//       Access: Published
//  Description: Sets the transform object on this node to identity,
//               relative to the other node.  This effectively places
//               this node at the same position as the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  14 current_thread 1 4032  
571 14 Dtool_w0CqQssv 0 4 452 3994 0 14 Dtool_w0CqQssv 413 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_transform
//       Access: Published
//  Description: Sets the transform object on this node to identity,
//               relative to the other node.  This effectively places
//               this node at the same position as the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 other 1 4056  
572 14 Dtool_w0Cqw8h9 0 4 452 3994 0 14 Dtool_w0Cqw8h9 276 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_transform
//       Access: Published
//  Description: Sets the transform object on this node to identity.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  14 current_thread 1 4032  
573 14 Dtool_w0CqH5x7 0 4 452 3994 0 14 Dtool_w0CqH5x7 276 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_transform
//       Access: Published
//  Description: Sets the transform object on this node to identity.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
574 14 Dtool_w0CqV_k2 0 4 453 3994 0 14 Dtool_w0CqV_k2 445 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_transform
//       Access: Published
//  Description: Sets the transform object on this node, relative to
//               the other node.  This computes a new transform object
//               that will have the indicated value when seen from the
//               other node.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  9 transform 1 3968  14 current_thread 1 4032  
575 14 Dtool_w0CqOC4G 0 4 453 3994 0 14 Dtool_w0CqOC4G 445 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_transform
//       Access: Published
//  Description: Sets the transform object on this node, relative to
//               the other node.  This computes a new transform object
//               that will have the indicated value when seen from the
//               other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  9 transform 1 3968  
576 14 Dtool_w0CqCDwY 0 4 453 3994 0 14 Dtool_w0CqCDwY 274 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_transform
//       Access: Published
//  Description: Changes the complete transform object on this node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  9 transform 1 3968  14 current_thread 1 4032  
577 14 Dtool_w0CqOl1c 0 4 453 3994 0 14 Dtool_w0CqOl1c 274 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_transform
//       Access: Published
//  Description: Changes the complete transform object on this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  9 transform 1 3968  
578 14 Dtool_w0Cqkhio 0 7 454 3968 0 14 Dtool_w0Cqkhio 280 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_transform
//       Access: Published
//  Description: Returns the net transform on this node from the root.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
579 14 Dtool_w0CqdCm_ 0 7 454 3968 0 14 Dtool_w0CqdCm_ 280 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_transform
//       Access: Published
//  Description: Returns the net transform on this node from the root.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
580 14 Dtool_w0CqPA07 0 7 455 3968 0 14 Dtool_w0CqPA07 457 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_prev_transform
//       Access: Published
//  Description: Returns the relative "previous" transform to this
//               node from the other node; i.e. the position of this
//               node in the previous frame, as seen by the other node
//               in the previous frame.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  14 current_thread 1 4032  
581 14 Dtool_w0CqIeYC 0 7 455 3968 0 14 Dtool_w0CqIeYC 457 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_prev_transform
//       Access: Published
//  Description: Returns the relative "previous" transform to this
//               node from the other node; i.e. the position of this
//               node in the previous frame, as seen by the other node
//               in the previous frame.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
582 14 Dtool_w0CqUJSd 0 7 455 3968 0 14 Dtool_w0CqUJSd 364 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_prev_transform
//       Access: Published
//  Description: Returns the transform that has been set as this
//               node's "previous" position.  See
//               set_prev_transform().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
583 14 Dtool_w0CqaXOe 0 7 455 3968 0 14 Dtool_w0CqaXOe 364 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_prev_transform
//       Access: Published
//  Description: Returns the transform that has been set as this
//               node's "previous" position.  See
//               set_prev_transform().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
584 14 Dtool_w0Cqbxkj 0 4 456 3994 0 14 Dtool_w0Cqbxkj 461 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_prev_transform
//       Access: Published
//  Description: Sets the "previous" transform object on this node,
//               relative to the other node.  This computes a new
//               transform object that will have the indicated value
//               when seen from the other node.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  9 transform 1 3968  14 current_thread 1 4032  
585 14 Dtool_w0CqKELE 0 4 456 3994 0 14 Dtool_w0CqKELE 461 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_prev_transform
//       Access: Published
//  Description: Sets the "previous" transform object on this node,
//               relative to the other node.  This computes a new
//               transform object that will have the indicated value
//               when seen from the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  9 transform 1 3968  
586 14 Dtool_w0CqTR3n 0 4 456 3994 0 14 Dtool_w0CqTR3n 435 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_prev_transform
//       Access: Published
//  Description: Sets the transform that represents this node's
//               "previous" position, one frame ago, for the purposes
//               of detecting motion for accurate collision
//               calculations.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  9 transform 1 3968  14 current_thread 1 4032  
587 14 Dtool_w0CqgmBw 0 4 456 3994 0 14 Dtool_w0CqgmBw 435 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_prev_transform
//       Access: Published
//  Description: Sets the transform that represents this node's
//               "previous" position, one frame ago, for the purposes
//               of detecting motion for accurate collision
//               calculations.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  9 transform 1 3968  
588 14 Dtool_w0CqU8Kx 0 7 457 3968 0 14 Dtool_w0CqU8Kx 340 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_prev_transform
//       Access: Published
//  Description: Returns the net "previous" transform on this node
//               from the root.  See set_prev_transform().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
589 14 Dtool_w0Cqq_Pd 0 7 457 3968 0 14 Dtool_w0Cqq_Pd 340 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_prev_transform
//       Access: Published
//  Description: Returns the net "previous" transform on this node
//               from the root.  See set_prev_transform().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
590 14 Dtool_w0CqtVV9 0 4 458 3994 0 14 Dtool_w0CqtVV9 614 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               leaving rotation and scale untouched.  This also
//               resets the node's "previous" position, so that the
//               collision system will see the node as having suddenly
//               appeared in the new position, without passing any
//               points in between.
//     See Also: NodePath::set_fluid_pos
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 pos 1 3973  
591 14 Dtool_w0Cqwgot 0 4 458 3994 0 14 Dtool_w0Cqwgot 310 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  3 pos 1 3973  
592 14 Dtool_w0Cq0iUk 0 4 458 3994 0 14 Dtool_w0Cq0iUk 310 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  1 x 1 3979  1 y 1 3979  1 z 1 3979  
593 14 Dtool_w0Cqc4_K 0 4 458 3994 0 14 Dtool_w0Cqc4_K 573 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               leaving rotation and scale untouched.  This also
//               resets the node's "previous" position, so that the
//               collision system will see the node as having suddenly
//               appeared in the new position, without passing any
//               points in between.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  1 x 1 3979  1 y 1 3979  1 z 1 3979  
594 14 Dtool_w0CqQez_ 0 4 459 3994 0 14 Dtool_w0CqQez_ 0 3 4 this 3 4055  5 other 1 4056  1 x 1 3979  
595 14 Dtool_w0CqdaZh 0 4 459 3994 0 14 Dtool_w0CqdaZh 0 2 4 this 3 4055  1 x 1 3979  
596 14 Dtool_w0CqyKzv 0 4 460 3994 0 14 Dtool_w0CqyKzv 0 3 4 this 3 4055  5 other 1 4056  1 y 1 3979  
597 14 Dtool_w0Cq2gZR 0 4 460 3994 0 14 Dtool_w0Cq2gZR 0 2 4 this 3 4055  1 y 1 3979  
598 14 Dtool_w0CqU5zf 0 4 461 3994 0 14 Dtool_w0CqU5zf 0 3 4 this 3 4055  5 other 1 4056  1 z 1 3979  
599 14 Dtool_w0CqYzZB 0 4 461 3994 0 14 Dtool_w0CqYzZB 0 2 4 this 3 4055  1 z 1 3979  
600 14 Dtool_w0CqiI31 0 4 462 3994 0 14 Dtool_w0CqiI31 495 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fluid_pos
//       Access: Published
//  Description: Sets the translation component, without changing the
//               "previous" position, so that the collision system
//               will see the node as moving fluidly from its previous
//               position to its new position.
//     See Also: NodePath::set_pos
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 pos 1 3973  
601 14 Dtool_w0CqQamK 0 4 462 3994 0 14 Dtool_w0CqQamK 316 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fluid_pos
//       Access: Published
//  Description: Sets the translation component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  3 pos 1 3973  
602 14 Dtool_w0Cqjpk5 0 4 462 3994 0 14 Dtool_w0Cqjpk5 460 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fluid_pos
//       Access: Published
//  Description: Sets the translation component, without changing the
//               "previous" position, so that the collision system
//               will see the node as moving fluidly from its previous
//               position to its new position.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  1 x 1 3979  1 y 1 3979  1 z 1 3979  
603 14 Dtool_w0CqDckh 0 4 462 3994 0 14 Dtool_w0CqDckh 460 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fluid_pos
//       Access: Published
//  Description: Sets the translation component, without changing the
//               "previous" position, so that the collision system
//               will see the node as moving fluidly from its previous
//               position to its new position.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  1 x 1 3979  1 y 1 3979  1 z 1 3979  
604 14 Dtool_w0CqmNMV 0 4 463 3994 0 14 Dtool_w0CqmNMV 0 3 4 this 3 4055  5 other 1 4056  1 x 1 3979  
605 14 Dtool_w0CqFku5 0 4 463 3994 0 14 Dtool_w0CqFku5 0 2 4 this 3 4055  1 x 1 3979  
606 14 Dtool_w0CqWvfV 0 4 464 3994 0 14 Dtool_w0CqWvfV 0 3 4 this 3 4055  5 other 1 4056  1 y 1 3979  
607 14 Dtool_w0CqVKB6 0 4 464 3994 0 14 Dtool_w0CqVKB6 0 2 4 this 3 4055  1 y 1 3979  
608 14 Dtool_w0CqGBzV 0 4 465 3994 0 14 Dtool_w0CqGBzV 0 3 4 this 3 4055  5 other 1 4056  1 z 1 3979  
609 14 Dtool_w0CqlrV6 0 4 465 3994 0 14 Dtool_w0CqlrV6 0 2 4 this 3 4055  1 z 1 3979  
610 14 Dtool_w0CqOo4T 0 7 466 4059 0 14 Dtool_w0CqOo4T 270 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_pos
//       Access: Published
//  Description: Retrieves the translation component of the transform.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
611 14 Dtool_w0CqCfLu 0 7 466 4059 0 14 Dtool_w0CqCfLu 315 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_pos
//       Access: Published
//  Description: Returns the relative position of the referenced node
//               as seen from the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
612 14 Dtool_w0Cq0lol 0 6 467 3979 0 14 Dtool_w0Cq0lol 0 1 4 this 3 4056  
613 14 Dtool_w0CqsQU6 0 6 467 3979 0 14 Dtool_w0CqsQU6 0 2 4 this 3 4056  5 other 1 4056  
614 14 Dtool_w0CqaSpV 0 6 468 3979 0 14 Dtool_w0CqaSpV 0 1 4 this 3 4056  
615 14 Dtool_w0CqKEUq 0 6 468 3979 0 14 Dtool_w0CqKEUq 0 2 4 this 3 4056  5 other 1 4056  
616 14 Dtool_w0CqxcoF 0 6 469 3979 0 14 Dtool_w0CqxcoF 0 1 4 this 3 4056  
617 14 Dtool_w0Cqo5Ua 0 6 469 3979 0 14 Dtool_w0Cqo5Ua 0 2 4 this 3 4056  5 other 1 4056  
618 14 Dtool_w0CqdM8H 0 7 470 4061 0 14 Dtool_w0CqdM8H 816 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_pos_delta
//       Access: Published
//  Description: Returns the delta vector from this node's position in
//               the previous frame (according to
//               set_prev_transform(), typically set via the use of
//               set_fluid_pos()) and its position in the current
//               frame.  This is the vector used to determine
//               collisions.  Generally, if the node was last
//               repositioned via set_pos(), the delta will be zero;
//               if it was adjusted via set_fluid_pos(), the delta
//               will represent the change from the previous frame's
//               position.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
619 14 Dtool_w0CqjYBa 0 7 470 4061 0 14 Dtool_w0CqjYBa 883 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_pos_delta
//       Access: Published
//  Description: Returns the delta vector from this node's position in
//               the previous frame (according to
//               set_prev_transform(), typically set via the use of
//               set_fluid_pos()) and its position in the current
//               frame, as seen in the indicated node's coordinate
//               space.  This is the vector used to determine
//               collisions.  Generally, if the node was last
//               repositioned via set_pos(), the delta will be zero;
//               if it was adjusted via set_fluid_pos(), the delta
//               will represent the change from the previous frame's
//               position.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
620 14 Dtool_w0CqHdk4 0 4 471 3994 0 14 Dtool_w0CqHdk4 320 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               leaving translation and scale untouched.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 hpr 1 3973  
621 14 Dtool_w0CqOo3o 0 4 471 3994 0 14 Dtool_w0CqOo3o 307 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  3 hpr 1 3973  
622 14 Dtool_w0Cqablf 0 4 471 3994 0 14 Dtool_w0Cqablf 307 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  1 h 1 3979  1 p 1 3979  1 r 1 3979  
623 14 Dtool_w0CqGhOG 0 4 471 3994 0 14 Dtool_w0CqGhOG 320 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               leaving translation and scale untouched.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  1 h 1 3979  1 p 1 3979  1 r 1 3979  
624 14 Dtool_w0Cq0Wu_ 0 4 472 3994 0 14 Dtool_w0Cq0Wu_ 0 3 4 this 3 4055  5 other 1 4056  1 h 1 3979  
625 14 Dtool_w0Cq5SUh 0 4 472 3994 0 14 Dtool_w0Cq5SUh 0 2 4 this 3 4055  1 h 1 3979  
626 14 Dtool_w0CqCyw_ 0 4 473 3994 0 14 Dtool_w0CqCyw_ 0 3 4 this 3 4055  5 other 1 4056  1 p 1 3979  
627 14 Dtool_w0Cqv_Xh 0 4 473 3994 0 14 Dtool_w0Cqv_Xh 0 2 4 this 3 4055  1 p 1 3979  
628 14 Dtool_w0CqGVwf 0 4 474 3994 0 14 Dtool_w0CqGVwf 0 3 4 this 3 4055  5 other 1 4056  1 r 1 3979  
629 14 Dtool_w0CqqXXB 0 4 474 3994 0 14 Dtool_w0CqqXXB 0 2 4 this 3 4055  1 r 1 3979  
630 14 Dtool_w0CqkhJP 0 7 475 4062 0 14 Dtool_w0CqkhJP 267 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_hpr
//       Access: Published
//  Description: Retrieves the rotation component of the transform.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
631 14 Dtool_w0CqYUap 0 7 475 4062 0 14 Dtool_w0CqYUap 314 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_hpr
//       Access: Published
//  Description: Returns the relative orientation of the bottom node
//               as seen from the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
632 14 Dtool_w0CqQtjl 0 6 476 3979 0 14 Dtool_w0CqQtjl 0 1 4 this 3 4056  
633 14 Dtool_w0CqAZP6 0 6 476 3979 0 14 Dtool_w0CqAZP6 0 2 4 this 3 4056  5 other 1 4056  
634 14 Dtool_w0CqCJll 0 6 477 3979 0 14 Dtool_w0CqCJll 0 1 4 this 3 4056  
635 14 Dtool_w0CqS1R6 0 6 477 3979 0 14 Dtool_w0CqS1R6 0 2 4 this 3 4056  5 other 1 4056  
636 14 Dtool_w0CqHwlF 0 6 478 3979 0 14 Dtool_w0CqHwlF 0 1 4 this 3 4056  
637 14 Dtool_w0CqWcRa 0 6 478 3979 0 14 Dtool_w0CqWcRa 0 2 4 this 3 4056  5 other 1 4056  
638 14 Dtool_w0CqwJgI 0 4 479 3994 0 14 Dtool_w0CqwJgI 321 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_quat
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               leaving translation and scale untouched.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 quat 1 3976  
639 14 Dtool_w0CqKI60 0 4 479 3994 0 14 Dtool_w0CqKI60 308 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_quat
//       Access: Published
//  Description: Sets the rotation component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  4 quat 1 3976  
640 14 Dtool_w0CqwDPW 0 7 480 4063 0 14 Dtool_w0CqwDPW 268 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_quat
//       Access: Published
//  Description: Retrieves the rotation component of the transform.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
641 14 Dtool_w0CqCURf 0 7 480 4063 0 14 Dtool_w0CqCURf 315 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_quat
//       Access: Published
//  Description: Returns the relative orientation of the bottom node
//               as seen from the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
642 14 Dtool_w0CqZaRp 0 4 481 3994 0 14 Dtool_w0CqZaRp 322 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               leaving translation and rotation untouched.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 scale 1 3973  
643 14 Dtool_w0Cqpef1 0 4 481 3994 0 14 Dtool_w0Cqpef1 306 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  5 scale 1 3973  
644 14 Dtool_w0Cq_9Ct 0 4 481 3994 0 14 Dtool_w0Cq_9Ct 306 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  5 scale 1 3979  
645 14 Dtool_w0CqxK_k 0 4 481 3994 0 14 Dtool_w0CqxK_k 306 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  
646 14 Dtool_w0CqtTLn 0 4 481 3994 0 14 Dtool_w0CqtTLn 322 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scale
//       Access: Published
//  Description: Sets the scale component of the transform,
//               leaving translation and rotation untouched.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 scale 1 3979  
647 14 Dtool_w0CqNsGl 0 4 481 3994 0 14 Dtool_w0CqNsGl 0 4 4 this 3 4055  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  
648 14 Dtool_w0Cqoi3_ 0 4 482 3994 0 14 Dtool_w0Cqoi3_ 0 3 4 this 3 4055  5 other 1 4056  2 sx 1 3979  
649 14 Dtool_w0CqEtIx 0 4 482 3994 0 14 Dtool_w0CqEtIx 0 2 4 this 3 4055  2 sx 1 3979  
650 14 Dtool_w0CqgVB_ 0 4 483 3994 0 14 Dtool_w0CqgVB_ 0 3 4 this 3 4055  5 other 1 4056  2 sy 1 3979  
651 14 Dtool_w0CqcaRx 0 4 483 3994 0 14 Dtool_w0CqcaRx 0 2 4 this 3 4055  2 sy 1 3979  
652 14 Dtool_w0Cq4EL_ 0 4 484 3994 0 14 Dtool_w0Cq4EL_ 0 3 4 this 3 4055  5 other 1 4056  2 sz 1 3979  
653 14 Dtool_w0CqULbx 0 4 484 3994 0 14 Dtool_w0CqULbx 0 2 4 this 3 4055  2 sz 1 3979  
654 14 Dtool_w0Cq5djS 0 7 485 4062 0 14 Dtool_w0Cq5djS 266 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_scale
//       Access: Published
//  Description: Retrieves the scale component of the transform.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
655 14 Dtool_w0Cqam1z 0 7 485 4062 0 14 Dtool_w0Cqam1z 310 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_scale
//       Access: Published
//  Description: Returns the relative scale of the bottom node
//               as seen from the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
656 14 Dtool_w0Cqn63U 0 6 486 3979 0 14 Dtool_w0Cqn63U 0 1 4 this 3 4056  
657 14 Dtool_w0CqCXrr 0 6 486 3979 0 14 Dtool_w0CqCXrr 314 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_scale
//       Access: Published
//  Description: Returns the relative scale of the referenced node
//               as seen from the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
658 14 Dtool_w0CqvrBV 0 6 487 3979 0 14 Dtool_w0CqvrBV 0 1 4 this 3 4056  
659 14 Dtool_w0CqKE1r 0 6 487 3979 0 14 Dtool_w0CqKE1r 0 2 4 this 3 4056  5 other 1 4056  
660 14 Dtool_w0CqXULV 0 6 488 3979 0 14 Dtool_w0CqXULV 0 1 4 this 3 4056  
661 14 Dtool_w0CqS18r 0 6 488 3979 0 14 Dtool_w0CqS18r 0 2 4 this 3 4056  5 other 1 4056  
662 14 Dtool_w0CqsuKi 0 4 489 3994 0 14 Dtool_w0CqsuKi 322 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shear
//       Access: Published
//  Description: Sets the shear component of the transform,
//               leaving translation and rotation untouched.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 shear 1 3973  
663 14 Dtool_w0CqiMYu 0 4 489 3994 0 14 Dtool_w0CqiMYu 306 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shear
//       Access: Published
//  Description: Sets the shear component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  5 shear 1 3973  
664 14 Dtool_w0CqOe2d 0 4 489 3994 0 14 Dtool_w0CqOe2d 306 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shear
//       Access: Published
//  Description: Sets the shear component of the transform,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  4 shxy 1 3979  4 shxz 1 3979  4 shyz 1 3979  
665 14 Dtool_w0CqfHAe 0 4 489 3994 0 14 Dtool_w0CqfHAe 330 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shear
//       Access: Published
//  Description: Sets the shear component of the transform,
//               leaving translation, rotation, and scale untouched.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  4 shxy 1 3979  4 shxz 1 3979  4 shyz 1 3979  
666 14 Dtool_w0CqUJVV 0 4 490 3994 0 14 Dtool_w0CqUJVV 0 3 4 this 3 4055  5 other 1 4056  4 shxy 1 3979  
667 14 Dtool_w0Cq7PKV 0 4 490 3994 0 14 Dtool_w0Cq7PKV 0 2 4 this 3 4055  4 shxy 1 3979  
668 14 Dtool_w0CqaJjx 0 4 491 3994 0 14 Dtool_w0CqaJjx 0 3 4 this 3 4055  5 other 1 4056  4 shxz 1 3979  
669 14 Dtool_w0CqlPYx 0 4 491 3994 0 14 Dtool_w0CqlPYx 0 2 4 this 3 4055  4 shxz 1 3979  
670 14 Dtool_w0Cqatc2 0 4 492 3994 0 14 Dtool_w0Cqatc2 0 3 4 this 3 4055  5 other 1 4056  4 shyz 1 3979  
671 14 Dtool_w0CqlrR2 0 4 492 3994 0 14 Dtool_w0CqlrR2 0 2 4 this 3 4055  4 shyz 1 3979  
672 14 Dtool_w0CqyRcL 0 7 493 4062 0 14 Dtool_w0CqyRcL 266 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shear
//       Access: Published
//  Description: Retrieves the shear component of the transform.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
673 14 Dtool_w0CqXxss 0 7 493 4062 0 14 Dtool_w0CqXxss 310 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shear
//       Access: Published
//  Description: Returns the relative shear of the bottom node
//               as seen from the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
674 14 Dtool_w0Cq5jpx 0 6 494 3979 0 14 Dtool_w0Cq5jpx 0 1 4 this 3 4056  
675 14 Dtool_w0CqbLq6 0 6 494 3979 0 14 Dtool_w0CqbLq6 314 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shear
//       Access: Published
//  Description: Returns the relative shear of the referenced node
//               as seen from the other node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
676 14 Dtool_w0Cq8j3N 0 6 495 3979 0 14 Dtool_w0Cq8j3N 0 1 4 this 3 4056  
677 14 Dtool_w0CqWL4W 0 6 495 3979 0 14 Dtool_w0CqWL4W 0 2 4 this 3 4056  5 other 1 4056  
678 14 Dtool_w0Cq8PuS 0 6 496 3979 0 14 Dtool_w0Cq8PuS 0 1 4 this 3 4056  
679 14 Dtool_w0CqWXwb 0 6 496 3979 0 14 Dtool_w0CqWXwb 0 2 4 this 3 4056  5 other 1 4056  
680 14 Dtool_w0Cq_KIO 0 4 497 3994 0 14 Dtool_w0Cq_KIO 324 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, leaving scale untouched.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  3 pos 1 3973  3 hpr 1 3973  
681 14 Dtool_w0CqbgSC 0 4 497 3994 0 14 Dtool_w0CqbgSC 327 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, relative to the other node.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  3 pos 1 3973  3 hpr 1 3973  
682 14 Dtool_w0CqhbI1 0 4 497 3994 0 14 Dtool_w0CqhbI1 327 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, relative to the other node.
//////////////////////////////////////////////////////////////////// 8 4 this 3 4055  5 other 1 4056  1 x 1 3979  1 y 1 3979  1 z 1 3979  1 h 1 3979  1 p 1 3979  1 r 1 3979  
683 14 Dtool_w0CqFbxa 0 4 497 3994 0 14 Dtool_w0CqFbxa 324 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, leaving scale untouched.
//////////////////////////////////////////////////////////////////// 7 4 this 3 4055  1 x 1 3979  1 y 1 3979  1 z 1 3979  1 h 1 3979  1 p 1 3979  1 r 1 3979  
684 14 Dtool_w0CqPEZ1 0 4 498 3994 0 14 Dtool_w0CqPEZ1 325 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, leaving scale untouched.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  3 pos 1 3973  4 quat 1 3976  
685 14 Dtool_w0CqgdNI 0 4 498 3994 0 14 Dtool_w0CqgdNI 328 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat
//       Access: Published
//  Description: Sets the translation and rotation component of the
//               transform, relative to the other node.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  3 pos 1 3973  4 quat 1 3976  
686 14 Dtool_w0CqeWuA 0 4 499 3994 0 14 Dtool_w0CqeWuA 327 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  3 hpr 1 3973  5 scale 1 3973  
687 14 Dtool_w0CqTEr7 0 4 499 3994 0 14 Dtool_w0CqTEr7 476 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.  This, or
//               set_pos_hpr_scale, is the preferred way to update a
//               transform when both hpr and scale are to be changed.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  3 hpr 1 3973  5 scale 1 3973  
688 14 Dtool_w0Cq4kfC 0 4 499 3994 0 14 Dtool_w0Cq4kfC 476 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.  This, or
//               set_pos_hpr_scale, is the preferred way to update a
//               transform when both hpr and scale are to be changed.
//////////////////////////////////////////////////////////////////// 8 4 this 3 4055  5 other 1 4056  1 h 1 3979  1 p 1 3979  1 r 1 3979  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  
689 14 Dtool_w0CqWIYi 0 4 499 3994 0 14 Dtool_w0CqWIYi 327 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_hpr_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.
//////////////////////////////////////////////////////////////////// 7 4 this 3 4055  1 h 1 3979  1 p 1 3979  1 r 1 3979  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  
690 14 Dtool_w0CqxukU 0 4 500 3994 0 14 Dtool_w0CqxukU 328 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_quat_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  4 quat 1 3976  5 scale 1 3973  
691 14 Dtool_w0Cq9poi 0 4 500 3994 0 14 Dtool_w0Cq9poi 479 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_quat_scale
//       Access: Published
//  Description: Sets the rotation and scale components of the
//               transform, leaving translation untouched.  This, or
//               set_pos_quat_scale, is the preferred way to update a
//               transform when both quat and scale are to be changed.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  4 quat 1 3976  5 scale 1 3973  
692 14 Dtool_w0CqWLWQ 0 4 501 3994 0 14 Dtool_w0CqWLWQ 332 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale
//       Access: Published
//  Description: Replaces the translation, rotation, and scale
//               components, implicitly setting shear to 0.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  3 pos 1 3973  3 hpr 1 3973  5 scale 1 3973  
693 14 Dtool_w0Cq6XbK 0 4 501 3994 0 14 Dtool_w0Cq6XbK 407 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, and scale components, relative
//               to the other node, implicitly setting shear to 0.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  3 pos 1 3973  3 hpr 1 3973  5 scale 1 3973  
694 14 Dtool_w0CqVHTJ 0 4 501 3994 0 14 Dtool_w0CqVHTJ 376 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, and scale components, relative
//               to the other node.
//////////////////////////////////////////////////////////////////// 11 4 this 3 4055  5 other 1 4056  1 x 1 3979  1 y 1 3979  1 z 1 3979  1 h 1 3979  1 p 1 3979  1 r 1 3979  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  
695 14 Dtool_w0Cqh3Bw 0 4 501 3994 0 14 Dtool_w0Cqh3Bw 331 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, and scale components.
//////////////////////////////////////////////////////////////////// 10 4 this 3 4055  1 x 1 3979  1 y 1 3979  1 z 1 3979  1 h 1 3979  1 p 1 3979  1 r 1 3979  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  
696 14 Dtool_w0CqlcNQ 0 4 502 3994 0 14 Dtool_w0CqlcNQ 333 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat_scale
//       Access: Published
//  Description: Replaces the translation, rotation, and scale
//               components, implicitly setting shear to 0.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  3 pos 1 3973  4 quat 1 3976  5 scale 1 3973  
697 14 Dtool_w0CqAbZX 0 4 502 3994 0 14 Dtool_w0CqAbZX 408 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat_scale
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, and scale components, relative
//               to the other node, implicitly setting shear to 0.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  3 pos 1 3973  4 quat 1 3976  5 scale 1 3973  
698 14 Dtool_w0Cq9p1n 0 4 503 3994 0 14 Dtool_w0Cq9p1n 344 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale_shear
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, scale, and shear components.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  3 pos 1 3973  3 hpr 1 3973  5 scale 1 3973  5 shear 1 3973  
699 14 Dtool_w0CqyreF 0 4 503 3994 0 14 Dtool_w0CqyreF 389 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_hpr_scale_shear
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, scale, and shear components,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  5 other 1 4056  3 pos 1 3973  3 hpr 1 3973  5 scale 1 3973  5 shear 1 3973  
700 14 Dtool_w0CqFwaK 0 4 504 3994 0 14 Dtool_w0CqFwaK 345 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat_scale_shear
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, scale, and shear components.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  3 pos 1 3973  4 quat 1 3976  5 scale 1 3973  5 shear 1 3973  
701 14 Dtool_w0CqSPDh 0 4 504 3994 0 14 Dtool_w0CqSPDh 390 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_pos_quat_scale_shear
//       Access: Published
//  Description: Completely replaces the transform with new
//               translation, rotation, scale, and shear components,
//               relative to the other node.
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  5 other 1 4056  3 pos 1 3973  4 quat 1 3976  5 scale 1 3973  5 shear 1 3973  
702 14 Dtool_w0Cq6Rbe 0 4 505 3994 0 14 Dtool_w0Cq6Rbe 265 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_mat
//       Access: Published
//  Description: Directly sets an arbitrary 4x4 transform matrix.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 mat 1 3980  
703 14 Dtool_w0Cqe6vZ 0 4 505 3994 0 14 Dtool_w0Cqe6vZ 373 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_mat
//       Access: Published
//  Description: Converts the indicated matrix from the other's
//               coordinate space to the local coordinate space, and
//               applies it to the node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  3 mat 1 3980  
704 14 Dtool_w0CqZ8BU 0 4 506 3994 0 14 Dtool_w0CqZ8BU 294 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_mat
//       Access: Published
//  Description: Completely removes any transform from the referenced
//               node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
705 14 Dtool_w0CquM1u 0 6 507 3970 0 14 Dtool_w0CquM1u 339 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_mat
//       Access: Published
//  Description: Returns true if a non-identity transform matrix has
//               been applied to the referenced node, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
706 14 Dtool_w0CqIMoG 0 6 508 3980 0 14 Dtool_w0CqIMoG 379 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_mat
//       Access: Published
//  Description: Returns the transform matrix that has been applied to
//               the referenced node, or the identity matrix if no
//               matrix has been applied.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
707 14 Dtool_w0Cq_p5g 0 7 508 4064 0 14 Dtool_w0Cq_p5g 386 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_mat
//       Access: Published
//  Description: Returns the matrix that describes the coordinate
//               space of the bottom node, relative to the other
//               path's bottom node's coordinate space.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
708 14 Dtool_w0CqvdrT 0 4 509 3994 0 14 Dtool_w0CqvdrT 320 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the hpr on this NodePath so that it
//               rotates to face the indicated point in space.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 point 1 3989  2 up 1 4065  
709 14 Dtool_w0CqOO_M 0 4 509 3994 0 14 Dtool_w0CqOO_M 320 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the hpr on this NodePath so that it
//               rotates to face the indicated point in space.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 point 1 3989  
710 14 Dtool_w0CqCkNd 0 4 509 3994 0 14 Dtool_w0CqCkNd 384 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the transform on this NodePath so that it
//               rotates to face the indicated point in space, which
//               is relative to the other NodePath.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 point 1 3989  2 up 1 4065  
711 14 Dtool_w0CqsdPC 0 4 509 3994 0 14 Dtool_w0CqsdPC 384 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the transform on this NodePath so that it
//               rotates to face the indicated point in space, which
//               is relative to the other NodePath.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  5 point 1 3989  
712 14 Dtool_w0Cq62Ls 0 4 509 3994 0 14 Dtool_w0Cq62Ls 384 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the transform on this NodePath so that it
//               rotates to face the indicated point in space, which
//               is relative to the other NodePath.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 other 1 4056  
713 14 Dtool_w0CqooUy 0 4 509 3994 0 14 Dtool_w0CqooUy 378 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the hpr on this NodePath so that it rotates to
//               face the indicated point in space, which is relative
//               to the other NodePath.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  1 x 1 3979  1 y 1 3979  1 z 1 3979  
714 14 Dtool_w0CqTR_Y 0 4 509 3994 0 14 Dtool_w0CqTR_Y 467 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::look_at
//       Access: Published
//  Description: Sets the transform on this NodePath so that it
//               rotates to face the indicated point in space.  This
//               will overwrite any previously existing scale on the
//               node, although it will preserve any translation.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  1 x 1 3979  1 y 1 3979  1 z 1 3979  
715 14 Dtool_w0Cq45wG 0 4 510 3994 0 14 Dtool_w0Cq45wG 371 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 point 1 3989  2 up 1 4065  
716 14 Dtool_w0CqK5su 0 4 510 3994 0 14 Dtool_w0CqK5su 371 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 point 1 3989  
717 14 Dtool_w0Cq_0_3 0 4 510 3994 0 14 Dtool_w0Cq_0_3 371 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 point 1 3989  2 up 1 4065  
718 14 Dtool_w0Cq1SnX 0 4 510 3994 0 14 Dtool_w0Cq1SnX 371 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 other 1 4056  5 point 1 3989  
719 14 Dtool_w0CqwIWV 0 4 510 3994 0 14 Dtool_w0CqwIWV 371 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 other 1 4056  
720 14 Dtool_w0CqzOob 0 4 510 3994 0 14 Dtool_w0CqzOob 371 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  1 x 1 3979  1 y 1 3979  1 z 1 3979  
721 14 Dtool_w0CqdJov 0 4 510 3994 0 14 Dtool_w0CqdJov 371 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::heads_up
//       Access: Published
//  Description: Behaves like look_at(), but with a strong preference
//               to keeping the up vector oriented in the indicated
//               "up" direction.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  1 x 1 3979  1 y 1 3979  1 z 1 3979  
722 14 Dtool_w0CqOttf 0 7 511 4059 0 14 Dtool_w0CqOttf 396 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_relative_point
//       Access: Published
//  Description: Given that the indicated point is in the coordinate
//               system of the other node, returns the same point in
//               this node's coordinate system.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  5 point 1 3973  
723 14 Dtool_w0CqjeSO 0 7 512 4061 0 14 Dtool_w0CqjeSO 399 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_relative_vector
//       Access: Published
//  Description: Given that the indicated vector is in the coordinate
//               system of the other node, returns the same vector in
//               this node's coordinate system.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  3 vec 1 3973  
724 14 Dtool_w0Cqgctf 0 6 513 3979 0 14 Dtool_w0Cqgctf 385 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_distance
//       Access: Published
//  Description: Returns the straight-line distance between this
//               referenced node's coordinate frame's origin, and that
//               of the other node's origin.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
725 14 Dtool_w0Cqadvm 0 4 514 3994 0 14 Dtool_w0Cqadvm 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color
//       Access: Published
//  Description: Applies a scene-graph color to the referenced node.
//               This color will apply to all geometry at this level
//               and below (that does not specify a new color or a
//               set_color_off()).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 color 1 4067  8 priority 1 3971  
726 14 Dtool_w0CqV3Zs 0 4 514 3994 0 14 Dtool_w0CqV3Zs 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color
//       Access: Published
//  Description: Applies a scene-graph color to the referenced node.
//               This color will apply to all geometry at this level
//               and below (that does not specify a new color or a
//               set_color_off()).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 color 1 4067  
727 14 Dtool_w0Cq066r 0 4 514 3994 0 14 Dtool_w0Cq066r 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color
//       Access: Published
//  Description: Applies a scene-graph color to the referenced node.
//               This color will apply to all geometry at this level
//               and below (that does not specify a new color or a
//               set_color_off()).
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  1 r 1 3979  1 g 1 3979  1 b 1 3979  1 a 1 3979  8 priority 1 3971  
728 14 Dtool_w0CqxcaQ 0 4 514 3994 0 14 Dtool_w0CqxcaQ 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color
//       Access: Published
//  Description: Applies a scene-graph color to the referenced node.
//               This color will apply to all geometry at this level
//               and below (that does not specify a new color or a
//               set_color_off()).
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  1 r 1 3979  1 g 1 3979  1 b 1 3979  1 a 1 3979  
729 14 Dtool_w0CqQ4OM 0 4 514 3994 0 14 Dtool_w0CqQ4OM 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color
//       Access: Published
//  Description: Applies a scene-graph color to the referenced node.
//               This color will apply to all geometry at this level
//               and below (that does not specify a new color or a
//               set_color_off()).
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  1 r 1 3979  1 g 1 3979  1 b 1 3979  
730 14 Dtool_w0Cqw27z 0 4 515 3994 0 14 Dtool_w0Cqw27z 565 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using the geometry color.  This is normally the
//               default, but it may be useful to use this to
//               contradict set_color() at a higher node level (or,
//               with a priority, to override a set_color() at a lower
//               level).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
731 14 Dtool_w0CqE1gC 0 4 515 3994 0 14 Dtool_w0CqE1gC 565 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using the geometry color.  This is normally the
//               default, but it may be useful to use this to
//               contradict set_color() at a higher node level (or,
//               with a priority, to override a set_color() at a lower
//               level).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
732 14 Dtool_w0Cq1mr9 0 4 516 3994 0 14 Dtool_w0Cq1mr9 463 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_color
//       Access: Published
//  Description: Completely removes any color adjustment from the node.
//               This allows the natural color of the geometry, or
//               whatever color transitions might be otherwise
//               affecting the geometry, to show instead.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
733 14 Dtool_w0Cqbz4h 0 6 517 3970 0 14 Dtool_w0Cqbz4h 312 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_color
//       Access: Published
//  Description: Returns true if a color has been applied to the given
//               node, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
734 14 Dtool_w0Cqkzr5 0 7 518 4070 0 14 Dtool_w0Cqkzr5 329 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_color
//       Access: Published
//  Description: Returns the color that has been assigned to the node,
//               or black if no color has been assigned.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
735 14 Dtool_w0Cqh9q2 0 6 519 3970 0 14 Dtool_w0Cqh9q2 453 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_color_scale
//       Access: Published
//  Description: Returns true if a color scale has been applied
//               to the referenced node, false otherwise.  It is still
//               possible that color at this node might have been
//               scaled by an ancestor node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
736 14 Dtool_w0CqNGLo 0 4 520 3994 0 14 Dtool_w0CqNGLo 499 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_color_scale
//       Access: Published
//  Description: Completely removes any color scale from the
//               referenced node.  This is preferable to simply
//               setting the color scale to identity, as it also
//               removes the overhead associated with having a color
//               scale at all.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
737 14 Dtool_w0Cq5CtZ 0 4 521 3994 0 14 Dtool_w0Cq5CtZ 334 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_scale
//       Access: Published
//  Description: Sets the color scale component of the transform,
//               leaving translation and rotation untouched.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 scale 1 4067  8 priority 1 3971  
738 14 Dtool_w0CqiG1C 0 4 521 3994 0 14 Dtool_w0CqiG1C 334 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_scale
//       Access: Published
//  Description: Sets the color scale component of the transform,
//               leaving translation and rotation untouched.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 scale 1 4067  
739 14 Dtool_w0CqO7kn 0 4 521 3994 0 14 Dtool_w0CqO7kn 272 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_scale
//       Access: Published
//  Description: Sets the color scale component of the transform
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  2 sa 1 3979  8 priority 1 3971  
740 14 Dtool_w0CqUFGH 0 4 521 3994 0 14 Dtool_w0CqUFGH 272 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_scale
//       Access: Published
//  Description: Sets the color scale component of the transform
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  2 sa 1 3979  
741 14 Dtool_w0CqeapS 0 4 522 3994 0 14 Dtool_w0CqeapS 388 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::compose_color_scale
//       Access: Published
//  Description: multiplies the color scale component of the transform,
//               with previous color scale leaving translation and 
//               rotation untouched.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 scale 1 4067  8 priority 1 3971  
742 14 Dtool_w0Cq3nOp 0 4 522 3994 0 14 Dtool_w0Cq3nOp 388 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::compose_color_scale
//       Access: Published
//  Description: multiplies the color scale component of the transform,
//               with previous color scale leaving translation and 
//               rotation untouched.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 scale 1 4067  
743 14 Dtool_w0CqB_fn 0 4 522 3994 0 14 Dtool_w0CqB_fn 276 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::compose_color_scale
//       Access: Published
//  Description: Sets the color scale component of the transform
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  2 sa 1 3979  8 priority 1 3971  
744 14 Dtool_w0Cqb_d5 0 4 522 3994 0 14 Dtool_w0Cqb_d5 276 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::compose_color_scale
//       Access: Published
//  Description: Sets the color scale component of the transform
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  2 sx 1 3979  2 sy 1 3979  2 sz 1 3979  2 sa 1 3979  
745 14 Dtool_w0CqhzGl 0 4 523 3994 0 14 Dtool_w0CqhzGl 900 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_scale_off
//       Access: Published
//  Description: Disables any color scale attribute inherited from
//               above.  This is not the same thing as
//               clear_color_scale(), which undoes any previous
//               set_color_scale() operation on this node; rather,
//               this actively disables any set_color_scale() that
//               might be inherited from a parent node.  This also
//               disables set_alpha_scale() at the same time.
//
//               It is legal to specify a new color scale on the same
//               node with a subsequent call to set_color_scale() or
//               set_alpha_scale(); this new scale will apply to lower
//               geometry.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
746 14 Dtool_w0CqPZ4L 0 4 523 3994 0 14 Dtool_w0CqPZ4L 900 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_color_scale_off
//       Access: Published
//  Description: Disables any color scale attribute inherited from
//               above.  This is not the same thing as
//               clear_color_scale(), which undoes any previous
//               set_color_scale() operation on this node; rather,
//               this actively disables any set_color_scale() that
//               might be inherited from a parent node.  This also
//               disables set_alpha_scale() at the same time.
//
//               It is legal to specify a new color scale on the same
//               node with a subsequent call to set_color_scale() or
//               set_alpha_scale(); this new scale will apply to lower
//               geometry.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
747 14 Dtool_w0Cqr8w8 0 4 524 3994 0 14 Dtool_w0Cqr8w8 435 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_alpha_scale
//       Access: Published
//  Description: Sets the alpha scale component of the transform
//               without (much) affecting the color scale.  Note that
//               any priority specified will also apply to the color
//               scale.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 scale 1 3979  8 priority 1 3971  
748 14 Dtool_w0Cqu4Ux 0 4 524 3994 0 14 Dtool_w0Cqu4Ux 435 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_alpha_scale
//       Access: Published
//  Description: Sets the alpha scale component of the transform
//               without (much) affecting the color scale.  Note that
//               any priority specified will also apply to the color
//               scale.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 scale 1 3979  
749 14 Dtool_w0CqFCj2 0 4 525 3994 0 14 Dtool_w0CqFCj2 469 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_all_color_scale
//       Access: Published
//  Description: Scales all the color components of the object by the
//               same amount, darkening the object, without (much)
//               affecting alpha.  Note that any priority specified
//               will also apply to the alpha scale.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 scale 1 3979  8 priority 1 3971  
750 14 Dtool_w0CqWf2B 0 4 525 3994 0 14 Dtool_w0CqWf2B 469 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_all_color_scale
//       Access: Published
//  Description: Scales all the color components of the object by the
//               same amount, darkening the object, without (much)
//               affecting alpha.  Note that any priority specified
//               will also apply to the alpha scale.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 scale 1 3979  
751 14 Dtool_w0CqUANw 0 4 526 3994 0 14 Dtool_w0CqUANw 261 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_sr
//       Access: Published
//  Description: Sets the red scale component of the transform
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  2 sr 1 3979  
752 14 Dtool_w0CqMqiu 0 4 527 3994 0 14 Dtool_w0CqMqiu 263 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_sg
//       Access: Published
//  Description: Sets the alpha scale component of the transform
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  2 sg 1 3979  
753 14 Dtool_w0CqU_xt 0 4 528 3994 0 14 Dtool_w0CqU_xt 262 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_sb
//       Access: Published
//  Description: Sets the blue scale component of the transform
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  2 sb 1 3979  
754 14 Dtool_w0CqcBnt 0 4 529 3994 0 14 Dtool_w0CqcBnt 263 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_sa
//       Access: Published
//  Description: Sets the alpha scale component of the transform
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  2 sa 1 3979  
755 14 Dtool_w0CqH9dO 0 6 530 4067 0 14 Dtool_w0CqH9dO 510 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_color_scale
//       Access: Published
//  Description: Returns the complete color scale vector that has been
//               applied to this node via a previous call to
//               set_color_scale() and/or set_alpha_scale(), or all
//               1's (identity) if no scale has been applied to this
//               particular node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
756 14 Dtool_w0CqXd9T 0 6 531 3979 0 14 Dtool_w0CqXd9T 261 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sr
//       Access: Published
//  Description: Gets the red scale component of the transform
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
757 14 Dtool_w0Cq_7RS 0 6 532 3979 0 14 Dtool_w0Cq_7RS 263 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sg
//       Access: Published
//  Description: Gets the green scale component of the transform
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
758 14 Dtool_w0CqXPhR 0 6 533 3979 0 14 Dtool_w0CqXPhR 262 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sb
//       Access: Published
//  Description: Gets the blue scale component of the transform
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
759 14 Dtool_w0CqveXR 0 6 534 3979 0 14 Dtool_w0CqveXR 263 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_sa
//       Access: Published
//  Description: Gets the alpha scale component of the transform
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
760 14 Dtool_w0CqOmzA 0 4 535 3994 0 14 Dtool_w0CqOmzA 593 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_light
//       Access: Published
//  Description: Adds the indicated Light or PolylightNode to the list
//               of lights that illuminate geometry at this node and
//               below.  The light itself should be parented into the
//               scene graph elsewhere, to represent the light's
//               position in space; but until set_light() is called it
//               will illuminate no geometry.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 light 1 4056  8 priority 1 3971  
761 14 Dtool_w0CqVcVg 0 4 535 3994 0 14 Dtool_w0CqVcVg 593 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_light
//       Access: Published
//  Description: Adds the indicated Light or PolylightNode to the list
//               of lights that illuminate geometry at this node and
//               below.  The light itself should be parented into the
//               scene graph elsewhere, to represent the light's
//               position in space; but until set_light() is called it
//               will illuminate no geometry.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 light 1 4056  
762 14 Dtool_w0CqmGGU 0 4 536 3994 0 14 Dtool_w0CqmGGU 712 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_light_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               without using the indicated Light.  This is different
//               from not specifying the Light; rather, this
//               specifically contradicts set_light() at a higher node
//               level (or, with a priority, overrides a set_light()
//               at a lower level).
//
//               This interface does not support PolylightNodes, which
//               cannot be turned off at a lower level.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 light 1 4056  8 priority 1 3971  
763 14 Dtool_w0Cqs0Fm 0 4 536 3994 0 14 Dtool_w0Cqs0Fm 712 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_light_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               without using the indicated Light.  This is different
//               from not specifying the Light; rather, this
//               specifically contradicts set_light() at a higher node
//               level (or, with a priority, overrides a set_light()
//               at a lower level).
//
//               This interface does not support PolylightNodes, which
//               cannot be turned off at a lower level.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 light 1 4056  
764 14 Dtool_w0Cq3hHT 0 4 536 3994 0 14 Dtool_w0Cq3hHT 735 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_light_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no lights at all.  This is different
//               from not specifying a light; rather, this
//               specifically contradicts set_light() at a higher
//               node level (or, with a priority, overrides a
//               set_light() at a lower level).
//
//               If no lights are in effect on a particular piece of
//               geometry, that geometry is rendered with lighting
//               disabled.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
765 14 Dtool_w0Cq8iuh 0 4 536 3994 0 14 Dtool_w0Cq8iuh 735 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_light_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no lights at all.  This is different
//               from not specifying a light; rather, this
//               specifically contradicts set_light() at a higher
//               node level (or, with a priority, overrides a
//               set_light() at a lower level).
//
//               If no lights are in effect on a particular piece of
//               geometry, that geometry is rendered with lighting
//               disabled.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
766 14 Dtool_w0Cq_y39 0 4 537 3994 0 14 Dtool_w0Cq_y39 382 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_light
//       Access: Published
//  Description: Completely removes any lighting operations that may
//               have been set via set_light() or set_light_off()
//               from this particular node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
767 14 Dtool_w0CqF_28 0 4 537 3994 0 14 Dtool_w0CqF_28 318 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_light
//       Access: Published
//  Description: Removes any reference to the indicated Light or
//               PolylightNode from the NodePath.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 light 1 4056  
768 14 Dtool_w0CqLCWi 0 6 538 3970 0 14 Dtool_w0CqLCWi 460 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_light
//       Access: Published
//  Description: Returns true if the indicated Light or PolylightNode
//               has been specifically enabled on this particular
//               node.  This means that someone called set_light() on
//               this node with the indicated light.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 light 1 4056  
769 14 Dtool_w0CqKg80 0 6 539 3970 0 14 Dtool_w0CqKg80 438 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_light_off
//       Access: Published
//  Description: Returns true if all Lights have been specifically
//               disabled on this particular node.  This means that
//               someone called set_light_off() on this node with no
//               parameters.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
770 14 Dtool_w0Cq3UBH 0 6 539 3970 0 14 Dtool_w0Cq3UBH 582 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_light_off
//       Access: Published
//  Description: Returns true if the indicated Light has been
//               specifically disabled on this particular node.  This
//               means that someone called set_light_off() on this
//               node with the indicated light.
//
//               This interface does not support PolylightNodes, which
//               cannot be turned off at a lower level.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 light 1 4056  
771 14 Dtool_w0CqpYL4 0 4 540 3994 0 14 Dtool_w0CqpYL4 609 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_clip_plane
//       Access: Published
//  Description: Adds the indicated clipping plane to the list of
//               planes that apply to geometry at this node and below.
//               The clipping plane itself, a PlaneNode, should be
//               parented into the scene graph elsewhere, to represent
//               the plane's position in space; but until
//               set_clip_plane() is called it will clip no geometry.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  10 clip_plane 1 4056  8 priority 1 3971  
772 14 Dtool_w0Cq1XO3 0 4 540 3994 0 14 Dtool_w0Cq1XO3 609 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_clip_plane
//       Access: Published
//  Description: Adds the indicated clipping plane to the list of
//               planes that apply to geometry at this node and below.
//               The clipping plane itself, a PlaneNode, should be
//               parented into the scene graph elsewhere, to represent
//               the plane's position in space; but until
//               set_clip_plane() is called it will clip no geometry.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  10 clip_plane 1 4056  
773 14 Dtool_w0Cq6bye 0 4 541 3994 0 14 Dtool_w0Cq6bye 632 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_clip_plane_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               without being clipped by the indicated PlaneNode.
//               This is different from not specifying the PlaneNode;
//               rather, this specifically contradicts
//               set_clip_plane() at a higher node level (or, with a
//               priority, overrides a set_clip_plane() at a lower
//               level).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  10 clip_plane 1 4056  8 priority 1 3971  
774 14 Dtool_w0Cq2qvC 0 4 541 3994 0 14 Dtool_w0Cq2qvC 632 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_clip_plane_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               without being clipped by the indicated PlaneNode.
//               This is different from not specifying the PlaneNode;
//               rather, this specifically contradicts
//               set_clip_plane() at a higher node level (or, with a
//               priority, overrides a set_clip_plane() at a lower
//               level).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  10 clip_plane 1 4056  
775 14 Dtool_w0Cq28yc 0 4 541 3994 0 14 Dtool_w0Cq28yc 800 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_clip_plane_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no clip_planes at all.  This is different
//               from not specifying a clip_plane; rather, this
//               specifically contradicts set_clip_plane() at a higher
//               node level (or, with a priority, overrides a
//               set_clip_plane() at a lower level).
//
//               If no clip_planes are in effect on a particular piece
//               of geometry, that geometry is rendered without being
//               clipped (other than by the viewing frustum).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
776 14 Dtool_w0CqcSB6 0 4 541 3994 0 14 Dtool_w0CqcSB6 800 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_clip_plane_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no clip_planes at all.  This is different
//               from not specifying a clip_plane; rather, this
//               specifically contradicts set_clip_plane() at a higher
//               node level (or, with a priority, overrides a
//               set_clip_plane() at a lower level).
//
//               If no clip_planes are in effect on a particular piece
//               of geometry, that geometry is rendered without being
//               clipped (other than by the viewing frustum).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
777 14 Dtool_w0CqteSh 0 4 542 3994 0 14 Dtool_w0CqteSh 389 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_clip_plane
//       Access: Published
//  Description: Completely removes any clip planes that may have been
//               set via set_clip_plane() or set_clip_plane_off() from
//               this particular node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
778 14 Dtool_w0CqBURf 0 4 542 3994 0 14 Dtool_w0CqBURf 315 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_clip_plane
//       Access: Published
//  Description: Removes any reference to the indicated clipping plane
//               from the NodePath.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  10 clip_plane 1 4056  
779 14 Dtool_w0CqUt_T 0 6 543 3970 0 14 Dtool_w0CqUt_T 467 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_clip_plane
//       Access: Published
//  Description: Returns true if the indicated clipping plane has been
//               specifically applied to this particular node.  This
//               means that someone called set_clip_plane() on this
//               node with the indicated clip_plane.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  10 clip_plane 1 4056  
780 14 Dtool_w0CqvnN5 0 6 544 3970 0 14 Dtool_w0CqvnN5 457 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_clip_plane_off
//       Access: Published
//  Description: Returns true if all clipping planes have been
//               specifically disabled on this particular node.  This
//               means that someone called set_clip_plane_off() on
//               this node with no parameters.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
781 14 Dtool_w0CqZ8Wd 0 6 544 3970 0 14 Dtool_w0CqZ8Wd 476 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_clip_plane_off
//       Access: Published
//  Description: Returns true if the indicated clipping plane has been
//               specifically disabled on this particular node.  This
//               means that someone called set_clip_plane_off() on
//               this node with the indicated clip_plane.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  10 clip_plane 1 4056  
782 14 Dtool_w0Cq_gnY 0 4 545 3994 0 14 Dtool_w0Cq_gnY 567 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The two points are understood
//               to be relative to this node.  When these points are
//               projected into screen space, they define the
//               diagonally-opposite points that determine the scissor
//               region.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  1 a 1 3989  1 b 1 3989  
783 14 Dtool_w0CqFyJ0 0 4 545 3994 0 14 Dtool_w0CqFyJ0 648 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The four points are understood
//               to be relative to this node.  When these points are
//               projected into screen space, they define the
//               bounding volume of the scissor region (the scissor
//               region is the smallest onscreen rectangle that
//               encloses all four points).
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  1 a 1 3989  1 b 1 3989  1 c 1 3989  1 d 1 3989  
784 14 Dtool_w0CqWnEw 0 4 545 3994 0 14 Dtool_w0CqWnEw 582 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The two points are understood
//               to be relative to the indicated other node.  When
//               these points are projected into screen space, they
//               define the diagonally-opposite points that determine
//               the scissor region.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  1 a 1 3989  1 b 1 3989  
785 14 Dtool_w0CqFDXe 0 4 545 3994 0 14 Dtool_w0CqFDXe 663 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The four points are understood
//               to be relative to the indicated other node.  When
//               these points are projected into screen space, they
//               define the bounding volume of the scissor region (the
//               scissor region is the smallest onscreen rectangle
//               that encloses all four points).
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  5 other 1 4056  1 a 1 3989  1 b 1 3989  1 c 1 3989  1 d 1 3989  
786 14 Dtool_w0Cqu_n1 0 4 545 3994 0 14 Dtool_w0Cqu_n1 623 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_scissor
//       Access: Published
//  Description: Sets up a scissor region on the nodes rendered at
//               this level and below.  The four coordinates are
//               understood to define a rectangle in screen space.
//               These numbers are relative to the current
//               DisplayRegion, where (0,0) is the lower-left corner
//               of the DisplayRegion, and (1,1) is the upper-right
//               corner.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  4 left 1 3979  5 right 1 3979  6 bottom 1 3979  3 top 1 3979  
787 14 Dtool_w0Cq0gei 0 4 546 3994 0 14 Dtool_w0Cq0gei 339 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_scissor
//       Access: Published
//  Description: Removes the scissor region that was defined at this
//               node level by a previous call to set_scissor().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
788 14 Dtool_w0Cquv7f 0 6 547 3970 0 14 Dtool_w0Cquv7f 607 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_scissor
//       Access: Published
//  Description: Returns true if a scissor region was defined at this
//               node by a previous call to set_scissor().  This does
//               not check for scissor regions inherited from a parent
//               class.  It also does not check for the presence of a
//               low-level ScissorAttrib, which is different from the
//               ScissorEffect added by set_scissor.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
789 14 Dtool_w0CqOhjp 0 4 548 3994 0 14 Dtool_w0CqOhjp 603 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_occluder
//       Access: Published
//  Description: Adds the indicated occluder to the list of
//               occluders that apply to geometry at this node and below.
//               The occluder itself, an OccluderNode, should be
//               parented into the scene graph elsewhere, to represent
//               the occluder's position in space; but until
//               set_occluder() is called it will clip no geometry.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 occluder 1 4056  
790 14 Dtool_w0Cqn6ch 0 4 549 3994 0 14 Dtool_w0Cqn6ch 342 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_occluder
//       Access: Published
//  Description: Completely removes any occluders that may have been
//               set via set_occluder() from this particular node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
791 14 Dtool_w0CqcaDt 0 4 549 3994 0 14 Dtool_w0CqcaDt 307 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_occluder
//       Access: Published
//  Description: Removes any reference to the indicated occluder
//               from the NodePath.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 occluder 1 4056  
792 14 Dtool_w0CqzNny 0 6 550 3970 0 14 Dtool_w0CqzNny 455 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_occluder
//       Access: Published
//  Description: Returns true if the indicated occluder has been
//               specifically applied to this particular node.  This
//               means that someone called set_occluder() on this
//               node with the indicated occluder.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  8 occluder 1 4056  
793 14 Dtool_w0CqxqDK 0 4 551 3994 0 14 Dtool_w0CqxqDK 1343 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_bin
//       Access: Published
//  Description: Assigns the geometry at this level and below to the
//               named rendering bin.  It is the user's responsibility
//               to ensure that such a bin already exists, either via
//               the cull-bin Configrc variable, or by explicitly
//               creating a GeomBin of the appropriate type at
//               runtime.
//
//               There are two default bins created when Panda is
//               started: "default" and "fixed".  Normally, all
//               geometry is assigned to "default" unless specified
//               otherwise.  This bin renders opaque geometry in
//               state-sorted order, followed by transparent geometry
//               sorted back-to-front.  If any geometry is assigned to
//               "fixed", this will be rendered following all the
//               geometry in "default", in the order specified by
//               draw_order for each piece of geometry so assigned.
//
//               The draw_order parameter is meaningful only for
//               GeomBinFixed type bins, e.g. "fixed".  Other kinds of
//               bins ignore it.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  8 bin_name 1 4028  10 draw_order 1 3971  8 priority 1 3971  
794 14 Dtool_w0CqZBGG 0 4 551 3994 0 14 Dtool_w0CqZBGG 1343 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_bin
//       Access: Published
//  Description: Assigns the geometry at this level and below to the
//               named rendering bin.  It is the user's responsibility
//               to ensure that such a bin already exists, either via
//               the cull-bin Configrc variable, or by explicitly
//               creating a GeomBin of the appropriate type at
//               runtime.
//
//               There are two default bins created when Panda is
//               started: "default" and "fixed".  Normally, all
//               geometry is assigned to "default" unless specified
//               otherwise.  This bin renders opaque geometry in
//               state-sorted order, followed by transparent geometry
//               sorted back-to-front.  If any geometry is assigned to
//               "fixed", this will be rendered following all the
//               geometry in "default", in the order specified by
//               draw_order for each piece of geometry so assigned.
//
//               The draw_order parameter is meaningful only for
//               GeomBinFixed type bins, e.g. "fixed".  Other kinds of
//               bins ignore it.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  8 bin_name 1 4028  10 draw_order 1 3971  
795 14 Dtool_w0CqbzEW 0 4 552 3994 0 14 Dtool_w0CqbzEW 337 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_bin
//       Access: Published
//  Description: Completely removes any bin adjustment that may have
//               been set via set_bin() from this particular node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
796 14 Dtool_w0CqTmsC 0 6 553 3970 0 14 Dtool_w0CqTmsC 359 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_bin
//       Access: Published
//  Description: Returns true if the node has been assigned to the a
//               particular rendering bin via set_bin(), false
//               otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
797 14 Dtool_w0CqLAFg 0 6 554 4028 0 14 Dtool_w0CqLAFg 414 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_bin_name
//       Access: Published
//  Description: Returns the name of the bin that this particular node
//               was assigned to via set_bin(), or the empty string if
//               no bin was assigned.  See set_bin() and has_bin().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
798 14 Dtool_w0Cq2Nw9 0 6 555 3971 0 14 Dtool_w0Cq2Nw9 444 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_bin_draw_order
//       Access: Published
//  Description: Returns the drawing order associated with the bin
//               that this particular node was assigned to via
//               set_bin(), or 0 if no bin was assigned.  See
//               set_bin() and has_bin().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
799 14 Dtool_w0CqFEvx 0 4 556 3994 0 14 Dtool_w0CqFEvx 617 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the default texture stage.
//
//               This is the convenience single-texture variant of
//               this method; it is now superceded by set_texture()
//               that accepts a stage and texture.  You may use this
//               method if you just want to adjust the default stage.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  3 tex 1 4071  8 priority 1 3971  
800 14 Dtool_w0CqchTm 0 4 556 3994 0 14 Dtool_w0CqchTm 617 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the default texture stage.
//
//               This is the convenience single-texture variant of
//               this method; it is now superceded by set_texture()
//               that accepts a stage and texture.  You may use this
//               method if you just want to adjust the default stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 tex 1 4071  
801 14 Dtool_w0CqgM3e 0 4 556 3994 0 14 Dtool_w0CqgM3e 659 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the indicated multitexture
//               stage.  If there are multiple texture stages
//               specified (possibly on multiple different nodes at
//               different levels), they will all be applied to
//               geometry together, according to the stage
//               specification set up in the TextureStage object.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 stage 1 4012  3 tex 1 4071  8 priority 1 3971  
802 14 Dtool_w0CqtHou 0 4 556 3994 0 14 Dtool_w0CqtHou 659 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the indicated multitexture
//               stage.  If there are multiple texture stages
//               specified (possibly on multiple different nodes at
//               different levels), they will all be applied to
//               geometry together, according to the stage
//               specification set up in the TextureStage object.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  3 tex 1 4071  
803 14 Dtool_w0CqHq1d 0 4 557 3994 0 14 Dtool_w0CqHq1d 595 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on the indicated stage.  This is
//               different from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  8 priority 1 3971  
804 14 Dtool_w0CqwSb0 0 4 557 3994 0 14 Dtool_w0CqwSb0 595 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on the indicated stage.  This is
//               different from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 stage 1 4012  
805 14 Dtool_w0Cqw4bU 0 4 557 3994 0 14 Dtool_w0Cqw4bU 585 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on any stage.  This is different
//               from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
806 14 Dtool_w0Cq_4vA 0 4 557 3994 0 14 Dtool_w0Cq_4vA 585 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on any stage.  This is different
//               from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
807 14 Dtool_w0CqNNBp 0 4 558 3994 0 14 Dtool_w0CqNNBp 511 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_texture
//       Access: Published
//  Description: Completely removes any texture adjustment that may
//               have been set via set_texture() or set_texture_off()
//               from this particular node.  This allows whatever
//               textures might be otherwise affecting the geometry to
//               show instead.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
808 14 Dtool_w0Cqcr3x 0 4 558 3994 0 14 Dtool_w0Cqcr3x 311 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_texture
//       Access: Published
//  Description: Removes any reference to the indicated texture stage
//               from the NodePath.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 stage 1 4012  
809 14 Dtool_w0Cqqlwf 0 6 559 3970 0 14 Dtool_w0Cqqlwf 578 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texture
//       Access: Published
//  Description: Returns true if a texture has been applied to this
//               particular node via set_texture(), false otherwise.
//               This is not the same thing as asking whether the
//               geometry at this node will be rendered with
//               texturing, as there may be a texture in effect from a
//               higher or lower level.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
810 14 Dtool_w0CqCNaQ 0 6 559 3970 0 14 Dtool_w0CqCNaQ 592 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texture
//       Access: Published
//  Description: Returns true if texturing has been specifically
//               enabled on this particular node for the indicated
//               stage.  This means that someone called
//               set_texture() on this node with the indicated stage
//               name, or the stage_name is the default stage_name,
//               and someone called set_texture() on this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
811 14 Dtool_w0CqxE64 0 6 560 3970 0 14 Dtool_w0CqxE64 597 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texture_off
//       Access: Published
//  Description: Returns true if texturing has been specifically
//               disabled on this particular node via
//               set_texture_off(), false otherwise.  This is not the
//               same thing as asking whether the geometry at this
//               node will be rendered untextured, as there may be a
//               texture in effect from a higher or lower level.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
812 14 Dtool_w0CqL45P 0 6 560 3970 0 14 Dtool_w0CqL45P 585 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texture_off
//       Access: Published
//  Description: Returns true if texturing has been specifically
//               disabled on this particular node for the indicated
//               stage.  This means that someone called
//               set_texture_off() on this node with the indicated
//               stage name, or that someone called set_texture_off()
//               on this node to remove all stages.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
813 14 Dtool_w0CqPll3 0 7 561 4071 0 14 Dtool_w0CqPll3 618 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_texture
//       Access: Published
//  Description: Returns the base-level texture that has been set on
//               this particular node, or NULL if no texture has been
//               set.  This is not necessarily the texture that will
//               be applied to the geometry at or below this level, as
//               another texture at a higher or lower level may
//               override.
//
//               See also find_texture().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
814 14 Dtool_w0CqhMNo 0 7 561 4071 0 14 Dtool_w0CqhMNo 392 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_texture
//       Access: Published
//  Description: Returns the texture that has been set on the
//               indicated stage for this particular node, or NULL if
//               no texture has been set for this stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
815 14 Dtool_w0Cqx_K4 0 4 562 3994 0 14 Dtool_w0Cqx_K4 220 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  3 sha 1 4073  8 priority 1 3971  
816 14 Dtool_w0CqOCeD 0 4 562 3994 0 14 Dtool_w0CqOCeD 220 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 sha 1 4073  
817 14 Dtool_w0CqaMRX 0 4 563 3994 0 14 Dtool_w0CqaMRX 224 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_off
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
818 14 Dtool_w0Cqzipq 0 4 563 3994 0 14 Dtool_w0Cqzipq 224 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_off
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
819 14 Dtool_w0CqbHmm 0 4 564 3994 0 14 Dtool_w0CqbHmm 265 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_auto
//       Access: Published
//  Description: overloaded for auto shader customization
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  13 shader_switch 1 4037  8 priority 1 3971  
820 14 Dtool_w0Cq0nyW 0 4 564 3994 0 14 Dtool_w0Cq0nyW 265 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_auto
//       Access: Published
//  Description: overloaded for auto shader customization
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  13 shader_switch 1 4037  
821 14 Dtool_w0Cq0Slp 0 4 564 3994 0 14 Dtool_w0Cq0Slp 225 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_auto
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
822 14 Dtool_w0Cq7C4V 0 4 564 3994 0 14 Dtool_w0Cq7C4V 225 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_auto
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
823 14 Dtool_w0CqWwTt 0 4 565 3994 0 14 Dtool_w0CqWwTt 222 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_shader
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
824 14 Dtool_w0CqT9cu 0 4 566 3994 0 14 Dtool_w0CqT9cu 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 3986  8 priority 1 3971  
825 14 Dtool_w0Cq4P0O 0 4 566 3994 0 14 Dtool_w0Cq4P0O 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 3986  
826 14 Dtool_w0CqH9MQ 0 4 566 3994 0 14 Dtool_w0CqH9MQ 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 3980  8 priority 1 3971  
827 14 Dtool_w0CqtPkw 0 4 566 3994 0 14 Dtool_w0CqtPkw 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 3980  
828 14 Dtool_w0CqYs_r 0 4 566 3994 0 14 Dtool_w0CqYs_r 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 3983  8 priority 1 3971  
829 14 Dtool_w0CqQxT3 0 4 566 3994 0 14 Dtool_w0CqQxT3 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 3983  
830 14 Dtool_w0Cqs6Ns 0 4 566 3994 0 14 Dtool_w0Cqs6Ns 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4079  8 priority 1 3971  
831 14 Dtool_w0CqsYg3 0 4 566 3994 0 14 Dtool_w0CqsYg3 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4079  
832 14 Dtool_w0Cqri_j 0 4 566 3994 0 14 Dtool_w0Cqri_j 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 3973  8 priority 1 3971  
833 14 Dtool_w0Cq60Sv 0 4 566 3994 0 14 Dtool_w0Cq60Sv 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 3973  
834 14 Dtool_w0Cqf0Nk 0 4 566 3994 0 14 Dtool_w0Cqf0Nk 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4082  8 priority 1 3971  
835 14 Dtool_w0CqGdhv 0 4 566 3994 0 14 Dtool_w0CqGdhv 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4082  
836 14 Dtool_w0Cq6Y_b 0 4 566 3994 0 14 Dtool_w0Cq6Y_b 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4067  8 priority 1 3971  
837 14 Dtool_w0CqL6Sn 0 4 566 3994 0 14 Dtool_w0CqL6Sn 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4067  
838 14 Dtool_w0CqOONc 0 4 566 3994 0 14 Dtool_w0CqOONc 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4085  8 priority 1 3971  
839 14 Dtool_w0Cq3Thn 0 4 566 3994 0 14 Dtool_w0Cq3Thn 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4085  
840 14 Dtool_w0CqwNvR 0 4 566 3994 0 14 Dtool_w0CqwNvR 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  2 np 1 4056  8 priority 1 3971  
841 14 Dtool_w0CqVIzQ 0 4 566 3994 0 14 Dtool_w0CqVIzQ 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  2 np 1 4056  
842 14 Dtool_w0CqMJrm 0 4 566 3994 0 14 Dtool_w0CqMJrm 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4088  8 priority 1 3971  
843 14 Dtool_w0CqyUMG 0 4 566 3994 0 14 Dtool_w0CqyUMG 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4088  
844 14 Dtool_w0CqtBK9 0 4 566 3994 0 14 Dtool_w0CqtBK9 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4091  8 priority 1 3971  
845 14 Dtool_w0CqG2Xt 0 4 566 3994 0 14 Dtool_w0CqG2Xt 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4091  
846 14 Dtool_w0Cqsxw3 0 4 566 3994 0 14 Dtool_w0Cqsxw3 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4094  8 priority 1 3971  
847 14 Dtool_w0CqFm8n 0 4 566 3994 0 14 Dtool_w0CqFm8n 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4094  
848 14 Dtool_w0CqNGx9 0 4 566 3994 0 14 Dtool_w0CqNGx9 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4097  8 priority 1 3971  
849 14 Dtool_w0Cqmp_t 0 4 566 3994 0 14 Dtool_w0Cqmp_t 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4097  
850 14 Dtool_w0CqM2X4 0 4 566 3994 0 14 Dtool_w0CqM2X4 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4100  8 priority 1 3971  
851 14 Dtool_w0CqlZjo 0 4 566 3994 0 14 Dtool_w0CqlZjo 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4100  
852 14 Dtool_w0CqBvve 0 4 566 3994 0 14 Dtool_w0CqBvve 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4103  8 priority 1 3971  
853 14 Dtool_w0CqtcsC 0 4 566 3994 0 14 Dtool_w0CqtcsC 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4103  
854 14 Dtool_w0CqKnsB 0 4 566 3994 0 14 Dtool_w0CqKnsB 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4106  8 priority 1 3971  
855 14 Dtool_w0CqCuu_ 0 4 566 3994 0 14 Dtool_w0CqCuu_ 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4106  
856 14 Dtool_w0CqKNAJ 0 4 566 3994 0 14 Dtool_w0CqKNAJ 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4109  8 priority 1 3971  
857 14 Dtool_w0CqD4DH 0 4 566 3994 0 14 Dtool_w0CqD4DH 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4109  
858 14 Dtool_w0CqNXw8 0 4 566 3994 0 14 Dtool_w0CqNXw8 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4112  8 priority 1 3971  
859 14 Dtool_w0CqK2m_ 0 4 566 3994 0 14 Dtool_w0CqK2m_ 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4112  
860 14 Dtool_w0Cq3OEN 0 4 566 3994 0 14 Dtool_w0Cq3OEN 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4115  8 priority 1 3971  
861 14 Dtool_w0CqP4LF 0 4 566 3994 0 14 Dtool_w0CqP4LF 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4115  
862 14 Dtool_w0CqjgdX 0 4 566 3994 0 14 Dtool_w0CqjgdX 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  1 v 1 4118  8 priority 1 3971  
863 14 Dtool_w0CqBR97 0 4 566 3994 0 14 Dtool_w0CqBR97 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  1 v 1 4118  
864 14 Dtool_w0Cq5uyv 0 4 566 3994 0 14 Dtool_w0Cq5uyv 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  3 tex 1 4071  8 priority 1 3971  
865 14 Dtool_w0Cqc_KQ 0 4 566 3994 0 14 Dtool_w0Cqc_KQ 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  3 tex 1 4071  
866 14 Dtool_w0CqIdam 0 4 566 3994 0 14 Dtool_w0CqIdam 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 7 4 this 3 4055  2 id 1 4076  2 n1 1 3979  2 n2 1 3979  2 n3 1 3979  2 n4 1 3979  8 priority 1 3971  
867 14 Dtool_w0Cq9YZv 0 4 566 3994 0 14 Dtool_w0Cq9YZv 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  2 id 1 4076  2 n1 1 3979  2 n2 1 3979  2 n3 1 3979  2 n4 1 3979  
868 14 Dtool_w0Cq0_Bn 0 4 566 3994 0 14 Dtool_w0Cq0_Bn 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  2 id 1 4076  2 n1 1 3979  2 n2 1 3979  2 n3 1 3979  
869 14 Dtool_w0Cq1QpM 0 4 566 3994 0 14 Dtool_w0Cq1QpM 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  2 n1 1 3979  2 n2 1 3979  
870 14 Dtool_w0Cqj3Dr 0 4 566 3994 0 14 Dtool_w0Cqj3Dr 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  2 n1 1 3979  
871 14 Dtool_w0CqiIIZ 0 4 566 3994 0 14 Dtool_w0CqiIIZ 225 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 7 4 this 3 4055  2 id 1 4076  2 n1 1 3971  2 n2 1 3971  2 n3 1 3971  2 n4 1 3971  8 priority 1 3971  
872 14 Dtool_w0CqeSLV 0 4 566 3994 0 14 Dtool_w0CqeSLV 225 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  2 id 1 4076  2 n1 1 3971  2 n2 1 3971  2 n3 1 3971  2 n4 1 3971  
873 14 Dtool_w0Cq_BPT 0 4 566 3994 0 14 Dtool_w0Cq_BPT 225 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  2 id 1 4076  2 n1 1 3971  2 n2 1 3971  2 n3 1 3971  
874 14 Dtool_w0CqORQS 0 4 566 3994 0 14 Dtool_w0CqORQS 225 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4076  2 n1 1 3971  2 n2 1 3971  
875 14 Dtool_w0Cq71yx 0 4 566 3994 0 14 Dtool_w0Cq71yx 225 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4076  2 n1 1 3971  
876 14 Dtool_w0Cq4rQe 0 4 566 3994 0 14 Dtool_w0Cq4rQe 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 inp 1 4121  
877 14 Dtool_w0CqfqhO 0 4 566 3994 0 14 Dtool_w0CqfqhO 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 3986  8 priority 1 3971  
878 14 Dtool_w0Cqxd5u 0 4 566 3994 0 14 Dtool_w0Cqxd5u 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 3986  
879 14 Dtool_w0CqwrRw 0 4 566 3994 0 14 Dtool_w0CqwrRw 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 3980  8 priority 1 3971  
880 14 Dtool_w0CqldpQ 0 4 566 3994 0 14 Dtool_w0CqldpQ 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 3980  
881 14 Dtool_w0CqG_DM 0 4 566 3994 0 14 Dtool_w0CqG_DM 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 3983  8 priority 1 3971  
882 14 Dtool_w0CqaUXX 0 4 566 3994 0 14 Dtool_w0CqaUXX 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 3983  
883 14 Dtool_w0CqymSM 0 4 566 3994 0 14 Dtool_w0CqymSM 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4079  8 priority 1 3971  
884 14 Dtool_w0CqmimX 0 4 566 3994 0 14 Dtool_w0CqmimX 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4079  
885 14 Dtool_w0CqXpDE 0 4 566 3994 0 14 Dtool_w0CqXpDE 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 3973  8 priority 1 3971  
886 14 Dtool_w0CqVqWP 0 4 566 3994 0 14 Dtool_w0CqVqWP 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 3973  
887 14 Dtool_w0CqjwSE 0 4 566 3994 0 14 Dtool_w0CqjwSE 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4082  8 priority 1 3971  
888 14 Dtool_w0CqpcnP 0 4 566 3994 0 14 Dtool_w0CqpcnP 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4082  
889 14 Dtool_w0CqniD8 0 4 566 3994 0 14 Dtool_w0CqniD8 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4067  8 priority 1 3971  
890 14 Dtool_w0Cq_uXH 0 4 566 3994 0 14 Dtool_w0Cq_uXH 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4067  
891 14 Dtool_w0CqT7S8 0 4 566 3994 0 14 Dtool_w0CqT7S8 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4085  8 priority 1 3971  
892 14 Dtool_w0CqDYmH 0 4 566 3994 0 14 Dtool_w0CqDYmH 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4085  
893 14 Dtool_w0CqZ40x 0 4 566 3994 0 14 Dtool_w0CqZ40x 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  2 np 1 4056  8 priority 1 3971  
894 14 Dtool_w0Cqs13w 0 4 566 3994 0 14 Dtool_w0Cqs13w 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  2 np 1 4056  
895 14 Dtool_w0CqaewG 0 4 566 3994 0 14 Dtool_w0CqaewG 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4088  8 priority 1 3971  
896 14 Dtool_w0Cq5wRm 0 4 566 3994 0 14 Dtool_w0Cq5wRm 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4088  
897 14 Dtool_w0Cq9DPd 0 4 566 3994 0 14 Dtool_w0Cq9DPd 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4091  8 priority 1 3971  
898 14 Dtool_w0CqErcN 0 4 566 3994 0 14 Dtool_w0CqErcN 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4091  
899 14 Dtool_w0Cq_T0X 0 4 566 3994 0 14 Dtool_w0Cq_T0X 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4094  8 priority 1 3971  
900 14 Dtool_w0CqF7BI 0 4 566 3994 0 14 Dtool_w0CqF7BI 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4094  
901 14 Dtool_w0CqdH2d 0 4 566 3994 0 14 Dtool_w0CqdH2d 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4097  8 priority 1 3971  
902 14 Dtool_w0CqknDO 0 4 566 3994 0 14 Dtool_w0CqknDO 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4097  
903 14 Dtool_w0CqeXbY 0 4 566 3994 0 14 Dtool_w0CqeXbY 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4100  8 priority 1 3971  
904 14 Dtool_w0Cql3oI 0 4 566 3994 0 14 Dtool_w0Cql3oI 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4100  
905 14 Dtool_w0Cq_90_ 0 4 566 3994 0 14 Dtool_w0Cq_90_ 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4103  8 priority 1 3971  
906 14 Dtool_w0Cq6uxi 0 4 566 3994 0 14 Dtool_w0Cq6uxi 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4103  
907 14 Dtool_w0CqBowh 0 4 566 3994 0 14 Dtool_w0CqBowh 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4106  8 priority 1 3971  
908 14 Dtool_w0Cq09zf 0 4 566 3994 0 14 Dtool_w0Cq09zf 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4106  
909 14 Dtool_w0CqB_Fp 0 4 566 3994 0 14 Dtool_w0CqB_Fp 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4109  8 priority 1 3971  
910 14 Dtool_w0Cq0XIn 0 4 566 3994 0 14 Dtool_w0Cq0XIn 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4109  
911 14 Dtool_w0Cq911c 0 4 566 3994 0 14 Dtool_w0Cq911c 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4112  8 priority 1 3971  
912 14 Dtool_w0Cq83rf 0 4 566 3994 0 14 Dtool_w0Cq83rf 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4112  
913 14 Dtool_w0CqC6Kt 0 4 566 3994 0 14 Dtool_w0CqC6Kt 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4115  8 priority 1 3971  
914 14 Dtool_w0CqSFQl 0 4 566 3994 0 14 Dtool_w0CqSFQl 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4115  
915 14 Dtool_w0Cqxoj3 0 4 566 3994 0 14 Dtool_w0Cqxoj3 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  1 v 1 4118  8 priority 1 3971  
916 14 Dtool_w0CqSKDc 0 4 566 3994 0 14 Dtool_w0CqSKDc 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  1 v 1 4118  
917 14 Dtool_w0Cqxy3P 0 4 566 3994 0 14 Dtool_w0Cqxy3P 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  3 tex 1 4071  8 priority 1 3971  
918 14 Dtool_w0CqLvPw 0 4 566 3994 0 14 Dtool_w0CqLvPw 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  3 tex 1 4071  
919 14 Dtool_w0CqCwfG 0 4 566 3994 0 14 Dtool_w0CqCwfG 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 7 4 this 3 4055  2 id 1 4028  2 n1 1 3979  2 n2 1 3979  2 n3 1 3979  2 n4 1 3979  8 priority 1 3971  
920 14 Dtool_w0CqJNeP 0 4 566 3994 0 14 Dtool_w0CqJNeP 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  2 id 1 4028  2 n1 1 3979  2 n2 1 3979  2 n3 1 3979  2 n4 1 3979  
921 14 Dtool_w0CqipEH 0 4 566 3994 0 14 Dtool_w0CqipEH 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  2 id 1 4028  2 n1 1 3979  2 n2 1 3979  2 n3 1 3979  
922 14 Dtool_w0Cqsaus 0 4 566 3994 0 14 Dtool_w0Cqsaus 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  2 n1 1 3979  2 n2 1 3979  
923 14 Dtool_w0CqX2IL 0 4 566 3994 0 14 Dtool_w0CqX2IL 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  2 n1 1 3979  
924 14 Dtool_w0CqnCN5 0 4 566 3994 0 14 Dtool_w0CqnCN5 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 7 4 this 3 4055  2 id 1 4028  2 n1 1 3971  2 n2 1 3971  2 n3 1 3971  2 n4 1 3971  8 priority 1 3971  
925 14 Dtool_w0CqqfR1 0 4 566 3994 0 14 Dtool_w0CqqfR1 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  2 id 1 4028  2 n1 1 3971  2 n2 1 3971  2 n3 1 3971  2 n4 1 3971  
926 14 Dtool_w0CqjHSz 0 4 566 3994 0 14 Dtool_w0CqjHSz 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  2 id 1 4028  2 n1 1 3971  2 n2 1 3971  2 n3 1 3971  
927 14 Dtool_w0CqD6Vy 0 4 566 3994 0 14 Dtool_w0CqD6Vy 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  2 id 1 4028  2 n1 1 3971  2 n2 1 3971  
928 14 Dtool_w0Cq3n3R 0 4 566 3994 0 14 Dtool_w0Cq3n3R 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  2 id 1 4028  2 n1 1 3971  
929 14 Dtool_w0Cqhto4 0 4 567 3994 0 14 Dtool_w0Cqhto4 228 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  2 id 1 4076  
930 14 Dtool_w0CqH2LE 0 4 567 3994 0 14 Dtool_w0CqH2LE 228 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  2 id 1 4028  
931 14 Dtool_w0Cqs3Az 0 4 568 3994 0 14 Dtool_w0Cqs3Az 435 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_instance_count
//       Access: Published
//  Description: Sets the geometry instance count, or 0 if
//               geometry instancing should be disabled. Do not
//               confuse with instanceTo which only applies to
//               animation instancing.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  14 instance_count 1 3971  
932 14 Dtool_w0CqXRer 0 7 569 4073 0 14 Dtool_w0CqXRer 220 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shader
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
933 14 Dtool_w0CqlBAO 0 7 570 4121 0 14 Dtool_w0CqlBAO 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  2 id 1 4076  
934 14 Dtool_w0CqsHFu 0 7 570 4121 0 14 Dtool_w0CqsHFu 226 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  2 id 1 4028  
935 14 Dtool_w0CqFCMn 0 6 571 3971 0 14 Dtool_w0CqFCMn 323 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_instance_count
//       Access: Published
//  Description: Returns the geometry instance count, or 0 if
//               disabled. See set_instance_count.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
936 14 Dtool_w0CqM5dH 0 4 572 3994 0 14 Dtool_w0CqM5dH 335 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_transform
//       Access: Published
//  Description: Sets the texture matrix on the current node to the
//               indicated transform for the given stage.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 stage 1 4012  9 transform 1 3968  
937 14 Dtool_w0Cq7rVh 0 4 572 3994 0 14 Dtool_w0Cq7rVh 335 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_transform
//       Access: Published
//  Description: Sets the texture matrix on the current node to the
//               indicated transform for the given stage.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  9 transform 1 3968  
938 14 Dtool_w0CqPvbV 0 4 573 3994 0 14 Dtool_w0CqPvbV 280 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_transform
//       Access: Published
//  Description: Removes all texture matrices from the current node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
939 14 Dtool_w0Cq7hmM 0 4 573 3994 0 14 Dtool_w0Cq7hmM 313 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_transform
//       Access: Published
//  Description: Removes the texture matrix on the current node for
//               the given stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 stage 1 4012  
940 14 Dtool_w0CqW20G 0 6 574 3970 0 14 Dtool_w0CqW20G 336 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_tex_transform
//       Access: Published
//  Description: Returns true if there is an explicit texture matrix
//               on the current node for the given stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
941 14 Dtool_w0CqkXI_ 0 7 575 3968 0 14 Dtool_w0CqkXI_ 339 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_transform
//       Access: Published
//  Description: Returns the texture matrix on the current node for the
//               given stage, relative to the other node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  5 stage 1 4012  
942 14 Dtool_w0Cqz2ne 0 7 575 3968 0 14 Dtool_w0Cqz2ne 409 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_transform
//       Access: Published
//  Description: Returns the texture matrix on the current node for the
//               given stage, or identity transform if there is no
//               explicit transform set for the given stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
943 14 Dtool_w0CqdjnO 0 4 576 3994 0 14 Dtool_w0CqdjnO 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_offset
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 stage 1 4012  2 uv 1 3983  
944 14 Dtool_w0Cqwlj_ 0 4 576 3994 0 14 Dtool_w0Cqwlj_ 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_offset
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  5 stage 1 4012  1 u 1 3979  1 v 1 3979  
945 14 Dtool_w0CqD4GX 0 4 576 3994 0 14 Dtool_w0CqD4GX 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_offset
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  2 uv 1 3983  
946 14 Dtool_w0CqO2Fz 0 4 576 3994 0 14 Dtool_w0CqO2Fz 441 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_offset
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 stage 1 4012  1 u 1 3979  1 v 1 3979  
947 14 Dtool_w0Cqa1iX 0 4 577 3994 0 14 Dtool_w0Cqa1iX 483 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_rotate
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, clockwise in degrees, to UV's
//               for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 stage 1 4012  1 r 1 3979  
948 14 Dtool_w0CqTo9d 0 4 577 3994 0 14 Dtool_w0CqTo9d 483 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_rotate
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, clockwise in degrees, to UV's
//               for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  1 r 1 3979  
949 14 Dtool_w0CqKMt1 0 4 578 3994 0 14 Dtool_w0CqKMt1 439 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 stage 1 4012  5 scale 1 3983  
950 14 Dtool_w0CquHy1 0 4 578 3994 0 14 Dtool_w0CquHy1 414 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 stage 1 4012  5 scale 1 3973  
951 14 Dtool_w0Cqr_zt 0 4 578 3994 0 14 Dtool_w0Cqr_zt 437 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for 2-d or 3-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 stage 1 4012  5 scale 1 3979  
952 14 Dtool_w0Cqm0Lh 0 4 578 3994 0 14 Dtool_w0Cqm0Lh 439 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 other 1 4056  5 stage 1 4012  2 su 1 3979  2 sv 1 3979  
953 14 Dtool_w0CqcmSt 0 4 578 3994 0 14 Dtool_w0CqcmSt 414 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  5 other 1 4056  5 stage 1 4012  2 su 1 3979  2 sv 1 3979  2 sw 1 3979  
954 14 Dtool_w0CqNnAk 0 4 578 3994 0 14 Dtool_w0CqNnAk 439 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  5 scale 1 3983  
955 14 Dtool_w0Cq0xBk 0 4 578 3994 0 14 Dtool_w0Cq0xBk 414 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  5 scale 1 3973  
956 14 Dtool_w0CqPODC 0 4 578 3994 0 14 Dtool_w0CqPODC 438 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 2-d or 3-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  5 scale 1 3979  
957 14 Dtool_w0CqsV2O 0 4 578 3994 0 14 Dtool_w0CqsV2O 439 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UV's for the given stage.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 stage 1 4012  2 su 1 3979  2 sv 1 3979  
958 14 Dtool_w0Cqge4h 0 4 578 3994 0 14 Dtool_w0Cqge4h 414 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_scale
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated scale to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 stage 1 4012  2 su 1 3979  2 sv 1 3979  2 sw 1 3979  
959 14 Dtool_w0CqtMN_ 0 7 579 3992 0 14 Dtool_w0CqtMN_ 417 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_offset
//       Access: Published
//  Description: Returns the offset set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  5 stage 1 4012  
960 14 Dtool_w0CqOSVy 0 7 579 3992 0 14 Dtool_w0CqOSVy 417 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_offset
//       Access: Published
//  Description: Returns the offset set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
961 14 Dtool_w0CqgsWE 0 6 580 3979 0 14 Dtool_w0CqgsWE 419 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_rotate
//       Access: Published
//  Description: Returns the rotation set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  5 stage 1 4012  
962 14 Dtool_w0CqF4f4 0 6 580 3979 0 14 Dtool_w0CqF4f4 419 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_rotate
//       Access: Published
//  Description: Returns the rotation set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
963 14 Dtool_w0CqhlUo 0 7 581 3992 0 14 Dtool_w0CqhlUo 415 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_scale
//       Access: Published
//  Description: Returns the scale set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  5 stage 1 4012  
964 14 Dtool_w0Cq6J_f 0 7 581 3992 0 14 Dtool_w0Cq6J_f 415 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_scale
//       Access: Published
//  Description: Returns the scale set for the UV's for the given
//               stage on the current node.
//
//               This call is appropriate for ordinary 2-d texture
//               coordinates.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
965 14 Dtool_w0Cq21PM 0 4 582 3994 0 14 Dtool_w0Cq21PM 413 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_pos
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 stage 1 4012  3 uvw 1 3973  
966 14 Dtool_w0Cq1363 0 4 582 3994 0 14 Dtool_w0Cq1363 413 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_pos
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  5 other 1 4056  5 stage 1 4012  1 u 1 3979  1 v 1 3979  1 w 1 3979  
967 14 Dtool_w0CqABBU 0 4 582 3994 0 14 Dtool_w0CqABBU 413 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_pos
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  3 uvw 1 3973  
968 14 Dtool_w0CqV77u 0 4 582 3994 0 14 Dtool_w0CqV77u 413 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_pos
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated offset to UVW's for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 stage 1 4012  1 u 1 3979  1 v 1 3979  1 w 1 3979  
969 14 Dtool_w0Cqvv9z 0 4 583 3994 0 14 Dtool_w0Cqvv9z 447 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_hpr
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, as a 3-D HPR, to UVW's
//               for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 other 1 4056  5 stage 1 4012  3 hpr 1 3973  
970 14 Dtool_w0CqWzpf 0 4 583 3994 0 14 Dtool_w0CqWzpf 447 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_hpr
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, as a 3-D HPR, to UVW's
//               for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  5 other 1 4056  5 stage 1 4012  1 h 1 3979  1 p 1 3979  1 r 1 3979  
971 14 Dtool_w0CqMiv7 0 4 583 3994 0 14 Dtool_w0CqMiv7 447 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_hpr
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, as a 3-D HPR, to UVW's
//               for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  3 hpr 1 3973  
972 14 Dtool_w0Cqo_oW 0 4 583 3994 0 14 Dtool_w0Cqo_oW 447 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_hpr
//       Access: Published
//  Description: Sets a texture matrix on the current node to apply
//               the indicated rotation, as a 3-D HPR, to UVW's
//               for the given stage.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 stage 1 4012  1 h 1 3979  1 p 1 3979  1 r 1 3979  
973 14 Dtool_w0CqJ7Vi 0 7 584 4062 0 14 Dtool_w0CqJ7Vi 389 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_pos
//       Access: Published
//  Description: Returns the offset set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  5 stage 1 4012  
974 14 Dtool_w0Cqpg2Y 0 7 584 4062 0 14 Dtool_w0Cqpg2Y 389 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_pos
//       Access: Published
//  Description: Returns the offset set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
975 14 Dtool_w0CqH0DK 0 7 585 4062 0 14 Dtool_w0CqH0DK 390 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_hpr
//       Access: Published
//  Description: Returns the 3-D HPR set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  5 stage 1 4012  
976 14 Dtool_w0Cq_wiA 0 7 585 4062 0 14 Dtool_w0Cq_wiA 390 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_hpr
//       Access: Published
//  Description: Returns the 3-D HPR set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
977 14 Dtool_w0CqbZgd 0 7 586 4062 0 14 Dtool_w0CqbZgd 393 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_scale_3d
//       Access: Published
//  Description: Returns the scale set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  5 other 1 4056  5 stage 1 4012  
978 14 Dtool_w0CqKAhK 0 7 586 4062 0 14 Dtool_w0CqKAhK 393 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_scale_3d
//       Access: Published
//  Description: Returns the scale set for the UVW's for the given
//               stage on the current node.
//
//               This call is appropriate for 3-d texture coordinates.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
979 14 Dtool_w0CqlhYh 0 4 587 3994 0 14 Dtool_w0CqlhYh 468 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_gen
//       Access: Published
//  Description: Enables automatic texture coordinate generation for
//               the indicated texture stage.  This version of this
//               method is useful when setting M_constant, which
//               requires a constant texture coordinate value.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 stage 1 4012  4 mode 1 3843  14 constant_value 1 3989  8 priority 1 3971  
980 14 Dtool_w0Cq9yfZ 0 4 587 3994 0 14 Dtool_w0Cq9yfZ 468 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_gen
//       Access: Published
//  Description: Enables automatic texture coordinate generation for
//               the indicated texture stage.  This version of this
//               method is useful when setting M_constant, which
//               requires a constant texture coordinate value.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 stage 1 4012  4 mode 1 3843  14 constant_value 1 3989  
981 14 Dtool_w0CqJT_E 0 4 587 3994 0 14 Dtool_w0CqJT_E 607 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_gen
//       Access: Published
//  Description: Enables automatic texture coordinate generation for
//               the indicated texture stage.  This version of this
//               method is useful when setting M_light_vector, which
//               requires the name of the texture coordinate set that
//               supplies the tangent and binormal, as well as the
//               specific light to generate coordinates for.
//////////////////////////////////////////////////////////////////// 6 4 this 3 4055  5 stage 1 4012  4 mode 1 3843  11 source_name 1 4028  5 light 1 4056  8 priority 1 3971  
982 14 Dtool_w0Cqrgep 0 4 587 3994 0 14 Dtool_w0Cqrgep 607 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_gen
//       Access: Published
//  Description: Enables automatic texture coordinate generation for
//               the indicated texture stage.  This version of this
//               method is useful when setting M_light_vector, which
//               requires the name of the texture coordinate set that
//               supplies the tangent and binormal, as well as the
//               specific light to generate coordinates for.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 stage 1 4012  4 mode 1 3843  11 source_name 1 4028  5 light 1 4056  
983 14 Dtool_w0CqEZu2 0 4 587 3994 0 14 Dtool_w0CqEZu2 318 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_gen
//       Access: Published
//  Description: Enables automatic texture coordinate generation for
//               the indicated texture stage.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 stage 1 4012  4 mode 1 3843  8 priority 1 3971  
984 14 Dtool_w0Cqz8w0 0 4 587 3994 0 14 Dtool_w0Cqz8w0 318 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_gen
//       Access: Published
//  Description: Enables automatic texture coordinate generation for
//               the indicated texture stage.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  5 stage 1 4012  4 mode 1 3843  
985 14 Dtool_w0CqiojB 0 4 588 3994 0 14 Dtool_w0CqiojB 324 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_gen
//       Access: Published
//  Description: Removes the texture coordinate generation mode from
//               all texture stages on this node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
986 14 Dtool_w0CqY_YK 0 4 588 3994 0 14 Dtool_w0CqY_YK 321 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_gen
//       Access: Published
//  Description: Disables automatic texture coordinate generation for
//               the indicated texture stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 stage 1 4012  
987 14 Dtool_w0CqePbA 0 6 589 3970 0 14 Dtool_w0CqePbA 371 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_tex_gen
//       Access: Published
//  Description: Returns true if there is a mode for automatic texture
//               coordinate generation on the current node for the
//               given stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
988 14 Dtool_w0Cq7MOY 0 6 590 3843 0 14 Dtool_w0Cq7MOY 385 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_gen
//       Access: Published
//  Description: Returns the texture coordinate generation mode for
//               the given stage, or M_off if there is no explicit
//               mode set for the given stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
989 14 Dtool_w0CquoW2 0 7 591 4055 2948 14 Dtool_w0CquoW2 486 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_gen_light
//       Access: Published
//  Description: Returns the particular Light set for the indicated
//               texgen mode's texture stage, or empty NodePath if no
//               light is set.  This is only meaningful if the texgen
//               mode (returned by get_tex_gen()) is M_light_vector.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
990 14 Dtool_w0CqIC4h 0 4 592 3994 0 14 Dtool_w0CqIC4h 877 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_projector
//       Access: Published
//  Description: Establishes a TexProjectorEffect on this node, which
//               can be used to establish projective texturing (but
//               see also the NodePath::project_texture() convenience
//               function), or it can be used to bind this node's
//               texture transform to particular node's position in
//               space, allowing a LerpInterval (for instance) to
//               adjust this node's texture coordinates.
//
//               If to is a LensNode, then the fourth parameter,
//               lens_index, can be provided to select a particular
//               lens to apply.  Otherwise lens_index is not used.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4055  5 stage 1 4012  4 from 1 4056  2 to 1 4056  10 lens_index 1 3971  
991 14 Dtool_w0CqvD7f 0 4 592 3994 0 14 Dtool_w0CqvD7f 877 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tex_projector
//       Access: Published
//  Description: Establishes a TexProjectorEffect on this node, which
//               can be used to establish projective texturing (but
//               see also the NodePath::project_texture() convenience
//               function), or it can be used to bind this node's
//               texture transform to particular node's position in
//               space, allowing a LerpInterval (for instance) to
//               adjust this node's texture coordinates.
//
//               If to is a LensNode, then the fourth parameter,
//               lens_index, can be provided to select a particular
//               lens to apply.  Otherwise lens_index is not used.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 stage 1 4012  4 from 1 4056  2 to 1 4056  
992 14 Dtool_w0CqfHQL 0 4 593 3994 0 14 Dtool_w0CqfHQL 307 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_projector
//       Access: Published
//  Description: Removes the TexProjectorEffect for all stages from
//               this node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
993 14 Dtool_w0CqYLcC 0 4 593 3994 0 14 Dtool_w0CqYLcC 316 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tex_projector
//       Access: Published
//  Description: Removes the TexProjectorEffect for the indicated
//               stage from this node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 stage 1 4012  
994 14 Dtool_w0Cqmg0n 0 6 594 3970 0 14 Dtool_w0Cqmg0n 336 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_tex_projector
//       Access: Published
//  Description: Returns true if this node has a TexProjectorEffect
//               for the indicated stage, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
995 14 Dtool_w0Cqqz7d 0 7 595 4055 2948 14 Dtool_w0Cqqz7d 510 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_projector_from
//       Access: Published
//  Description: Returns the "from" node associated with the
//               TexProjectorEffect on the indicated stage.  The
//               relative transform between the "from" and the "to"
//               nodes is automatically applied to the texture
//               transform each frame.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
996 14 Dtool_w0CqQ1wy 0 7 596 4055 2948 14 Dtool_w0CqQ1wy 506 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tex_projector_to
//       Access: Published
//  Description: Returns the "to" node associated with the
//               TexProjectorEffect on the indicated stage.  The
//               relative transform between the "from" and the "to"
//               nodes is automatically applied to the texture
//               transform each frame.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
997 14 Dtool_w0CqyMJ7 0 4 597 3994 0 14 Dtool_w0CqyMJ7 440 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::project_texture
//       Access: Published
//  Description: A convenience function to enable projective texturing
//               at this node level and below, using the indicated
//               NodePath (which should contain a LensNode) as the
//               projector.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  5 stage 1 4012  3 tex 1 4071  9 projector 1 4056  
998 14 Dtool_w0Cqfb_F 0 4 598 3994 0 14 Dtool_w0Cqfb_F 270 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_project_texture
//       Access: Published
//  Description: Undoes the effect of project_texture().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 stage 1 4012  
999 14 Dtool_w0CqYC8w 0 4 599 3994 0 14 Dtool_w0CqYC8w 1173 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_normal_map
//       Access: Published
//  Description: A convenience function to set up a normal map on this
//               geometry.  This uses the single highest-priority
//               light on the object only.  It also requires
//               multitexture, and consumes at least two texture
//               stages, in addition to what may already be in use.
//
//               The normal_map parameter is the texture that contains
//               the normal map information (with a 3-d delta vector
//               encoded into the r,g,b of each texel).  texcoord_name is
//               the name of the texture coordinate set that contains
//               the tangent and binormal we wish to use.  If
//               preserve_color is true, then one additional texture
//               stage is consumed to blend in the geometry's original
//               vertex color.
//
//               Only one normal map may be in effect through this
//               interface at any given time.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  10 normal_map 1 4071  13 texcoord_name 1 4028  14 preserve_color 1 3970  
1000 14 Dtool_w0CqJu3s 0 4 599 3994 0 14 Dtool_w0CqJu3s 1173 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_normal_map
//       Access: Published
//  Description: A convenience function to set up a normal map on this
//               geometry.  This uses the single highest-priority
//               light on the object only.  It also requires
//               multitexture, and consumes at least two texture
//               stages, in addition to what may already be in use.
//
//               The normal_map parameter is the texture that contains
//               the normal map information (with a 3-d delta vector
//               encoded into the r,g,b of each texel).  texcoord_name is
//               the name of the texture coordinate set that contains
//               the tangent and binormal we wish to use.  If
//               preserve_color is true, then one additional texture
//               stage is consumed to blend in the geometry's original
//               vertex color.
//
//               Only one normal map may be in effect through this
//               interface at any given time.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  10 normal_map 1 4071  13 texcoord_name 1 4028  
1001 14 Dtool_w0CqKP3Z 0 4 599 3994 0 14 Dtool_w0CqKP3Z 1173 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_normal_map
//       Access: Published
//  Description: A convenience function to set up a normal map on this
//               geometry.  This uses the single highest-priority
//               light on the object only.  It also requires
//               multitexture, and consumes at least two texture
//               stages, in addition to what may already be in use.
//
//               The normal_map parameter is the texture that contains
//               the normal map information (with a 3-d delta vector
//               encoded into the r,g,b of each texel).  texcoord_name is
//               the name of the texture coordinate set that contains
//               the tangent and binormal we wish to use.  If
//               preserve_color is true, then one additional texture
//               stage is consumed to blend in the geometry's original
//               vertex color.
//
//               Only one normal map may be in effect through this
//               interface at any given time.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  10 normal_map 1 4071  
1002 14 Dtool_w0Cq8D80 0 4 600 3994 0 14 Dtool_w0Cq8D80 300 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_normal_map
//       Access: Published
//  Description: Undoes the effect of a previous call to
//               set_normal_map().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1003 14 Dtool_w0Cqbkyv 0 6 601 3970 0 14 Dtool_w0Cqbkyv 467 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_texcoord
//       Access: Published
//  Description: Returns true if there are at least some vertices at
//               this node and below that use the named texture
//               coordinate set, false otherwise.  Pass the empty
//               string for the default texture coordinate set.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  13 texcoord_name 1 4028  
1004 14 Dtool_w0CqO0Oo 0 6 602 3970 0 14 Dtool_w0CqO0Oo 598 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_vertex_column
//       Access: Published
//  Description: Returns true if there are at least some vertices at
//               this node and below that contain a reference to the
//               indicated vertex data column name, false otherwise.
//
//               This is particularly useful for testing whether a
//               particular model has a given texture coordinate set
//               (but see has_texcoord()).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4076  
1005 14 Dtool_w0Cq5Dji 0 7 603 4123 3324 14 Dtool_w0Cq5Dji 352 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_vertex_columns
//       Access: Published
//  Description: Returns a list of all vertex array columns stored on
//               some geometry found at this node level and below.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1006 14 Dtool_w0CqOz5o 0 7 603 4123 3324 14 Dtool_w0CqOz5o 456 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_vertex_columns
//       Access: Published
//  Description: Returns a list of all vertex array columns stored on
//               some geometry found at this node level and below that
//               match the indicated name (which may contain wildcard
//               characters).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4028  
1007 14 Dtool_w0CqUJtH 0 7 604 4123 3324 14 Dtool_w0CqUJtH 341 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_texcoords
//       Access: Published
//  Description: Returns a list of all texture coordinate sets used by
//               any geometry at this node level and below.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1008 14 Dtool_w0Cqw73q 0 7 604 4123 3324 14 Dtool_w0Cqw73q 445 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_texcoords
//       Access: Published
//  Description: Returns a list of all texture coordinate sets used by
//               any geometry at this node level and below that match
//               the indicated name (which may contain wildcard
//               characters).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4028  
1009 14 Dtool_w0Cqlksv 0 7 605 4071 0 14 Dtool_w0Cqlksv 454 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_texture
//       Access: Published
//  Description: Returns the first texture found applied to geometry
//               at this node or below that is assigned to the
//               indicated texture stage.  Returns the texture if it
//               is found, or NULL if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
1010 14 Dtool_w0Cqj98A 0 7 605 4071 0 14 Dtool_w0Cqj98A 468 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_texture
//       Access: Published
//  Description: Returns the first texture found applied to geometry
//               at this node or below that matches the indicated name
//               (which may contain wildcards).  Returns the texture
//               if it is found, or NULL if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4028  
1011 14 Dtool_w0Cq_z1D 0 7 606 4125 0 14 Dtool_w0Cq_z1D 316 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_textures
//       Access: Published
//  Description: Returns a list of a textures applied to geometry at
//               this node and below.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1012 14 Dtool_w0CqZ8Sw 0 7 606 4125 0 14 Dtool_w0CqZ8Sw 374 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_textures
//       Access: Published
//  Description: Returns a list of a textures on geometry at
//               this node and below that are assigned to the
//               indicated texture stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 stage 1 4012  
1013 14 Dtool_w0CqEW3S 0 7 606 4125 0 14 Dtool_w0CqEW3S 403 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_textures
//       Access: Published
//  Description: Returns a list of a textures applied to geometry at
//               this node and below that match the indicated name
//               (which may contain wildcard characters).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4028  
1014 14 Dtool_w0CqLz_1 0 7 607 4012 0 14 Dtool_w0CqLz_1 500 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_texture_stage
//       Access: Published
//  Description: Returns the first TextureStage found applied to
//               geometry at this node or below that matches the
//               indicated name (which may contain wildcards).
//               Returns the TextureStage if it is found, or NULL if
//               it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4028  
1015 14 Dtool_w0Cqcefu 0 7 608 4126 3753 14 Dtool_w0Cqcefu 327 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_texture_stages
//       Access: Published
//  Description: Returns a list of a TextureStages applied to geometry
//               at this node and below.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1016 14 Dtool_w0CqvG20 0 7 608 4126 3753 14 Dtool_w0CqvG20 414 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_texture_stages
//       Access: Published
//  Description: Returns a list of a TextureStages applied to geometry
//               at this node and below that match the indicated name
//               (which may contain wildcard characters).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4028  
1017 14 Dtool_w0CqPvtN 0 4 609 3994 0 14 Dtool_w0CqPvtN 615 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::unify_texture_stages
//       Access: Published
//  Description: Searches through all TextureStages at this node and
//               below.  Any TextureStages that share the same name as
//               the indicated TextureStage object are replaced with
//               this object, thus ensuring that all geometry at this
//               node and below with a particular TextureStage name is
//               using the same TextureStage object.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  5 stage 1 4012  
1018 14 Dtool_w0CqlB4h 0 7 610 4128 0 14 Dtool_w0CqlB4h 471 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_material
//       Access: Published
//  Description: Returns the first material found applied to geometry
//               at this node or below that matches the indicated name
//               (which may contain wildcards).  Returns the material
//               if it is found, or NULL if it is not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4028  
1019 14 Dtool_w0Cqnq8r 0 7 611 4129 3443 14 Dtool_w0Cqnq8r 318 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_materials
//       Access: Published
//  Description: Returns a list of a materials applied to geometry at
//               this node and below.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1020 14 Dtool_w0Cq66GP 0 7 611 4129 3443 14 Dtool_w0Cq66GP 405 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_all_materials
//       Access: Published
//  Description: Returns a list of a materials applied to geometry at
//               this node and below that match the indicated name
//               (which may contain wildcard characters).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 name 1 4028  
1021 14 Dtool_w0CqfZam 0 4 612 3994 0 14 Dtool_w0CqfZam 486 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_material
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using the indicated material.
//
//               Previously, this operation made a copy of the
//               material structure, but nowadays it assigns the
//               pointer directly.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  3 tex 1 4128  8 priority 1 3971  
1022 14 Dtool_w0Cq2Xcl 0 4 612 3994 0 14 Dtool_w0Cq2Xcl 486 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_material
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using the indicated material.
//
//               Previously, this operation made a copy of the
//               material structure, but nowadays it assigns the
//               pointer directly.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 tex 1 4128  
1023 14 Dtool_w0CqgcpR 0 4 613 3994 0 14 Dtool_w0CqgcpR 567 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_material_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no material.  This is normally the default, but
//               it may be useful to use this to contradict
//               set_material() at a higher node level (or, with a
//               priority, to override a set_material() at a lower
//               level).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
1024 14 Dtool_w0Cq_bEb 0 4 613 3994 0 14 Dtool_w0Cq_bEb 567 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_material_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no material.  This is normally the default, but
//               it may be useful to use this to contradict
//               set_material() at a higher node level (or, with a
//               priority, to override a set_material() at a lower
//               level).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1025 14 Dtool_w0CqBVUw 0 4 614 3994 0 14 Dtool_w0CqBVUw 369 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_material
//       Access: Published
//  Description: Completely removes any material adjustment that may
//               have been set via set_material() from this particular
//               node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1026 14 Dtool_w0CqV_e6 0 6 615 3970 0 14 Dtool_w0CqV_e6 343 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_material
//       Access: Published
//  Description: Returns true if a material has been applied to this
//               particular node via set_material(), false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1027 14 Dtool_w0Cqr_RS 0 7 616 4128 0 14 Dtool_w0Cqr_RS 609 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_material
//       Access: Published
//  Description: Returns the material that has been set on this
//               particular node, or NULL if no material has been set.
//               This is not necessarily the material that will be
//               applied to the geometry at or below this level, as
//               another material at a higher or lower level may
//               override.
//               See also find_material().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1028 14 Dtool_w0CqmIDI 0 4 617 3994 0 14 Dtool_w0CqmIDI 310 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fog
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using the indicated fog.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  3 fog 1 4130  8 priority 1 3971  
1029 14 Dtool_w0CqvA0X 0 4 617 3994 0 14 Dtool_w0CqvA0X 310 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fog
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using the indicated fog.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 fog 1 4130  
1030 14 Dtool_w0Cq9qa5 0 4 618 3994 0 14 Dtool_w0Cq9qa5 547 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fog_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no fog.  This is normally the default, but
//               it may be useful to use this to contradict
//               set_fog() at a higher node level (or, with a
//               priority, to override a set_fog() at a lower
//               level).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
1031 14 Dtool_w0CqfgI_ 0 4 618 3994 0 14 Dtool_w0CqfgI_ 547 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_fog_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no fog.  This is normally the default, but
//               it may be useful to use this to contradict
//               set_fog() at a higher node level (or, with a
//               priority, to override a set_fog() at a lower
//               level).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1032 14 Dtool_w0CqPL5h 0 4 619 3994 0 14 Dtool_w0CqPL5h 491 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_fog
//       Access: Published
//  Description: Completely removes any fog adjustment that may
//               have been set via set_fog() or set_fog_off()
//               from this particular node.  This allows whatever
//               fogs might be otherwise affecting the geometry to
//               show instead.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1033 14 Dtool_w0CqJ3dh 0 6 620 3970 0 14 Dtool_w0CqJ3dh 556 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_fog
//       Access: Published
//  Description: Returns true if a fog has been applied to this
//               particular node via set_fog(), false otherwise.
//               This is not the same thing as asking whether the
//               geometry at this node will be rendered with
//               fog, as there may be a fog in effect from a higher or
//               lower level.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1034 14 Dtool_w0CqXW1z 0 6 621 3970 0 14 Dtool_w0CqXW1z 579 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_fog_off
//       Access: Published
//  Description: Returns true if a fog has been specifically
//               disabled on this particular node via
//               set_fog_off(), false otherwise.  This is not the
//               same thing as asking whether the geometry at this
//               node will be rendered unfogged, as there may be a
//               fog in effect from a higher or lower level.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1035 14 Dtool_w0CqW3Q5 0 7 622 4130 2486 14 Dtool_w0CqW3Q5 541 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_fog
//       Access: Published
//  Description: Returns the fog that has been set on this
//               particular node, or NULL if no fog has been set.
//               This is not necessarily the fog that will be
//               applied to the geometry at or below this level, as
//               another fog at a higher or lower level may
//               override.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1036 14 Dtool_w0Cq3mJB 0 4 623 3994 0 14 Dtool_w0Cq3mJB 345 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_wireframe
//       Access: Published
//  Description: Sets up the geometry at this level and below (unless
//               overridden) to render in wireframe mode.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
1037 14 Dtool_w0CqE5Vy 0 4 623 3994 0 14 Dtool_w0CqE5Vy 345 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_wireframe
//       Access: Published
//  Description: Sets up the geometry at this level and below (unless
//               overridden) to render in wireframe mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1038 14 Dtool_w0CqGdFx 0 4 624 3994 0 14 Dtool_w0CqGdFx 377 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_filled
//       Access: Published
//  Description: Sets up the geometry at this level and below (unless
//               overridden) to render in filled (i.e. not wireframe)
//               mode.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
1039 14 Dtool_w0CqMX6K 0 4 624 3994 0 14 Dtool_w0CqMX6K 377 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_filled
//       Access: Published
//  Description: Sets up the geometry at this level and below (unless
//               overridden) to render in filled (i.e. not wireframe)
//               mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1040 14 Dtool_w0CqUTvr 0 4 625 3994 0 14 Dtool_w0CqUTvr 690 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_thickness
//       Access: Published
//  Description: Sets up the point geometry at this level and below to
//               render as thick points (that is, billboarded
//               quads).  The thickness is in pixels, unless
//               set_render_mode_perspective is also true, in which
//               case it is in 3-D units.
//
//               If you want the quads to be individually textured,
//               you should also set a TexGenAttrib::M_point_sprite on
//               the node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  9 thickness 1 3979  8 priority 1 3971  
1041 14 Dtool_w0Cq2aA_ 0 4 625 3994 0 14 Dtool_w0Cq2aA_ 690 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_thickness
//       Access: Published
//  Description: Sets up the point geometry at this level and below to
//               render as thick points (that is, billboarded
//               quads).  The thickness is in pixels, unless
//               set_render_mode_perspective is also true, in which
//               case it is in 3-D units.
//
//               If you want the quads to be individually textured,
//               you should also set a TexGenAttrib::M_point_sprite on
//               the node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  9 thickness 1 3979  
1042 14 Dtool_w0CqaI_p 0 4 626 3994 0 14 Dtool_w0CqaI_p 822 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_perspective
//       Access: Published
//  Description: Sets up the point geometry at this level and below to
//               render as perspective sprites (that is, billboarded
//               quads).  The thickness, as specified with
//               set_render_mode_thickness(), is the width of each
//               point in 3-D units, unless it is overridden on a
//               per-vertex basis.  This does not affect geometry
//               other than points.
//
//               If you want the quads to be individually textured,
//               you should also set a TexGenAttrib::M_point_sprite on
//               the node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  11 perspective 1 3970  8 priority 1 3971  
1043 14 Dtool_w0Cq0c2x 0 4 626 3994 0 14 Dtool_w0Cq0c2x 822 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode_perspective
//       Access: Published
//  Description: Sets up the point geometry at this level and below to
//               render as perspective sprites (that is, billboarded
//               quads).  The thickness, as specified with
//               set_render_mode_thickness(), is the width of each
//               point in 3-D units, unless it is overridden on a
//               per-vertex basis.  This does not affect geometry
//               other than points.
//
//               If you want the quads to be individually textured,
//               you should also set a TexGenAttrib::M_point_sprite on
//               the node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  11 perspective 1 3970  
1044 14 Dtool_w0CqTIPs 0 4 627 3994 0 14 Dtool_w0CqTIPs 407 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode
//       Access: Published
//  Description: Sets up the geometry at this level and below (unless
//               overridden) to render in the specified mode and with
//               the indicated line and/or point thickness.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  4 mode 1 3845  9 thickness 1 3979  8 priority 1 3971  
1045 14 Dtool_w0CqGV0g 0 4 627 3994 0 14 Dtool_w0CqGV0g 407 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_render_mode
//       Access: Published
//  Description: Sets up the geometry at this level and below (unless
//               overridden) to render in the specified mode and with
//               the indicated line and/or point thickness.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  4 mode 1 3845  9 thickness 1 3979  
1046 14 Dtool_w0Cq65TZ 0 4 628 3994 0 14 Dtool_w0Cq65TZ 420 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_render_mode
//       Access: Published
//  Description: Completely removes any render mode adjustment that
//               may have been set on this node via
//               set_render_mode_wireframe() or
//               set_render_mode_filled().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1047 14 Dtool_w0CqnDaf 0 6 629 3970 0 14 Dtool_w0CqnDaf 454 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_render_mode
//       Access: Published
//  Description: Returns true if a render mode has been explicitly set
//               on this particular node via set_render_mode() (or
//               set_render_mode_wireframe() or
//               set_render_mode_filled()), false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1048 14 Dtool_w0CqACN3 0 6 630 3845 0 14 Dtool_w0CqACN3 389 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_render_mode
//       Access: Published
//  Description: Returns the render mode that has been specifically
//               set on this node via set_render_mode(), or
//               M_unchanged if nothing has been set.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1049 14 Dtool_w0CqUPaP 0 6 631 3979 0 14 Dtool_w0CqUPaP 401 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_render_mode_thickness
//       Access: Published
//  Description: Returns the render mode thickness that has been
//               specifically set on this node via set_render_mode(),
//               or 1.0 if nothing has been set.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1050 14 Dtool_w0CqpnN2 0 6 632 3970 0 14 Dtool_w0CqpnN2 387 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_render_mode_perspective
//       Access: Published
//  Description: Returns the flag that has been set on this node via
//               set_render_mode_perspective(), or false if no flag
//               has been set.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1051 14 Dtool_w0CqUKd_ 0 4 633 3994 0 14 Dtool_w0CqUKd_ 511 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_two_sided
//       Access: Published
//  Description: Specifically sets or disables two-sided rendering
//               mode on this particular node.  If no other nodes
//               override, this will cause backfacing polygons to be
//               drawn (in two-sided mode, true) or culled (in
//               one-sided mode, false).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  9 two_sided 1 3970  8 priority 1 3971  
1052 14 Dtool_w0Cq_M_e 0 4 633 3994 0 14 Dtool_w0Cq_M_e 511 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_two_sided
//       Access: Published
//  Description: Specifically sets or disables two-sided rendering
//               mode on this particular node.  If no other nodes
//               override, this will cause backfacing polygons to be
//               drawn (in two-sided mode, true) or culled (in
//               one-sided mode, false).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  9 two_sided 1 3970  
1053 14 Dtool_w0CqoJBF 0 4 634 3994 0 14 Dtool_w0CqoJBF 640 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_two_sided
//       Access: Published
//  Description: Completely removes any two-sided adjustment that
//               may have been set on this node via set_two_sided().
//               The geometry at this level and below will
//               subsequently be rendered either two-sided or
//               one-sided, according to whatever other nodes may have
//               had set_two_sided() on it, or according to the
//               initial state otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1054 14 Dtool_w0CqotTb 0 6 635 3970 0 14 Dtool_w0CqotTb 489 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_two_sided
//       Access: Published
//  Description: Returns true if a two-sided adjustment has been
//               explicitly set on this particular node via
//               set_two_sided().  If this returns true, then
//               get_two_sided() may be called to determine which has
//               been set.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1055 14 Dtool_w0CqFtGz 0 6 636 3970 0 14 Dtool_w0CqFtGz 681 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_two_sided
//       Access: Published
//  Description: Returns true if two-sided rendering has been
//               specifically set on this node via set_two_sided(), or
//               false if one-sided rendering has been specifically
//               set, or if nothing has been specifically set.  See
//               also has_two_sided().  This does not necessarily
//               imply that the geometry will or will not be rendered
//               two-sided, as there may be other nodes that override.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1056 14 Dtool_w0CqY7DP 0 4 637 3994 0 14 Dtool_w0CqY7DP 511 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_depth_test
//       Access: Published
//  Description: Specifically sets or disables the testing of the
//               depth buffer on this particular node.  This is
//               normally on in the 3-d scene graph and off in the 2-d
//               scene graph; it should be on for rendering most 3-d
//               objects properly.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  10 depth_test 1 3970  8 priority 1 3971  
1057 14 Dtool_w0Cq2UQ_ 0 4 637 3994 0 14 Dtool_w0Cq2UQ_ 511 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_depth_test
//       Access: Published
//  Description: Specifically sets or disables the testing of the
//               depth buffer on this particular node.  This is
//               normally on in the 3-d scene graph and off in the 2-d
//               scene graph; it should be on for rendering most 3-d
//               objects properly.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  10 depth_test 1 3970  
1058 14 Dtool_w0CqMMNz 0 4 638 3994 0 14 Dtool_w0CqMMNz 345 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_depth_test
//       Access: Published
//  Description: Completely removes any depth-test adjustment that
//               may have been set on this node via set_depth_test().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1059 14 Dtool_w0Cqgl7H 0 6 639 3970 0 14 Dtool_w0Cqgl7H 493 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_depth_test
//       Access: Published
//  Description: Returns true if a depth-test adjustment has been
//               explicitly set on this particular node via
//               set_depth_test().  If this returns true, then
//               get_depth_test() may be called to determine which has
//               been set.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1060 14 Dtool_w0CqNiuf 0 6 640 3970 0 14 Dtool_w0CqNiuf 535 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_depth_test
//       Access: Published
//  Description: Returns true if depth-test rendering has been
//               specifically set on this node via set_depth_test(), or
//               false if depth-test rendering has been specifically
//               disabled.  If nothing has been specifically set,
//               returns true.  See also has_depth_test().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1061 14 Dtool_w0Cqrwkt 0 4 641 3994 0 14 Dtool_w0Cqrwkt 512 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_depth_write
//       Access: Published
//  Description: Specifically sets or disables the writing to the
//               depth buffer on this particular node.  This is
//               normally on in the 3-d scene graph and off in the 2-d
//               scene graph; it should be on for rendering most 3-d
//               objects properly.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  11 depth_write 1 3970  8 priority 1 3971  
1062 14 Dtool_w0CqADOz 0 4 641 3994 0 14 Dtool_w0CqADOz 512 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_depth_write
//       Access: Published
//  Description: Specifically sets or disables the writing to the
//               depth buffer on this particular node.  This is
//               normally on in the 3-d scene graph and off in the 2-d
//               scene graph; it should be on for rendering most 3-d
//               objects properly.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  11 depth_write 1 3970  
1063 14 Dtool_w0CqwNqE 0 4 642 3994 0 14 Dtool_w0CqwNqE 348 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_depth_write
//       Access: Published
//  Description: Completely removes any depth-write adjustment that
//               may have been set on this node via set_depth_write().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1064 14 Dtool_w0CqQs8G 0 6 643 3970 0 14 Dtool_w0CqQs8G 497 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_depth_write
//       Access: Published
//  Description: Returns true if a depth-write adjustment has been
//               explicitly set on this particular node via
//               set_depth_write().  If this returns true, then
//               get_depth_write() may be called to determine which has
//               been set.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1065 14 Dtool_w0CqTsve 0 6 644 3970 0 14 Dtool_w0CqTsve 540 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_depth_write
//       Access: Published
//  Description: Returns true if depth-write rendering has been
//               specifically set on this node via set_depth_write(), or
//               false if depth-write rendering has been specifically
//               disabled.  If nothing has been specifically set,
//               returns true.  See also has_depth_write().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1066 14 Dtool_w0CqKKf_ 0 4 645 3994 0 14 Dtool_w0CqKKf_ 906 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_depth_offset
//       Access: Published
//  Description: This instructs the graphics driver to apply an
//               offset or bias to the generated depth values for
//               rendered polygons, before they are written to the
//               depth buffer. This can be used to shift polygons
//               forward slightly, to resolve depth conflicts, or
//               self-shadowing artifacts on thin objects.
//               The bias is always an integer number, and each
//               integer increment represents the smallest possible
//               increment in Z that is sufficient to completely
//               resolve two coplanar polygons. Positive numbers
//               are closer towards the camera.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  4 bias 1 3971  8 priority 1 3971  
1067 14 Dtool_w0CqgnKF 0 4 645 3994 0 14 Dtool_w0CqgnKF 906 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_depth_offset
//       Access: Published
//  Description: This instructs the graphics driver to apply an
//               offset or bias to the generated depth values for
//               rendered polygons, before they are written to the
//               depth buffer. This can be used to shift polygons
//               forward slightly, to resolve depth conflicts, or
//               self-shadowing artifacts on thin objects.
//               The bias is always an integer number, and each
//               integer increment represents the smallest possible
//               increment in Z that is sufficient to completely
//               resolve two coplanar polygons. Positive numbers
//               are closer towards the camera.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 bias 1 3971  
1068 14 Dtool_w0CqijjA 0 4 646 3994 0 14 Dtool_w0CqijjA 351 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_depth_offset
//       Access: Published
//  Description: Completely removes any depth-offset adjustment that
//               may have been set on this node via set_depth_offset().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1069 14 Dtool_w0CqDnrS 0 6 647 3970 0 14 Dtool_w0CqDnrS 501 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_depth_offset
//       Access: Published
//  Description: Returns true if a depth-offset adjustment has been
//               explicitly set on this particular node via
//               set_depth_offset().  If this returns true, then
//               get_depth_offset() may be called to determine which has
//               been set.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1070 14 Dtool_w0Cqeneq 0 6 648 3971 0 14 Dtool_w0Cqeneq 335 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_depth_offset
//       Access: Published
//  Description: Returns the depth offset value if it has been
//               specified using set_depth_offset, or 0 if not.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1071 14 Dtool_w0CqOIal 0 4 649 3994 0 14 Dtool_w0CqOIal 414 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::do_billboard_axis
//       Access: Published
//  Description: Performs a billboard-type rotate to the indicated
//               camera node, one time only, and leaves the object
//               rotated.  This is similar in principle to heads_up().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  6 camera 1 4056  6 offset 1 3979  
1072 14 Dtool_w0Cqbkbl 0 4 650 3994 0 14 Dtool_w0Cqbkbl 546 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::do_billboard_point_eye
//       Access: Published
//  Description: Performs a billboard-type rotate to the indicated
//               camera node, one time only, and leaves the object
//               rotated.  This is similar in principle to look_at(),
//               although the point_eye billboard effect cannot be
//               achieved using the ordinary look_at() call.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  6 camera 1 4056  6 offset 1 3979  
1073 14 Dtool_w0CqXJcU 0 4 651 3994 0 14 Dtool_w0CqXJcU 420 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::do_billboard_point_world
//       Access: Published
//  Description: Performs a billboard-type rotate to the indicated
//               camera node, one time only, and leaves the object
//               rotated.  This is similar in principle to look_at().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  6 camera 1 4056  6 offset 1 3979  
1074 14 Dtool_w0CqnoHV 0 4 652 3994 0 14 Dtool_w0CqnoHV 444 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_axis
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in two dimensions around the up axis,
//               towards a specified "camera" instead of to the
//               viewing camera.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  6 camera 1 4056  6 offset 1 3979  
1075 14 Dtool_w0CqMHYU 0 4 652 3994 0 14 Dtool_w0CqMHYU 347 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_axis
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in two dimensions around the up axis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  6 offset 1 3979  
1076 14 Dtool_w0CqxiDy 0 4 652 3994 0 14 Dtool_w0CqxiDy 347 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_axis
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in two dimensions around the up axis.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1077 14 Dtool_w0Cq3opV 0 4 653 3994 0 14 Dtool_w0Cq3opV 523 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_eye
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the top of the
//               camera, towards a specified "camera" instead of to
//               the viewing camera.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  6 camera 1 4056  6 offset 1 3979  
1078 14 Dtool_w0Cqg0MU 0 4 653 3994 0 14 Dtool_w0Cqg0MU 443 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_eye
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the top of the
//               camera.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  6 offset 1 3979  
1079 14 Dtool_w0CqXCeP 0 4 653 3994 0 14 Dtool_w0CqXCeP 443 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_eye
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the top of the
//               camera.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1080 14 Dtool_w0Cqnjg2 0 4 654 3994 0 14 Dtool_w0Cqnjg2 494 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_world
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the sky, towards a
//               specified "camera" instead of to the viewing camera.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  6 camera 1 4056  6 offset 1 3979  
1081 14 Dtool_w0CqOaqP 0 4 654 3994 0 14 Dtool_w0CqOaqP 414 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_world
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the sky.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  6 offset 1 3979  
1082 14 Dtool_w0CqKJae 0 4 654 3994 0 14 Dtool_w0CqKJae 414 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_billboard_point_world
//       Access: Published
//  Description: Puts a billboard transition on the node such that it
//               will rotate in three dimensions about the origin,
//               keeping its up vector oriented to the sky.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1083 14 Dtool_w0CqaATv 0 4 655 3994 0 14 Dtool_w0CqaATv 268 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_billboard
//       Access: Published
//  Description: Removes any billboard effect from the node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1084 14 Dtool_w0Cq3oWg 0 6 656 3970 0 14 Dtool_w0Cq3oWg 298 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_billboard
//       Access: Published
//  Description: Returns true if there is any billboard effect on
//               the node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1085 14 Dtool_w0CqLfMs 0 4 657 3994 0 14 Dtool_w0CqLfMs 459 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_compass
//       Access: Published
//  Description: Puts a compass effect on the node, so that it will
//               retain a fixed rotation relative to the reference
//               node (or render if the reference node is empty)
//               regardless of the transforms above it.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  9 reference 1 4056  
1086 14 Dtool_w0CqpaNt 0 4 657 3994 0 14 Dtool_w0CqpaNt 459 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_compass
//       Access: Published
//  Description: Puts a compass effect on the node, so that it will
//               retain a fixed rotation relative to the reference
//               node (or render if the reference node is empty)
//               regardless of the transforms above it.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1087 14 Dtool_w0CqT898 0 4 658 3994 0 14 Dtool_w0CqT898 264 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_compass
//       Access: Published
//  Description: Removes any compass effect from the node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1088 14 Dtool_w0CqqX5i 0 6 659 3970 0 14 Dtool_w0CqqX5i 294 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_compass
//       Access: Published
//  Description: Returns true if there is any compass effect on
//               the node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1089 14 Dtool_w0Cqqfz0 0 4 660 3994 0 14 Dtool_w0Cqqfz0 482 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_transparency
//       Access: Published
//  Description: Specifically sets or disables transparent rendering
//               mode on this particular node.  If no other nodes
//               override, this will cause items with a non-1 value
//               for alpha color to be rendered partially transparent.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  4 mode 1 3861  8 priority 1 3971  
1090 14 Dtool_w0CqdYx9 0 4 660 3994 0 14 Dtool_w0CqdYx9 482 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_transparency
//       Access: Published
//  Description: Specifically sets or disables transparent rendering
//               mode on this particular node.  If no other nodes
//               override, this will cause items with a non-1 value
//               for alpha color to be rendered partially transparent.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 mode 1 3861  
1091 14 Dtool_w0CqcU7Z 0 4 661 3994 0 14 Dtool_w0CqcU7Z 578 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_transparency
//       Access: Published
//  Description: Completely removes any transparency adjustment that
//               may have been set on this node via set_transparency().
//               The geometry at this level and below will
//               subsequently be rendered either transparent or not,
//               to whatever other nodes may have had
//               set_transparency() on them.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1092 14 Dtool_w0CqfD3E 0 6 662 3970 0 14 Dtool_w0CqfD3E 594 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_transparency
//       Access: Published
//  Description: Returns true if a transparent-rendering adjustment
//               has been explicitly set on this particular node via
//               set_transparency().  If this returns true, then
//               get_transparency() may be called to determine whether
//               transparency has been explicitly enabled or
//               explicitly disabled for this node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1093 14 Dtool_w0Cq4Coc 0 6 663 3861 0 14 Dtool_w0Cq4Coc 701 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_transparency
//       Access: Published
//  Description: Returns the transparent rendering that has been
//               specifically set on this node via set_transparency(), or
//               M_none if nontransparent rendering has been specifically
//               set, or if nothing has been specifically set.  See
//               also has_transparency().  This does not necessarily
//               imply that the geometry will or will not be rendered
//               transparent, as there may be other nodes that override.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1094 14 Dtool_w0CqC4tu 0 4 664 3994 0 14 Dtool_w0CqC4tu 340 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_antialias
//       Access: Published
//  Description: Specifies the antialiasing type that should be
//               applied at this node and below.  See AntialiasAttrib.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  4 mode 1 4021  8 priority 1 3971  
1095 14 Dtool_w0CqLHl2 0 4 664 3994 0 14 Dtool_w0CqLHl2 340 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_antialias
//       Access: Published
//  Description: Specifies the antialiasing type that should be
//               applied at this node and below.  See AntialiasAttrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 mode 1 4021  
1096 14 Dtool_w0CqVKqH 0 4 665 3994 0 14 Dtool_w0CqVKqH 339 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_antialias
//       Access: Published
//  Description: Completely removes any antialias setting that
//               may have been set on this node via set_antialias().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1097 14 Dtool_w0CqSWgH 0 6 666 3970 0 14 Dtool_w0CqSWgH 490 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_antialias
//       Access: Published
//  Description: Returns true if an antialias setting has been
//               explicitly mode on this particular node via
//               set_antialias().  If this returns true, then
//               get_antialias() may be called to determine what the
//               setting was.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1098 14 Dtool_w0Cq9RTf 0 6 667 4021 0 14 Dtool_w0Cq9RTf 390 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_antialias
//       Access: Published
//  Description: Returns the antialias setting that has been
//               specifically set on this node via set_antialias(), or
//               M_none if no setting has been made.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1099 14 Dtool_w0Cqg2wE 0 6 668 3970 0 14 Dtool_w0Cqg2wE 457 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_audio_volume
//       Access: Published
//  Description: Returns true if an audio volume has been applied
//               to the referenced node, false otherwise.  It is still
//               possible that volume at this node might have been
//               scaled by an ancestor node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1100 14 Dtool_w0Cqkl6M 0 4 669 3994 0 14 Dtool_w0Cqkl6M 504 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_audio_volume
//       Access: Published
//  Description: Completely removes any audio volume from the
//               referenced node.  This is preferable to simply
//               setting the audio volume to identity, as it also
//               removes the overhead associated with having an audio
//               volume at all.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1101 14 Dtool_w0CqVn34 0 4 670 3994 0 14 Dtool_w0CqVn34 274 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_audio_volume
//       Access: Published
//  Description: Sets the audio volume component of the transform
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  6 volume 1 3979  8 priority 1 3971  
1102 14 Dtool_w0CqnX3K 0 4 670 3994 0 14 Dtool_w0CqnX3K 274 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_audio_volume
//       Access: Published
//  Description: Sets the audio volume component of the transform
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  6 volume 1 3979  
1103 14 Dtool_w0Cq1cXV 0 4 671 3994 0 14 Dtool_w0Cq1cXV 787 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_audio_volume_off
//       Access: Published
//  Description: Disables any audio volume attribute inherited from
//               above.  This is not the same thing as
//               clear_audio_volume(), which undoes any previous
//               set_audio_volume() operation on this node; rather,
//               this actively disables any set_audio_volume() that
//               might be inherited from a parent node.
//
//               It is legal to specify a new volume on the same
//               node with a subsequent call to set_audio_volume();
//               this new scale will apply to lower nodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 priority 1 3971  
1104 14 Dtool_w0Cqvp9t 0 4 671 3994 0 14 Dtool_w0Cqvp9t 787 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_audio_volume_off
//       Access: Published
//  Description: Disables any audio volume attribute inherited from
//               above.  This is not the same thing as
//               clear_audio_volume(), which undoes any previous
//               set_audio_volume() operation on this node; rather,
//               this actively disables any set_audio_volume() that
//               might be inherited from a parent node.
//
//               It is legal to specify a new volume on the same
//               node with a subsequent call to set_audio_volume();
//               this new scale will apply to lower nodes.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1105 14 Dtool_w0Cq92jc 0 6 672 3979 0 14 Dtool_w0Cq92jc 460 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_audio_volume
//       Access: Published
//  Description: Returns the complete audio volume that has been
//               applied to this node via a previous call to
//               set_audio_volume(), or 1. (identity) if no volume has
//               been applied to this particular node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1106 14 Dtool_w0CqCLIx 0 6 673 3979 0 14 Dtool_w0CqCLIx 342 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_audio_volume
//       Access: Published
//  Description: Returns the complete audio volume for this node
//               taking highers nodes in the graph into account.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1107 14 Dtool_w0CqblUl 0 4 674 3994 0 14 Dtool_w0CqblUl 649 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::adjust_all_priorities
//       Access: Published
//  Description: Adds the indicated adjustment amount (which may be
//               negative) to the priority for all transitions on the
//               referenced node, and for all nodes in the subgraph
//               below.  This can be used to force these nodes not to
//               be overridden by a high-level state change above.  If
//               the priority would drop below zero, it is set to
//               zero.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  10 adjustment 1 3971  
1108 14 Dtool_w0CqDwv_ 0 4 675 3994 0 14 Dtool_w0CqDwv_ 493 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::show
//       Access: Published
//  Description: Undoes the effect of a previous hide() on this node:
//               makes the referenced node (and the entire subgraph
//               below this node) visible to all cameras.
//
//               This will not reveal the node if a parent node has
//               been hidden.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1109 14 Dtool_w0Cq4Srv 0 4 675 3994 0 14 Dtool_w0Cq4Srv 526 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::show
//       Access: Published
//  Description: Makes the referenced node visible just to the
//               cameras whose camera_mask shares the indicated bits.
//
//               This undoes the effect of a previous hide() call.  It
//               will not reveal the node if a parent node has been
//               hidden.  However, see show_through().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  11 camera_mask 1 4037  
1110 14 Dtool_w0Cq9Pk3 0 4 676 3994 0 14 Dtool_w0Cq9Pk3 513 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::show_through
//       Access: Published
//  Description: Makes the referenced node visible just to the
//               cameras whose camera_mask shares the indicated bits.
//
//               Unlike show(), this will reveal the node even if a
//               parent node has been hidden, thus "showing through" a
//               parent's hide().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1111 14 Dtool_w0Cqwpqz 0 4 676 3994 0 14 Dtool_w0Cqwpqz 705 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::show_through
//       Access: Published
//  Description: Makes the referenced node visible just to the
//               cameras whose camera_mask shares the indicated bits.
//
//               Unlike show(), this will reveal the node even if a
//               parent node has been hidden via the one-parameter
//               hide() method, thus "showing through" a parent's
//               hide().  (However, it will not show through a
//               parent's hide() call if the no-parameter form of
//               hide() was used.)
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  11 camera_mask 1 4037  
1112 14 Dtool_w0CqrDIm 0 4 677 3994 0 14 Dtool_w0CqrDIm 533 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::hide
//       Access: Published
//  Description: Makes the referenced node (and the entire subgraph
//               below this node) invisible to all cameras.  It
//               remains part of the scene graph, its bounding volume
//               still contributes to its parent's bounding volume,
//               and it will still be involved in collision tests.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1113 14 Dtool_w0CqnwFX 0 4 677 3994 0 14 Dtool_w0CqnwFX 604 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::hide
//       Access: Published
//  Description: Makes the referenced node invisible just to the
//               cameras whose camera_mask shares the indicated bits.
//
//               This will also hide any nodes below this node in the
//               scene graph, including those nodes for which show()
//               has been called, but it will not hide descendent
//               nodes for which show_through() has been called.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  11 camera_mask 1 4037  
1114 14 Dtool_w0Cq9FXE 0 6 678 3970 0 14 Dtool_w0Cq9FXE 380 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_hidden
//       Access: Published
//  Description: Returns true if the referenced node is hidden from
//               the indicated camera(s) either directly, or because
//               some ancestor is hidden.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  11 camera_mask 1 4037  
1115 14 Dtool_w0CqYTUU 0 6 678 3970 0 14 Dtool_w0CqYTUU 380 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_hidden
//       Access: Published
//  Description: Returns true if the referenced node is hidden from
//               the indicated camera(s) either directly, or because
//               some ancestor is hidden.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1116 14 Dtool_w0CqXbPy 0 7 679 4055 2948 14 Dtool_w0CqXbPy 478 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_hidden_ancestor
//       Access: Published
//  Description: Returns the NodePath at or above the referenced node
//               that is hidden to the indicated camera(s), or an
//               empty NodePath if no ancestor of the referenced node
//               is hidden (and the node should be visible).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  11 camera_mask 1 4037  14 current_thread 1 4032  
1117 14 Dtool_w0CqnaCb 0 7 679 4055 2948 14 Dtool_w0CqnaCb 478 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_hidden_ancestor
//       Access: Published
//  Description: Returns the NodePath at or above the referenced node
//               that is hidden to the indicated camera(s), or an
//               empty NodePath if no ancestor of the referenced node
//               is hidden (and the node should be visible).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  11 camera_mask 1 4037  
1118 14 Dtool_w0CqICma 0 7 679 4055 2948 14 Dtool_w0CqICma 478 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_hidden_ancestor
//       Access: Published
//  Description: Returns the NodePath at or above the referenced node
//               that is hidden to the indicated camera(s), or an
//               empty NodePath if no ancestor of the referenced node
//               is hidden (and the node should be visible).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1119 14 Dtool_w0CqtlrQ 0 4 680 3994 0 14 Dtool_w0CqtlrQ 819 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::stash
//       Access: Published
//  Description: Removes the referenced node (and the entire subgraph
//               below this node) from the scene graph in any normal
//               sense.  The node will no longer be visible and is not
//               tested for collisions; furthermore, no normal scene
//               graph traversal will visit the node.  The node's
//               bounding volume no longer contributes to its parent's
//               bounding volume.
//
//               A stashed node cannot be located by a normal find()
//               operation (although a special find string can still
//               retrieve it).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  4 sort 1 3971  14 current_thread 1 4032  
1120 14 Dtool_w0Cq2Ms1 0 4 680 3994 0 14 Dtool_w0Cq2Ms1 819 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::stash
//       Access: Published
//  Description: Removes the referenced node (and the entire subgraph
//               below this node) from the scene graph in any normal
//               sense.  The node will no longer be visible and is not
//               tested for collisions; furthermore, no normal scene
//               graph traversal will visit the node.  The node's
//               bounding volume no longer contributes to its parent's
//               bounding volume.
//
//               A stashed node cannot be located by a normal find()
//               operation (although a special find string can still
//               retrieve it).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 sort 1 3971  
1121 14 Dtool_w0CqinzQ 0 4 680 3994 0 14 Dtool_w0CqinzQ 819 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::stash
//       Access: Published
//  Description: Removes the referenced node (and the entire subgraph
//               below this node) from the scene graph in any normal
//               sense.  The node will no longer be visible and is not
//               tested for collisions; furthermore, no normal scene
//               graph traversal will visit the node.  The node's
//               bounding volume no longer contributes to its parent's
//               bounding volume.
//
//               A stashed node cannot be located by a normal find()
//               operation (although a special find string can still
//               retrieve it).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1122 14 Dtool_w0Cq01HZ 0 4 681 3994 0 14 Dtool_w0Cq01HZ 425 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::unstash
//       Access: Published
//  Description: Undoes the effect of a previous stash() on this
//               node: makes the referenced node (and the entire
//               subgraph below this node) once again part of the
//               scene graph.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  4 sort 1 3971  14 current_thread 1 4032  
1123 14 Dtool_w0CqbNQv 0 4 681 3994 0 14 Dtool_w0CqbNQv 425 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::unstash
//       Access: Published
//  Description: Undoes the effect of a previous stash() on this
//               node: makes the referenced node (and the entire
//               subgraph below this node) once again part of the
//               scene graph.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 sort 1 3971  
1124 14 Dtool_w0CqMkf6 0 4 681 3994 0 14 Dtool_w0CqMkf6 425 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::unstash
//       Access: Published
//  Description: Undoes the effect of a previous stash() on this
//               node: makes the referenced node (and the entire
//               subgraph below this node) once again part of the
//               scene graph.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1125 14 Dtool_w0Cq6_Bh 0 4 682 3994 0 14 Dtool_w0Cq6_Bh 269 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::unstash_all
//       Access: Published
//  Description: Unstashes this node and all stashed child nodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  14 current_thread 1 4032  
1126 14 Dtool_w0Cqw2AF 0 4 682 3994 0 14 Dtool_w0Cqw2AF 269 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::unstash_all
//       Access: Published
//  Description: Unstashes this node and all stashed child nodes.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1127 14 Dtool_w0Cq_PEj 0 6 683 3970 0 14 Dtool_w0Cq_PEj 337 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::is_stashed
//       Access: Published
//  Description: Returns true if the referenced node is stashed either
//               directly, or because some ancestor is stashed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1128 14 Dtool_w0Cq7VVR 0 7 684 4055 2948 14 Dtool_w0Cq7VVR 454 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_stashed_ancestor
//       Access: Published
//  Description: Returns the NodePath at or above the referenced node
//               that is stashed, or an empty NodePath if no ancestor
//               of the referenced node is stashed (and the node should
//               be visible).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
1129 14 Dtool_w0CqZTAQ 0 7 684 4055 2948 14 Dtool_w0CqZTAQ 454 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_stashed_ancestor
//       Access: Published
//  Description: Returns the NodePath at or above the referenced node
//               that is stashed, or an empty NodePath if no ancestor
//               of the referenced node is stashed (and the node should
//               be visible).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1130 14 Dtool_w0CqBdNw 0 7 685 4037 0 14 Dtool_w0CqBdNw 600 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_collide_mask
//       Access: Published
//  Description: Returns the union of all of the into_collide_masks
//               for nodes at this level and below.  This is the same
//               thing as node()->get_net_collide_mask().
//
//               If you want to return what the into_collide_mask of
//               this node itself is, without regard to its children,
//               use node()->get_into_collide_mask().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1131 14 Dtool_w0CqffJ3 0 4 686 3994 0 14 Dtool_w0CqffJ3 839 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_collide_mask
//       Access: Published
//  Description: Recursively applies the indicated CollideMask to the
//               into_collide_masks for all nodes at this level and
//               below.  If node_type is not TypeHandle::none(), then
//               only nodes matching (or inheriting from) the
//               indicated PandaNode subclass are modified.
//
//               The default is to change all bits, but if
//               bits_to_change is not all bits on, then only the bits
//               that are set in bits_to_change are modified, allowing
//               this call to change only a subset of the bits in the
//               subgraph.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4055  8 new_mask 1 4037  14 bits_to_change 1 4037  9 node_type 1 4000  
1132 14 Dtool_w0CqMlkA 0 4 686 3994 0 14 Dtool_w0CqMlkA 839 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_collide_mask
//       Access: Published
//  Description: Recursively applies the indicated CollideMask to the
//               into_collide_masks for all nodes at this level and
//               below.  If node_type is not TypeHandle::none(), then
//               only nodes matching (or inheriting from) the
//               indicated PandaNode subclass are modified.
//
//               The default is to change all bits, but if
//               bits_to_change is not all bits on, then only the bits
//               that are set in bits_to_change are modified, allowing
//               this call to change only a subset of the bits in the
//               subgraph.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  8 new_mask 1 4037  14 bits_to_change 1 4037  
1133 14 Dtool_w0CqUN_z 0 4 686 3994 0 14 Dtool_w0CqUN_z 839 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_collide_mask
//       Access: Published
//  Description: Recursively applies the indicated CollideMask to the
//               into_collide_masks for all nodes at this level and
//               below.  If node_type is not TypeHandle::none(), then
//               only nodes matching (or inheriting from) the
//               indicated PandaNode subclass are modified.
//
//               The default is to change all bits, but if
//               bits_to_change is not all bits on, then only the bits
//               that are set in bits_to_change are modified, allowing
//               this call to change only a subset of the bits in the
//               subgraph.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  8 new_mask 1 4037  
1134 14 Dtool_w0CqzIl9 0 6 687 3970 0 14 Dtool_w0CqzIl9 367 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::operator ==
//       Access: Published
//  Description: Returns true if the two paths are equivalent; that
//               is, if they contain the same list of nodes in the same
//               order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
1135 14 Dtool_w0CqROU9 0 6 688 3970 0 14 Dtool_w0CqROU9 270 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::operator !=
//       Access: Published
//  Description: Returns true if the two paths are not equivalent.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
1136 14 Dtool_w0CqM90s 0 6 689 3970 0 14 Dtool_w0CqM90s 521 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::operator <
//       Access: Published
//  Description: Returns true if this NodePath sorts before the other
//               one, false otherwise.  The sorting order of two
//               nonequivalent NodePaths is consistent but undefined,
//               and is useful only for storing NodePaths in a sorted
//               container like an STL set.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
1137 14 Dtool_w0CqHPj2 0 6 690 3971 0 14 Dtool_w0CqHPj2 830 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::compare_to
//       Access: Published
//  Description: Returns a number less than zero if this NodePath
//               sorts before the other one, greater than zero if it
//               sorts after, or zero if they are equivalent.
//
//               Two NodePaths are considered equivalent if they
//               consist of exactly the same list of nodes in the same
//               order.  Otherwise, they are different; different
//               NodePaths will be ranked in a consistent but
//               undefined ordering; the ordering is useful only for
//               placing the NodePaths in a sorted container like an
//               STL set.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  5 other 1 4056  
1138 14 Dtool_w0CqAcUK 0 6 691 3970 0 14 Dtool_w0CqAcUK 335 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::verify_complete
//       Access: Published
//  Description: Returns true if all of the nodes described in the
//               NodePath are connected, or false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
1139 14 Dtool_w0CqTqrp 0 6 691 3970 0 14 Dtool_w0CqTqrp 335 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::verify_complete
//       Access: Published
//  Description: Returns true if all of the nodes described in the
//               NodePath are connected, or false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1140 14 Dtool_w0Cqgz7H 0 4 692 3994 0 14 Dtool_w0Cqgz7H 749 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::premunge_scene
//       Access: Published
//  Description: Walks through the scene graph beginning at the bottom
//               node, and internally adjusts any GeomVertexFormats
//               for optimal rendering on the indicated GSG.  If this
//               step is not done prior to rendering, the formats will
//               be optimized at render time instead, for a small
//               cost.
//
//               It is not normally necessary to do this on a model
//               loaded directly from disk, since the loader will do
//               this by default.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 gsg 1 4038  
1141 14 Dtool_w0CqXuCN 0 4 692 3994 0 14 Dtool_w0CqXuCN 749 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::premunge_scene
//       Access: Published
//  Description: Walks through the scene graph beginning at the bottom
//               node, and internally adjusts any GeomVertexFormats
//               for optimal rendering on the indicated GSG.  If this
//               step is not done prior to rendering, the formats will
//               be optimized at render time instead, for a small
//               cost.
//
//               It is not normally necessary to do this on a model
//               loaded directly from disk, since the loader will do
//               this by default.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1142 14 Dtool_w0Cq0HH0 0 4 693 3994 0 14 Dtool_w0Cq0HH0 823 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::prepare_scene
//       Access: Published
//  Description: Walks through the scene graph beginning at the bottom
//               node, and does whatever initialization is required to
//               render the scene properly with the indicated GSG.  It
//               is not strictly necessary to call this, since the GSG
//               will initialize itself when the scene is rendered,
//               but this may take some of the overhead away from that
//               process.
//
//               In particular, this will ensure that textures and
//               vertex buffers within the scene are loaded into
//               graphics memory.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 gsg 1 4038  
1143 14 Dtool_w0Cq1psR 0 4 694 3994 0 14 Dtool_w0Cq1psR 542 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::show_bounds
//       Access: Published
//  Description: Causes the bounding volume of the bottom node and all
//               of its descendants (that is, the bounding volume
//               associated with the the bottom arc) to be rendered,
//               if possible.  The rendering method is less than
//               optimal; this is intended primarily for debugging.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1144 14 Dtool_w0Cqpl7q 0 4 695 3994 0 14 Dtool_w0Cqpl7q 580 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::show_tight_bounds
//       Access: Published
//  Description: Similar to show_bounds(), this draws a bounding box
//               representing the "tight" bounds of this node and all
//               of its descendants.  The bounding box is recomputed
//               every frame by reexamining all of the vertices; this
//               is far from efficient, but this is intended for
//               debugging.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1145 14 Dtool_w0Cq0fG5 0 4 696 3994 0 14 Dtool_w0Cq0fG5 306 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::hide_bounds
//       Access: Published
//  Description: Stops the rendering of the bounding volume begun with
//               show_bounds().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1146 14 Dtool_w0Cqfllh 0 7 697 4131 0 14 Dtool_w0Cqfllh 468 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_bounds
//       Access: Published
//  Description: Returns a newly-allocated bounding volume containing
//               the bottom node and all of its descendants.  This is
//               the bounding volume on the bottom arc, converted to
//               the local coordinate space of the node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  14 current_thread 1 4032  
1147 14 Dtool_w0CqpOSR 0 7 697 4131 0 14 Dtool_w0CqpOSR 468 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_bounds
//       Access: Published
//  Description: Returns a newly-allocated bounding volume containing
//               the bottom node and all of its descendants.  This is
//               the bounding volume on the bottom arc, converted to
//               the local coordinate space of the node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1148 14 Dtool_w0CqtE3U 0 4 698 3994 0 14 Dtool_w0CqtE3U 890 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::force_recompute_bounds
//       Access: Published
//  Description: Forces the recomputing of all the bounding volumes at
//               every node in the subgraph beginning at this node and
//               below.
//
//               This should not normally need to be called, since the
//               bounding volumes are supposed to be recomputed
//               automatically when necessary.  It may be useful when
//               debugging, to verify that the bounding volumes have
//               not become inadvertently stale; it may also be useful
//               to force animated characters to update their bounding
//               volumes (which does not presently happen
//               automatically).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1149 14 Dtool_w0Cq2vwc 0 4 699 3994 0 14 Dtool_w0Cq2vwc 385 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::write_bounds
//       Access: Published
//  Description: Writes a description of the bounding volume
//               containing the bottom node and all of its descendants
//               to the indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 out 1 3997  
1150 14 Dtool_w0Cq36kV 0 6 700 3970 0 14 Dtool_w0Cq36kV 672 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::calc_tight_bounds
//       Access: Published
//  Description: Calculates the minimum and maximum vertices of all
//               Geoms at this NodePath's bottom node and below.  This
//               is a tight bounding box; it will generally be tighter
//               than the bounding volume returned by get_bounds()
//               (but it is more expensive to compute).
//
//               The return value is true if any points are within the
//               bounding volume, or false if none are.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4056  9 min_point 1 4059  9 max_point 1 4059  14 current_thread 1 4032  
1151 14 Dtool_w0CqoyKP 0 6 700 3970 0 14 Dtool_w0CqoyKP 672 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::calc_tight_bounds
//       Access: Published
//  Description: Calculates the minimum and maximum vertices of all
//               Geoms at this NodePath's bottom node and below.  This
//               is a tight bounding box; it will generally be tighter
//               than the bounding volume returned by get_bounds()
//               (but it is more expensive to compute).
//
//               The return value is true if any points are within the
//               bounding volume, or false if none are.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  9 min_point 1 4059  9 max_point 1 4059  
1152 14 Dtool_w0CqOJcc 0 6 701 3995 0 14 Dtool_w0CqOJcc 0 1 4 this 3 4056  
1153 14 Dtool_w0CqznLC 0 6 702 3971 0 14 Dtool_w0CqznLC 1259 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::flatten_light
//       Access: Published
//  Description: Lightly flattens out the hierarchy below this node by
//               applying transforms, colors, and texture matrices
//               from the nodes onto the vertices, but does not remove
//               any nodes.
//
//               This can result in improved rendering performance
//               because there will be fewer transforms in the
//               resulting scene graph, but the number of nodes will
//               remain the same.
//
//               In particular, any NodePaths that reference nodes
//               within this hierarchy will not be damaged.  However,
//               since this operation will remove transforms from the
//               scene graph, it may be dangerous to apply to nodes
//               where you expect to dynamically modify the transform,
//               or where you expect the geometry to remain in a
//               particular local coordinate system.
//
//               The return value is always 0, since flatten_light
//               does not remove any nodes.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1154 14 Dtool_w0CqqVep 0 6 703 3971 0 14 Dtool_w0CqqVep 836 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::flatten_medium
//       Access: Published
//  Description: A more thorough flattening than flatten_light(), this
//               first applies all the transforms, colors, and texture
//               matrices from the nodes onto the vertices, and then
//               removes unneeded grouping nodes--nodes that have
//               exactly one child, for instance, but have no special
//               properties in themselves.
//
//               This results in improved performance over
//               flatten_light() because the number of nodes in the
//               scene graph is reduced.
//
//               The return value is the number of nodes removed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1155 14 Dtool_w0CqgdaT 0 6 704 3971 0 14 Dtool_w0CqgdaT 1005 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::flatten_strong
//       Access: Published
//  Description: The strongest possible flattening.  This first
//               applies all of the transforms to the vertices, as in
//               flatten_medium(), but then it will combine sibling
//               nodes together when possible, in addition to removing
//               unnecessary parent-child nodes.  This can result in
//               substantially fewer nodes, but any nicely-grouped
//               hierachical bounding volumes may be lost.
//
//               It is generally a good idea to apply this kind of
//               flattening only to nodes that will be culled largely
//               as a single unit, like a car.  Applying this to an
//               entire scene may result in overall poorer performance
//               because of less-effective culling.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1156 14 Dtool_w0Cq7D5n 0 4 705 3994 0 14 Dtool_w0Cq7D5n 1105 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::apply_texture_colors
//       Access: Published
//  Description: Removes textures from Geoms at this node and below by
//               applying the texture colors to the vertices.  This is
//               primarily useful to simplify a low-LOD model.  The
//               texture colors are replaced by flat colors that
//               approximate the original textures.
//
//               Only the bottommost texture on each Geom is used (if
//               there is more than one), and it is applied as if it
//               were M_modulate, and WM_repeat, regardless of its
//               actual settings.  If the texture has a
//               simple_ram_image, this may be used if the main image
//               isn't resident.
//
//               After this call, there will be no texturing specified
//               at this level and below.  Of course, there might
//               still be texturing inherited from above.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1157 14 Dtool_w0CqhlC6 0 6 706 3971 0 14 Dtool_w0CqhlC6 604 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_model_nodes
//       Access: Published
//  Description: Recursively walks through the scene graph at this
//               level and below, looking for ModelNodes, and calls
//               model_node->set_preserve_transform(PT_drop_node) on
//               each one.  This allows a subsequent call to
//               flatten_strong() to eliminate all of the ModelNodes.
//
//               Returns the number of ModelNodes found.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4055  
1158 14 Dtool_w0CqBD_p 0 4 707 3994 0 14 Dtool_w0CqBD_p 700 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_tag
//       Access: Published
//  Description: Associates a user-defined value with a user-defined
//               key which is stored on the node.  This value has no
//               meaning to Panda; but it is stored indefinitely on
//               the node until it is requested again.
//
//               Each unique key stores a different string value.
//               There is no effective limit on the number of
//               different keys that may be stored or on the length of
//               any one key's value.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4055  3 key 1 4028  5 value 1 4028  
1159 14 Dtool_w0CqzT5q 0 6 708 4028 0 14 Dtool_w0CqzT5q 458 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tag
//       Access: Published
//  Description: Retrieves the user-defined value that was previously
//               set on this node for the particular key, if any.  If
//               no value has been previously set, returns the empty
//               string.  See also get_net_tag().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 key 1 4028  
1160 14 Dtool_w0Cq4oKU 0 6 709 3995 0 14 Dtool_w0Cq4oKU 0 1 4 this 3 4056  
1161 14 Dtool_w0CqAsDs 0 4 709 3994 0 14 Dtool_w0CqAsDs 505 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_tag_keys
//       Access: Published
//  Description: Fills the given vector up with the
//               list of tags on this PandaNode.
//
//               It is the user's responsibility to ensure that the
//               keys vector is empty before making this call;
//               otherwise, the new files will be appended to it.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 keys 1 4034  
1162 14 Dtool_w0CqWQGT 0 6 710 3970 0 14 Dtool_w0CqWQGT 445 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_tag
//       Access: Published
//  Description: Returns true if a value has been defined on this node
//               for the particular key (even if that value is the
//               empty string), or false if no value has been set.
//               See also has_net_tag().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 key 1 4028  
1163 14 Dtool_w0CqHk6_ 0 4 711 3994 0 14 Dtool_w0CqHk6_ 397 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::clear_tag
//       Access: Published
//  Description: Removes the value defined for this key on this
//               particular node.  After a call to clear_tag(),
//               has_tag() will return false for the indicated key.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  3 key 1 4028  
1164 14 Dtool_w0Cq4VAu 0 6 712 4028 0 14 Dtool_w0Cq4VAu 519 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_net_tag
//       Access: Published
//  Description: Returns the tag value that has been defined on this
//               node, or the nearest ancestor node, for the indicated
//               key.  If no value has been defined for the indicated
//               key on any ancestor node, returns the empty string.
//               See also get_tag().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 key 1 4028  
1165 14 Dtool_w0CqbVNW 0 6 713 3970 0 14 Dtool_w0CqbVNW 390 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::has_net_tag
//       Access: Published
//  Description: Returns true if the indicated tag value has been
//               defined on this node or on any ancestor node, or
//               false otherwise.  See also has_tag().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 key 1 4028  
1166 14 Dtool_w0CqpJhq 0 7 714 4055 2948 14 Dtool_w0CqpJhq 471 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::find_net_tag
//       Access: Published
//  Description: Returns the lowest ancestor of this node that
//               contains a tag definition with the indicated key, if
//               any, or an empty NodePath if no ancestor of this node
//               contains this tag definition.  See set_tag().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 key 1 4028  
1167 14 Dtool_w0CqSNAU 0 4 715 3994 0 14 Dtool_w0CqSNAU 0 3 4 this 3 4055  3 key 1 4028  5 value 1 3995  
1168 14 Dtool_w0CqeudG 0 6 716 3995 0 14 Dtool_w0CqeudG 0 2 4 this 3 4056  3 key 1 4028  
1169 14 Dtool_w0CqzLvQ 0 6 717 3995 0 14 Dtool_w0CqzLvQ 0 1 4 this 3 4056  
1170 14 Dtool_w0CqWFCH 0 4 717 3994 0 14 Dtool_w0CqWFCH 0 2 4 this 3 4056  4 keys 1 4034  
1171 14 Dtool_w0Cqgtqu 0 6 718 3970 0 14 Dtool_w0Cqgtqu 0 2 4 this 3 4056  3 key 1 4028  
1172 14 Dtool_w0CqYEBN 0 4 719 3994 0 14 Dtool_w0CqYEBN 0 2 4 this 3 4055  3 key 1 4028  
1173 14 Dtool_w0CqeVt_ 0 6 720 3995 0 14 Dtool_w0CqeVt_ 0 2 4 this 3 4056  3 key 1 4028  
1174 14 Dtool_w0Cq5V6n 0 6 721 3970 0 14 Dtool_w0Cq5V6n 0 2 4 this 3 4056  3 key 1 4028  
1175 14 Dtool_w0Cqc_lh 0 7 722 4055 2948 14 Dtool_w0Cqc_lh 0 2 4 this 3 4056  3 key 1 4028  
1176 14 Dtool_w0CqM5gv 0 4 723 3994 0 14 Dtool_w0CqM5gv 389 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::list_tags
//       Access: Published
//  Description: Lists the tags to the nout stream, one per line.  See
//               PandaNode::list_tags() for a variant that allows you
//               to specify the output stream.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1177 14 Dtool_w0Cq2Rjw 0 4 724 3994 0 14 Dtool_w0Cq2Rjw 258 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::set_name
//       Access: Published
//  Description: Changes the name of the referenced node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4055  4 name 1 4028  
1178 14 Dtool_w0CqbkeW 0 6 725 4028 0 14 Dtool_w0CqbkeW 258 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::get_name
//       Access: Published
//  Description: Returns the name of the referenced node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1179 14 Dtool_w0CqlOTE 0 6 726 3970 0 14 Dtool_w0CqlOTE 504 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::write_bam_file
//       Access: Published
//  Description: Writes the contents of this node and below out to a
//               bam file with the indicated filename.  This file may
//               then be read in again, as is, at some later point.
//               Returns true if successful, false on some kind of
//               error.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  8 filename 1 4132  
1180 14 Dtool_w0CqLhBq 0 6 727 3970 0 14 Dtool_w0CqLhBq 314 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::write_bam_stream
//       Access: Published
//  Description: Writes the contents of this node and below out to the
//               indicated stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  3 out 1 3997  
1181 14 Dtool_w0CqHnyV 0 6 728 4028 0 14 Dtool_w0CqHnyV 595 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::encode_to_bam_stream
//       Access: Published
//  Description: Converts the NodePath object into a single
//               stream of data using a BamWriter, and returns that
//               data as a string string.  Returns empty string on
//               failure.  This is similar to write_bam_stream().
//
//               This method is used by __reduce__ to handle streaming
//               of NodePaths to a pickle file.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1182 14 Dtool_w0CqhA6i 0 6 728 3970 0 14 Dtool_w0CqhA6i 1580 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::encode_to_bam_stream
//       Access: Published
//  Description: Converts the NodePath object into a single
//               stream of data using a BamWriter, and stores that
//               data in the indicated string.  Returns true on
//               success, false on failure.
//
//               If the BamWriter is NULL, this behaves the same way
//               as NodePath::write_bam_stream() and
//               PandaNode::encode_to_bam_stream(), in the sense that
//               it only writes this node and all nodes below it.
//
//               However, if the BamWriter is not NULL, it behaves
//               very differently.  In this case, it encodes the
//               *entire graph* of all nodes connected to the
//               NodePath, including all parent nodes and siblings.
//               This is necessary for correct streaming of related
//               NodePaths and restoration of instances, etc., but it
//               does mean you must detach() a node before writing it
//               if you want to limit the nodes that get written.
//
//               This method is used by __reduce__ to handle streaming
//               of NodePaths to a pickle file.  The BamWriter case is
//               used by the direct.stdpy.pickle module, while the
//               saner, non-BamWriter case is used when the standard
//               pickle module calls this function.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4056  4 data 1 4135  6 writer 1 4137  
1183 14 Dtool_w0CqN7se 0 6 728 3970 0 14 Dtool_w0CqN7se 1580 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::encode_to_bam_stream
//       Access: Published
//  Description: Converts the NodePath object into a single
//               stream of data using a BamWriter, and stores that
//               data in the indicated string.  Returns true on
//               success, false on failure.
//
//               If the BamWriter is NULL, this behaves the same way
//               as NodePath::write_bam_stream() and
//               PandaNode::encode_to_bam_stream(), in the sense that
//               it only writes this node and all nodes below it.
//
//               However, if the BamWriter is not NULL, it behaves
//               very differently.  In this case, it encodes the
//               *entire graph* of all nodes connected to the
//               NodePath, including all parent nodes and siblings.
//               This is necessary for correct streaming of related
//               NodePaths and restoration of instances, etc., but it
//               does mean you must detach() a node before writing it
//               if you want to limit the nodes that get written.
//
//               This method is used by __reduce__ to handle streaming
//               of NodePaths to a pickle file.  The BamWriter case is
//               used by the direct.stdpy.pickle module, while the
//               saner, non-BamWriter case is used when the standard
//               pickle module calls this function.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4056  4 data 1 4135  
1184 14 Dtool_w0CqdAES 0 7 729 4055 2948 14 Dtool_w0CqdAES 439 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::decode_from_bam_stream
//       Access: Published, Static
//  Description: Reads the string created by a previous call to
//               encode_to_bam_stream(), and extracts and
//               returns the NodePath on that string.  Returns NULL on
//               error.
//////////////////////////////////////////////////////////////////// 2 4 data 1 4028  6 reader 1 4047  
1185 14 Dtool_w0CqwSol 0 7 729 4055 2948 14 Dtool_w0CqwSol 439 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::decode_from_bam_stream
//       Access: Published, Static
//  Description: Reads the string created by a previous call to
//               encode_to_bam_stream(), and extracts and
//               returns the NodePath on that string.  Returns NULL on
//               error.
//////////////////////////////////////////////////////////////////// 1 4 data 1 4028  
1186 14 Dtool_w0Cqt3wh 0 7 730 4000 0 14 Dtool_w0Cqt3wh 0 0 
1187 14 Dtool_w0CqHpLG 0 6 399 3970 0 14 Dtool_w0CqHpLG 324 ////////////////////////////////////////////////////////////////////
//     Function: NodePath::operator bool
//       Access: Published
//  Description: Returns true if the NodePath is valid (not empty),
//               or false if it contains no nodes.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4056  
1188 14 Dtool_w0CqMzpU 0 4 733 3994 0 14 Dtool_w0CqMzpU 919 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::add_node
//       Access: Published
//  Description: Adds the indicated NodePath to the registry.  The
//               name and type of the node are noted at the time of
//               this call; if the name changes later, it will not
//               update the registry index.
//
//               The NodePath must reference some kind of an attribute
//               node, such as a LightNode or a PlaneNode.  When bam
//               files that reference an attribute node of the same
//               type and the same name are loaded, they will quietly
//               be redirected to reference this NodePath.
//
//               If there is already a node matching the indicated
//               name and type, it will be replaced.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4139  11 attrib_node 1 4056  
1189 14 Dtool_w0CqihoG 0 6 734 3970 0 14 Dtool_w0CqihoG 629 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::remove_node
//       Access: Published
//  Description: Removes the indicated NodePath from the registry.
//               The name of the node must not have changed since the
//               matching call to add_node(), or it will not be
//               successfully removed.
//
//               Returns true if the NodePath is found and removed,
//               false if it is not found (for instance, because the
//               name has changed).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4139  11 attrib_node 1 4056  
1190 14 Dtool_w0Cqag03 0 4 734 3994 0 14 Dtool_w0Cqag03 270 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::remove_node
//       Access: Published
//  Description: Removes the nth node from the registry.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4139  1 n 1 3971  
1191 14 Dtool_w0Cq4oNa 0 7 735 4055 2948 14 Dtool_w0Cq4oNa 480 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::lookup_node
//       Access: Published
//  Description: Looks up the indicated NodePath in the registry.  If
//               there is a node already in the registry with the
//               matching name and type, returns that NodePath
//               instead; otherwise, returns the original NodePath.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4140  9 orig_node 1 4056  
1192 14 Dtool_w0CqmLQW 0 6 736 3971 0 14 Dtool_w0CqmLQW 283 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_num_nodes
//       Access: Published
//  Description: Returns the total number of nodes in the registry.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4140  
1193 14 Dtool_w0CqRM96 0 7 737 4055 2948 14 Dtool_w0CqRM96 278 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_node
//       Access: Published
//  Description: Returns the nth NodePath recorded in the registry.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4140  1 n 1 3971  
1194 14 Dtool_w0CqJtGc 0 7 738 4000 0 14 Dtool_w0CqJtGc 312 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_node_type
//       Access: Published
//  Description: Returns the type of the nth node, as recorded in the
//               registry.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4140  1 n 1 3971  
1195 14 Dtool_w0CqfabJ 0 6 739 4028 0 14 Dtool_w0CqfabJ 520 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_node_name
//       Access: Published
//  Description: Returns the name of the nth node, as recorded in the
//               registry.  This will be the node name as it was at
//               the time the node was recorded; if the node has
//               changed names since then, this will still return the
//               original name.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4140  1 n 1 3971  
1196 14 Dtool_w0CqAj89 0 6 740 3971 0 14 Dtool_w0CqAj89 521 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::find_node
//       Access: Published
//  Description: Returns the index number of the indicated NodePath in
//               the registry (assuming its name hasn't changed since
//               it was recorded in the registry), or -1 if the
//               NodePath cannot be found (for instance, because its
//               name has changed).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4140  11 attrib_node 1 4056  
1197 14 Dtool_w0CqRdep 0 6 740 3971 0 14 Dtool_w0CqRdep 397 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::find_node
//       Access: Published
//  Description: Returns the index number of the node with the
//               indicated type and name in the registry, or -1 if
//               there is no such node in the registry.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4140  4 type 1 4000  4 name 1 4028  
1198 14 Dtool_w0CqmYwZ 0 4 741 3994 0 14 Dtool_w0CqmYwZ 261 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::clear
//       Access: Published
//  Description: Removes all nodes from the registry.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4139  
1199 14 Dtool_w0CqHJW1 0 4 742 3994 0 14 Dtool_w0CqHJW1 226 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::output
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4140  3 out 1 3997  
1200 14 Dtool_w0CqX6bN 0 4 743 3994 0 14 Dtool_w0CqX6bN 225 ////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::write
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4140  3 out 1 3997  
1201 14 Dtool_w0CqPd0L 0 6 744 4139 0 14 Dtool_w0CqPd0L 736 // Filename: attribNodeRegistry.I
// Created by:  drose (07Jul07)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AttribNodeRegistry::get_global_ptr
//       Access: Published, Static
//  Description: 
//////////////////////////////////////////////////////////////////// 0 
1202 14 Dtool_w0CqzNRA 0 7 747 4005 0 14 Dtool_w0CqzNRA 283 ////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::make_identity
//       Access: Published, Static
//  Description: Constructs an identity audio volume attrib.
//////////////////////////////////////////////////////////////////// 0 
1203 14 Dtool_w0CqItPH 0 7 748 4005 0 14 Dtool_w0CqItPH 359 ////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::make
//       Access: Published, Static
//  Description: Constructs a new AudioVolumeAttrib object that indicates
//               audio volume should be scaled by the indicated factor.
//////////////////////////////////////////////////////////////////// 1 6 volume 1 3979  
1204 14 Dtool_w0Cqxnf_ 0 7 749 4005 0 14 Dtool_w0Cqxnf_ 482 ////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new AudioVolumeAttrib object that ignores
//               any AudioVolumeAttrib inherited from above.  You may
//               also specify an additional volume scale to apply to
//               geometry below (using set_volume()).
//////////////////////////////////////////////////////////////////// 0 
1205 14 Dtool_w0CqYhRD 0 7 750 4005 0 14 Dtool_w0CqYhRD 404 ////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1206 14 Dtool_w0Cqds1J 0 6 751 3970 0 14 Dtool_w0Cqds1J 529 ////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::is_off
//       Access: Published
//  Description: Returns true if the AudioVolumeAttrib will ignore any
//               color scales inherited from above, false otherwise.
//               This is not the same thing as !has_scale(); a
//               AudioVolumeAttrib may have the "off" flag set and also
//               have another scale specified.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4142  
1207 14 Dtool_w0Cqvujx 0 6 752 3970 0 14 Dtool_w0Cqvujx 408 ////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::has_volume
//       Access: Published
//  Description: Returns true if the AudioVolumeAttrib has a
//               non-identity volume, false otherwise (in which case it
//               might be an off attrib or an identity attrib).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4142  
1208 14 Dtool_w0CqsIhc 0 6 753 3979 0 14 Dtool_w0CqsIhc 272 ////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::get_volume
//       Access: Published
//  Description: Returns the volume to be applied to sounds.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4142  
1209 14 Dtool_w0CqsXcl 0 7 754 4005 0 14 Dtool_w0CqsXcl 350 ////////////////////////////////////////////////////////////////////
//     Function: AudioVolumeAttrib::set_volume
//       Access: Published
//  Description: Returns a new AudioVolumeAttrib, just like this one, but
//               with the volume changed to the indicated value.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4142  6 volume 1 3979  
1210 14 Dtool_w0CqUw12 0 6 755 3971 0 14 Dtool_w0CqUw12 0 0 
1211 14 Dtool_w0CqCUjz 0 7 756 4000 0 14 Dtool_w0CqCUjz 0 0 
1212 14 Dtool_w0Cqf01Z 0 7 760 4005 0 14 Dtool_w0Cqf01Z 277 ////////////////////////////////////////////////////////////////////
//     Function: AuxBitplaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a default AuxBitplaneAttrib object.
//////////////////////////////////////////////////////////////////// 0 
1213 14 Dtool_w0CqkyOL 0 7 760 4005 0 14 Dtool_w0CqkyOL 279 ////////////////////////////////////////////////////////////////////
//     Function: AuxBitplaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a specified AuxBitplaneAttrib object.
//////////////////////////////////////////////////////////////////// 1 7 outputs 1 3971  
1214 14 Dtool_w0CqXUCH 0 7 761 4005 0 14 Dtool_w0CqXUCH 404 ////////////////////////////////////////////////////////////////////
//     Function: AuxBitplaneAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1215 14 Dtool_w0CqmZU0 0 6 762 3971 0 14 Dtool_w0CqmZU0 272 ////////////////////////////////////////////////////////////////////
//     Function: AuxBitplaneAttrib::get_outputs
//       Access: Published
//  Description: Returns the AuxBitplaneAttrib output bits.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4144  
1216 14 Dtool_w0CqRln6 0 6 763 3971 0 14 Dtool_w0CqRln6 0 0 
1217 14 Dtool_w0CqHDU3 0 7 764 4000 0 14 Dtool_w0CqHDU3 0 0 
1218 14 Dtool_w0CqMBDR 0 4 768 3994 0 14 Dtool_w0CqMBDR 402 ////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::set_duration
//       Access: Public
//  Description: Specifies the minimum length in time, in seconds, to
//               keep this AuxSceneData object around in the scene
//               graph after the last time it was rendered.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4146  8 duration 1 4147  
1219 14 Dtool_w0CqwhQH 0 6 769 4147 0 14 Dtool_w0CqwhQH 400 ////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::get_duration
//       Access: Public
//  Description: Returns the minimum length in time, in seconds, to
//               keep this AuxSceneData object around in the scene
//               graph after the last time it was rendered.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4148  
1220 14 Dtool_w0CqrdrX 0 4 770 3994 0 14 Dtool_w0CqrdrX 345 ////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::set_last_render_time
//       Access: Public
//  Description: Should be called with the current frame_time each
//               time the AuxSceneData is used during traversal.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4146  11 render_time 1 4147  
1221 14 Dtool_w0CqzXEn 0 6 771 4147 0 14 Dtool_w0CqzXEn 346 ////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::get_last_render_time
//       Access: Public
//  Description: Returns the last time this object was used during
//               traversal (according to set_last_render_time()).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4148  
1222 14 Dtool_w0CqLlWf 0 6 772 4147 0 14 Dtool_w0CqLlWf 379 ////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::get_expiration_time
//       Access: Public
//  Description: Returns the frame_time at which this AuxSceneData
//               object is currently scheduled to be removed from the
//               scene graph.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4148  
1223 14 Dtool_w0Cqod_2 0 4 773 3994 0 14 Dtool_w0Cqod_2 229 ////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::output
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4148  3 out 1 3997  
1224 14 Dtool_w0CqcHFH 0 4 774 3994 0 14 Dtool_w0CqcHFH 228 ////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::write
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4148  3 out 1 3997  12 indent_level 1 3971  
1225 14 Dtool_w0CqovWf 0 4 774 3994 0 14 Dtool_w0CqovWf 228 ////////////////////////////////////////////////////////////////////
//     Function: AuxSceneData::write
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4148  3 out 1 3997  
1226 14 Dtool_w0CqsxVE 0 7 775 4000 0 14 Dtool_w0CqsxVE 0 0 
1227 14 Dtool_w0CqcXSJ 0 7 779 4150 2989 14 Dtool_w0CqcXSJ 216 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 0 
1228 14 Dtool_w0CqZ5gF 0 6 781 3970 0 14 Dtool_w0CqZ5gF 328 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_read
//       Access: Public
//  Description: Attempts to open the indicated filename for reading.
//               Returns true if successful, false on error.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4150  12 bam_filename 1 4132  13 report_errors 1 3970  
1229 14 Dtool_w0CqzHfD 0 6 781 3970 0 14 Dtool_w0CqzHfD 328 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_read
//       Access: Public
//  Description: Attempts to open the indicated filename for reading.
//               Returns true if successful, false on error.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4150  12 bam_filename 1 4132  
1230 14 Dtool_w0CqWZ_Q 0 6 781 3970 0 14 Dtool_w0CqWZ_Q 395 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_read
//       Access: Public
//  Description: Attempts to open the indicated stream for reading.
//               The filename is just for information purposes only.
//               Returns true if successful, false on error.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4150  2 in 1 4151  12 bam_filename 1 4028  13 report_errors 1 3970  
1231 14 Dtool_w0Cqdf6U 0 6 781 3970 0 14 Dtool_w0Cqdf6U 395 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_read
//       Access: Public
//  Description: Attempts to open the indicated stream for reading.
//               The filename is just for information purposes only.
//               Returns true if successful, false on error.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4150  2 in 1 4151  12 bam_filename 1 4028  
1232 14 Dtool_w0CqOKs6 0 6 781 3970 0 14 Dtool_w0CqOKs6 395 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_read
//       Access: Public
//  Description: Attempts to open the indicated stream for reading.
//               The filename is just for information purposes only.
//               Returns true if successful, false on error.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4150  2 in 1 4151  
1233 14 Dtool_w0CqERNy 0 6 782 4049 0 14 Dtool_w0CqERNy 592 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::read_object
//       Access: Public
//  Description: Reads and returns the next object from the Bam file,
//               or NULL if the end of the file has been reached, or
//               if there is an error condition.  Use is_eof() to
//               differentiate these two cases.
//
//               The pointers returned by this method will not be
//               valid for use until resolve() is subsequently called.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1234 14 Dtool_w0CqyZvF 0 6 783 3970 0 14 Dtool_w0CqyZvF 370 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::is_eof
//       Access: Public
//  Description: Returns true if the reader has reached end-of-file,
//               false otherwise.  This call is only valid after a
//               call to read_object().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4153  
1235 14 Dtool_w0CqxWXF 0 6 784 3970 0 14 Dtool_w0CqxWXF 650 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::resolve
//       Access: Public
//  Description: This must be called after one or more objects have
//               been read via calls to read_object() in order to
//               resolve all internal pointer references in the
//               objects read and make all the pointers valid.  It
//               returns true if all objects are successfully
//               resolved, or false if some have not been (in which
//               case you must call resolve() again later).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1236 14 Dtool_w0CqYvGY 0 7 785 4029 2486 14 Dtool_w0CqYvGY 1170 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::read_node
//       Access: Public
//  Description: Although the bam file format is general enough to
//               store a list of objects of arbitrary type, bam files
//               on disk usually contain just one object, a PandaNode
//               that is the root of a scene graph.  (Bam files that
//               store other kinds of things are usually given the
//               extension "boo", for "binary other objects", to
//               differentiate them from the normal scene graph type
//               file.)
//
//               This is a convenience method for when you believe you
//               are reading a scene graph bam file.  It reads the one
//               PandaNode and returns it.  It also calls resolve() to
//               fully resolve the object, since we expect this will
//               be the only object in the file.
//
//               If the bam file contains something other than a
//               PandaNode, an error is printed and NULL is returned.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4150  13 report_errors 1 3970  
1237 14 Dtool_w0CqhEoM 0 7 785 4029 2486 14 Dtool_w0CqhEoM 1170 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::read_node
//       Access: Public
//  Description: Although the bam file format is general enough to
//               store a list of objects of arbitrary type, bam files
//               on disk usually contain just one object, a PandaNode
//               that is the root of a scene graph.  (Bam files that
//               store other kinds of things are usually given the
//               extension "boo", for "binary other objects", to
//               differentiate them from the normal scene graph type
//               file.)
//
//               This is a convenience method for when you believe you
//               are reading a scene graph bam file.  It reads the one
//               PandaNode and returns it.  It also calls resolve() to
//               fully resolve the object, since we expect this will
//               be the only object in the file.
//
//               If the bam file contains something other than a
//               PandaNode, an error is printed and NULL is returned.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1238 14 Dtool_w0CqUyE3 0 6 786 3970 0 14 Dtool_w0CqUyE3 440 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_write
//       Access: Public
//  Description: Attempts to open the indicated file for writing.  If
//               another file by the same name already exists, it will
//               be silently removed.  Returns true if successful,
//               false otherwise.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4150  12 bam_filename 1 4132  13 report_errors 1 3970  
1239 14 Dtool_w0CqAij1 0 6 786 3970 0 14 Dtool_w0CqAij1 440 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_write
//       Access: Public
//  Description: Attempts to open the indicated file for writing.  If
//               another file by the same name already exists, it will
//               be silently removed.  Returns true if successful,
//               false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4150  12 bam_filename 1 4132  
1240 14 Dtool_w0CqMGvp 0 6 786 3970 0 14 Dtool_w0CqMGvp 396 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_write
//       Access: Public
//  Description: Attempts to open the indicated stream for writing.
//               The filename is just for information purposes only.
//               Returns true if successful, false on error.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4150  3 out 1 3997  12 bam_filename 1 4028  13 report_errors 1 3970  
1241 14 Dtool_w0CqHPsn 0 6 786 3970 0 14 Dtool_w0CqHPsn 396 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_write
//       Access: Public
//  Description: Attempts to open the indicated stream for writing.
//               The filename is just for information purposes only.
//               Returns true if successful, false on error.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4150  3 out 1 3997  12 bam_filename 1 4028  
1242 14 Dtool_w0Cqm4Ne 0 6 786 3970 0 14 Dtool_w0Cqm4Ne 396 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::open_write
//       Access: Public
//  Description: Attempts to open the indicated stream for writing.
//               The filename is just for information purposes only.
//               Returns true if successful, false on error.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4150  3 out 1 3997  
1243 14 Dtool_w0Cqt9v_ 0 6 787 3970 0 14 Dtool_w0Cqt9v_ 324 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::write_object
//       Access: Public
//  Description: Writes the indicated object to the Bam file.  Returns
//               true if successful, false on error.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4150  6 object 1 4155  
1244 14 Dtool_w0Cq7bSi 0 4 788 3994 0 14 Dtool_w0Cq7bSi 245 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::close
//       Access: Public
//  Description: Closes the input or output stream.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1245 14 Dtool_w0CqSD_c 0 6 789 3970 0 14 Dtool_w0CqSD_c 846 // Filename: bamFile.I
// Created by:  drose (02Jul00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: BamFile::is_valid_read
//       Access: Public
//  Description: Returns true if the Bam file is open and ready for
//               reading with no errors so far detected, or false
//               otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4153  
1246 14 Dtool_w0CqYb0C 0 6 790 3970 0 14 Dtool_w0CqYb0C 364 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::is_valid_write
//       Access: Public
//  Description: Returns true if the Bam file is open and ready for
//               writing with no errors so far detected, or false
//               otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4153  
1247 14 Dtool_w0CqW3p0 0 6 791 3971 0 14 Dtool_w0CqW3p0 426 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_file_major_ver
//       Access: Public
//  Description: Returns the major version number of the file
//               currently being read, or the system current major
//               version number if no file is currently open for
//               reading.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1248 14 Dtool_w0CqKw61 0 6 792 3971 0 14 Dtool_w0CqKw61 426 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_file_minor_ver
//       Access: Public
//  Description: Returns the minor version number of the file
//               currently being read, or the system current minor
//               version number if no file is currently open for
//               reading.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1249 14 Dtool_w0Cq2GM6 0 6 793 4157 0 14 Dtool_w0Cq2GM6 326 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_file_endian
//       Access: Public
//  Description: Returns the endian preference indicated by the Bam
//               file currently being read or written.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4153  
1250 14 Dtool_w0Cq4Uke 0 6 794 3970 0 14 Dtool_w0Cq4Uke 372 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_file_stdfloat_double
//       Access: Public
//  Description: Returns true if the file stores all "standard"
//               floats as 64-bit doubles, or false if they are 32-bit
//               floats.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4153  
1251 14 Dtool_w0CqlKS_ 0 6 795 3971 0 14 Dtool_w0CqlKS_ 386 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_current_major_ver
//       Access: Public
//  Description: Returns the system current major version number.
//               This is the version number that will be assigned to
//               any generated Bam files.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1252 14 Dtool_w0CqNdy5 0 6 796 3971 0 14 Dtool_w0CqNdy5 386 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_current_minor_ver
//       Access: Public
//  Description: Returns the system current minor version number.
//               This is the version number that will be assigned to
//               any generated Bam files.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1253 14 Dtool_w0CqRuSP 0 6 797 4047 0 14 Dtool_w0CqRuSP 370 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_reader
//       Access: Public
//  Description: Returns the BamReader in charge of performing the
//               read operations.  This will return NULL unless
//               open_read() was called.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1254 14 Dtool_w0CqlFLg 0 6 798 4137 0 14 Dtool_w0CqlFLg 372 ////////////////////////////////////////////////////////////////////
//     Function: BamFile::get_writer
//       Access: Public
//  Description: Returns the BamWriter in charge of performing the
//               write operations.  This will return NULL unless
//               open_write() was called.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4150  
1255 14 Dtool_w0CqMLb2 0 7 800 4024 0 14 Dtool_w0CqMLb2 316 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::make
//       Access: Published, Static
//  Description: Constructs a new BillboardEffect object with the
//               indicated properties.
//////////////////////////////////////////////////////////////////// 6 9 up_vector 1 4065  12 eye_relative 1 3970  12 axial_rotate 1 3970  6 offset 1 3979  7 look_at 1 4056  13 look_at_point 1 3989  
1256 14 Dtool_w0CqZkox 0 7 801 4024 0 14 Dtool_w0CqZkox 316 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::make_axis
//       Access: Published, Static
//  Description: A convenience function to make a typical
//               axis-rotating billboard.
//////////////////////////////////////////////////////////////////// 0 
1257 14 Dtool_w0CqKjao 0 7 802 4024 0 14 Dtool_w0CqKjao 335 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::make_point_eye
//       Access: Published, Static
//  Description: A convenience function to make a typical
//               eye-relative point-rotating billboard.
//////////////////////////////////////////////////////////////////// 0 
1258 14 Dtool_w0Cq5nHa 0 7 803 4024 0 14 Dtool_w0Cq5nHa 339 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::make_point_world
//       Access: Published, Static
//  Description: A convenience function to make a typical
//               world-relative point-rotating billboard.
//////////////////////////////////////////////////////////////////// 0 
1259 14 Dtool_w0CqFuxD 0 6 804 3970 0 14 Dtool_w0CqFuxD 625 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::is_off
//       Access: Published
//  Description: Returns true if the BillboardEffect is an 'off'
//               BillboardEffect, indicating that it does not enable
//               billboarding.  This kind of BillboardEffect isn't
//               particularly useful and isn't normally created or
//               stored in the graph; it might be implicitly
//               discovered as the result of a
//               NodePath::get_rel_state().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4158  
1260 14 Dtool_w0CqamrP 0 6 805 4065 0 14 Dtool_w0CqamrP 281 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_up_vector
//       Access: Published
//  Description: Returns the up vector in effect for this billboard.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4158  
1261 14 Dtool_w0CqDPkT 0 6 806 3970 0 14 Dtool_w0CqDPkT 387 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_eye_relative
//       Access: Published
//  Description: Returns true if this billboard interprets the up
//               vector relative to the camera, or false if it is
//               relative to the world.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4158  
1262 14 Dtool_w0CqjfqI 0 6 807 3970 0 14 Dtool_w0CqjfqI 395 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_axial_rotate
//       Access: Published
//  Description: Returns true if this billboard rotates only around
//               the axis of the up vector, or false if it rotates
//               freely in three dimensions.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4158  
1263 14 Dtool_w0CqJ6nm 0 6 808 3979 0 14 Dtool_w0CqJ6nm 465 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_offset
//       Access: Published
//  Description: Returns the distance toward the camera (or the
//               look_at_point) the billboard is moved towards, after
//               rotating.  This can be used to ensure the billboard
//               is not obscured by nearby geometry.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4158  
1264 14 Dtool_w0CqeWpx 0 6 809 4056 0 14 Dtool_w0CqeWpx 450 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_look_at
//       Access: Published
//  Description: Returns the node this billboard will rotate to look
//               towards.  If this is empty, it means the billboard
//               will rotate towards the current camera node, wherever
//               that might be.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4158  
1265 14 Dtool_w0CqA3tu 0 6 810 3989 0 14 Dtool_w0CqA3tu 386 ////////////////////////////////////////////////////////////////////
//     Function: BillboardEffect::get_look_at_point
//       Access: Published
//  Description: Returns the point, relative to the look_at node,
//               towards which the billboard will rotate.  Normally
//               this is (0, 0, 0).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4158  
1266 14 Dtool_w0CqEm5V 0 7 811 4000 0 14 Dtool_w0CqEm5V 0 0 
1267 14 Dtool_w0Cqvtd7 0 7 814 4162 3033 14 Dtool_w0Cqvtd7 220 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 name 1 4028  4 lens 1 4160  
1268 14 Dtool_w0CqZGLe 0 7 814 4162 3033 14 Dtool_w0CqZGLe 220 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1269 14 Dtool_w0Cq1vNW 0 4 815 3994 0 14 Dtool_w0Cq1vNW 888 // Filename: lensNode.I
// Created by:  drose (26Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: LensNode::copy_lens
//       Access: Published
//  Description: Sets up the LensNode using a copy of the
//               indicated Lens.  If the original Lens is
//               changed or destroyed, this LensNode is not
//               affected.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4162  4 lens 1 4163  
1270 14 Dtool_w0Cqm46f 0 4 815 3994 0 14 Dtool_w0Cqm46f 269 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::copy_lens
//       Access: Published
//  Description: Copies the indicated lens into the specified slot.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4162  5 index 1 3971  4 lens 1 4163  
1271 14 Dtool_w0Cq_2fA 0 4 816 3994 0 14 Dtool_w0Cq_2fA 403 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::set_lens
//       Access: Published
//  Description: Sets up the LensNode using this particular Lens
//               pointer.  If the lens is subsequently modified, the
//               LensNode properties immediately reflect the change.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4162  4 lens 1 4160  
1272 14 Dtool_w0Cqxtno 0 4 816 3994 0 14 Dtool_w0Cqxtno 585 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::set_lens
//       Access: Published
//  Description: Sets the indicated lens.  Although a LensNode
//               normally holds only one lens, it may optionally
//               include multiple lenses, each with a different index
//               number.  The different lenses may be referenced by
//               index number on the DisplayRegion.  Adding a new lens
//               automatically makes it active.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4162  5 index 1 3971  4 lens 1 4160  
1273 14 Dtool_w0Cq9zXB 0 7 817 4160 0 14 Dtool_w0Cq9zXB 443 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::get_lens
//       Access: Published
//  Description: Returns a pointer to the particular Lens
//               associated with this LensNode, or NULL if there is
//               not yet a Lens associated.  If an index number is
//               specified, returns the nth lens.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4165  5 index 1 3971  
1274 14 Dtool_w0Cqd5Ow 0 7 817 4160 0 14 Dtool_w0Cqd5Ow 443 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::get_lens
//       Access: Published
//  Description: Returns a pointer to the particular Lens
//               associated with this LensNode, or NULL if there is
//               not yet a Lens associated.  If an index number is
//               specified, returns the nth lens.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4165  
1275 14 Dtool_w0CqPGgB 0 6 818 3970 0 14 Dtool_w0CqPGgB 536 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::set_lens_active
//       Access: Published
//  Description: Sets the active flag for the nth lens.  When a lens
//               is inactive, it is not used for rendering, and any
//               DisplayRegions associated with it are implicitly
//               inactive as well.  Returns true if the flag is
//               changed, false if it already had this value.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4162  5 index 1 3971  6 active 1 3970  
1276 14 Dtool_w0CqLTIn 0 6 819 3970 0 14 Dtool_w0CqLTIn 266 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::get_lens_active
//       Access: Published
//  Description: Returns the active flag for the nth lens.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4165  5 index 1 3971  
1277 14 Dtool_w0Cq1JkY 0 6 820 3970 0 14 Dtool_w0Cq1JkY 294 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::activate_lens
//       Access: Published
//  Description: An alternate way to call set_lens_active(index,
//               true).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4162  5 index 1 3971  
1278 14 Dtool_w0CqSl8u 0 6 821 3970 0 14 Dtool_w0CqSl8u 297 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::deactivate_lens
//       Access: Published
//  Description: An alternate way to call set_lens_active(index,
//               false).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4162  5 index 1 3971  
1279 14 Dtool_w0CqUo66 0 6 822 3970 0 14 Dtool_w0CqUo66 374 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::is_in_view
//       Access: Published
//  Description: Returns true if the given point is within the bounds
//               of the lens of the LensNode (i.e. if the camera can
//               see the point).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4162  3 pos 1 3989  
1280 14 Dtool_w0CqDOXI 0 6 822 3970 0 14 Dtool_w0CqDOXI 374 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::is_in_view
//       Access: Published
//  Description: Returns true if the given point is within the bounds
//               of the lens of the LensNode (i.e. if the camera can
//               see the point).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4162  5 index 1 3971  3 pos 1 3989  
1281 14 Dtool_w0CqCdMV 0 4 823 3994 0 14 Dtool_w0CqCdMV 391 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::show_frustum
//       Access: Published
//  Description: Enables the drawing of the lens's frustum to aid in
//               visualization.  This actually creates a GeomNode
//               which is parented to the LensNode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4162  
1282 14 Dtool_w0CqZDm8 0 4 824 3994 0 14 Dtool_w0CqZDm8 306 ////////////////////////////////////////////////////////////////////
//     Function: LensNode::hide_frustum
//       Access: Published
//  Description: Disables the drawing of the lens's frustum to aid in
//               visualization.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4162  
1283 14 Dtool_w0CqF6_K 0 7 825 4000 0 14 Dtool_w0CqF6_K 0 0 
1284 14 Dtool_w0Cqm2Nz 0 7 828 4169 3033 14 Dtool_w0Cqm2Nz 223 ////////////////////////////////////////////////////////////////////
//     Function: Camera::Copy Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 copy 1 4167  
1285 14 Dtool_w0CqaMFn 0 7 828 4169 3033 14 Dtool_w0CqaMFn 218 ////////////////////////////////////////////////////////////////////
//     Function: Camera::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 name 1 4028  4 lens 1 4160  
1286 14 Dtool_w0CqDDNS 0 7 828 4169 3033 14 Dtool_w0CqDDNS 218 ////////////////////////////////////////////////////////////////////
//     Function: Camera::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1287 14 Dtool_w0Cq3QAN 0 4 829 3994 0 14 Dtool_w0Cq3QAN 810 // Filename: camera.I
// Created by:  drose (26Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: Camera::set_active
//       Access: Published
//  Description: Sets the active flag on the camera.  When the camera
//               is not active, nothing will be rendered.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  6 active 1 3970  
1288 14 Dtool_w0CqQY9N 0 6 830 3970 0 14 Dtool_w0CqQY9N 295 ////////////////////////////////////////////////////////////////////
//     Function: Camera::is_active
//       Access: Published
//  Description: Returns the current setting of the active flag on the
//               camera.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1289 14 Dtool_w0Cq1aj6 0 4 831 3994 0 14 Dtool_w0Cq1aj6 801 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_scene
//       Access: Published
//  Description: Sets the scene that will be rendered by the camera.
//               This is normally the root node of a scene graph,
//               typically a node called 'render', although it could
//               represent the root of any subgraph.
//
//               Note that the use of this method is now deprecated.
//               In the absence of an explicit scene set on the
//               camera, the camera will render whatever scene it is
//               parented into.  This is the preferred way to specify
//               the scene, since it is the more intuitive mechanism.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  5 scene 1 4056  
1290 14 Dtool_w0Cq_CJc 0 6 832 4056 0 14 Dtool_w0Cq_CJc 306 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_scene
//       Access: Published
//  Description: Returns the scene that will be rendered by the
//               camera.  See set_scene().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1291 14 Dtool_w0CqfkXi 0 6 833 3971 0 14 Dtool_w0CqfkXi 313 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_num_display_regions
//       Access: Published
//  Description: Returns the number of display regions associated with
//               the camera.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1292 14 Dtool_w0CqHanc 0 7 834 4171 0 14 Dtool_w0CqHanc 301 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_display_region
//       Access: Published
//  Description: Returns the nth display region associated with the
//               camera.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4167  1 n 1 3971  
1293 14 Dtool_w0CqSRdR 0 4 835 3994 0 14 Dtool_w0CqSRdR 717 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_camera_mask
//       Access: Published
//  Description: Changes the set of bits that represent the subset of
//               the scene graph the camera will render.
//
//               During the cull traversal, a node is not visited if
//               none of its draw mask bits intersect with the
//               camera's camera mask bits.  These masks can be used
//               to selectively hide and show different parts of the
//               scene graph from different cameras that are otherwise
//               viewing the same scene.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  4 mask 1 4037  
1294 14 Dtool_w0CqXHXi 0 7 836 4037 0 14 Dtool_w0CqXHXi 373 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_camera_mask
//       Access: Published
//  Description: Returns the set of bits that represent the subset of
//               the scene graph the camera will render.  See
//               set_camera_mask().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1295 14 Dtool_w0CqdwtU 0 4 837 3994 0 14 Dtool_w0CqdwtU 606 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_cull_center
//       Access: Published
//  Description: Specifies the point from which the culling operations
//               are performed.  Normally, this is the same as the
//               camera, and that is the default if this is not
//               specified; but it may sometimes be useful to perform
//               the culling from some other viewpoint, particularly
//               when you are debugging the culling itself.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  11 cull_center 1 4056  
1296 14 Dtool_w0CqYdSn 0 6 838 4056 0 14 Dtool_w0CqYdSn 396 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_cull_center
//       Access: Published
//  Description: Returns the point from which the culling operations
//               will be performed, if it was set by
//               set_cull_center(), or the empty NodePath otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1297 14 Dtool_w0CqCT5f 0 4 839 3994 0 14 Dtool_w0CqCT5f 681 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_cull_bounds
//       Access: Published
//  Description: Specifies the bounding volume that should be used to
//               perform culling from this camera.  Normally, this is
//               the bounding volume returned from the active lens'
//               make_bounds() call, but you may override this to
//               specify a custom volume if you require.  The
//               specified bounding volume will be understood to be in
//               the coordinate space of the get_cull_center() node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  11 cull_bounds 1 4131  
1298 14 Dtool_w0CqXo9d 0 7 840 4131 0 14 Dtool_w0CqXo9d 372 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_cull_bounds
//       Access: Published
//  Description: Returns the custom cull volume that was set by
//               set_cull_bounds(), if any, or NULL if no custom cull
//               volume was set.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1299 14 Dtool_w0CqA5qa 0 4 841 3994 0 14 Dtool_w0CqA5qa 680 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_lod_center
//       Access: Published
//  Description: Specifies the point from which the LOD distances
//               are measured.  Normally, this is the same as the
//               camera, and that is the default if this is not
//               specified; but it may sometimes be useful to perform
//               the distance test from some other viewpoint.  This
//               may be used, for instance, to reduce LOD popping when
//               the camera rotates in a small circle about an avatar.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  10 lod_center 1 4056  
1300 14 Dtool_w0CqX15y 0 6 842 4056 0 14 Dtool_w0CqX15y 388 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_lod_center
//       Access: Published
//  Description: Returns the point from which the LOD distances will
//               be measured, if it was set by set_lod_center(), or
//               the empty NodePath otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1301 14 Dtool_w0CqRVZ2 0 4 843 3994 0 14 Dtool_w0CqRVZ2 374 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_initial_state
//       Access: Published
//  Description: Sets the initial state which is applied to all nodes
//               in the scene, as if it were set at the top of the
//               scene graph.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  5 state 1 4008  
1302 14 Dtool_w0CqD4v3 0 7 844 4008 0 14 Dtool_w0CqD4v3 317 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_initial_state
//       Access: Published
//  Description: Returns the initial state as set by a previous call
//               to set_initial_state().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1303 14 Dtool_w0CqCBek 0 4 845 3994 0 14 Dtool_w0CqCBek 477 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_tag_state_key
//       Access: Published
//  Description: Sets the tag key which, when encountered as a tag on
//               nodes in the scene graph, causes this Camera to apply
//               an arbitrary state transition based on the value of
//               the tag (as specified to set_tag_state()).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  13 tag_state_key 1 4028  
1304 14 Dtool_w0Cqoh3v 0 6 846 4028 0 14 Dtool_w0Cqoh3v 311 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_tag_state_key
//       Access: Published
//  Description: Returns the tag key as set by a previous call to
//               set_tag_state_key().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1305 14 Dtool_w0Cqn4Ii 0 4 847 3994 0 14 Dtool_w0Cqn4Ii 337 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_lod_scale
//       Access: Published
//  Description: Sets the multiplier for LOD distances. This value
//               is multiplied with the LOD scale set on LodNodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  5 value 1 3979  
1306 14 Dtool_w0CqoccW 0 6 848 3979 0 14 Dtool_w0CqoccW 262 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_lod_scale
//       Access: Published
//  Description: Returns the multiplier for LOD distances.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4167  
1307 14 Dtool_w0CqT5SH 0 4 849 3994 0 14 Dtool_w0CqT5SH 959 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_tag_state
//       Access: Published
//  Description: Associates a particular state transition with the
//               indicated tag value.  When a node is encountered
//               during traversal with the tag key specified by
//               set_tag_state_key(), if the value of that tag matches
//               tag_state, then the indicated state is applied to
//               this node--but only when it is rendered by this
//               camera.
//
//               This can be used to apply special effects to nodes
//               when they are rendered by certain cameras.  It is
//               particularly useful for multipass rendering, in which
//               specialty cameras might be needed to render the scene
//               with a particular set of effects.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4169  9 tag_state 1 4028  5 state 1 4008  
1308 14 Dtool_w0CqtFjq 0 4 850 3994 0 14 Dtool_w0CqtFjq 314 ////////////////////////////////////////////////////////////////////
//     Function: Camera::clear_tag_state
//       Access: Published
//  Description: Removes the association established by a previous
//               call to set_tag_state().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  9 tag_state 1 4028  
1309 14 Dtool_w0Cq388o 0 6 851 3970 0 14 Dtool_w0Cq388o 343 ////////////////////////////////////////////////////////////////////
//     Function: Camera::has_tag_state
//       Access: Published
//  Description: Returns true if set_tag_state() has previously been
//               called with the indicated tag state, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4167  9 tag_state 1 4028  
1310 14 Dtool_w0Cq7bRn 0 7 852 4008 0 14 Dtool_w0Cq7bRn 402 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_tag_state
//       Access: Published
//  Description: Returns the state associated with the indicated tag
//               state by a previous call to set_tag_state(), or the
//               empty state if nothing has been associated.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4167  9 tag_state 1 4028  
1311 14 Dtool_w0Cqrz56 0 4 853 3994 0 14 Dtool_w0Cqrz56 403 ////////////////////////////////////////////////////////////////////
//     Function: Camera::set_aux_scene_data
//       Access: Published
//  Description: Associates the indicated AuxSceneData object with the
//               given NodePath, possibly replacing a previous
//               data defined for the same NodePath, if any.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4169  9 node_path 1 4056  4 data 1 4146  
1312 14 Dtool_w0CqgEb_ 0 6 854 3970 0 14 Dtool_w0CqgEb_ 401 ////////////////////////////////////////////////////////////////////
//     Function: Camera::clear_aux_scene_data
//       Access: Published
//  Description: Removes the AuxSceneData associated with the
//               indicated NodePath.  Returns true if it is removed
//               successfully, false if it was already gone.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  9 node_path 1 4056  
1313 14 Dtool_w0Cq9tPd 0 7 855 4146 2987 14 Dtool_w0Cq9tPd 341 ////////////////////////////////////////////////////////////////////
//     Function: Camera::get_aux_scene_data
//       Access: Published
//  Description: Returns the AuxSceneData associated with the
//               indicated NodePath, or NULL if nothing is associated.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4167  9 node_path 1 4056  
1314 14 Dtool_w0Cq72v7 0 4 856 3994 0 14 Dtool_w0Cq72v7 298 ////////////////////////////////////////////////////////////////////
//     Function: Camera::list_aux_scene_data
//       Access: Published
//  Description: Outputs all of the NodePaths and AuxSceneDatas in
//               use.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4167  3 out 1 3997  
1315 14 Dtool_w0CqUUgw 0 6 857 3971 0 14 Dtool_w0CqUUgw 443 ////////////////////////////////////////////////////////////////////
//     Function: Camera::cleanup_aux_scene_data
//       Access: Published
//  Description: Walks through the list of currently-assigned
//               AuxSceneData objects and releases any that are
//               past their expiration times.  Returns the number of
//               elements released.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4169  14 current_thread 1 4032  
1316 14 Dtool_w0CqARBt 0 6 857 3971 0 14 Dtool_w0CqARBt 443 ////////////////////////////////////////////////////////////////////
//     Function: Camera::cleanup_aux_scene_data
//       Access: Published
//  Description: Walks through the list of currently-assigned
//               AuxSceneData objects and releases any that are
//               past their expiration times.  Returns the number of
//               elements released.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4169  
1317 14 Dtool_w0Cq7jVC 0 7 858 4000 0 14 Dtool_w0Cq7jVC 0 0 
1318 14 Dtool_w0Cq61__ 0 7 860 4175 3075 14 Dtool_w0Cq61__ 218 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 name 1 4028  5 plane 1 4172  
1319 14 Dtool_w0CqTudM 0 7 860 4175 3075 14 Dtool_w0CqTudM 218 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1320 14 Dtool_w0Cqtns3 0 4 861 3994 0 14 Dtool_w0Cqtns3 289 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::set_plane
//       Access: Public
//  Description: Sets the particular plane represented by the
//               PlaneNode.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4175  5 plane 1 4172  
1321 14 Dtool_w0CqPSiz 0 6 862 4172 0 14 Dtool_w0CqPSiz 264 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::get_plane
//       Access: Public
//  Description: Returns the plane represented by the PlaneNode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4176  
1322 14 Dtool_w0CqFb_8 0 4 863 3994 0 14 Dtool_w0CqFb_8 339 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::set_viz_scale
//       Access: Public
//  Description: Specifies the size of the visual representation of
//               the plane that is drawn if the PlaneNode is shown.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4175  9 viz_scale 1 3979  
1323 14 Dtool_w0CqLHV4 0 6 864 3979 0 14 Dtool_w0CqLHV4 337 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::get_viz_scale
//       Access: Public
//  Description: Returns the size of the visual representation of
//               the plane that is drawn if the PlaneNode is shown.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4176  
1324 14 Dtool_w0CqnpzN 0 4 865 3994 0 14 Dtool_w0CqnpzN 784 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::set_priority
//       Access: Published
//  Description: Changes the relative importance of this PlaneNode
//               (when it is used as a clip plane) relative to the
//               other clip planes that are applied simultaneously.
//
//               The priority number is used to decide which of the
//               requested clip planes are to be activated when more
//               clip planes are requested than the hardware will
//               support.  The highest-priority n planes are selected
//               for rendering.
//
//               This is similar to TextureStage::set_priority().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4175  8 priority 1 3971  
1325 14 Dtool_w0CqhUDr 0 6 866 3971 0 14 Dtool_w0CqhUDr 314 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::get_priority
//       Access: Published
//  Description: Returns the priority associated with this clip
//               plane.  See set_priority().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4176  
1326 14 Dtool_w0CqmaMf 0 4 868 3994 0 14 Dtool_w0CqmaMf 755 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::set_clip_effect
//       Access: Published
//  Description: Specifies the sort of things this plane will actually
//               clip (when it is used as a clip plane).  This is a
//               bitmask union of ClipEffect values.  If it includes
//               CE_visible, then it will clip visible geometry; if it
//               includes CE_collision, then it will clip collision
//               polygons.  If it includes neither bit, it will still
//               affect culling, but objects will either be wholly
//               behind the clipping plane, or wholly present.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4175  11 clip_effect 1 3971  
1327 14 Dtool_w0Cq0HJo 0 6 869 3971 0 14 Dtool_w0Cq0HJo 315 ////////////////////////////////////////////////////////////////////
//     Function: PlaneNode::get_clip_effect
//       Access: Published
//  Description: Returns the clip_effect bits for this clip plane.
//               See set_clip_effect().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4176  
1328 14 Dtool_w0CqajRh 0 7 870 4000 0 14 Dtool_w0CqajRh 0 0 
1329 14 Dtool_w0CqMFqO 0 7 874 4005 0 14 Dtool_w0CqMFqO 304 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that does
//               nothing.
//////////////////////////////////////////////////////////////////// 0 
1330 14 Dtool_w0CqSf11 0 7 874 4005 0 14 Dtool_w0CqSf11 469 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that enables (or
//               disables, according to op) the indicated plane(s).
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
//////////////////////////////////////////////////////////////////// 2 2 op 1 3878  5 plane 1 4175  
1331 14 Dtool_w0CqAiXQ 0 7 874 4005 0 14 Dtool_w0CqAiXQ 464 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that turns on (or
//               off, according to op) the indicate plane(s).
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
//////////////////////////////////////////////////////////////////// 3 2 op 1 3878  6 plane1 1 4175  6 plane2 1 4175  
1332 14 Dtool_w0CqCohu 0 7 874 4005 0 14 Dtool_w0CqCohu 464 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that turns on (or
//               off, according to op) the indicate plane(s).
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
//////////////////////////////////////////////////////////////////// 4 2 op 1 3878  6 plane1 1 4175  6 plane2 1 4175  6 plane3 1 4175  
1333 14 Dtool_w0Cquzti 0 7 874 4005 0 14 Dtool_w0Cquzti 464 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that turns on (or
//               off, according to op) the indicate plane(s).
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
//////////////////////////////////////////////////////////////////// 5 2 op 1 3878  6 plane1 1 4175  6 plane2 1 4175  6 plane3 1 4175  6 plane4 1 4175  
1334 14 Dtool_w0CqLVlb 0 7 875 4005 0 14 Dtool_w0CqLVlb 402 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1335 14 Dtool_w0Cqjfgg 0 6 876 3878 0 14 Dtool_w0Cqjfgg 900 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_operation
//       Access: Published
//  Description: Returns the basic operation type of the ClipPlaneAttrib.
//               If this is O_set, the planes listed here completely
//               replace any planes that were already on.  If this is
//               O_add, the planes here are added to the set of of
//               planes that were already on, and if O_remove, the
//               planes here are removed from the set of planes that
//               were on.
//
//               This method is now deprecated.  ClipPlaneAttribs
//               nowadays have a separate list of on_planes and
//               off_planes, so this method doesn't make sense.  Query
//               the lists independently.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4178  
1336 14 Dtool_w0CqhARe 0 6 877 3971 0 14 Dtool_w0CqhARe 530 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_num_planes
//       Access: Published
//  Description: Returns the number of planes listed in the attribute.
//
//               This method is now deprecated.  ClipPlaneAttribs
//               nowadays have a separate list of on_planes and
//               off_planes, so this method doesn't make sense.  Query
//               the lists independently.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4178  
1337 14 Dtool_w0CqS5RG 0 7 878 4175 3075 14 Dtool_w0CqS5RG 518 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_plane
//       Access: Published
//  Description: Returns the nth plane listed in the attribute.
//
//               This method is now deprecated.  ClipPlaneAttribs
//               nowadays have a separate list of on_planes and
//               off_planes, so this method doesn't make sense.  Query
//               the lists independently.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  1 n 1 3971  
1338 14 Dtool_w0CqxcJo 0 6 879 3970 0 14 Dtool_w0CqxcJo 566 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::has_plane
//       Access: Published
//  Description: Returns true if the indicated plane is listed in the
//               attrib, false otherwise.
//
//               This method is now deprecated.  ClipPlaneAttribs
//               nowadays have a separate list of on_planes and
//               off_planes, so this method doesn't make sense.  Query
//               the lists independently.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  5 plane 1 4175  
1339 14 Dtool_w0CqhmfX 0 7 880 4005 0 14 Dtool_w0CqhmfX 467 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::add_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane added to the list of planes.
//
//               This method is now deprecated.  Use add_on_plane() or
//               add_off_plane() instead.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  5 plane 1 4175  
1340 14 Dtool_w0Cqr4Ff 0 7 881 4005 0 14 Dtool_w0Cqr4Ff 497 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::remove_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane removed from the list of
//               planes.
//
//               This method is now deprecated.  Use remove_on_plane()
//               or remove_off_plane() instead.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  5 plane 1 4175  
1341 14 Dtool_w0CqIhtw 0 7 882 4005 0 14 Dtool_w0CqIhtw 350 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::make_all_off
//       Access: Published, Static
//  Description: Constructs a new ClipPlaneAttrib object that disables 
//               all planes (and hence disables clipping).
//////////////////////////////////////////////////////////////////// 0 
1342 14 Dtool_w0CqmD9r 0 6 883 3971 0 14 Dtool_w0CqmD9r 314 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_num_on_planes
//       Access: Published
//  Description: Returns the number of planes that are enabled by
//               the attribute.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4178  
1343 14 Dtool_w0Cqc731 0 7 884 4055 2948 14 Dtool_w0Cqc731 317 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_on_plane
//       Access: Published
//  Description: Returns the nth plane enabled by the attribute,
//               sorted in render order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  1 n 1 3971  
1344 14 Dtool_w0Cq5ejJ 0 6 885 3970 0 14 Dtool_w0Cq5ejJ 324 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::has_on_plane
//       Access: Published
//  Description: Returns true if the indicated plane is enabled by
//               the attrib, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  5 plane 1 4056  
1345 14 Dtool_w0CqiwoK 0 6 886 3971 0 14 Dtool_w0CqiwoK 316 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_num_off_planes
//       Access: Published
//  Description: Returns the number of planes that are disabled by
//               the attribute.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4178  
1346 14 Dtool_w0CqQHx4 0 7 887 4055 2948 14 Dtool_w0CqQHx4 332 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::get_off_plane
//       Access: Published
//  Description: Returns the nth plane disabled by the attribute,
//               sorted in arbitrary (pointer) order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  1 n 1 3971  
1347 14 Dtool_w0CqW4PJ 0 6 888 3970 0 14 Dtool_w0CqW4PJ 326 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::has_off_plane
//       Access: Published
//  Description: Returns true if the indicated plane is disabled by
//               the attrib, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  5 plane 1 4056  
1348 14 Dtool_w0Cq77yZ 0 6 889 3970 0 14 Dtool_w0Cq77yZ 328 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::has_all_off
//       Access: Published
//  Description: Returns true if this attrib disables all planes
//               (although it may also enable some).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4178  
1349 14 Dtool_w0Cq1m0T 0 6 890 3970 0 14 Dtool_w0Cq1m0T 333 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::is_identity
//       Access: Published
//  Description: Returns true if this is an identity attrib: it does
//               not change the set of planes in use.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4178  
1350 14 Dtool_w0CqOV44 0 7 891 4005 0 14 Dtool_w0CqOV44 394 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::add_on_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane added to the list of planes
//               enabled by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  5 plane 1 4056  
1351 14 Dtool_w0CqZNYP 0 7 892 4005 0 14 Dtool_w0CqZNYP 401 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::remove_on_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane removed from the list of
//               planes enabled by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  5 plane 1 4056  
1352 14 Dtool_w0Cqhtl4 0 7 893 4005 0 14 Dtool_w0Cqhtl4 396 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::add_off_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane added to the list of planes
//               disabled by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  5 plane 1 4056  
1353 14 Dtool_w0Cqndra 0 7 894 4005 0 14 Dtool_w0Cqndra 403 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::remove_off_plane
//       Access: Published
//  Description: Returns a new ClipPlaneAttrib, just like this one, but
//               with the indicated plane removed from the list of
//               planes disabled by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  5 plane 1 4056  
1354 14 Dtool_w0Cq7mpB 0 7 895 4178 0 14 Dtool_w0Cq7mpB 477 ////////////////////////////////////////////////////////////////////
//     Function: ClipPlaneAttrib::filter_to_max
//       Access: Public
//  Description: Returns a new ClipPlaneAttrib, very much like this one,
//               but with the number of on_planes reduced to be no
//               more than max_clip_planes.  The number of off_planes in
//               the new ClipPlaneAttrib is undefined.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4178  15 max_clip_planes 1 3971  
1355 14 Dtool_w0CqQZ_S 0 6 896 3971 0 14 Dtool_w0CqQZ_S 0 0 
1356 14 Dtool_w0CqiYmd 0 7 897 4000 0 14 Dtool_w0CqiYmd 0 0 
1357 14 Dtool_w0CqVIQx 0 7 901 4005 0 14 Dtool_w0CqVIQx 379 ////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::make_vertex
//       Access: Published, Static
//  Description: Constructs a new ColorAttrib object that indicates
//               geometry should be rendered according to its own
//               vertex color.
//////////////////////////////////////////////////////////////////// 0 
1358 14 Dtool_w0Cq_AHD 0 7 902 4005 0 14 Dtool_w0Cq_AHD 349 ////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::make_flat
//       Access: Published, Static
//  Description: Constructs a new ColorAttrib object that indicates
//               geometry should be rendered in the indicated color.
//////////////////////////////////////////////////////////////////// 1 5 color 1 4067  
1359 14 Dtool_w0CqtNeS 0 7 903 4005 0 14 Dtool_w0CqtNeS 334 ////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ColorAttrib object that indicates
//               geometry should be rendered in white.
//////////////////////////////////////////////////////////////////// 0 
1360 14 Dtool_w0CqXNi2 0 7 904 4005 0 14 Dtool_w0CqXNi2 398 ////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1361 14 Dtool_w0CquDIc 0 6 905 3880 0 14 Dtool_w0CquDIc 648 ////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::get_color_type
//       Access: Published
//  Description: Returns the type of color specified by this
//               ColorAttrib.  The options are:
//
//                 T_vertex - use the vertex color specified in the
//                 geometry itself.
//
//                 T_flat - use the color specified in this
//                 ColorAttrib for all geometry.  You can get this
//                 color via get_color().
//
//                 T_off - use the color white.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4180  
1362 14 Dtool_w0Cqfxu6 0 6 906 4067 0 14 Dtool_w0Cqfxu6 391 ////////////////////////////////////////////////////////////////////
//     Function: ColorAttrib::get_color
//       Access: Published
//  Description: If the type is T_flat or T_off, this returns the
//               color that will be applied to geometry.  If the type
//               is T_vertex, this is meaningless.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4180  
1363 14 Dtool_w0Cq_3Vt 0 6 907 3971 0 14 Dtool_w0Cq_3Vt 0 0 
1364 14 Dtool_w0CqNqSX 0 7 908 4000 0 14 Dtool_w0CqNqSX 0 0 
1365 14 Dtool_w0Cq5AXJ 0 7 913 4005 0 14 Dtool_w0Cq5AXJ 396 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ColorBlendAttrib object that
//               disables special-effect blending, allowing normal
//               transparency to be used instead.
//////////////////////////////////////////////////////////////////// 0 
1366 14 Dtool_w0Cq5Fac 0 7 914 4005 0 14 Dtool_w0Cq5Fac 404 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ColorBlendAttrib object.  This
//               constructor is deprecated; use the one below, which
//               takes three or four parameters, instead.
//////////////////////////////////////////////////////////////////// 1 4 mode 1 3882  
1367 14 Dtool_w0Cq_Hc8 0 7 914 4005 0 14 Dtool_w0Cq_Hc8 373 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ColorBlendAttrib object that enables
//               special-effect blending.  This supercedes
//               transparency.
//////////////////////////////////////////////////////////////////// 4 4 mode 1 3882  1 a 1 3883  1 b 1 3883  5 color 1 4067  
1368 14 Dtool_w0CqVZIK 0 7 914 4005 0 14 Dtool_w0CqVZIK 373 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ColorBlendAttrib object that enables
//               special-effect blending.  This supercedes
//               transparency.
//////////////////////////////////////////////////////////////////// 3 4 mode 1 3882  1 a 1 3883  1 b 1 3883  
1369 14 Dtool_w0Cq_UhR 0 7 915 4005 0 14 Dtool_w0Cq_UhR 403 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1370 14 Dtool_w0CqVa3Z 0 6 916 3882 0 14 Dtool_w0CqVa3Z 254 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::get_mode
//       Access: Published
//  Description: Returns the colorBlend mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4182  
1371 14 Dtool_w0Cq2xBv 0 6 917 3883 0 14 Dtool_w0Cq2xBv 278 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::get_operand_a
//       Access: Published
//  Description: Returns the multiplier for the first component.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4182  
1372 14 Dtool_w0Cq2oPw 0 6 918 3883 0 14 Dtool_w0Cq2oPw 279 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::get_operand_b
//       Access: Published
//  Description: Returns the multiplier for the second component.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4182  
1373 14 Dtool_w0CqlK1Z 0 7 919 4070 0 14 Dtool_w0CqlK1Z 281 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::get_color
//       Access: Published
//  Description: Returns the constant color associated with the attrib.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4182  
1374 14 Dtool_w0Cqs1UW 0 6 920 3970 0 14 Dtool_w0Cqs1UW 331 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::involves_constant_color
//       Access: Published
//  Description: Returns true if the this attrib uses the
//               constant color, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4182  
1375 14 Dtool_w0CqZuVD 0 6 920 3970 0 14 Dtool_w0CqZuVD 345 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::involves_constant_color
//       Access: Published, Static
//  Description: Returns true if the indicated operand uses the
//               constant color, false otherwise.
//////////////////////////////////////////////////////////////////// 1 7 operand 1 3883  
1376 14 Dtool_w0CqPd_w 0 6 921 3970 0 14 Dtool_w0CqPd_w 332 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::involves_color_scale
//       Access: Published
//  Description: Returns true if the this attrib uses the
//               color scale attrib, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4182  
1377 14 Dtool_w0CqDAnV 0 6 921 3970 0 14 Dtool_w0CqDAnV 346 ////////////////////////////////////////////////////////////////////
//     Function: ColorBlendAttrib::involves_color_scale
//       Access: Published, Static
//  Description: Returns true if the indicated operand uses the
//               color scale attrib, false otherwise.
//////////////////////////////////////////////////////////////////// 1 7 operand 1 3883  
1378 14 Dtool_w0CqzdH_ 0 6 922 3971 0 14 Dtool_w0CqzdH_ 0 0 
1379 14 Dtool_w0CqdCAT 0 7 923 4000 0 14 Dtool_w0CqdCAT 0 0 
1380 14 Dtool_w0CqHjWB 0 7 926 4005 0 14 Dtool_w0CqHjWB 275 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::make_identity
//       Access: Published, Static
//  Description: Constructs an identity scale attrib.
//////////////////////////////////////////////////////////////////// 0 
1381 14 Dtool_w0CqqphH 0 7 927 4005 0 14 Dtool_w0CqqphH 353 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ColorScaleAttrib object that indicates
//               geometry should be scaled by the indicated factor.
//////////////////////////////////////////////////////////////////// 1 5 scale 1 4067  
1382 14 Dtool_w0CqiYTX 0 7 928 4005 0 14 Dtool_w0CqiYTX 477 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ColorScaleAttrib object that ignores
//               any ColorScaleAttrib inherited from above.  You may
//               also specify an additional color scale to apply to
//               geometry below (using set_scale()).
//////////////////////////////////////////////////////////////////// 0 
1383 14 Dtool_w0Cqgycf 0 7 929 4005 0 14 Dtool_w0Cqgycf 403 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1384 14 Dtool_w0Cq4gpd 0 6 930 3970 0 14 Dtool_w0Cq4gpd 526 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::is_off
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib will ignore any
//               color scales inherited from above, false otherwise.
//               This is not the same thing as !has_scale(); a
//               ColorScaleAttrib may have the "off" flag set and also
//               have another scale specified.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4184  
1385 14 Dtool_w0CqbEZp 0 6 931 3970 0 14 Dtool_w0CqbEZp 377 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::is_identity
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib is an identity
//               attrib, false if it is either an off attrib or it has
//               a scale.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4184  
1386 14 Dtool_w0Cq5XjN 0 6 932 3970 0 14 Dtool_w0Cq5XjN 404 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::has_scale
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib has a
//               non-identity scale, false otherwise (in which case it
//               might be an off attrib or an identity attrib).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4184  
1387 14 Dtool_w0CqsOha 0 6 933 3970 0 14 Dtool_w0CqsOha 386 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::has_rgb_scale
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib has a
//               non-identity scale in the RGB components (ignoring
//               alpha), or false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4184  
1388 14 Dtool_w0Cq08u4 0 6 934 3970 0 14 Dtool_w0Cq08u4 387 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::has_alpha_scale
//       Access: Published
//  Description: Returns true if the ColorScaleAttrib has a
//               non-identity scale in the alpha component (ignoring
//               RGB), or false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4184  
1389 14 Dtool_w0CqlY5G 0 6 935 4067 0 14 Dtool_w0CqlY5G 269 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::get_scale
//       Access: Published
//  Description: Returns the scale to be applied to colors.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4184  
1390 14 Dtool_w0CqB7C2 0 7 936 4005 0 14 Dtool_w0CqB7C2 346 ////////////////////////////////////////////////////////////////////
//     Function: ColorScaleAttrib::set_scale
//       Access: Published
//  Description: Returns a new ColorScaleAttrib, just like this one, but
//               with the scale changed to the indicated value.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4184  5 scale 1 4067  
1391 14 Dtool_w0CqtLFN 0 6 937 3971 0 14 Dtool_w0CqtLFN 0 0 
1392 14 Dtool_w0CqkV8g 0 7 938 4000 0 14 Dtool_w0CqkV8g 0 0 
1393 14 Dtool_w0Cqzjc0 0 7 942 4005 0 14 Dtool_w0Cqzjc0 271 ////////////////////////////////////////////////////////////////////
//     Function: ColorWriteAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ColorWriteAttrib object.
//////////////////////////////////////////////////////////////////// 1 8 channels 1 3972  
1394 14 Dtool_w0Cq3IW4 0 7 943 4005 0 14 Dtool_w0Cq3IW4 403 ////////////////////////////////////////////////////////////////////
//     Function: ColorWriteAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1395 14 Dtool_w0CqUAsG 0 6 944 3972 0 14 Dtool_w0CqUAsG 314 ////////////////////////////////////////////////////////////////////
//     Function: ColorWriteAttrib::get_channels
//       Access: Published
//  Description: Returns the mask of color channels that are enabled
//               by this attrib.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4186  
1396 14 Dtool_w0Cq0n8l 0 6 945 3971 0 14 Dtool_w0Cq0n8l 0 0 
1397 14 Dtool_w0CqP935 0 7 946 4000 0 14 Dtool_w0CqP935 0 0 
1398 14 Dtool_w0Cq1e7i 0 7 950 4024 0 14 Dtool_w0Cq1e7i 660 ////////////////////////////////////////////////////////////////////
//     Function: CompassEffect::make
//       Access: Published, Static
//  Description: Constructs a new CompassEffect object.  If the
//               reference is an empty NodePath, it means the
//               CompassEffect is relative to the root of the scene
//               graph; otherwise, it's relative to the indicated
//               node.  The properties bitmask specifies the set of
//               properties that the compass node inherits from the
//               reference instead of from its parent.
//////////////////////////////////////////////////////////////////// 2 9 reference 1 4056  10 properties 1 3971  
1399 14 Dtool_w0Cqo3bC 0 7 950 4024 0 14 Dtool_w0Cqo3bC 660 ////////////////////////////////////////////////////////////////////
//     Function: CompassEffect::make
//       Access: Published, Static
//  Description: Constructs a new CompassEffect object.  If the
//               reference is an empty NodePath, it means the
//               CompassEffect is relative to the root of the scene
//               graph; otherwise, it's relative to the indicated
//               node.  The properties bitmask specifies the set of
//               properties that the compass node inherits from the
//               reference instead of from its parent.
//////////////////////////////////////////////////////////////////// 1 9 reference 1 4056  
1400 14 Dtool_w0Cq9Dfu 0 6 951 4056 0 14 Dtool_w0Cq9Dfu 398 ////////////////////////////////////////////////////////////////////
//     Function: CompassEffect::get_reference
//       Access: Published
//  Description: Returns the reference node from which the
//               CompassEffect inherits its transform.  If this is
//               empty, it means the root of the scene graph.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4188  
1401 14 Dtool_w0CqNQdF 0 6 952 3971 0 14 Dtool_w0CqNQdF 398 ////////////////////////////////////////////////////////////////////
//     Function: CompassEffect::get_properties
//       Access: Published
//  Description: 
//               Returns the bitmask of properties that this
//               CompassEffect object inherits from its reference node
//               (or from the root).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4188  
1402 14 Dtool_w0CqeHvU 0 7 953 4000 0 14 Dtool_w0CqeHvU 0 0 
1403 14 Dtool_w0Cq9_4q 0 7 959 4005 0 14 Dtool_w0Cq9_4q 589 ////////////////////////////////////////////////////////////////////
//     Function: CullBinAttrib::make
//       Access: Published, Static
//  Description: Constructs a new CullBinAttrib assigning geometry
//               into the named bin.  If the bin name is the empty
//               string, the default bin is used.
//
//               The draw_order specifies further ordering information
//               which is relevant only to certain kinds of bins (in
//               particular CullBinFixed type bins).
//////////////////////////////////////////////////////////////////// 2 8 bin_name 1 4028  10 draw_order 1 3971  
1404 14 Dtool_w0Cqahaw 0 7 960 4005 0 14 Dtool_w0Cqahaw 400 ////////////////////////////////////////////////////////////////////
//     Function: CullBinAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1405 14 Dtool_w0CqKDax 0 6 961 4028 0 14 Dtool_w0CqKDax 373 ////////////////////////////////////////////////////////////////////
//     Function: CullBinAttrib::get_bin_name
//       Access: Published
//  Description: Returns the name of the bin this attribute specifies.
//               If this is the empty string, it refers to the default
//               bin.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4190  
1406 14 Dtool_w0CqK03U 0 6 962 3971 0 14 Dtool_w0CqK03U 448 ////////////////////////////////////////////////////////////////////
//     Function: CullBinAttrib::get_draw_order
//       Access: Published
//  Description: Returns the draw order this attribute specifies.
//               Some bins (in particular, CullBinFixed bins) use this
//               to further specify the order in which objects should
//               be rendered.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4190  
1407 14 Dtool_w0CqJUhp 0 6 963 3971 0 14 Dtool_w0CqJUhp 0 0 
1408 14 Dtool_w0CqW020 0 7 964 4000 0 14 Dtool_w0CqW020 0 0 
1409 14 Dtool_w0CqJenF 0 6 967 3971 0 14 Dtool_w0CqJenF 507 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::add_bin
//       Access: Published
//  Description: Defines a new bin with the indicated name, and
//               returns the new bin_index.  If there is already a bin
//               with the same name returns its bin_index if it had
//               the same properties; otherwise, reports an error and
//               returns -1.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4192  4 name 1 4028  4 type 1 3890  4 sort 1 3971  
1410 14 Dtool_w0Cqbswe 0 4 968 3994 0 14 Dtool_w0Cqbswe 663 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::remove_bin
//       Access: Published
//  Description: Permanently removes the indicated bin.  This
//               operation is not protected from the pipeline and will
//               disturb whatever is currently rendering in draw.  You
//               should not call this during the normal course of
//               rendering a frame; it is intended only as an aid to
//               development, to allow the developer to interactively
//               fiddle with the set of bins.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4192  9 bin_index 1 3971  
1411 14 Dtool_w0Cqj_LX 0 6 969 3971 0 14 Dtool_w0Cqj_LX 268 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_num_bins
//       Access: Published
//  Description: Returns the number of bins in the world.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4193  
1412 14 Dtool_w0CqoytP 0 6 970 3971 0 14 Dtool_w0CqoytP 511 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin
//       Access: Published
//  Description: Returns the bin_index of the nth bin in the set,
//               where n is a number between 0 and get_num_bins().
//               This returns the list of bin_index numbers, in sorted
//               order (that is, in the order in which the bins should
//               be rendered).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  1 n 1 3971  
1413 14 Dtool_w0Cq5zCj 0 6 971 3971 0 14 Dtool_w0Cq5zCj 336 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::find_bin
//       Access: Published
//  Description: Returns the bin_index associated with the bin of the
//               given name, or -1 if no bin has that name.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  4 name 1 4028  
1414 14 Dtool_w0Cqo76W 0 6 972 4028 0 14 Dtool_w0Cqo76W 458 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_name
//       Access: Published
//  Description: Returns the name of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).  The bin's name may not be changed
//               during the life of the bin.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  9 bin_index 1 3971  
1415 14 Dtool_w0CqWa3_ 0 6 973 3890 0 14 Dtool_w0CqWa3_ 297 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_type
//       Access: Published
//  Description: Returns the type of the bin with the indicated
//               name.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  4 name 1 4028  
1416 14 Dtool_w0CqxiQg 0 6 973 3890 0 14 Dtool_w0CqxiQg 378 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_type
//       Access: Published
//  Description: Returns the type of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  9 bin_index 1 3971  
1417 14 Dtool_w0CqBZ6R 0 4 974 3994 0 14 Dtool_w0CqBZ6R 456 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_type
//       Access: Published
//  Description: Changes the type of the bin with the indicated
//               name.
//
//               The change might be effective immediately, or it
//               might take place next frame, depending on the bin
//               type.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4192  4 name 1 4028  4 type 1 3890  
1418 14 Dtool_w0Cq8mzD 0 4 974 3994 0 14 Dtool_w0Cq8mzD 537 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_type
//       Access: Published
//  Description: Changes the type of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               The change might be effective immediately, or it
//               might take place next frame, depending on the bin
//               type.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4192  9 bin_index 1 3971  4 type 1 3890  
1419 14 Dtool_w0Cqwm68 0 6 975 3971 0 14 Dtool_w0Cqwm68 486 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_sort
//       Access: Published
//  Description: Returns the sort order of the bin with the indicated
//               name.
//
//               The bins are rendered in increasing order by their
//               sort order; this number may be changed from time to
//               time to reorder the bins.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  4 name 1 4028  
1420 14 Dtool_w0CqJVUe 0 6 975 3971 0 14 Dtool_w0CqJVUe 567 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_sort
//       Access: Published
//  Description: Returns the sort order of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               The bins are rendered in increasing order by their
//               sort order; this number may be changed from time to
//               time to reorder the bins.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  9 bin_index 1 3971  
1421 14 Dtool_w0CqZvJ2 0 4 976 3994 0 14 Dtool_w0CqZvJ2 486 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_sort
//       Access: Published
//  Description: Changes the sort order of the bin with the indicated
//               name.
//
//               The bins are rendered in increasing order by their
//               sort order; this number may be changed from time to
//               time to reorder the bins.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4192  4 name 1 4028  4 sort 1 3971  
1422 14 Dtool_w0CqU8RN 0 4 976 3994 0 14 Dtool_w0CqU8RN 567 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_sort
//       Access: Published
//  Description: Changes the sort order of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               The bins are rendered in increasing order by their
//               sort order; this number may be changed from time to
//               time to reorder the bins.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4192  9 bin_index 1 3971  4 sort 1 3971  
1423 14 Dtool_w0CqcE_B 0 6 977 3970 0 14 Dtool_w0CqcE_B 419 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_active
//       Access: Published
//  Description: Returns the active flag of the bin with the indicated
//               name.
//
//               When a bin is marked inactive, all geometry assigned
//               to it is not rendered.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  4 name 1 4028  
1424 14 Dtool_w0CqwCRb 0 6 977 3970 0 14 Dtool_w0CqwCRb 500 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_bin_active
//       Access: Published
//  Description: Returns the active flag of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               When a bin is marked inactive, all geometry assigned
//               to it is not rendered.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  9 bin_index 1 3971  
1425 14 Dtool_w0CqUwxh 0 4 978 3994 0 14 Dtool_w0CqUwxh 419 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_active
//       Access: Published
//  Description: Changes the active flag of the bin with the indicated
//               name.
//
//               When a bin is marked inactive, all geometry assigned
//               to it is not rendered.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4192  4 name 1 4028  6 active 1 3970  
1426 14 Dtool_w0CqgtxI 0 4 978 3994 0 14 Dtool_w0CqgtxI 500 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::set_bin_active
//       Access: Published
//  Description: Changes the active flag of the bin with the indicated
//               bin_index (where bin_index was retrieved by get_bin()
//               or find_bin()).
//
//               When a bin is marked inactive, all geometry assigned
//               to it is not rendered.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4192  9 bin_index 1 3971  6 active 1 3970  
1427 14 Dtool_w0CqShRp 0 4 979 3994 0 14 Dtool_w0CqShRp 221 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::write
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4193  3 out 1 3997  
1428 14 Dtool_w0Cq_lYP 0 6 980 4192 0 14 Dtool_w0Cq_lYP 311 ////////////////////////////////////////////////////////////////////
//     Function: CullBinManager::get_global_ptr
//       Access: Published, Static
//  Description: Returns the pointer to the global CullBinManager
//               object.
//////////////////////////////////////////////////////////////////// 0 
1429 14 Dtool_w0CqIubb 0 7 983 4005 0 14 Dtool_w0CqIubb 739 ////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::make
//       Access: Published, Static
//  Description: Constructs a new CullFaceAttrib object that specifies
//               how to cull geometry.  By Panda convention, vertices
//               are ordered counterclockwise when seen from the
//               front, so the M_cull_clockwise will cull backfacing
//               polygons.
//
//               M_cull_unchanged is an identity attrib; if this is
//               applied to vertices without any other intervening
//               attrib, it is the same as applying the default
//               attrib.
//////////////////////////////////////////////////////////////////// 1 4 mode 1 3894  
1430 14 Dtool_w0Cqnry7 0 7 983 4005 0 14 Dtool_w0Cqnry7 739 ////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::make
//       Access: Published, Static
//  Description: Constructs a new CullFaceAttrib object that specifies
//               how to cull geometry.  By Panda convention, vertices
//               are ordered counterclockwise when seen from the
//               front, so the M_cull_clockwise will cull backfacing
//               polygons.
//
//               M_cull_unchanged is an identity attrib; if this is
//               applied to vertices without any other intervening
//               attrib, it is the same as applying the default
//               attrib.
//////////////////////////////////////////////////////////////////// 0 
1431 14 Dtool_w0Cq1_sE 0 7 984 4005 0 14 Dtool_w0Cq1_sE 529 ////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::make_reverse
//       Access: Published, Static
//  Description: Constructs a new CullFaceAttrib object that reverses
//               the effects of any other CullFaceAttrib objects in
//               the scene graph.  M_cull_clockwise will be treated as
//               M_cull_counter_clockwise, and vice-versa.
//               M_cull_none is unchanged.
//////////////////////////////////////////////////////////////////// 0 
1432 14 Dtool_w0CqaQNy 0 7 985 4005 0 14 Dtool_w0CqaQNy 401 ////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1433 14 Dtool_w0Cqtw1_ 0 6 986 3894 0 14 Dtool_w0Cqtw1_ 382 ////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::get_actual_mode
//       Access: Published
//  Description: Returns the actual culling mode, without considering
//               the effects of the reverse flag.  See also
//               get_effective_mode().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4195  
1434 14 Dtool_w0CqZ_zu 0 6 987 3970 0 14 Dtool_w0CqZ_zu 608 ////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::get_reverse
//       Access: Published
//  Description: Returns the 'reverse' flag.  If this is true, the
//               actual cull direction (clockwise
//               vs. counterclockwise) is the reverse of what is
//               specified here.  This allows support for
//               make_reverse(), which defines a CullFaceAttrib that
//               reverses whatever the sense of culling would have
//               been.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4195  
1435 14 Dtool_w0CqN1y1 0 6 988 3894 0 14 Dtool_w0CqN1y1 487 ////////////////////////////////////////////////////////////////////
//     Function: CullFaceAttrib::get_effective_mode
//       Access: Published
//  Description: Returns the effective culling mode.  This is the same
//               as the actual culling mode, unless the reverse flag
//               is set, which swaps CW for CCW and vice-versa.  Also,
//               M_cull_unchanged is mapped to M_cull_none.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4195  
1436 14 Dtool_w0CqO84V 0 6 989 3971 0 14 Dtool_w0CqO84V 0 0 
1437 14 Dtool_w0CqdcRA 0 7 990 4000 0 14 Dtool_w0CqdcRA 0 0 
1438 14 Dtool_w0Cq3eFF 0 7 993 4197 2486 14 Dtool_w0Cq3eFF 220 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1439 14 Dtool_w0Cq1Bv8 0 4 994 3994 0 14 Dtool_w0Cq1Bv8 850 // Filename: geomNode.I
// Created by:  drose (23Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: GeomNode::set_preserved
//       Access: Published
//  Description: Sets the "preserved" flag.  When this is true, the
//               GeomNode will be left untouched by any flatten
//               operations.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4197  5 value 1 3970  
1440 14 Dtool_w0CqiZ2Q 0 6 995 3970 0 14 Dtool_w0CqiZ2Q 369 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_preserved
//       Access: Published
//  Description: Returns the "preserved" flag.  When this is true, the
//               GeomNode will be left untouched by any flatten
//               operations.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4198  
1441 14 Dtool_w0CqI0Ys 0 6 996 3971 0 14 Dtool_w0CqI0Ys 263 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_num_geoms
//       Access: Published
//  Description: Returns the number of geoms in the node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4198  
1442 14 Dtool_w0CqAgFb 0 7 997 4202 0 14 Dtool_w0CqAgFb 438 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_geom
//       Access: Published
//  Description: Returns the nth geom of the node.  This object should
//               not be modified, since the same object might be
//               shared between multiple different GeomNodes, but see
//               modify_geom().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4198  1 n 1 3971  
1443 14 Dtool_w0Cqh0cC 0 7 998 4203 0 14 Dtool_w0Cqh0cC 1031 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::modify_geom
//       Access: Published
//  Description: Returns the nth geom of the node, suitable for
//               modifying it.  If the nth Geom has multiple reference
//               counts to it, reassigns it to an identical copy
//               first, and returns the new copy--this provides a
//               "copy on write" that ensures that the Geom that is
//               returned is unique to this GeomNode and is not shared
//               with any other GeomNodes.
//
//               Note that if this method is called in a downstream
//               stage (for instance, during cull or draw), then it
//               will propagate the new list of Geoms upstream all the
//               way to pipeline stage 0, which may step on changes
//               that were made independently in pipeline stage 0.
//               Use with caution.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4197  1 n 1 3971  
1444 14 Dtool_w0CqeIGG 0 7 999 4008 0 14 Dtool_w0CqeIGG 585 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_geom_state
//       Access: Published
//  Description: Returns the RenderState associated with the nth geom
//               of the node.  This is just the RenderState directly
//               associated with the Geom; the actual state in which
//               the Geom is rendered will also be affected by
//               RenderStates that appear on the scene graph in nodes
//               above this GeomNode.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4198  1 n 1 3971  
1445 14 Dtool_w0CqqNIz 0 4 1000 3994 0 14 Dtool_w0CqqNIz 965 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::set_geom_state
//       Access: Published
//  Description: Changes the RenderState associated with the nth geom
//               of the node.  This is just the RenderState directly
//               associated with the Geom; the actual state in which
//               the Geom is rendered will also be affected by
//               RenderStates that appear on the scene graph in nodes
//               above this GeomNode.
//
//               Note that if this method is called in a downstream
//               stage (for instance, during cull or draw), then it
//               will propagate the new list of Geoms upstream all the
//               way to pipeline stage 0, which may step on changes
//               that were made independently in pipeline stage 0.
//               Use with caution.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4197  1 n 1 3971  5 state 1 4008  
1446 14 Dtool_w0CqA4ql 0 4 1001 3994 0 14 Dtool_w0CqA4ql 432 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::add_geom
//       Access: Published
//  Description: Adds a new Geom to the node.  The geom is given the
//               indicated state (which may be
//               RenderState::make_empty(), to completely inherit its
//               state from the scene graph).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4197  4 geom 1 4203  5 state 1 4008  
1447 14 Dtool_w0Cqg1uL 0 4 1001 3994 0 14 Dtool_w0Cqg1uL 432 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::add_geom
//       Access: Published
//  Description: Adds a new Geom to the node.  The geom is given the
//               indicated state (which may be
//               RenderState::make_empty(), to completely inherit its
//               state from the scene graph).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4197  4 geom 1 4203  
1448 14 Dtool_w0Cq06du 0 4 1002 3994 0 14 Dtool_w0Cq06du 336 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::add_geoms_from
//       Access: Published
//  Description: Copies the Geoms (and their associated RenderStates)
//               from the indicated GeomNode into this one.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4197  5 other 1 4198  
1449 14 Dtool_w0CqOrgw 0 4 1003 3994 0 14 Dtool_w0CqOrgw 708 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::set_geom
//       Access: Public
//  Description: Replaces the nth Geom of the node with a new pointer.
//               There must already be a Geom in this slot.
//
//               Note that if this method is called in a downstream
//               stage (for instance, during cull or draw), then it
//               will propagate the new list of Geoms upstream all the
//               way to pipeline stage 0, which may step on changes
//               that were made independently in pipeline stage 0.
//               Use with caution.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4197  1 n 1 3971  4 geom 1 4203  
1450 14 Dtool_w0CqV9b7 0 4 1004 3994 0 14 Dtool_w0CqV9b7 256 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::remove_geom
//       Access: Published
//  Description: Removes the nth geom from the node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4197  1 n 1 3971  
1451 14 Dtool_w0Cq_NLA 0 4 1005 3994 0 14 Dtool_w0Cq_NLA 270 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::remove_all_geoms
//       Access: Published
//  Description: Removes all the geoms from the node at once.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4197  
1452 14 Dtool_w0Cqs0De 0 6 1006 3970 0 14 Dtool_w0Cqs0De 453 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::check_valid
//       Access: Published
//  Description: Verifies that the each Geom within the GeomNode
//               reference vertices that actually exist within its
//               GeomVertexData.  Returns true if the GeomNode appears
//               to be valid, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4198  
1453 14 Dtool_w0Cqzvce 0 4 1007 3994 0 14 Dtool_w0Cqzvce 755 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::decompose
//       Access: Published
//  Description: Calls decompose() on each Geom with the GeomNode.
//               This decomposes higher-order primitive types, like
//               triangle strips, into lower-order types like indexed
//               triangles.  Normally there is no reason to do this,
//               but it can be useful as an early preprocessing step,
//               to allow a later call to unify() to proceed more
//               quickly.
//
//               See also SceneGraphReducer::decompose(), which is the
//               normal way this is called.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4197  
1454 14 Dtool_w0CqX2Y_ 0 4 1008 3994 0 14 Dtool_w0CqX2Y_ 1354 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::unify
//       Access: Published
//  Description: Attempts to unify all of the Geoms contained within
//               this node into a single Geom, or at least as few
//               Geoms as possible.  In turn, the individual
//               GeomPrimitives contained within each resulting Geom
//               are also unified.  The goal is to reduce the number
//               of GeomPrimitives within the node as far as possible.
//               This may result in composite primitives, such as
//               triangle strips and triangle fans, being decomposed
//               into triangles.  See also Geom::unify().
//
//               max_indices represents the maximum number of indices
//               that will be put in any one GeomPrimitive.  If
//               preserve_order is true, then the primitives will not
//               be reordered during the operation, even if this
//               results in a suboptimal result.
//
//               In order for this to be successful, the primitives
//               must reference the same GeomVertexData, have the same
//               fundamental primitive type, and have compatible shade
//               models.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4197  11 max_indices 1 3971  14 preserve_order 1 3970  
1455 14 Dtool_w0CqWbSk 0 4 1009 3994 0 14 Dtool_w0CqWbSk 294 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::write_geoms
//       Access: Published
//  Description: Writes a short description of all the Geoms in the
//               node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4198  3 out 1 3997  12 indent_level 1 3971  
1456 14 Dtool_w0CqSkiE 0 4 1010 3994 0 14 Dtool_w0CqSkiE 299 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::write_verbose
//       Access: Published
//  Description: Writes a detailed description of all the Geoms in the
//               node.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4198  3 out 1 3997  12 indent_level 1 3971  
1457 14 Dtool_w0Cqlm7A 0 7 1011 4037 0 14 Dtool_w0Cqlm7A 323 ////////////////////////////////////////////////////////////////////
//     Function: GeomNode::get_default_collide_mask
//       Access: Published, Static
//  Description: Returns the default into_collide_mask assigned to new
//               GeomNodes.
//////////////////////////////////////////////////////////////////// 0 
1458 14 Dtool_w0CqnVK5 0 7 1012 4000 0 14 Dtool_w0CqnVK5 0 0 
1459 14 Dtool_w0CqvBWr 0 4 1014 3994 0 14 Dtool_w0CqvBWr 273 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_display_region
//       Access: Published
//  Description: Specifies the display region for the scene.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  14 display_region 1 4205  
1460 14 Dtool_w0Cq2fnD 0 6 1015 4205 0 14 Dtool_w0Cq2fnD 271 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_display_region
//       Access: Published
//  Description: Returns the display region for the scene.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1461 14 Dtool_w0CqBliz 0 4 1016 3994 0 14 Dtool_w0CqBliz 309 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_viewport_size
//       Access: Published
//  Description: Specifies the size of the viewport (display region),
//               in pixels.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4204  5 width 1 3971  6 height 1 3971  
1462 14 Dtool_w0CqVugH 0 6 1017 3971 0 14 Dtool_w0CqVugH 308 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_viewport_width
//       Access: Published
//  Description: Returns the width of the viewport (display region) in
//               pixels.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1463 14 Dtool_w0Cqgn7t 0 6 1018 3971 0 14 Dtool_w0Cqgn7t 310 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_viewport_height
//       Access: Published
//  Description: Returns the height of the viewport (display region) in
//               pixels.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1464 14 Dtool_w0CqwD0u 0 4 1019 3994 0 14 Dtool_w0CqwD0u 263 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_scene_root
//       Access: Published
//  Description: Specifies the root node of the scene.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  10 scene_root 1 4056  
1465 14 Dtool_w0CqXOWk 0 6 1020 4056 0 14 Dtool_w0CqXOWk 261 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_scene_root
//       Access: Published
//  Description: Returns the root node of the scene.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1466 14 Dtool_w0CqQMSk 0 4 1021 3994 0 14 Dtool_w0CqQMSk 264 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_camera_path
//       Access: Published
//  Description: Specifies the NodePath to the camera.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  11 camera_path 1 4056  
1467 14 Dtool_w0CqbVcV 0 6 1022 4056 0 14 Dtool_w0CqbVcV 262 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_camera_path
//       Access: Published
//  Description: Returns the NodePath to the camera.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1468 14 Dtool_w0Cq4wa4 0 4 1023 3994 0 14 Dtool_w0Cq4wa4 273 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_camera_node
//       Access: Published
//  Description: Specifies the camera used to render the scene.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  11 camera_node 1 4169  
1469 14 Dtool_w0CqLZX1 0 7 1024 4169 3033 14 Dtool_w0CqLZX1 271 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_camera_node
//       Access: Published
//  Description: Returns the camera used to render the scene.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1470 14 Dtool_w0Cq9x7V 0 4 1025 3994 0 14 Dtool_w0Cq9x7V 269 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_lens
//       Access: Published
//  Description: Indicates the particular Lens used for rendering.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  4 lens 1 4163  
1471 14 Dtool_w0CqSPnl 0 7 1026 4163 0 14 Dtool_w0CqSPnl 267 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_lens
//       Access: Published
//  Description: Returns the particular Lens used for rendering.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1472 14 Dtool_w0CqCErz 0 4 1027 3994 0 14 Dtool_w0CqCErz 477 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_inverted
//       Access: Published
//  Description: Changes the current setting of the inverted flag.
//               When this is true, the scene is rendered into the
//               window upside-down and backwards, that is, inverted
//               as if viewed through a mirror placed on the floor.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  8 inverted 1 3970  
1473 14 Dtool_w0Cq_jwr 0 6 1028 3970 0 14 Dtool_w0Cq_jwr 434 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_inverted
//       Access: Published
//  Description: Returns the current setting of the inverted flag.
//               When this is true, the scene is rendered into the
//               window upside-down, flipped like a mirror along the X
//               axis.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1474 14 Dtool_w0CqSRuh 0 6 1029 4056 0 14 Dtool_w0CqSRuh 469 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_cull_center
//       Access: Published
//  Description: Returns the point from which the culling operations
//               will be performed.  This is normally the camera, but
//               if camera->set_cull_center() has been specified, it
//               will be that special node instead.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1475 14 Dtool_w0CqPjJB 0 7 1030 4131 0 14 Dtool_w0CqPjJB 521 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_cull_bounds
//       Access: Published
//  Description: Returns the bounding volume that should be used to
//               perform view-frustum culling (in the space of
//               get_cull_center()).  This is normally the current
//               lens' bounding volume, but it may be overridden with
//               Camera::set_cull_bounds().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1476 14 Dtool_w0Cq_voe 0 4 1031 3994 0 14 Dtool_w0Cq_voe 378 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_initial_state
//       Access: Published
//  Description: Sets the initial state which is applied to all nodes
//               in the scene, as if it were set at the top of the
//               scene graph.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  13 initial_state 1 4008  
1477 14 Dtool_w0CqVUvy 0 7 1032 4008 0 14 Dtool_w0CqVUvy 321 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_initial_state
//       Access: Published
//  Description: Returns the initial state as set by a previous call
//               to set_initial_state().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1478 14 Dtool_w0CqaRis 0 4 1033 3994 0 14 Dtool_w0CqaRis 316 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_camera_transform
//       Access: Published
//  Description: Specifies the position of the camera relative to the
//               starting node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  16 camera_transform 1 3968  
1479 14 Dtool_w0Cq4DM_ 0 7 1034 3968 0 14 Dtool_w0Cq4DM_ 314 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_camera_transform
//       Access: Published
//  Description: Returns the position of the camera relative to the
//               starting node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1480 14 Dtool_w0CqAzuD 0 4 1035 3994 0 14 Dtool_w0CqAzuD 378 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_world_transform
//       Access: Published
//  Description: Specifies the position of the starting node relative
//               to the camera.  This is the inverse of the camera
//               transform.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  15 world_transform 1 3968  
1481 14 Dtool_w0CqttUm 0 7 1036 3968 0 14 Dtool_w0CqttUm 376 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_world_transform
//       Access: Published
//  Description: Returns the position of the starting node relative
//               to the camera.  This is the inverse of the camera
//               transform.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1482 14 Dtool_w0Cqi2tR 0 4 1037 3994 0 14 Dtool_w0Cqi2tR 345 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::set_cs_transform
//       Access: Published
//  Description: Specifies the transform from the camera's coordinate
//               system to the GSG's internal coordinate system.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4204  12 cs_transform 1 3968  
1483 14 Dtool_w0CqvThX 0 7 1038 3968 0 14 Dtool_w0CqvThX 343 ////////////////////////////////////////////////////////////////////
//     Function: SceneSetup::get_cs_transform
//       Access: Published
//  Description: Returns the transform from the camera's coordinate
//               system to the GSG's internal coordinate system.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4207  
1484 14 Dtool_w0CqsBdz 0 7 1039 4000 0 14 Dtool_w0CqsBdz 0 0 
1485 14 Dtool_w0CqvC1m 0 7 1042 4016 3251 14 Dtool_w0CqvC1m 226 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 0 
1486 14 Dtool_w0Cqpnp0 0 7 1042 4016 3251 14 Dtool_w0Cqpnp0 231 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::Copy Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 copy 1 4209  
1487 14 Dtool_w0CqEnOx 0 7 1043 4038 0 14 Dtool_w0CqEnOx 755 // Filename: cullTraverser.I
// Created by:  drose (23Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_gsg
//       Access: Published
//  Description: Returns the GraphicsStateGuardian in effect.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1488 14 Dtool_w0CqXuzj 0 7 1044 4032 0 14 Dtool_w0CqXuzj 340 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_current_thread
//       Access: Published
//  Description: Returns the currently-executing thread object, as
//               passed to the CullTraverser constructor.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1489 14 Dtool_w0CqAFzQ 0 4 1045 3994 0 14 Dtool_w0CqAFzQ 388 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_scene
//       Access: Published, Virtual
//  Description: Sets the SceneSetup object that indicates the initial
//               camera position, etc.  This must be called before
//               traversal begins.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4016  11 scene_setup 1 4204  3 gsg 1 4038  20 dr_incomplete_render 1 3970  
1490 14 Dtool_w0CqZmia 0 7 1046 4204 3224 14 Dtool_w0CqZmia 254 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_scene
//       Access: Published
//  Description: Returns the SceneSetup object.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1491 14 Dtool_w0Cq_kmm 0 6 1047 3970 0 14 Dtool_w0Cq_kmm 349 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::has_tag_state_key
//       Access: Published
//  Description: Returns true if a nonempty tag state key has been
//               specified for the scene's camera, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1492 14 Dtool_w0CqCjMW 0 6 1048 4028 0 14 Dtool_w0CqCjMW 330 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_tag_state_key
//       Access: Published
//  Description: Returns the tag state key that has been specified for
//               the scene's camera, if any.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1493 14 Dtool_w0CqEI0o 0 4 1049 3994 0 14 Dtool_w0CqEI0o 571 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_camera_mask
//       Access: Published
//  Description: Changes the visibility mask for the camera viewing
//               the scene.  This is normally set automatically
//               at the time setup_scene() is called; you should
//               change this only if you want to render some set of
//               objects different from what the camera normally would
//               draw.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4016  11 camera_mask 1 4211  
1494 14 Dtool_w0Cqhr4G 0 6 1050 4211 0 14 Dtool_w0Cqhr4G 309 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_camera_mask
//       Access: Published
//  Description: Returns the visibility mask from the camera viewing
//               the scene.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1495 14 Dtool_w0Cqy7Kh 0 7 1051 3968 0 14 Dtool_w0Cqy7Kh 317 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_camera_transform
//       Access: Published
//  Description: Returns the position of the camera relative to the
//               starting node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1496 14 Dtool_w0CqCmm_ 0 7 1052 3968 0 14 Dtool_w0CqCmm_ 689 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_world_transform
//       Access: Published
//  Description: Returns the position of the starting node relative
//               to the camera.  This is the inverse of the camera
//               transform.
//
//               Note that this value is always the position of the
//               starting node, not the current node, even if it is
//               sampled during a traversal.  To get the transform of
//               the current node use
//               CullTraverserData::get_modelview_transform().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1497 14 Dtool_w0CqMgIM 0 7 1053 4008 0 14 Dtool_w0CqMgIM 401 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_initial_state
//       Access: Published
//  Description: Returns the initial RenderState at the top of the
//               scene graph we are traversing, or the empty state if
//               the initial state was never set.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1498 14 Dtool_w0Cq55Ad 0 6 1054 3970 0 14 Dtool_w0Cq55Ad 324 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_depth_offset_decals
//       Access: Published
//  Description: Returns the depth_offset_decals flag.  See
//               set_depth_offset_decals().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1499 14 Dtool_w0CqsWSU 0 4 1055 3994 0 14 Dtool_w0CqsWSU 405 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_view_frustum
//       Access: Published
//  Description: Specifies the bounding volume that corresponds to the
//               view frustum.  Any primitives that fall entirely
//               outside of this volume are not drawn.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4016  12 view_frustum 1 4213  
1500 14 Dtool_w0CqvFFq 0 7 1056 4213 0 14 Dtool_w0CqvFFq 764 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_view_frustum
//       Access: Published
//  Description: Returns the bounding volume that corresponds to the
//               view frustum, or NULL if the view frustum is not in
//               use or has not been set.
//
//               Note that the view frustum returned here is always in
//               the coordinate space of the starting node, not the
//               current node, even if it is sampled during a
//               traversal.  To get the view frustum in the current
//               node's coordinate space, check in the current
//               CullTraverserData.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1501 14 Dtool_w0Cqt7Ig 0 4 1057 3994 0 14 Dtool_w0Cqt7Ig 349 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_cull_handler
//       Access: Published
//  Description: Specifies the object that will receive the culled
//               Geoms.  This must be set before calling traverse().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4016  12 cull_handler 1 4215  
1502 14 Dtool_w0Cqnaaa 0 6 1058 4215 0 14 Dtool_w0Cqnaaa 302 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_cull_handler
//       Access: Published
//  Description: Returns the object that will receive the culled
//               Geoms.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1503 14 Dtool_w0Cqxwdd 0 4 1059 3994 0 14 Dtool_w0Cqxwdd 345 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::set_portal_clipper
//       Access: Published
//  Description: Specifies _portal_clipper object pointer that 
//               subsequent traverse() or traverse_below may use.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4016  14 portal_clipper 1 4217  
1504 14 Dtool_w0CqjKST 0 6 1060 4217 0 14 Dtool_w0CqjKST 268 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_portal_clipper
//       Access: Published
//  Description: Returns the _portal_clipper pointer
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1505 14 Dtool_w0Cq7Iif 0 6 1061 3970 0 14 Dtool_w0Cq7Iif 666 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::get_effective_incomplete_render
//       Access: Published
//  Description: Returns true if the cull traversal is effectively in
//               incomplete_render state, considering both the GSG's
//               incomplete_render and the current DisplayRegion's
//               incomplete_render flags.  This returns the flag
//               during the cull traversal; see
//               GSG::get_effective_incomplete_render() for this same
//               flag during the draw traversal.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4209  
1506 14 Dtool_w0Cqq68a 0 4 1062 3994 0 14 Dtool_w0Cqq68a 401 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::traverse
//       Access: Published
//  Description: Traverses from the next node with the given
//               data, which has been constructed with the node but
//               has not yet been converted into the node's space.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4016  4 data 1 4219  
1507 14 Dtool_w0CqJG1M 0 4 1062 3994 0 14 Dtool_w0CqJG1M 268 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::traverse
//       Access: Published
//  Description: Begins the traversal from the indicated node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4016  4 root 1 4056  
1508 14 Dtool_w0CqBjES 0 4 1063 3994 0 14 Dtool_w0CqBjES 390 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::traverse_below
//       Access: Published, Virtual
//  Description: Traverses all the children of the indicated node,
//               with the given data, which has been converted into
//               the node's space.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4016  4 data 1 4219  
1509 14 Dtool_w0Cqo6EH 0 4 1064 3994 0 14 Dtool_w0Cqo6EH 397 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::end_traverse
//       Access: Published, Virtual
//  Description: Should be called when the traverser has finished
//               traversing its scene, this gives it a chance to do
//               any necessary finalization.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4016  
1510 14 Dtool_w0CqAEZG 0 4 1065 3994 0 14 Dtool_w0CqAEZG 284 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::flush_level
//       Access: Published, Static
//  Description: Flushes the PStatCollectors used during traversal.
//////////////////////////////////////////////////////////////////// 0 
1511 14 Dtool_w0CqQMsu 0 4 1066 3994 0 14 Dtool_w0CqQMsu 320 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverser::draw_bounding_volume
//       Access: Published
//  Description: Draws an appropriate visualization of the indicated
//               bounding volume.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4209  3 vol 1 4042  13 net_transform 1 3968  19 modelview_transform 1 3968  
1512 14 Dtool_w0CqX1Dh 0 7 1067 4000 0 14 Dtool_w0CqX1Dh 0 0 
1513 14 Dtool_w0CqySyw 0 7 1071 4029 2486 14 Dtool_w0CqySyw 260 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::node
//       Access: Published
//  Description: Returns the node traversed to so far.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4017  
1514 14 Dtool_w0Cqqida 0 7 1072 3968 0 14 Dtool_w0Cqqida 344 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::get_modelview_transform
//       Access: Published
//  Description: Returns the modelview transform: the relative
//               transform from the camera to the model.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4017  4 trav 1 4209  
1515 14 Dtool_w0Cqt3SC 0 7 1073 3968 0 14 Dtool_w0Cqt3SC 352 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::get_net_transform
//       Access: Published
//  Description: Returns the net transform: the relative transform
//               from root of the scene graph to the current node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4017  4 trav 1 4209  
1516 14 Dtool_w0CqJuc_ 0 6 1074 3970 0 14 Dtool_w0CqJuc_ 529 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::is_in_view
//       Access: Published
//  Description: Returns true if the current node is within the view
//               frustum, false otherwise.  If the node's bounding
//               volume falls completely within the view frustum, this
//               will also reset the view frustum pointer, saving some
//               work for future nodes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4219  11 camera_mask 1 4211  
1517 14 Dtool_w0Cq1At1 0 6 1075 3970 0 14 Dtool_w0Cq1At1 523 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::is_this_node_hidden
//       Access: Published
//  Description: Returns true if this particular node is hidden, even
//               though we might be traversing past this node to find
//               a child node that has had show_through() called for
//               it.  If this returns true, the node should not be
//               rendered.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4017  4 trav 1 4209  
1518 14 Dtool_w0Cq7cNL 0 4 1076 3994 0 14 Dtool_w0Cq7cNL 392 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::apply_transform_and_state
//       Access: Published
//  Description: Applies the transform and state from the current
//               node onto the current data.  This also evaluates
//               billboards, etc.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4219  4 trav 1 4016  
1519 14 Dtool_w0Cq_OVm 0 4 1076 3994 0 14 Dtool_w0Cq_OVm 420 ////////////////////////////////////////////////////////////////////
//     Function: CullTraverserData::apply_transform_and_state
//       Access: Published
//  Description: Applies the indicated transform and state changes
//               (e.g. as extracted from a node) onto the current
//               data.  This also evaluates billboards, etc.
//////////////////////////////////////////////////////////////////// 6 4 this 3 4219  4 trav 1 4016  14 node_transform 1 3968  10 node_state 1 4008  12 node_effects 1 4026  15 off_clip_planes 1 4005  
1520 14 Dtool_w0CqtLsg 0 7 1078 4222 0 14 Dtool_w0CqtLsg 440 ////////////////////////////////////////////////////////////////////
//     Function: CullResult::make_next
//       Access: Published
//  Description: Returns a newly-allocated CullResult object that
//               contains a copy of just the subset of the data from
//               this CullResult object that is worth keeping around
//               for next frame.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4220  
1521 14 Dtool_w0CqQRgp 0 7 1079 4224 0 14 Dtool_w0CqQRgp 505 ////////////////////////////////////////////////////////////////////
//     Function: CullResult::get_bin
//       Access: Public
//  Description: Returns the CullBin associated with the indicated
//               bin_index, or NULL if the bin_index is invalid.  If
//               there is the first time this bin_index has been
//               requested for this CullResult, creates a new CullBin
//               object on the fly.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4222  9 bin_index 1 3971  
1522 14 Dtool_w0Cq5gZc 0 4 1080 3994 0 14 Dtool_w0Cq5gZc 394 ////////////////////////////////////////////////////////////////////
//     Function: CullResult::add_object
//       Access: Published
//  Description: Adds the indicated CullableObject to the appropriate
//               bin.  The bin becomes the owner of the object
//               pointer, and will eventually delete it.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4222  6 object 1 4225  9 traverser 1 4209  
1523 14 Dtool_w0Cqufru 0 4 1081 3994 0 14 Dtool_w0Cqufru 493 ////////////////////////////////////////////////////////////////////
//     Function: CullResult::finish_cull
//       Access: Published
//  Description: Called after all the geoms have been added, this
//               indicates that the cull process is finished for this
//               frame and gives the bins a chance to do any
//               post-processing (like sorting) before moving on to
//               draw.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4222  11 scene_setup 1 4204  14 current_thread 1 4032  
1524 14 Dtool_w0Cq_X4f 0 4 1082 3994 0 14 Dtool_w0Cq_X4f 291 ////////////////////////////////////////////////////////////////////
//     Function: CullResult::draw
//       Access: Published
//  Description: Asks all the bins to draw themselves in the correct
//               order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4222  14 current_thread 1 4032  
1525 14 Dtool_w0CqyJjZ 0 7 1083 4029 2486 14 Dtool_w0CqyJjZ 865 ////////////////////////////////////////////////////////////////////
//     Function: CullResult::make_result_graph
//       Access: Published
//  Description: Returns a special scene graph constructed to
//               represent the results of the cull.  This will be a
//               hierarchy of nodes, one node for each bin, each of
//               which will in term be a parent of a number of
//               GeomNodes, representing the geometry drawn in each
//               bin.
//
//               This is useful mainly for high-level debugging and
//               abstraction tools; it should not be mistaken for the
//               low-level cull result itself.  For the low-level cull
//               result, use draw() to efficiently draw the culled
//               scene.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4222  
1526 14 Dtool_w0CqGUH6 0 7 1084 4000 0 14 Dtool_w0CqGUH6 0 0 
1527 14 Dtool_w0Cqh4qk 0 7 1086 4024 0 14 Dtool_w0Cqh4qk 261 ////////////////////////////////////////////////////////////////////
//     Function: DecalEffect::make
//       Access: Published, Static
//  Description: Constructs a new DecalEffect object.
//////////////////////////////////////////////////////////////////// 0 
1528 14 Dtool_w0CqH0FU 0 7 1087 4000 0 14 Dtool_w0CqH0FU 0 0 
1529 14 Dtool_w0CqYYvF 0 7 1090 4005 0 14 Dtool_w0CqYYvF 403 ////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::make
//       Access: Published, Static
//  Description: Constructs a new DepthOffsetAttrib object that
//               indicates the relative amount of bias to write to the
//               depth buffer for subsequent geometry.
//////////////////////////////////////////////////////////////////// 1 6 offset 1 3971  
1530 14 Dtool_w0CqTJWU 0 7 1090 4005 0 14 Dtool_w0CqTJWU 403 ////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::make
//       Access: Published, Static
//  Description: Constructs a new DepthOffsetAttrib object that
//               indicates the relative amount of bias to write to the
//               depth buffer for subsequent geometry.
//////////////////////////////////////////////////////////////////// 0 
1531 14 Dtool_w0CqJfY_ 0 7 1090 4005 0 14 Dtool_w0CqJfY_ 659 ////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::make
//       Access: Published, Static
//  Description: Constructs a new DepthOffsetAttrib object that
//               indicates the bias, and also specifies a minimum and
//               maximum (or, more precisely, nearest and farthest)
//               values to write to the depth buffer, in the range 0
//               .. 1.  This range is 0, 1 by default; setting it to
//               some other range can be used to create additional
//               depth buffer effects.
//////////////////////////////////////////////////////////////////// 3 6 offset 1 3971  9 min_value 1 3979  9 max_value 1 3979  
1532 14 Dtool_w0CqjyjB 0 7 1091 4005 0 14 Dtool_w0CqjyjB 404 ////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1533 14 Dtool_w0CqQ48q 0 6 1092 3971 0 14 Dtool_w0CqQ48q 281 ////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::get_offset
//       Access: Published
//  Description: Returns the depth offset represented by this attrib.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4227  
1534 14 Dtool_w0CqRwm2 0 6 1093 3979 0 14 Dtool_w0CqRwm2 370 ////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::get_min_value
//       Access: Published
//  Description: Returns the value for the minimum (closest) depth
//               value to be stored in the buffer, in the range 0
//               .. 1.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4227  
1535 14 Dtool_w0Cqpij8 0 6 1094 3979 0 14 Dtool_w0Cqpij8 371 ////////////////////////////////////////////////////////////////////
//     Function: DepthOffsetAttrib::get_max_value
//       Access: Published
//  Description: Returns the value for the maximum (farthest) depth
//               value to be stored in the buffer, in the range 0
//               .. 1.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4227  
1536 14 Dtool_w0CqdAH1 0 6 1095 3971 0 14 Dtool_w0CqdAH1 0 0 
1537 14 Dtool_w0Cqrc0x 0 7 1096 4000 0 14 Dtool_w0Cqrc0x 0 0 
1538 14 Dtool_w0Cq4KXK 0 7 1099 4005 0 14 Dtool_w0Cq4KXK 269 ////////////////////////////////////////////////////////////////////
//     Function: DepthTestAttrib::make
//       Access: Published, Static
//  Description: Constructs a new DepthTestAttrib object.
//////////////////////////////////////////////////////////////////// 1 4 mode 1 3842  
1539 14 Dtool_w0CqnaAF 0 7 1100 4005 0 14 Dtool_w0CqnaAF 402 ////////////////////////////////////////////////////////////////////
//     Function: DepthTestAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1540 14 Dtool_w0CqkoRd 0 6 1101 3842 0 14 Dtool_w0CqkoRd 254 ////////////////////////////////////////////////////////////////////
//     Function: DepthTestAttrib::get_mode
//       Access: Published
//  Description: Returns the depth write mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4229  
1541 14 Dtool_w0CqGtc8 0 6 1102 3971 0 14 Dtool_w0CqGtc8 0 0 
1542 14 Dtool_w0Cq_bEH 0 7 1103 4000 0 14 Dtool_w0Cq_bEH 0 0 
1543 14 Dtool_w0CqAW_N 0 7 1107 4005 0 14 Dtool_w0CqAW_N 271 ////////////////////////////////////////////////////////////////////
//     Function: DepthWriteAttrib::make
//       Access: Published, Static
//  Description: Constructs a new DepthWriteAttrib object.
//////////////////////////////////////////////////////////////////// 1 4 mode 1 3904  
1544 14 Dtool_w0CqyLuc 0 7 1108 4005 0 14 Dtool_w0CqyLuc 403 ////////////////////////////////////////////////////////////////////
//     Function: DepthWriteAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1545 14 Dtool_w0CqkZFl 0 6 1109 3904 0 14 Dtool_w0CqkZFl 255 ////////////////////////////////////////////////////////////////////
//     Function: DepthWriteAttrib::get_mode
//       Access: Published
//  Description: Returns the depth write mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4231  
1546 14 Dtool_w0Cq2oVK 0 6 1110 3971 0 14 Dtool_w0Cq2oVK 0 0 
1547 14 Dtool_w0CqNOPe 0 7 1111 4000 0 14 Dtool_w0CqNOPe 0 0 
1548 14 Dtool_w0Cqr4nV 0 7 1115 4233 0 14 Dtool_w0Cqr4nV 727 // Filename: eventStorePandaNode.I
// Created by:  drose (13Sep06)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: EventStorePandaNode::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 5 value 1 4030  
1549 14 Dtool_w0CqAnPQ 0 4 1116 3994 0 14 Dtool_w0CqAnPQ 413 ////////////////////////////////////////////////////////////////////
//     Function: EventStorePandaNode::set_value
//       Access: Published
//  Description: Changes the value stored in the parameter.  It is
//               dangerous to do this for a parameter already added to
//               an event, since the parameters may be shared.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4233  5 value 1 4030  
1550 14 Dtool_w0CqjG_f 0 7 1117 4029 2486 14 Dtool_w0CqjG_f 274 ////////////////////////////////////////////////////////////////////
//     Function: EventStorePandaNode::get_value
//       Access: Published
//  Description: Retrieves the value stored in the parameter.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4234  
1551 14 Dtool_w0CqMfYM 0 7 1118 4000 0 14 Dtool_w0CqMfYM 0 0 
1552 14 Dtool_w0CqWpyF 0 7 1120 4130 2486 14 Dtool_w0CqWpyF 215 ////////////////////////////////////////////////////////////////////
//     Function: Fog::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1553 14 Dtool_w0CqNq_P 0 6 1122 3908 0 14 Dtool_w0CqNq_P 691 // Filename: fog.I
// Created by:  drose (14Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: Fog::get_mode
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 this 3 4236  
1554 14 Dtool_w0CqGgPt 0 4 1123 3994 0 14 Dtool_w0CqGgPt 934 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_mode
//       Access: Published
//  Description: Specifies the computation that is used to determine
//               the fog effect.  If this is M_linear, then the fog
//               will range from linearly from the onset point to the
//               opaque point (or for the distances specified in
//               set_linear_range), and the fog object should be
//               parented into the scene graph, or to the camera.
//
//               If this is anything else, the onset point and opaque
//               point are not used, and the fog effect is based on
//               the value specified to set_exp_density(), and it
//               doesn't matter to which node the fog object is
//               parented, or if it is parented anywhere at all.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4130  4 mode 1 3908  
1555 14 Dtool_w0CqRSgO 0 6 1124 4067 0 14 Dtool_w0CqRSgO 243 ////////////////////////////////////////////////////////////////////
//     Function: Fog::get_color
//       Access: Published
//  Description: Returns the color of the fog.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4236  
1556 14 Dtool_w0CqJg2n 0 4 1125 3994 0 14 Dtool_w0CqJg2n 291 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_color
//       Access: Published
//  Description: Sets the color of the fog.  The alpha component is
//               not used.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4130  5 color 1 4067  
1557 14 Dtool_w0Cq_xx3 0 4 1125 3994 0 14 Dtool_w0Cq_xx3 240 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_color
//       Access: Published
//  Description: Sets the color of the fog.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4130  1 r 1 3979  1 g 1 3979  1 b 1 3979  
1558 14 Dtool_w0Cq3of3 0 4 1126 3994 0 14 Dtool_w0Cq3of3 711 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_range
//       Access: Published
//  Description: Specifies the effects of the fog in linear distance
//               units.  This is only used if the mode is M_linear.
//
//               This specifies a fog that begins at distance onset
//               units from the origin, and becomes totally opaque at
//               distance opaque units from the origin, along the
//               forward axis (usually Y).
//
//               This function also implicitly sets the mode the
//               M_linear, if it is not already set.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4130  5 onset 1 3979  6 opaque 1 3979  
1559 14 Dtool_w0Cq9LTt 0 6 1127 3989 0 14 Dtool_w0Cq9LTt 338 ////////////////////////////////////////////////////////////////////
//     Function: Fog::get_linear_onset_point
//       Access: Published
//  Description: Returns the point in space at which the fog begins.
//               This is only used if the mode is M_linear.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4236  
1560 14 Dtool_w0Cq6RcW 0 4 1128 3994 0 14 Dtool_w0Cq6RcW 340 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_onset_point
//       Access: Published
//  Description: Specifies the point in space at which the fog begins.
//               This is only used if the mode is M_linear.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4130  18 linear_onset_point 1 3989  
1561 14 Dtool_w0Cq36iG 0 4 1128 3994 0 14 Dtool_w0Cq36iG 340 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_onset_point
//       Access: Published
//  Description: Specifies the point in space at which the fog begins.
//               This is only used if the mode is M_linear.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4130  1 x 1 3979  1 y 1 3979  1 z 1 3979  
1562 14 Dtool_w0CqjQae 0 6 1129 3989 0 14 Dtool_w0CqjQae 379 ////////////////////////////////////////////////////////////////////
//     Function: Fog::get_linear_opaque_point
//       Access: Published
//  Description: Returns the point in space at which the fog
//               completely obscures geometry.  This is only used if
//               the mode is M_linear.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4236  
1563 14 Dtool_w0CqHhA1 0 4 1130 3994 0 14 Dtool_w0CqHhA1 381 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_opaque_point
//       Access: Published
//  Description: Specifies the point in space at which the fog
//               completely obscures geometry.  This is only used if
//               the mode is M_linear.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4130  19 linear_opaque_point 1 3989  
1564 14 Dtool_w0CqEcC5 0 4 1130 3994 0 14 Dtool_w0CqEcC5 381 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_opaque_point
//       Access: Published
//  Description: Specifies the point in space at which the fog
//               completely obscures geometry.  This is only used if
//               the mode is M_linear.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4130  1 x 1 3979  1 y 1 3979  1 z 1 3979  
1565 14 Dtool_w0Cqdy8d 0 4 1131 3994 0 14 Dtool_w0Cqdy8d 2210 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_linear_fallback
//       Access: Published
//  Description: Fog effects are traditionally defined in
//               camera-relative space, but the Panda Fog node has a
//               special mode in which it can define a linear fog
//               effect in an arbitrary coordinate space.
//
//               This is done by specifying 3-d onset and opaque
//               points, and parenting the Fog object somewhere within
//               the scene graph.  In this mode, the fog will be
//               rendered as if it extended along the vector from the
//               onset point to the opaque point, in 3-d space.
//
//               However, the underlying fog effect supported by
//               hardware is generally only one-dimensional, and must
//               be rendered based on linear distance from the camera
//               plane.  Thus, this in-the-world effect is most
//               effective when the fog vector from onset point to
//               opaque point is most nearly parallel to the camera's
//               eye vector.
//
//               As the angle between the fog vector and the eye
//               vector increases, the accuracy of the effect
//               diminishes, up to a complete breakdown of the effect
//               at a 90 degree angle.
//
//               This function exists to define the workaround to this
//               problem.  The linear fallback parameters given here
//               specify how the fog should be rendered when the
//               parameters are exceeded in this way.
//
//               The angle parameter is the minimum angle, in degrees,
//               of the fog vector to the eye vector, at which the
//               fallback effect should be employed.  The onset and
//               opaque parameters specify the camera-relative onset
//               and opaque distances to pass to the rendering
//               hardware when employing the fallback effect.  This
//               supercedes the 3-d onset point and opaque points.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4130  5 angle 1 3979  5 onset 1 3979  6 opaque 1 3979  
1566 14 Dtool_w0CqE35n 0 6 1132 3979 0 14 Dtool_w0CqE35n 362 ////////////////////////////////////////////////////////////////////
//     Function: Fog::get_exp_density
//       Access: Published
//  Description: Returns the density of the fog for exponential
//               calculations.  This is only used if the mode is not
//               M_linear.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4236  
1567 14 Dtool_w0CqGCDe 0 4 1133 3994 0 14 Dtool_w0CqGCDe 489 ////////////////////////////////////////////////////////////////////
//     Function: Fog::set_exp_density
//       Access: Published
//  Description: Sets the density of the fog for exponential
//               calculations.  This is only used if the mode is not
//               M_linear.
//
//               If the mode is currently set to M_linear, this
//               function implicitly sets it to M_exponential.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4130  11 exp_density 1 3979  
1568 14 Dtool_w0CqfLii 0 7 1134 4000 0 14 Dtool_w0CqfLii 0 0 
1569 14 Dtool_w0Cqen99 0 7 1136 4005 0 14 Dtool_w0Cqen99 329 ////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::make
//       Access: Published, Static
//  Description: Constructs a new FogAttrib object suitable for
//               rendering the indicated fog onto geometry.
//////////////////////////////////////////////////////////////////// 1 3 fog 1 4130  
1570 14 Dtool_w0CqDJ_4 0 7 1137 4005 0 14 Dtool_w0CqDJ_4 317 ////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new FogAttrib object suitable for
//               rendering unfogd geometry.
//////////////////////////////////////////////////////////////////// 0 
1571 14 Dtool_w0Cq4z1A 0 7 1138 4005 0 14 Dtool_w0Cq4z1A 396 ////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1572 14 Dtool_w0CqCvlR 0 6 1139 3970 0 14 Dtool_w0CqCvlR 325 ////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::is_off
//       Access: Published
//  Description: Returns true if the FogAttrib is an 'off' FogAttrib,
//               indicating that it should disable fog.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4238  
1573 14 Dtool_w0CqZ5_2 0 7 1140 4130 2486 14 Dtool_w0CqZ5_2 356 ////////////////////////////////////////////////////////////////////
//     Function: FogAttrib::get_fog
//       Access: Published
//  Description: If the FogAttrib is not an 'off' FogAttrib,
//               returns the fog that is associated.  Otherwise,
//               return NULL.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4238  
1574 14 Dtool_w0Cq__rS 0 6 1141 3971 0 14 Dtool_w0Cq__rS 0 0 
1575 14 Dtool_w0CqsG1H 0 7 1142 4000 0 14 Dtool_w0CqsG1H 0 0 
1576 14 Dtool_w0CqQ38B 0 7 1146 4225 0 14 Dtool_w0CqQ38B 312 ////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::get_object
//       Access: Published
//  Description: Returns a pointer to the particular object that is
//               being drawn.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4240  
1577 14 Dtool_w0Cq1Dme 0 7 1147 4038 0 14 Dtool_w0Cq1Dme 266 ////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::get_gsg
//       Access: Published
//  Description: Returns a pointer to the current GSG.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4240  
1578 14 Dtool_w0CqGjpF 0 6 1148 3970 0 14 Dtool_w0CqGjpF 525 ////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::get_force
//       Access: Published
//  Description: Returns true if any required data should be forced
//               into memory if necessary to render the object, or
//               false if the object should be omitted if some of the
//               data is not available (at least until the data
//               becomes available later).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4240  
1579 14 Dtool_w0CqxruI 0 4 1149 3994 0 14 Dtool_w0CqxruI 807 ////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::set_lost_state
//       Access: Published
//  Description: Sets the lost_state flag.  If this is true, the
//               callback does not have to be quite so careful to
//               clean up after itself; Panda will assume that the
//               graphics state is in an unknown state after the
//               callback has finished, and will issue all the
//               necessary calls to restore it.  If this is false,
//               Panda will assume the callback will leave the
//               graphics state exactly as it came in, and won't
//               bother to try to restore it.  The default is true.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4242  10 lost_state 1 3970  
1580 14 Dtool_w0CqjTpZ 0 6 1150 3970 0 14 Dtool_w0CqjTpZ 287 ////////////////////////////////////////////////////////////////////
//     Function: GeomDrawCallbackData::get_lost_state
//       Access: Published
//  Description: Returns the lost_state flag.  See set_lost_state().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4240  
1581 14 Dtool_w0CqzT92 0 7 1151 4000 0 14 Dtool_w0CqzT92 0 0 
1582 14 Dtool_w0CqvkRm 0 7 1154 4123 3324 14 Dtool_w0CqvkRm 234 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 0 
1583 14 Dtool_w0CqXDAx 0 7 1154 4123 3324 14 Dtool_w0CqXDAx 239 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::Copy Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 copy 1 4243  
1584 14 Dtool_w0CqjE06 0 6 1155 4123 0 14 Dtool_w0CqjE06 247 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::Copy Assignment Operator
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 this 3 4123  4 copy 1 4243  
1585 14 Dtool_w0CqBhP7 0 4 1157 3994 0 14 Dtool_w0CqBhP7 274 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::add_name
//       Access: Published
//  Description: Adds a new InternalName to the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4123  4 name 1 4245  
1586 14 Dtool_w0CqXg1Z 0 6 1158 3970 0 14 Dtool_w0CqXg1Z 410 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::remove_name
//       Access: Published
//  Description: Removes the indicated InternalName from the collection.
//               Returns true if the name was removed, false if it was
//               not a member of the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4123  4 name 1 4245  
1587 14 Dtool_w0Cqhz4C 0 4 1159 3994 0 14 Dtool_w0Cqhz4C 480 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::add_names_from
//       Access: Published
//  Description: Adds all the InternalNames indicated in the other
//               collection to this name.  The other names are simply
//               appended to the end of the names in this list;
//               duplicates are not automatically removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4123  5 other 1 4243  
1588 14 Dtool_w0CqFH6l 0 4 1160 3994 0 14 Dtool_w0CqFH6l 343 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::remove_names_from
//       Access: Published
//  Description: Removes from this collection all of the InternalNames
//               listed in the other collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4123  5 other 1 4243  
1589 14 Dtool_w0CqsQx_ 0 4 1161 3994 0 14 Dtool_w0CqsQx_ 485 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::remove_duplicate_names
//       Access: Published
//  Description: Removes any duplicate entries of the same InternalNames
//               on this collection.  If a InternalName appears multiple
//               times, the first appearance is retained; subsequent
//               appearances are removed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4123  
1590 14 Dtool_w0Cq6G0r 0 6 1162 3970 0 14 Dtool_w0Cq6G0r 336 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::has_name
//       Access: Published
//  Description: Returns true if the indicated InternalName appears in
//               this collection, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4243  4 name 1 4245  
1591 14 Dtool_w0CqYUtu 0 4 1163 3994 0 14 Dtool_w0CqYUtu 275 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::clear
//       Access: Published
//  Description: Removes all InternalNames from the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4123  
1592 14 Dtool_w0CqTOFH 0 6 1164 3971 0 14 Dtool_w0CqTOFH 291 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::get_num_names
//       Access: Published
//  Description: Returns the number of InternalNames in the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4243  
1593 14 Dtool_w0Cq6eLj 0 7 1165 4245 0 14 Dtool_w0Cq6eLj 279 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::get_name
//       Access: Published
//  Description: Returns the nth InternalName in the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4243  5 index 1 3971  
1594 14 Dtool_w0CqBMpK 0 7 1166 4245 0 14 Dtool_w0CqBMpK 399 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::operator []
//       Access: Published
//  Description: Returns the nth InternalName in the collection.  This is
//               the same as get_name(), but it may be a more
//               convenient way to access it.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4243  5 index 1 3971  
1595 14 Dtool_w0CqbSiY 0 6 1167 3971 0 14 Dtool_w0CqbSiY 335 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::size
//       Access: Published
//  Description: Returns the number of names in the collection.  This
//               is the same thing as get_num_names().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4243  
1596 14 Dtool_w0CqXlrz 0 6 1168 4123 0 14 Dtool_w0CqXlrz 283 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::operator +=
//       Access: Published
//  Description: Appends the other list onto the end of this one.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4123  5 other 1 4243  
1597 14 Dtool_w0Cq6xPA 0 7 1169 4123 3324 14 Dtool_w0Cq6xPA 332 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::operator +
//       Access: Published
//  Description: Returns a InternalNameCollection representing the
//               concatenation of the two lists.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4243  5 other 1 4243  
1598 14 Dtool_w0CqfSXc 0 4 1170 3994 0 14 Dtool_w0CqfSXc 344 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::output
//       Access: Published
//  Description: Writes a brief one-line description of the
//               InternalNameCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4243  3 out 1 3997  
1599 14 Dtool_w0Cqu3zc 0 4 1171 3994 0 14 Dtool_w0Cqu3zc 348 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               InternalNameCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4243  3 out 1 3997  12 indent_level 1 3971  
1600 14 Dtool_w0Cq_B49 0 4 1171 3994 0 14 Dtool_w0Cq_B49 348 ////////////////////////////////////////////////////////////////////
//     Function: InternalNameCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               InternalNameCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4243  3 out 1 3997  
1601 14 Dtool_w0CqOU8w 0 7 1175 4029 2486 14 Dtool_w0CqOU8w 0 1 4 this 3 4046  
1602 14 Dtool_w0CqEeha 0 6 1176 3970 0 14 Dtool_w0CqEeha 330 ////////////////////////////////////////////////////////////////////
//     Function: Light::is_ambient_light
//       Access: Published, Virtual
//  Description: Returns true if this is an AmbientLight, false if it
//               is some other kind of light.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4246  
1603 14 Dtool_w0CqlF_a 0 6 1177 4067 0 14 Dtool_w0CqlF_a 253 ////////////////////////////////////////////////////////////////////
//     Function: Light::get_color
//       Access: Published
//  Description: Returns the basic color of the light.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4246  
1604 14 Dtool_w0Cq7_hL 0 4 1178 3994 0 14 Dtool_w0Cq7_hL 250 ////////////////////////////////////////////////////////////////////
//     Function: Light::set_color
//       Access: Published
//  Description: Sets the basic color of the light.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4046  5 color 1 4067  
1605 14 Dtool_w0CqtH9b 0 4 1179 3994 0 14 Dtool_w0CqtH9b 740 ////////////////////////////////////////////////////////////////////
//     Function: Light::set_priority
//       Access: Published
//  Description: Changes the relative importance of this light
//               relative to the other lights that are applied
//               simultaneously.
//
//               The priority number is used to decide which of the
//               requested lights are to be selected for rendering
//               when more lights are requested than the hardware will
//               support.  The highest-priority n lights are selected
//               for rendering.
//
//               This is similar to TextureStage::set_priority().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4046  8 priority 1 3971  
1606 14 Dtool_w0Cq07Qw 0 6 1180 3971 0 14 Dtool_w0Cq07Qw 305 ////////////////////////////////////////////////////////////////////
//     Function: Light::get_priority
//       Access: Published
//  Description: Returns the priority associated with this light.  See
//               set_priority().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4246  
1607 14 Dtool_w0CqaBVn 0 6 1181 3971 0 14 Dtool_w0CqaBVn 0 1 4 this 3 4246  
1608 14 Dtool_w0CqpidT 0 7 1182 4000 0 14 Dtool_w0CqpidT 0 0 
1609 14 Dtool_w0CqqIAk 0 7 1173 4052 0 14 Dtool_w0CqqIAk 0 1 4 this 3 4046  
1610 14 Dtool_w0CqZznk 0 7 1185 4005 0 14 Dtool_w0CqZznk 296 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that does
//               nothing.
//////////////////////////////////////////////////////////////////// 0 
1611 14 Dtool_w0CqasHl 0 7 1185 4005 0 14 Dtool_w0CqasHl 457 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns on (or
//               off, according to op) the indicated light(s).
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
//////////////////////////////////////////////////////////////////// 2 2 op 1 3915  5 light 1 4046  
1612 14 Dtool_w0CqVa32 0 7 1185 4005 0 14 Dtool_w0CqVa32 456 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns on (or
//               off, according to op) the indicate light(s).
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
//////////////////////////////////////////////////////////////////// 3 2 op 1 3915  6 light1 1 4046  6 light2 1 4046  
1613 14 Dtool_w0CqLIAJ 0 7 1185 4005 0 14 Dtool_w0CqLIAJ 456 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns on (or
//               off, according to op) the indicate light(s).
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
//////////////////////////////////////////////////////////////////// 4 2 op 1 3915  6 light1 1 4046  6 light2 1 4046  6 light3 1 4046  
1614 14 Dtool_w0Cq6FSb 0 7 1185 4005 0 14 Dtool_w0Cq6FSb 456 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns on (or
//               off, according to op) the indicate light(s).
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
//////////////////////////////////////////////////////////////////// 5 2 op 1 3915  6 light1 1 4046  6 light2 1 4046  6 light3 1 4046  6 light4 1 4046  
1615 14 Dtool_w0CqpDSz 0 7 1186 4005 0 14 Dtool_w0CqpDSz 398 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1616 14 Dtool_w0CqI94C 0 6 1187 3915 0 14 Dtool_w0CqI94C 888 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_operation
//       Access: Published
//  Description: Returns the basic operation type of the LightAttrib.
//               If this is O_set, the lights listed here completely
//               replace any lights that were already on.  If this is
//               O_add, the lights here are added to the set of of
//               lights that were already on, and if O_remove, the
//               lights here are removed from the set of lights that
//               were on.
//
//               This method is now deprecated.  LightAttribs nowadays
//               have a separate list of on_lights and off_lights, so
//               this method doesn't make sense.  Query the lists
//               independently.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4248  
1617 14 Dtool_w0CqSNtr 0 6 1188 3971 0 14 Dtool_w0CqSNtr 522 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_num_lights
//       Access: Published
//  Description: Returns the number of lights listed in the attribute.
//
//               This method is now deprecated.  LightAttribs nowadays
//               have a separate list of on_lights and off_lights, so
//               this method doesn't make sense.  Query the lists
//               independently.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4248  
1618 14 Dtool_w0Cqwj1p 0 7 1189 4046 3341 14 Dtool_w0Cqwj1p 510 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_light
//       Access: Published
//  Description: Returns the nth light listed in the attribute.
//
//               This method is now deprecated.  LightAttribs nowadays
//               have a separate list of on_lights and off_lights, so
//               this method doesn't make sense.  Query the lists
//               independently.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  1 n 1 3971  
1619 14 Dtool_w0CqTmqi 0 6 1190 3970 0 14 Dtool_w0CqTmqi 558 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::has_light
//       Access: Published
//  Description: Returns true if the indicated light is listed in the
//               attrib, false otherwise.
//
//               This method is now deprecated.  LightAttribs nowadays
//               have a separate list of on_lights and off_lights, so
//               this method doesn't make sense.  Query the lists
//               independently.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  5 light 1 4046  
1620 14 Dtool_w0Cq4p4X 0 7 1191 4005 0 14 Dtool_w0Cq4p4X 459 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::add_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light added to the list of lights.
//
//               This method is now deprecated.  Use add_on_light() or
//               add_off_light() instead.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  5 light 1 4046  
1621 14 Dtool_w0Cq_Dht 0 7 1192 4005 0 14 Dtool_w0Cq_Dht 489 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::remove_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light removed from the list of
//               lights.
//
//               This method is now deprecated.  Use remove_on_light()
//               or remove_off_light() instead.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  5 light 1 4046  
1622 14 Dtool_w0Cq3HyF 0 7 1193 4005 0 14 Dtool_w0Cq3HyF 342 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::make_all_off
//       Access: Published, Static
//  Description: Constructs a new LightAttrib object that turns off
//               all lights (and hence disables lighting).
//////////////////////////////////////////////////////////////////// 0 
1623 14 Dtool_w0Cq0Byr 0 6 1194 3971 0 14 Dtool_w0Cq0Byr 312 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_num_on_lights
//       Access: Published
//  Description: Returns the number of lights that are turned on by
//               the attribute.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4248  
1624 14 Dtool_w0CqGoP5 0 7 1195 4055 2948 14 Dtool_w0CqGoP5 315 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_on_light
//       Access: Published
//  Description: Returns the nth light turned on by the attribute,
//               sorted in render order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  1 n 1 3971  
1625 14 Dtool_w0CqCXs0 0 6 1196 3970 0 14 Dtool_w0CqCXs0 322 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::has_on_light
//       Access: Published
//  Description: Returns true if the indicated light is turned on by
//               the attrib, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  5 light 1 4056  
1626 14 Dtool_w0CqmfMm 0 6 1197 3971 0 14 Dtool_w0CqmfMm 314 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_num_off_lights
//       Access: Published
//  Description: Returns the number of lights that are turned off by
//               the attribute.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4248  
1627 14 Dtool_w0Cq7rCU 0 7 1198 4055 2948 14 Dtool_w0Cq7rCU 330 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_off_light
//       Access: Published
//  Description: Returns the nth light turned off by the attribute,
//               sorted in arbitrary (pointer) order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  1 n 1 3971  
1628 14 Dtool_w0Cq4Fzb 0 6 1199 3970 0 14 Dtool_w0Cq4Fzb 324 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::has_off_light
//       Access: Published
//  Description: Returns true if the indicated light is turned off by
//               the attrib, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  5 light 1 4056  
1629 14 Dtool_w0CqqnRX 0 6 1200 3970 0 14 Dtool_w0CqqnRX 326 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::has_all_off
//       Access: Published
//  Description: Returns true if this attrib turns off all lights
//               (although it may also turn some on).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4248  
1630 14 Dtool_w0Cq5lP4 0 6 1201 3970 0 14 Dtool_w0Cq5lP4 329 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::is_identity
//       Access: Published
//  Description: Returns true if this is an identity attrib: it does
//               not change the set of lights in use.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4248  
1631 14 Dtool_w0Cq3_7p 0 7 1202 4005 0 14 Dtool_w0Cq3_7p 388 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::add_on_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light added to the list of lights
//               turned on by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  5 light 1 4056  
1632 14 Dtool_w0CqQ7jl 0 7 1203 4005 0 14 Dtool_w0CqQ7jl 395 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::remove_on_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light removed from the list of
//               lights turned on by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  5 light 1 4056  
1633 14 Dtool_w0Cq6_CR 0 7 1204 4005 0 14 Dtool_w0Cq6_CR 390 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::add_off_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light added to the list of lights
//               turned off by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  5 light 1 4056  
1634 14 Dtool_w0CqIQ_X 0 7 1205 4005 0 14 Dtool_w0CqIQ_X 397 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::remove_off_light
//       Access: Published
//  Description: Returns a new LightAttrib, just like this one, but
//               with the indicated light removed from the list of
//               lights turned off by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  5 light 1 4056  
1635 14 Dtool_w0Cq0aOV 0 7 1206 4248 0 14 Dtool_w0Cq0aOV 705 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::filter_to_max
//       Access: Public
//  Description: Returns a new LightAttrib, very much like this one,
//               but with the number of on_lights reduced to be no
//               more than max_lights.  The number of off_lights in
//               the new LightAttrib is undefined.
//
//               The number of AmbientLights is not included in the
//               count.  All AmbientLights in the original attrib are
//               always included in the result, regardless of the
//               value of max_lights.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4248  10 max_lights 1 3971  
1636 14 Dtool_w0Cq1YNJ 0 7 1207 4055 2948 14 Dtool_w0Cq1YNJ 477 ////////////////////////////////////////////////////////////////////
//     Function: LightAttrib::get_most_important_light
//       Access: Public
//  Description: Returns the most important light (that is, the light
//               with the highest priority) in the LightAttrib,
//               excluding any ambient lights.  Returns an empty
//               NodePath if no non-ambient lights are found.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4248  
1637 14 Dtool_w0CqGhFq 0 6 1208 3971 0 14 Dtool_w0CqGhFq 0 0 
1638 14 Dtool_w0CqjHBU 0 7 1209 4000 0 14 Dtool_w0CqjHBU 0 0 
1639 14 Dtool_w0CqoIGn 0 7 1213 4005 0 14 Dtool_w0CqoIGn 408 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_default
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This
//               is the standard OpenGL lighting ramp, which clamps
//               the final light total to the 0-1 range.
//////////////////////////////////////////////////////////////////// 0 
1640 14 Dtool_w0CqJ3JY 0 7 1214 4005 0 14 Dtool_w0CqJ3JY 424 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_identity
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This
//               differs from the usual OpenGL lighting model in that
//               it does not clamp the final lighting total to (0,1).
//////////////////////////////////////////////////////////////////// 0 
1641 14 Dtool_w0Cq9mlN 0 7 1215 4005 0 14 Dtool_w0Cq9mlN 652 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_single_threshold
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This 
//               causes the luminance of the diffuse lighting
//               contribution to be quantized using a single threshold:
//               @code
//               if (original_luminance > threshold0) {
//                 luminance = level0;
//               } else {
//                 luminance = 0.0;
//               }
//               @endcode
//////////////////////////////////////////////////////////////////// 2 7 thresh0 1 3979  4 lev0 1 3979  
1642 14 Dtool_w0CqlowI 0 7 1216 4005 0 14 Dtool_w0CqlowI 750 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_double_threshold
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This 
//               causes the luminance of the diffuse lighting
//               contribution to be quantized using two thresholds:
//               @code
//               if (original_luminance > threshold1) {
//                 luminance = level1;
//               } else if (original_luminance > threshold0) {
//                 luminance = level0;
//               } else {
//                 luminance = 0.0;
//               }
//               @endcode
//////////////////////////////////////////////////////////////////// 4 7 thresh0 1 3979  4 lev0 1 3979  7 thresh1 1 3979  4 lev1 1 3979  
1643 14 Dtool_w0CqHSPP 0 7 1217 4005 0 14 Dtool_w0CqHSPP 1249 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_hdr0
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This causes
//               an HDR tone mapping operation to be applied.
//
//               Normally, brightness values greater than 1 cannot be
//               distinguished from each other, causing very brightly lit
//               objects to wash out white and all detail to be erased.
//               HDR tone mapping remaps brightness values in the range
//               0-infinity into the range (0,1), making it possible to
//               distinguish detail in scenes whose brightness exceeds 1.
//
//               However, the monitor has finite contrast.  Normally, all
//               of that contrast is used to represent brightnesses in
//               the range 0-1.  The HDR0 tone mapping operator 'steals'
//               one quarter of that contrast to represent brightnesses in
//               the range 1-infinity.
//               @code
//               FINAL_RGB = (RGB^3 + RGB^2 + RGB) / (RGB^3 + RGB^2 + RGB + 1)
//               @endcode
//////////////////////////////////////////////////////////////////// 0 
1644 14 Dtool_w0CqnW2P 0 7 1218 4005 0 14 Dtool_w0CqnW2P 1231 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_hdr1
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This causes
//               an HDR tone mapping operation to be applied.
//
//               Normally, brightness values greater than 1 cannot be
//               distinguished from each other, causing very brightly lit
//               objects to wash out white and all detail to be erased.
//               HDR tone mapping remaps brightness values in the range
//               0-infinity into the range (0,1), making it possible to
//               distinguish detail in scenes whose brightness exceeds 1.
//
//               However, the monitor has finite contrast.  Normally, all
//               of that contrast is used to represent brightnesses in
//               the range 0-1.  The HDR1 tone mapping operator 'steals'
//               one third of that contrast to represent brightnesses in
//               the range 1-infinity.
//               @code
//               FINAL_RGB = (RGB^2 + RGB) / (RGB^2 + RGB + 1)
//               @endcode
//////////////////////////////////////////////////////////////////// 0 
1645 14 Dtool_w0CqHLdQ 0 7 1219 4005 0 14 Dtool_w0CqHLdQ 1214 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::make_hdr2
//       Access: Published, Static
//  Description: Constructs a new LightRampAttrib object.  This causes
//               an HDR tone mapping operation to be applied.
//
//               Normally, brightness values greater than 1 cannot be
//               distinguished from each other, causing very brightly lit
//               objects to wash out white and all detail to be erased.
//               HDR tone mapping remaps brightness values in the range
//               0-infinity into the range (0,1), making it possible to
//               distinguish detail in scenes whose brightness exceeds 1.
//
//               However, the monitor has finite contrast.  Normally, all
//               of that contrast is used to represent brightnesses in
//               the range 0-1.  The HDR2 tone mapping operator 'steals'
//               one half of that contrast to represent brightnesses in
//               the range 1-infinity.
//               @code
//               FINAL_RGB = (RGB) / (RGB + 1)
//               @endcode
//////////////////////////////////////////////////////////////////// 0 
1646 14 Dtool_w0CqUOW_ 0 6 1220 3917 0 14 Dtool_w0CqUOW_ 258 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::get_mode
//       Access: Published
//  Description: Returns the LightRampAttrib mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4250  
1647 14 Dtool_w0CqAZyJ 0 6 1221 3979 0 14 Dtool_w0CqAZyJ 257 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::get_level
//       Access: Published
//  Description: Returns the nth lighting level.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4250  1 n 1 3971  
1648 14 Dtool_w0Cqw5D2 0 6 1222 3979 0 14 Dtool_w0Cqw5D2 262 ////////////////////////////////////////////////////////////////////
//     Function: LightRampAttrib::get_threshold
//       Access: Published
//  Description: Returns the nth threshold level.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4250  1 n 1 3971  
1649 14 Dtool_w0Cq4che 0 6 1223 3971 0 14 Dtool_w0Cq4che 0 0 
1650 14 Dtool_w0CqFEJp 0 7 1224 4000 0 14 Dtool_w0CqFEJp 0 0 
1651 14 Dtool_w0CqTg0U 0 7 1239 4252 3417 14 Dtool_w0CqTg0U 218 ////////////////////////////////////////////////////////////////////
//     Function: Loader::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1652 14 Dtool_w0Cqq8fi 0 7 1239 4252 3417 14 Dtool_w0Cqq8fi 218 ////////////////////////////////////////////////////////////////////
//     Function: Loader::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 0 
1653 14 Dtool_w0CqmL1N 0 4 1240 3994 0 14 Dtool_w0CqmL1N 362 ////////////////////////////////////////////////////////////////////
//     Function: Loader::set_task_manager
//       Access: Published
//  Description: Specifies the task manager that is used for
//               asynchronous loads.  The default is the global task
//               manager.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4252  12 task_manager 1 4253  
1654 14 Dtool_w0Cqf__I 0 7 1241 4253 0 14 Dtool_w0Cqf__I 302 ////////////////////////////////////////////////////////////////////
//     Function: Loader::get_task_manager
//       Access: Published
//  Description: Returns the task manager that is used for
//               asynchronous loads.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4255  
1655 14 Dtool_w0CqsoSx 0 4 1242 3994 0 14 Dtool_w0CqsoSx 372 ////////////////////////////////////////////////////////////////////
//     Function: Loader::set_task_chain
//       Access: Published
//  Description: Specifies the task chain that is used for
//               asynchronous loads.  The default is the initial name
//               of the Loader object.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4252  10 task_chain 1 4028  
1656 14 Dtool_w0CqHjyK 0 6 1243 4028 0 14 Dtool_w0CqHjyK 298 ////////////////////////////////////////////////////////////////////
//     Function: Loader::get_task_chain
//       Access: Published
//  Description: Returns the task chain that is used for
//               asynchronous loads.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4255  
1657 14 Dtool_w0CqbFzS 0 4 1244 3994 0 14 Dtool_w0CqbFzS 265 ////////////////////////////////////////////////////////////////////
//     Function: Loader::stop_threads
//       Access: Published
//  Description: Stop any threads used for asynchronous loads.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4252  
1658 14 Dtool_w0Cqehh9 0 6 1245 3970 0 14 Dtool_w0Cqehh9 321 ////////////////////////////////////////////////////////////////////
//     Function: Loader::remove
//       Access: Published
//  Description: Removes a pending asynchronous load request.  Returns
//               true if successful, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4252  4 task 1 4257  
1659 14 Dtool_w0CqPkHz 0 7 1246 4029 2486 14 Dtool_w0CqPkHz 455 ////////////////////////////////////////////////////////////////////
//     Function: Loader::load_sync
//       Access: Published
//  Description: Loads the file immediately, waiting for it to
//               complete.
//
//               If search is true, the file is searched for along the
//               model path; otherwise, only the exact filename is
//               loaded.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4255  8 filename 1 4132  7 options 1 4258  
1660 14 Dtool_w0Cqz7yV 0 7 1246 4029 2486 14 Dtool_w0Cqz7yV 455 ////////////////////////////////////////////////////////////////////
//     Function: Loader::load_sync
//       Access: Published
//  Description: Loads the file immediately, waiting for it to
//               complete.
//
//               If search is true, the file is searched for along the
//               model path; otherwise, only the exact filename is
//               loaded.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4255  8 filename 1 4132  
1661 14 Dtool_w0CqrRYJ 0 7 1247 4257 0 14 Dtool_w0CqrRYJ 346 ////////////////////////////////////////////////////////////////////
//     Function: Loader::make_async_request
//       Access: Published
//  Description: Returns a new AsyncTask object suitable for adding to
//               load_async() to start an asynchronous model load.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4252  8 filename 1 4132  7 options 1 4258  
1662 14 Dtool_w0CqCUjc 0 7 1247 4257 0 14 Dtool_w0CqCUjc 346 ////////////////////////////////////////////////////////////////////
//     Function: Loader::make_async_request
//       Access: Published
//  Description: Returns a new AsyncTask object suitable for adding to
//               load_async() to start an asynchronous model load.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4252  8 filename 1 4132  
1663 14 Dtool_w0CqiGlw 0 4 1248 3994 0 14 Dtool_w0CqiGlw 944 ////////////////////////////////////////////////////////////////////
//     Function: Loader::load_async
//       Access: Published
//  Description: Begins an asynchronous load request.  To use this
//               call, first call make_async_request() to create a new
//               ModelLoadRequest object with the filename you wish to
//               load, and then add that object to the Loader with
//               load_async.  This function will return immediately,
//               and the model will be loaded in the background.
//
//               To determine when the model has completely loaded,
//               you may poll request->is_ready() from time to time,
//               or set the done_event on the request object and
//               listen for that event.  When the model is ready, you
//               may retrieve it via request->get_model().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4252  7 request 1 4257  
1664 14 Dtool_w0CqeSFK 0 6 1249 3970 0 14 Dtool_w0CqeSFK 289 ////////////////////////////////////////////////////////////////////
//     Function: Loader::save_sync
//       Access: Published
//  Description: Saves the file immediately, waiting for it to
//               complete.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4255  8 filename 1 4132  7 options 1 4258  4 node 1 4029  
1665 14 Dtool_w0Cq7ykw 0 7 1250 4257 0 14 Dtool_w0Cq7ykw 351 ////////////////////////////////////////////////////////////////////
//     Function: Loader::make_async_save_request
//       Access: Published
//  Description: Returns a new AsyncTask object suitable for adding to
//               save_async() to start an asynchronous model save.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4252  8 filename 1 4132  7 options 1 4258  4 node 1 4029  
1666 14 Dtool_w0CqDh1Q 0 4 1251 3994 0 14 Dtool_w0CqDh1Q 1007 ////////////////////////////////////////////////////////////////////
//     Function: Loader::save_async
//       Access: Published
//  Description: Begins an asynchronous save request.  To use this
//               call, first call make_async_save_request() to create
//               a new ModelSaveRequest object with the filename you
//               wish to load, and then add that object to the Loader
//               with save_async.  This function will return
//               immediately, and the model will be loaded in the
//               background.
//
//               To determine when the model has completely loaded,
//               you may poll request->is_ready() from time to time,
//               or set the done_event on the request object and
//               listen for that event.  When the request is ready,
//               you may retrieve the success or failure via
//               request->get_success().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4252  7 request 1 4257  
1667 14 Dtool_w0CqBiYS 0 7 1252 4029 2486 14 Dtool_w0CqBiYS 335 ////////////////////////////////////////////////////////////////////
//     Function: Loader::load_bam_stream
//       Access: Published
//  Description: Attempts to read a bam file from the indicated stream
//               and return the scene graph defined there.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4252  2 in 1 4151  
1668 14 Dtool_w0CqHXQw 0 4 1253 3994 0 14 Dtool_w0CqHXQw 223 ////////////////////////////////////////////////////////////////////
//     Function: Loader::output
//       Access: Published, Virtual
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4255  3 out 1 3997  
1669 14 Dtool_w0Cq4Ib_ 0 7 1254 4252 3417 14 Dtool_w0Cq4Ib_ 344 ////////////////////////////////////////////////////////////////////
//     Function: Loader::get_global_ptr
//       Access: Published
//  Description: Returns a pointer to the global Loader.  This is the
//               Loader that most code should use for loading models.
//////////////////////////////////////////////////////////////////// 0 
1670 14 Dtool_w0Cq9reE 0 7 1255 4000 0 14 Dtool_w0Cq9reE 0 0 
1671 14 Dtool_w0CqFJ3o 0 7 1227 4261 0 14 Dtool_w0CqFJ3o 0 1 4 this 3 4252  
1672 14 Dtool_w0Cq5b0G 0 7 1228 4252 3417 14 Dtool_w0Cq5b0G 0 1 4 this 3 4261  
1673 14 Dtool_w0CqEQJP 0 6 1229 4050 0 14 Dtool_w0CqEQJP 0 1 4 this 3 4252  
1674 14 Dtool_w0Cq2lYW 0 7 1230 4252 3417 14 Dtool_w0Cq2lYW 0 1 4 this 3 4050  
1675 14 Dtool_w0Cqohem 0 7 1232 4262 3395 14 Dtool_w0Cqohem 708 // Filename: loader.I
// Created by:  mike (09Jan97)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 0 
1676 14 Dtool_w0CqRMrN 0 7 1232 4262 3395 14 Dtool_w0CqRMrN 232 ////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::Copy Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 copy 1 4263  
1677 14 Dtool_w0CqpwhN 0 6 1233 4262 0 14 Dtool_w0CqpwhN 240 ////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::Copy Assignment Operator
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 this 3 4262  4 copy 1 4263  
1678 14 Dtool_w0CqzgfE 0 4 1235 3994 0 14 Dtool_w0CqzgfE 258 ////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::clear
//       Access: Published
//  Description: Removes all the files from the list.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4262  
1679 14 Dtool_w0Cqlk1z 0 6 1236 3971 0 14 Dtool_w0Cqlk1z 277 ////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::get_num_files
//       Access: Published
//  Description: Returns the number of files on the result list.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4263  
1680 14 Dtool_w0Cq5XxT 0 6 1237 4132 0 14 Dtool_w0Cq5XxT 265 ////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::get_file
//       Access: Published
//  Description: Returns the nth file on the result list.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4263  1 n 1 3971  
1681 14 Dtool_w0CqzNYp 0 6 1238 4265 0 14 Dtool_w0CqzNYp 304 ////////////////////////////////////////////////////////////////////
//     Function: Loader::Results::get_file_type
//       Access: Published
//  Description: Returns the file type of the nth file on the result
//               list.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4263  1 n 1 3971  
1682 14 Dtool_w0CqQW1H 0 6 1259 4028 0 14 Dtool_w0CqQW1H 0 1 4 this 3 4266  
1683 14 Dtool_w0CqaK7M 0 6 1260 4028 0 14 Dtool_w0CqaK7M 0 1 4 this 3 4266  
1684 14 Dtool_w0Cqq3ZJ 0 6 1261 4028 0 14 Dtool_w0Cqq3ZJ 416 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::get_additional_extensions
//       Access: Published, Virtual
//  Description: Returns a space-separated list of extension, in
//               addition to the one returned by get_extension(), that
//               are recognized by this loader.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4266  
1685 14 Dtool_w0CqyEHo 0 6 1262 3970 0 14 Dtool_w0CqyEHo 389 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::supports_compressed
//       Access: Published, Virtual
//  Description: Returns true if this file type can transparently load
//               compressed files (with a .pz extension), false
//               otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4266  
1686 14 Dtool_w0Cq6DqR 0 6 1263 3970 0 14 Dtool_w0Cq6DqR 402 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::get_allow_disk_cache
//       Access: Published, Virtual
//  Description: Returns true if the loader flags allow retrieving the
//               model from the on-disk bam cache (if it is enabled),
//               false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4266  7 options 1 4258  
1687 14 Dtool_w0CqXbBh 0 6 1264 3970 0 14 Dtool_w0CqXbBh 390 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::get_allow_ram_cache
//       Access: Published, Virtual
//  Description: Returns true if the loader flags allow retrieving the
//               model from the in-memory ModelPool cache, false
//               otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4266  7 options 1 4258  
1688 14 Dtool_w0CqDa_H 0 6 1265 3970 0 14 Dtool_w0CqDa_H 427 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::supports_load
//       Access: Published, Virtual
//  Description: Returns true if the file type can be used to load
//               files, and load_file() is supported.  Returns false
//               if load_file() is unimplemented and will always fail.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4266  
1689 14 Dtool_w0CqgZQZ 0 6 1266 3970 0 14 Dtool_w0CqgZQZ 427 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileType::supports_save
//       Access: Published, Virtual
//  Description: Returns true if the file type can be used to save
//               files, and save_file() is supported.  Returns false
//               if save_file() is unimplemented and will always fail.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4266  
1690 14 Dtool_w0CqxWmb 0 7 1267 4000 0 14 Dtool_w0CqxWmb 0 0 
1691 14 Dtool_w0Cq90Sf 0 6 1270 3971 0 14 Dtool_w0Cq90Sf 282 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::get_num_types
//       Access: Published
//  Description: Returns the total number of types registered.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4268  
1692 14 Dtool_w0CqokMd 0 6 1271 4265 0 14 Dtool_w0CqokMd 264 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::get_type
//       Access: Published
//  Description: Returns the nth type registered.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4268  1 n 1 3971  
1693 14 Dtool_w0CqEeKb 0 6 1272 4265 0 14 Dtool_w0CqEeKb 430 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::get_type_from_extension
//       Access: Published
//  Description: Determines the type of the file based on the indicated
//               extension (without a leading dot).  Returns NULL if
//               the extension matches no known file types.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4270  9 extension 1 4028  
1694 14 Dtool_w0Cqz1Pq 0 4 1273 3994 0 14 Dtool_w0Cqz1Pq 329 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::write
//       Access: Published
//  Description: Writes a list of supported file types to the
//               indicated output stream, one per line.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4268  3 out 1 3997  12 indent_level 1 3971  
1695 14 Dtool_w0CqBxUL 0 4 1273 3994 0 14 Dtool_w0CqBxUL 329 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::write
//       Access: Published
//  Description: Writes a list of supported file types to the
//               indicated output stream, one per line.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4268  3 out 1 3997  
1696 14 Dtool_w0CqTXOP 0 6 1274 4270 0 14 Dtool_w0CqTXOP 325 ////////////////////////////////////////////////////////////////////
//     Function: LoaderFileTypeRegistry::get_global_ptr
//       Access: Published, Static
//  Description: Returns a pointer to the global LoaderFileTypeRegistry
//               object.
//////////////////////////////////////////////////////////////////// 0 
1697 14 Dtool_w0Cq8GwD 0 7 1276 4005 0 14 Dtool_w0Cq8GwD 344 ////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::make
//       Access: Published, Static
//  Description: Constructs a new MaterialAttrib object suitable for
//               rendering the indicated material onto geometry.
//////////////////////////////////////////////////////////////////// 1 8 material 1 4128  
1698 14 Dtool_w0CqGV47 0 7 1277 4005 0 14 Dtool_w0CqGV47 332 ////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new MaterialAttrib object suitable for
//               rendering unmateriald geometry.
//////////////////////////////////////////////////////////////////// 0 
1699 14 Dtool_w0CqwLkL 0 7 1278 4005 0 14 Dtool_w0CqwLkL 401 ////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1700 14 Dtool_w0CqyUFt 0 6 1279 3970 0 14 Dtool_w0CqyUFt 374 ////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::is_off
//       Access: Published
//  Description: Returns true if the MaterialAttrib is an 'off'
//               MaterialAttrib, indicating that it should disable
//               the use of materials.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4271  
1701 14 Dtool_w0CqJxv4 0 7 1280 4128 0 14 Dtool_w0CqJxv4 381 ////////////////////////////////////////////////////////////////////
//     Function: MaterialAttrib::get_material
//       Access: Published
//  Description: If the MaterialAttrib is not an 'off' MaterialAttrib,
//               returns the material that is associated.  Otherwise,
//               return NULL.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4271  
1702 14 Dtool_w0CqbKSv 0 6 1281 3971 0 14 Dtool_w0CqbKSv 0 0 
1703 14 Dtool_w0Cq2NoZ 0 7 1282 4000 0 14 Dtool_w0Cq2NoZ 0 0 
1704 14 Dtool_w0CqtZnw 0 7 1285 4129 3443 14 Dtool_w0CqtZnw 230 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 0 
1705 14 Dtool_w0Cq1XPz 0 7 1285 4129 3443 14 Dtool_w0Cq1XPz 235 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::Copy Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 copy 1 4273  
1706 14 Dtool_w0CqggqO 0 6 1286 4129 0 14 Dtool_w0CqggqO 243 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::Copy Assignment Operator
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 this 3 4129  4 copy 1 4273  
1707 14 Dtool_w0CqdzS8 0 4 1288 3994 0 14 Dtool_w0CqdzS8 270 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::add_material
//       Access: Published
//  Description: Adds a new Material to the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4129  13 node_material 1 4128  
1708 14 Dtool_w0CqLMue 0 6 1289 3970 0 14 Dtool_w0CqLMue 410 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::remove_material
//       Access: Published
//  Description: Removes the indicated Material from the collection.
//               Returns true if the material was removed, false if it was
//               not a member of the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4129  13 node_material 1 4128  
1709 14 Dtool_w0CqNx0z 0 4 1290 3994 0 14 Dtool_w0CqNx0z 488 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::add_materials_from
//       Access: Published
//  Description: Adds all the Materials indicated in the other
//               collection to this material.  The other materials are simply
//               appended to the end of the materials in this list;
//               duplicates are not automatically removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4129  5 other 1 4273  
1710 14 Dtool_w0Cq8Nhd 0 4 1291 3994 0 14 Dtool_w0Cq8Nhd 339 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::remove_materials_from
//       Access: Published
//  Description: Removes from this collection all of the Materials
//               listed in the other collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4129  5 other 1 4273  
1711 14 Dtool_w0CqxQ1g 0 4 1292 3994 0 14 Dtool_w0CqxQ1g 477 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::remove_duplicate_materials
//       Access: Published
//  Description: Removes any duplicate entries of the same Materials
//               on this collection.  If a Material appears multiple
//               times, the first appearance is retained; subsequent
//               appearances are removed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4129  
1712 14 Dtool_w0CqTQqF 0 6 1293 3970 0 14 Dtool_w0CqTQqF 332 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::has_material
//       Access: Published
//  Description: Returns true if the indicated Material appears in
//               this collection, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4273  8 material 1 4128  
1713 14 Dtool_w0Cq_GvS 0 4 1294 3994 0 14 Dtool_w0Cq_GvS 267 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::clear
//       Access: Published
//  Description: Removes all Materials from the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4129  
1714 14 Dtool_w0CqFNZE 0 7 1295 4128 0 14 Dtool_w0CqFNZE 376 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::find_material
//       Access: Published
//  Description: Returns the material in the collection with the
//               indicated name, if any, or NULL if no material has
//               that name.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4273  4 name 1 4028  
1715 14 Dtool_w0CqXTd2 0 6 1296 3971 0 14 Dtool_w0CqXTd2 287 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::get_num_materials
//       Access: Published
//  Description: Returns the number of Materials in the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4273  
1716 14 Dtool_w0CqejD6 0 7 1297 4128 0 14 Dtool_w0CqejD6 275 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::get_material
//       Access: Published
//  Description: Returns the nth Material in the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4273  5 index 1 3971  
1717 14 Dtool_w0CqtWZS 0 7 1298 4128 0 14 Dtool_w0CqtWZS 395 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::operator []
//       Access: Published
//  Description: Returns the nth Material in the collection.  This is
//               the same as get_material(), but it may be a more
//               convenient way to access it.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4273  5 index 1 3971  
1718 14 Dtool_w0Cqqcmw 0 6 1299 3971 0 14 Dtool_w0Cqqcmw 339 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::size
//       Access: Published
//  Description: Returns the number of materials in the collection.  This
//               is the same thing as get_num_materials().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4273  
1719 14 Dtool_w0Cq0vQG 0 6 1300 4129 0 14 Dtool_w0Cq0vQG 279 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::operator +=
//       Access: Published
//  Description: Appends the other list onto the end of this one.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4129  5 other 1 4273  
1720 14 Dtool_w0CqXSeM 0 7 1301 4129 3443 14 Dtool_w0CqXSeM 324 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::operator +
//       Access: Published
//  Description: Returns a MaterialCollection representing the
//               concatenation of the two lists.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4273  5 other 1 4273  
1721 14 Dtool_w0Cq_GVu 0 4 1302 3994 0 14 Dtool_w0Cq_GVu 336 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::output
//       Access: Published
//  Description: Writes a brief one-line description of the
//               MaterialCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4273  3 out 1 3997  
1722 14 Dtool_w0CqMzN1 0 4 1303 3994 0 14 Dtool_w0CqMzN1 340 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               MaterialCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4273  3 out 1 3997  12 indent_level 1 3971  
1723 14 Dtool_w0CqsTZG 0 4 1303 3994 0 14 Dtool_w0CqsTZG 340 ////////////////////////////////////////////////////////////////////
//     Function: MaterialCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               MaterialCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4273  3 out 1 3997  
1724 14 Dtool_w0CqBn4I 0 7 1306 4275 3465 14 Dtool_w0CqBn4I 851 // Filename: modelFlattenRequest.I
// Created by:  drose (30Mar07)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelFlattenRequest::Constructor
//       Access: Published
//  Description: Create a new ModelFlattenRequest, and add it to the loader
//               via load_async(), to begin an asynchronous load.
//////////////////////////////////////////////////////////////////// 1 4 orig 1 4029  
1725 14 Dtool_w0Cqr0LU 0 7 1307 4029 2486 14 Dtool_w0Cqr0LU 268 ////////////////////////////////////////////////////////////////////
//     Function: ModelFlattenRequest::get_orig
//       Access: Published
//  Description: Returns the original, unflattened node.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4276  
1726 14 Dtool_w0CqkIxJ 0 6 1308 3970 0 14 Dtool_w0CqkIxJ 420 ////////////////////////////////////////////////////////////////////
//     Function: ModelFlattenRequest::is_ready
//       Access: Published
//  Description: Returns true if this request has completed, false if
//               it is still pending.  When this returns true, you may
//               retrieve the model loaded by calling get_result().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4276  
1727 14 Dtool_w0CqSoXT 0 7 1309 4029 2486 14 Dtool_w0CqSoXT 348 ////////////////////////////////////////////////////////////////////
//     Function: ModelFlattenRequest::get_model
//       Access: Published
//  Description: Returns the flattened copy of the model.  It is an
//               error to call this unless is_ready() returns true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4276  
1728 14 Dtool_w0CqB1o6 0 7 1310 4000 0 14 Dtool_w0CqB1o6 0 0 
1729 14 Dtool_w0Cq38Jw 0 7 1313 4278 3473 14 Dtool_w0Cq38Jw 350 ////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::Constructor
//       Access: Published
//  Description: Create a new ModelLoadRequest, and add it to the loader
//               via load_async(), to begin an asynchronous load.
//////////////////////////////////////////////////////////////////// 4 4 name 1 4028  8 filename 1 4132  7 options 1 4258  6 loader 1 4252  
1730 14 Dtool_w0Cqk0Ji 0 6 1314 4132 0 14 Dtool_w0Cqk0Ji 811 // Filename: modelLoadRequest.I
// Created by:  drose (29Aug06)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::get_filename
//       Access: Published
//  Description: Returns the filename associated with this
//               asynchronous ModelLoadRequest.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4279  
1731 14 Dtool_w0CqH3hS 0 6 1315 4258 0 14 Dtool_w0CqH3hS 323 ////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::get_options
//       Access: Published
//  Description: Returns the LoaderOptions associated with this
//               asynchronous ModelLoadRequest.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4279  
1732 14 Dtool_w0CqtYxM 0 7 1316 4252 3417 14 Dtool_w0CqtYxM 322 ////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::get_loader
//       Access: Published
//  Description: Returns the Loader object associated with this
//               asynchronous ModelLoadRequest.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4279  
1733 14 Dtool_w0CqISGY 0 6 1317 3970 0 14 Dtool_w0CqISGY 416 ////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::is_ready
//       Access: Published
//  Description: Returns true if this request has completed, false if
//               it is still pending.  When this returns true, you may
//               retrieve the model loaded by calling get_model().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4279  
1734 14 Dtool_w0CqExGL 0 7 1318 4029 2486 14 Dtool_w0CqExGL 410 ////////////////////////////////////////////////////////////////////
//     Function: ModelLoadRequest::get_model
//       Access: Published
//  Description: Returns the model that was loaded asynchronously, if
//               any, or NULL if there was an error.  It is an error
//               to call this unless is_ready() returns true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4279  
1735 14 Dtool_w0Cq3JUL 0 7 1319 4000 0 14 Dtool_w0Cq3JUL 0 0 
1736 14 Dtool_w0CqUtdT 0 7 1322 4281 3481 14 Dtool_w0CqUtdT 703 // Filename: modelNode.I
// Created by:  drose (16Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelNode::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1737 14 Dtool_w0CqdAt4 0 4 1324 3994 0 14 Dtool_w0CqdAt4 1760 ////////////////////////////////////////////////////////////////////
//     Function: ModelNode::set_preserve_transform
//       Access: Public
//  Description: Sets the preserve_transform flag.  This restricts the
//               ability of a flatten operation to affect the
//               transform stored on this node, and/or the node
//               itself.  In the order from weakest to strongest
//               restrictions, the possible flags are:
//
//               PT_drop_node - This node should be removed at the
//               next flatten call.
//
//               PT_none - The transform may be adjusted at will.  The
//               node itself will not be removed.  This is the
//               default.
//
//               PT_net - Preserve the net transform from the root,
//               but it's acceptable to modify the local transform
//               stored on this particular node if necessary, so long
//               as the net transform is not changed.  This eliminates
//               the need to drop an extra transform on the node
//               above.
//
//               PT_local - The local (and net) transform should not
//               be changed in any way.  If necessary, an extra
//               transform will be left on the node above to guarantee
//               this.  This is a stronger restriction than PT_net.
//
//               PT_no_touch - The local transform will not be
//               changed, the node will not be removed, and
//               furthermore any flatten operation will not continue
//               below this node--this node and all descendents are
//               protected from the effects of flatten.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4281  18 preserve_transform 1 3929  
1738 14 Dtool_w0CqEjAF 0 6 1325 3929 0 14 Dtool_w0CqEjAF 337 ////////////////////////////////////////////////////////////////////
//     Function: ModelNode::get_preserve_transform
//       Access: Public
//  Description: Returns the current setting of the preserve_transform
//               flag.  See set_preserve_transform().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4282  
1739 14 Dtool_w0CqjTxX 0 4 1326 3994 0 14 Dtool_w0CqjTxX 591 ////////////////////////////////////////////////////////////////////
//     Function: ModelNode::set_preserve_attributes
//       Access: Public
//  Description: Sets the preserve_attributes flag.  This restricts the
//               ability of a flatten operation to affect the
//               render attributes stored on this node.
//
//               The value should be the union of bits from
//               SceneGraphReducer::AttribTypes that represent the
//               attributes that should *not* be changed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4281  11 attrib_mask 1 3971  
1740 14 Dtool_w0CqEXJC 0 6 1327 3971 0 14 Dtool_w0CqEXJC 340 ////////////////////////////////////////////////////////////////////
//     Function: ModelNode::get_preserve_attributes
//       Access: Public
//  Description: Returns the current setting of the preserve_attributes
//               flag.  See set_preserve_attributes().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4282  
1741 14 Dtool_w0CqH54l 0 4 1328 3994 0 14 Dtool_w0CqH54l 0 2 4 this 3 4281  5 limit 1 3979  
1742 14 Dtool_w0CqYGvp 0 7 1329 4000 0 14 Dtool_w0CqYGvp 0 0 
1743 14 Dtool_w0CqPqCm 0 7 1332 4284 3493 14 Dtool_w0CqPqCm 221 ////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 9 fulllpath 1 4132  9 timestamp 1 3972  
1744 14 Dtool_w0CqeSI8 0 7 1332 4284 3493 14 Dtool_w0CqeSI8 706 // Filename: modelRoot.I
// Created by:  drose (16Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1745 14 Dtool_w0Cq3bzd 0 6 1333 3971 0 14 Dtool_w0Cq3bzd 654 ////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::get_model_ref_count
//       Access: Published
//  Description: Returns the number of copies that exist of this
//               particular ModelRoot node.  Each time
//               ModelRoot::copy_subgraph() or make_copy() is called
//               (or some other copying mechanism, such as
//               NodePath.copy_to(), is used), this count will
//               increment by one in all copies; when one of the
//               copies is destructed, this count will decrement.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4285  
1746 14 Dtool_w0CqHEam 0 6 1334 4132 0 14 Dtool_w0CqHEam 463 ////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::get_fullpath
//       Access: Published
//  Description: Returns the full pathname of the model represented by
//               this node, as found on disk.  This is mainly useful
//               for reference purposes, but is also used to index the
//               ModelRoot into the ModelPool.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4285  
1747 14 Dtool_w0CqQk2_ 0 4 1335 3994 0 14 Dtool_w0CqQk2_ 714 ////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::set_fullpath
//       Access: Published
//  Description: Sets the full pathname of the model represented by
//               this node, as found on disk.  This is mainly useful
//               for reference purposes, but is also used to index the
//               ModelRoot into the ModelPool.
//
//               This is normally set automatically when a model is
//               loaded, and should not be set directly by the user.
//               If you change this on a loaded model, then
//               ModelPool::release_model() may fail.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4284  8 fullpath 1 4132  
1748 14 Dtool_w0CqHpS7 0 6 1336 3972 0 14 Dtool_w0CqHpS7 610 ////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::get_timestamp
//       Access: Published
//  Description: Returns the timestamp of the file on disk that was
//               read for this model, at the time it was read, if it
//               is known.  Returns 0 if the timestamp is not known or
//               could not be provided.  This can be used as a quick
//               (but fallible) check to verify whether the file might
//               have changed since the model was read.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4285  
1749 14 Dtool_w0Cq7VrH 0 4 1337 3994 0 14 Dtool_w0Cq7VrH 447 ////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::set_timestamp
//       Access: Published
//  Description: Sets the timestamp of the file on disk that was read
//               for this model.  This is normally set automatically
//               when a model is loaded, and should not be set
//               directly by the user.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4284  9 timestamp 1 3972  
1750 14 Dtool_w0Cq0Z6t 0 7 1341 4287 3489 14 Dtool_w0Cq0Z6t 604 ////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::get_reference
//       Access: Published
//  Description: Returns the pointer that represents the object shared
//               between all copies of this ModelRoot.  Since there's
//               not much associated with this object other than a
//               reference count, normally there's not much reason to
//               get the pointer (though it may be compared
//               pointerwise with other ModelRoot objects).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4285  
1751 14 Dtool_w0Cqbz3K 0 4 1342 3994 0 14 Dtool_w0Cqbz3K 469 ////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::set_reference
//       Access: Published
//  Description: Changes the pointer that represents the object shared
//               between all copies of this ModelRoot.  This will
//               disassociate this ModelRoot from all of its copies.
//               Normally, there's no reason to do this.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4284  3 ref 1 4287  
1752 14 Dtool_w0Cq86vR 0 7 1343 4000 0 14 Dtool_w0Cq86vR 0 0 
1753 14 Dtool_w0CqE6_L 0 7 1339 4287 3489 14 Dtool_w0CqE6_L 237 ////////////////////////////////////////////////////////////////////
//     Function: ModelRoot::ModelReference::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 0 
1754 14 Dtool_w0CqQAUp 0 6 1346 3970 0 14 Dtool_w0CqQAUp 791 // Filename: modelPool.I
// Created by:  drose (12Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelPool::has_model
//       Access: Public, Static
//  Description: Returns true if the model has ever been loaded,
//               false otherwise.
//////////////////////////////////////////////////////////////////// 1 8 filename 1 4132  
1755 14 Dtool_w0CqsZBt 0 6 1347 3970 0 14 Dtool_w0CqsZBt 915 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::verify_model
//       Access: Public, Static
//  Description: Loads the given filename up as a model, if it has
//               not already been loaded, and returns true to indicate
//               success, or false to indicate failure.  If this
//               returns true, it is probable that a subsequent call
//               to load_model() with the same model name will
//               return a valid PandaNode.
//
//               However, even if this returns true, it is still
//               possible for a subsequent call to load_model() to
//               fail.  This can happen if cache-check-timestamps is
//               true, and the on-disk file is subsequently modified
//               to replace it with an invalid model.
//////////////////////////////////////////////////////////////////// 1 8 filename 1 4132  
1756 14 Dtool_w0Cq59U0 0 7 1348 4284 3493 14 Dtool_w0Cq59U0 690 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::load_model
//       Access: Public, Static
//  Description: Loads the given filename up as a model, if it has
//               not already been loaded, and returns the new model.
//               If a model with the same filename was previously
//               loaded, returns that one instead (unless
//               cache-check-timestamps is true and the file has
//               recently changed).  If the model file cannot be
//               found, or cannot be loaded for some reason, returns
//               NULL.
//////////////////////////////////////////////////////////////////// 2 8 filename 1 4132  7 options 1 4258  
1757 14 Dtool_w0Cqne99 0 7 1348 4284 3493 14 Dtool_w0Cqne99 690 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::load_model
//       Access: Public, Static
//  Description: Loads the given filename up as a model, if it has
//               not already been loaded, and returns the new model.
//               If a model with the same filename was previously
//               loaded, returns that one instead (unless
//               cache-check-timestamps is true and the file has
//               recently changed).  If the model file cannot be
//               found, or cannot be loaded for some reason, returns
//               NULL.
//////////////////////////////////////////////////////////////////// 1 8 filename 1 4132  
1758 14 Dtool_w0CqmyVO 0 4 1349 3994 0 14 Dtool_w0CqmyVO 562 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::add_model
//       Access: Public, Static
//  Description: Adds the indicated already-loaded model to the
//               pool.  The model will replace any previously-loaded
//               model in the pool that had the same filename.
//
//               This two-parameter version of this method is
//               deprecated; use the one-parameter add_model(model)
//               instead.
//////////////////////////////////////////////////////////////////// 2 8 filename 1 4132  5 model 1 4284  
1759 14 Dtool_w0CqkjnC 0 4 1349 3994 0 14 Dtool_w0CqkjnC 403 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::add_model
//       Access: Public, Static
//  Description: Adds the indicated already-loaded model to the
//               pool.  The model will replace any previously-loaded
//               model in the pool that had the same filename.
//////////////////////////////////////////////////////////////////// 1 5 model 1 4284  
1760 14 Dtool_w0CqCeDz 0 4 1350 3994 0 14 Dtool_w0CqCeDz 657 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::release_model
//       Access: Public, Static
//  Description: Removes the indicated model from the pool,
//               indicating it will never be loaded again; the model
//               may then be freed.  If this function is never called,
//               a reference count will be maintained on every model
//               every loaded, and models will never be freed.
//
//               This version of this method is deprecated; use
//               release_model(model) instead.
//////////////////////////////////////////////////////////////////// 1 8 filename 1 4132  
1761 14 Dtool_w0CqCOUG 0 4 1350 3994 0 14 Dtool_w0CqCOUG 773 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::release_model
//       Access: Public, Static
//  Description: Removes the indicated model from the pool,
//               indicating it will never be loaded again; the model
//               may then be freed.  If this function (and
//               garbage_collect()) is never called, a reference count
//               will be maintained on every model every loaded, and
//               models will never be freed.
//
//               The model's get_fullpath() value should not have been
//               changed during its lifetime, or this function may
//               fail to locate it in the pool.
//////////////////////////////////////////////////////////////////// 1 5 model 1 4284  
1762 14 Dtool_w0Cq4zQY 0 4 1351 3994 0 14 Dtool_w0Cq4zQY 324 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::release_all_models
//       Access: Public, Static
//  Description: Releases all models in the pool and restores the
//               pool to the empty state.
//////////////////////////////////////////////////////////////////// 0 
1763 14 Dtool_w0CqqWBO 0 6 1352 3971 0 14 Dtool_w0CqqWBO 469 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::garbage_collect
//       Access: Public, Static
//  Description: Releases only those models in the pool that have a
//               reference count of exactly 1; i.e. only those
//               models that are not being used outside of the pool.
//               Returns the number of models released.
//////////////////////////////////////////////////////////////////// 0 
1764 14 Dtool_w0CqMGWG 0 4 1353 3994 0 14 Dtool_w0CqMGWG 274 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::list_contents
//       Access: Public, Static
//  Description: Lists the contents of the model pool to cout.
//////////////////////////////////////////////////////////////////// 0 
1765 14 Dtool_w0CqBOv6 0 4 1353 3994 0 14 Dtool_w0CqBOv6 314 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::list_contents
//       Access: Public, Static
//  Description: Lists the contents of the model pool to the
//               indicated output stream.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
1766 14 Dtool_w0CqpGeH 0 4 1354 3994 0 14 Dtool_w0CqpGeH 348 ////////////////////////////////////////////////////////////////////
//     Function: ModelPool::write
//       Access: Published, Static
//  Description: Lists the contents of the model pool to the
//               indicated output stream.
//               Helps with debugging.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
1767 14 Dtool_w0CqTEvW 0 7 1357 4288 3512 14 Dtool_w0CqTEvW 350 ////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::Constructor
//       Access: Published
//  Description: Create a new ModelSaveRequest, and add it to the loader
//               via save_async(), to begin an asynchronous save.
//////////////////////////////////////////////////////////////////// 5 4 name 1 4028  8 filename 1 4132  7 options 1 4258  4 node 1 4029  6 loader 1 4252  
1768 14 Dtool_w0CqmIPn 0 6 1358 4132 0 14 Dtool_w0CqmIPn 811 // Filename: modelSaveRequest.I
// Created by:  drose (19Dec12)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_filename
//       Access: Published
//  Description: Returns the filename associated with this
//               asynchronous ModelSaveRequest.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4289  
1769 14 Dtool_w0CqF4mX 0 6 1359 4258 0 14 Dtool_w0CqF4mX 323 ////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_options
//       Access: Published
//  Description: Returns the LoaderOptions associated with this
//               asynchronous ModelSaveRequest.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4289  
1770 14 Dtool_w0Cqh7qP 0 7 1360 4029 2486 14 Dtool_w0Cqh7qP 278 ////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_node
//       Access: Published
//  Description: Returns the node that was passed to the constructor.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4289  
1771 14 Dtool_w0CqTr3R 0 7 1361 4252 3417 14 Dtool_w0CqTr3R 322 ////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_loader
//       Access: Published
//  Description: Returns the Loader object associated with this
//               asynchronous ModelSaveRequest.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4289  
1772 14 Dtool_w0CqKXLd 0 6 1362 3970 0 14 Dtool_w0CqKXLd 412 ////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::is_ready
//       Access: Published
//  Description: Returns true if this request has completed, false if
//               it is still pending.  When this returns true, you may
//               retrieve the success flag with get_success().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4289  
1773 14 Dtool_w0CqAads 0 6 1363 3970 0 14 Dtool_w0CqAads 394 ////////////////////////////////////////////////////////////////////
//     Function: ModelSaveRequest::get_success
//       Access: Published
//  Description: Returns the true if the model was saved successfully,
//               false otherwise.  It is an error to call this unless
//               is_ready() returns true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4289  
1774 14 Dtool_w0Cq5NZQ 0 7 1364 4000 0 14 Dtool_w0Cq5NZQ 0 0 
1775 14 Dtool_w0Cq3iXv 0 7 1367 4058 3515 14 Dtool_w0Cq3iXv 230 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 0 
1776 14 Dtool_w0Cq2o9H 0 7 1367 4058 3515 14 Dtool_w0Cq2o9H 235 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::Copy Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 copy 1 4291  
1777 14 Dtool_w0CqMXmF 0 7 1367 4058 3515 14 Dtool_w0CqMXmF 458 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::Constructor
//       Access: Published
//  Description: This special constructor accepts a Python list of
//               NodePaths.  Since this constructor accepts a generic
//               PyObject *, it should be the last constructor listed
//               in the class record.
//////////////////////////////////////////////////////////////////// 2 4 self 1 3995  8 sequence 1 3995  
1778 14 Dtool_w0CqhGif 0 6 1368 4058 0 14 Dtool_w0CqhGif 243 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::Copy Assignment Operator
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  4 copy 1 4291  
1779 14 Dtool_w0Cqpn77 0 6 1370 3995 0 14 Dtool_w0Cqpn77 0 2 4 this 3 4291  4 self 1 3995  
1780 14 Dtool_w0Cqoj7i 0 4 1371 3994 0 14 Dtool_w0Cqoj7i 281 // HAVE_PYTHON
////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::add_path
//       Access: Published
//  Description: Adds a new NodePath to the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  9 node_path 1 4056  
1781 14 Dtool_w0Cq_4Zw 0 6 1372 3970 0 14 Dtool_w0Cq_4Zw 402 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::remove_path
//       Access: Published
//  Description: Removes the indicated NodePath from the collection.
//               Returns true if the path was removed, false if it was
//               not a member of the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  9 node_path 1 4056  
1782 14 Dtool_w0CqD16c 0 4 1373 3994 0 14 Dtool_w0CqD16c 472 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::add_paths_from
//       Access: Published
//  Description: Adds all the NodePaths indicated in the other
//               collection to this path.  The other paths are simply
//               appended to the end of the paths in this list;
//               duplicates are not automatically removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 other 1 4291  
1783 14 Dtool_w0CqPgsC 0 4 1374 3994 0 14 Dtool_w0CqPgsC 335 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::remove_paths_from
//       Access: Published
//  Description: Removes from this collection all of the NodePaths
//               listed in the other collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 other 1 4291  
1784 14 Dtool_w0CqfBHO 0 4 1375 3994 0 14 Dtool_w0CqfBHO 473 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::remove_duplicate_paths
//       Access: Published
//  Description: Removes any duplicate entries of the same NodePaths
//               on this collection.  If a NodePath appears multiple
//               times, the first appearance is retained; subsequent
//               appearances are removed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4058  
1785 14 Dtool_w0CqW5qJ 0 6 1376 3970 0 14 Dtool_w0CqW5qJ 328 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::has_path
//       Access: Published
//  Description: Returns true if the indicated NodePath appears in
//               this collection, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4291  4 path 1 4056  
1786 14 Dtool_w0CqOyfl 0 4 1377 3994 0 14 Dtool_w0CqOyfl 267 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::clear
//       Access: Published
//  Description: Removes all NodePaths from the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4058  
1787 14 Dtool_w0CqYTzI 0 6 1378 3970 0 14 Dtool_w0CqYTzI 319 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::is_empty
//       Access: Published
//  Description: Returns true if there are no NodePaths in the
//               collection, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4291  
1788 14 Dtool_w0Cq6KKi 0 6 1379 3971 0 14 Dtool_w0Cq6KKi 283 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::get_num_paths
//       Access: Published
//  Description: Returns the number of NodePaths in the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4291  
1789 14 Dtool_w0Cq02PJ 0 7 1380 4055 2948 14 Dtool_w0Cq02PJ 271 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::get_path
//       Access: Published
//  Description: Returns the nth NodePath in the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4291  5 index 1 3971  
1790 14 Dtool_w0CqyiIl 0 7 1381 4055 2948 14 Dtool_w0CqyiIl 391 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::operator []
//       Access: Published
//  Description: Returns the nth NodePath in the collection.  This is
//               the same as get_path(), but it may be a more
//               convenient way to access it.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4291  5 index 1 3971  
1791 14 Dtool_w0Cq6EWD 0 6 1382 3971 0 14 Dtool_w0Cq6EWD 331 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::size
//       Access: Published
//  Description: Returns the number of paths in the collection.  This
//               is the same thing as get_num_paths().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4291  
1792 14 Dtool_w0Cq5pUd 0 6 1383 4058 0 14 Dtool_w0Cq5pUd 279 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::operator +=
//       Access: Published
//  Description: Appends the other list onto the end of this one.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 other 1 4291  
1793 14 Dtool_w0CqwPWd 0 7 1384 4058 3515 14 Dtool_w0CqwPWd 324 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::operator +
//       Access: Published
//  Description: Returns a NodePathCollection representing the
//               concatenation of the two lists.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4291  5 other 1 4291  
1794 14 Dtool_w0Cq2qmT 0 4 1385 3994 0 14 Dtool_w0Cq2qmT 399 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::append
//       Access: Published
//  Description: Adds a new NodePath to the collection.  This method
//               duplicates the add_path() method; it is provided to
//               satisfy Python's naming convention.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  9 node_path 1 4056  
1795 14 Dtool_w0CqOz1K 0 4 1386 3994 0 14 Dtool_w0CqOz1K 402 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::extend
//       Access: Published
//  Description: Appends the other list onto the end of this one.
//               This method duplicates the += operator; it is
//               provided to satisfy Python's naming convention.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 other 1 4291  
1796 14 Dtool_w0Cq3QA8 0 4 1387 3994 0 14 Dtool_w0Cq3QA8 315 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::ls
//       Access: Published
//  Description: Lists all the nodes at and below each node in the
//               collection hierarchically.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4291  
1797 14 Dtool_w0CqRtqi 0 4 1387 3994 0 14 Dtool_w0CqRtqi 315 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::ls
//       Access: Published
//  Description: Lists all the nodes at and below each node in the
//               collection hierarchically.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4291  3 out 1 3997  12 indent_level 1 3971  
1798 14 Dtool_w0Cq1d_6 0 4 1387 3994 0 14 Dtool_w0Cq1d_6 315 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::ls
//       Access: Published
//  Description: Lists all the nodes at and below each node in the
//               collection hierarchically.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4291  3 out 1 3997  
1799 14 Dtool_w0CqXeNM 0 7 1388 4058 3515 14 Dtool_w0CqXeNM 447 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::find_all_matches
//       Access: Published
//  Description: Returns the complete set of all NodePaths that begin
//               with any NodePath in this collection and can be
//               extended by path.  The shortest paths will be listed
//               first.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4291  4 path 1 4028  
1800 14 Dtool_w0Cqb1jO 0 4 1389 3994 0 14 Dtool_w0Cqb1jO 316 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::reparent_to
//       Access: Published
//  Description: Reparents all the NodePaths in the collection to the
//               indicated node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 other 1 4056  
1801 14 Dtool_w0CqqRqE 0 4 1390 3994 0 14 Dtool_w0CqqRqE 402 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::wrt_reparent_to
//       Access: Published
//  Description: Reparents all the NodePaths in the collection to the
//               indicated node, adjusting each transform so as not to
//               move in world coordinates.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 other 1 4056  
1802 14 Dtool_w0Cq7UQK 0 4 1391 3994 0 14 Dtool_w0Cq7UQK 262 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::show
//       Access: Published
//  Description: Shows all NodePaths in the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4058  
1803 14 Dtool_w0Cq583n 0 4 1392 3994 0 14 Dtool_w0Cq583n 262 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::show
//       Access: Published
//  Description: Hides all NodePaths in the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4058  
1804 14 Dtool_w0CqiPiS 0 4 1393 3994 0 14 Dtool_w0CqiPiS 265 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::stash
//       Access: Published
//  Description: Stashes all NodePaths in the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4058  
1805 14 Dtool_w0CqLTV5 0 4 1394 3994 0 14 Dtool_w0CqLTV5 269 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::unstash
//       Access: Published
//  Description: Unstashes all NodePaths in the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4058  
1806 14 Dtool_w0CqMNIX 0 4 1395 3994 0 14 Dtool_w0CqMNIX 267 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::detach
//       Access: Published
//  Description: Detaches all NodePaths in the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4058  
1807 14 Dtool_w0CqNmTQ 0 7 1396 4037 0 14 Dtool_w0CqNmTQ 610 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::get_collide_mask
//       Access: Published
//  Description: Returns the union of all of the into_collide_masks
//               for nodes at this level and below.  This is the same
//               thing as node()->get_net_collide_mask().
//
//               If you want to return what the into_collide_mask of
//               this node itself is, without regard to its children,
//               use node()->get_into_collide_mask().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4291  
1808 14 Dtool_w0Cq__ns 0 4 1397 3994 0 14 Dtool_w0Cq__ns 681 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_collide_mask
//       Access: Published
//  Description: Recursively applies the indicated CollideMask to the
//               into_collide_masks for all nodes at this level and
//               below.
//
//               The default is to change all bits, but if
//               bits_to_change is not all bits on, then only the bits
//               that are set in bits_to_change are modified, allowing
//               this call to change only a subset of the bits in the
//               subgraph.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4058  8 new_mask 1 4037  14 bits_to_change 1 4037  9 node_type 1 4000  
1809 14 Dtool_w0Cqn9QS 0 4 1397 3994 0 14 Dtool_w0Cqn9QS 681 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_collide_mask
//       Access: Published
//  Description: Recursively applies the indicated CollideMask to the
//               into_collide_masks for all nodes at this level and
//               below.
//
//               The default is to change all bits, but if
//               bits_to_change is not all bits on, then only the bits
//               that are set in bits_to_change are modified, allowing
//               this call to change only a subset of the bits in the
//               subgraph.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4058  8 new_mask 1 4037  14 bits_to_change 1 4037  
1810 14 Dtool_w0CqJ2mf 0 4 1397 3994 0 14 Dtool_w0CqJ2mf 681 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_collide_mask
//       Access: Published
//  Description: Recursively applies the indicated CollideMask to the
//               into_collide_masks for all nodes at this level and
//               below.
//
//               The default is to change all bits, but if
//               bits_to_change is not all bits on, then only the bits
//               that are set in bits_to_change are modified, allowing
//               this call to change only a subset of the bits in the
//               subgraph.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  8 new_mask 1 4037  
1811 14 Dtool_w0Cq_4XM 0 6 1398 3970 0 14 Dtool_w0Cq_4XM 682 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::calc_tight_bounds
//       Access: Published
//  Description: Calculates the minimum and maximum vertices of all
//               Geoms at these NodePath's bottom nodes and below
//               This is a tight bounding box; it will generally be
//               tighter than the bounding volume returned by
//               get_bounds() (but it is more expensive to compute).
//
//               The return value is true if any points are within the
//               bounding volume, or false if none are.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4291  9 min_point 1 4059  9 max_point 1 4059  
1812 14 Dtool_w0Cq9hRB 0 6 1399 3995 0 14 Dtool_w0Cq9hRB 0 1 4 this 3 4291  
1813 14 Dtool_w0CquhXW 0 4 1400 3994 0 14 Dtool_w0CquhXW 684 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the default texture stage.
//
//               This is the deprecated single-texture variant of this
//               method; it is now superceded by set_texture() that
//               accepts a stage and texture.  However, this method
//               may be used in the presence of multitexture if you
//               just want to adjust the default stage.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4058  3 tex 1 4071  8 priority 1 3971  
1814 14 Dtool_w0Cqcvmo 0 4 1400 3994 0 14 Dtool_w0Cqcvmo 684 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the default texture stage.
//
//               This is the deprecated single-texture variant of this
//               method; it is now superceded by set_texture() that
//               accepts a stage and texture.  However, this method
//               may be used in the presence of multitexture if you
//               just want to adjust the default stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  3 tex 1 4071  
1815 14 Dtool_w0Cqw4DL 0 4 1400 3994 0 14 Dtool_w0Cqw4DL 669 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the indicated multitexture
//               stage.  If there are multiple texture stages
//               specified (possibly on multiple different nodes at
//               different levels), they will all be applied to
//               geometry together, according to the stage
//               specification set up in the TextureStage object.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4058  5 stage 1 4012  3 tex 1 4071  8 priority 1 3971  
1816 14 Dtool_w0CqfDHK 0 4 1400 3994 0 14 Dtool_w0CqfDHK 669 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture
//       Access: Published
//  Description: Adds the indicated texture to the list of textures
//               that will be rendered on the indicated multitexture
//               stage.  If there are multiple texture stages
//               specified (possibly on multiple different nodes at
//               different levels), they will all be applied to
//               geometry together, according to the stage
//               specification set up in the TextureStage object.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4058  5 stage 1 4012  3 tex 1 4071  
1817 14 Dtool_w0CqG_3G 0 4 1401 3994 0 14 Dtool_w0CqG_3G 605 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on the indicated stage.  This is
//               different from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
//////////////////////////////////////////////////////////////////// 3 4 this 3 4058  5 stage 1 4012  8 priority 1 3971  
1818 14 Dtool_w0Cqn4Jh 0 4 1401 3994 0 14 Dtool_w0Cqn4Jh 605 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on the indicated stage.  This is
//               different from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 stage 1 4012  
1819 14 Dtool_w0CqnDJh 0 4 1401 3994 0 14 Dtool_w0CqnDJh 595 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on any stage.  This is different
//               from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  8 priority 1 3971  
1820 14 Dtool_w0CqpfVS 0 4 1401 3994 0 14 Dtool_w0CqpfVS 595 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_texture_off
//       Access: Published
//  Description: Sets the geometry at this level and below to render
//               using no texture, on any stage.  This is different
//               from not specifying a texture; rather, this
//               specifically contradicts set_texture() at a higher
//               node level (or, with a priority, overrides a
//               set_texture() at a lower level).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4058  
1821 14 Dtool_w0CqKnbq 0 4 1402 3994 0 14 Dtool_w0CqKnbq 267 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color
//       Access: Published
//  Description: Colors all NodePaths in the collection
//////////////////////////////////////////////////////////////////// 3 4 this 3 4058  5 color 1 4067  8 priority 1 3971  
1822 14 Dtool_w0CqpnAB 0 4 1402 3994 0 14 Dtool_w0CqpnAB 267 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color
//       Access: Published
//  Description: Colors all NodePaths in the collection
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 color 1 4067  
1823 14 Dtool_w0CqOAR_ 0 4 1402 3994 0 14 Dtool_w0CqOAR_ 267 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color
//       Access: Published
//  Description: Colors all NodePaths in the collection
//////////////////////////////////////////////////////////////////// 6 4 this 3 4058  1 r 1 3979  1 g 1 3979  1 b 1 3979  1 a 1 3979  8 priority 1 3971  
1824 14 Dtool_w0CqM8OR 0 4 1402 3994 0 14 Dtool_w0CqM8OR 267 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color
//       Access: Published
//  Description: Colors all NodePaths in the collection
//////////////////////////////////////////////////////////////////// 5 4 this 3 4058  1 r 1 3979  1 g 1 3979  1 b 1 3979  1 a 1 3979  
1825 14 Dtool_w0CqfNdA 0 4 1402 3994 0 14 Dtool_w0CqfNdA 267 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color
//       Access: Published
//  Description: Colors all NodePaths in the collection
//////////////////////////////////////////////////////////////////// 4 4 this 3 4058  1 r 1 3979  1 g 1 3979  1 b 1 3979  
1826 14 Dtool_w0CqO4b2 0 4 1403 3994 0 14 Dtool_w0CqO4b2 347 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale is replaced.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4058  5 scale 1 4067  8 priority 1 3971  
1827 14 Dtool_w0Cqne6a 0 4 1403 3994 0 14 Dtool_w0Cqne6a 347 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale is replaced.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 scale 1 4067  
1828 14 Dtool_w0CqyfHu 0 4 1403 3994 0 14 Dtool_w0CqyfHu 347 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale is replaced.
//////////////////////////////////////////////////////////////////// 6 4 this 3 4058  1 r 1 3979  1 g 1 3979  1 b 1 3979  1 a 1 3979  8 priority 1 3971  
1829 14 Dtool_w0CqD3Ks 0 4 1403 3994 0 14 Dtool_w0CqD3Ks 347 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale is replaced.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4058  1 r 1 3979  1 g 1 3979  1 b 1 3979  1 a 1 3979  
1830 14 Dtool_w0CqQMy4 0 4 1403 3994 0 14 Dtool_w0CqQMy4 347 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale is replaced.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4058  1 r 1 3979  1 g 1 3979  1 b 1 3979  
1831 14 Dtool_w0Cqt1Pa 0 4 1404 3994 0 14 Dtool_w0Cqt1Pa 408 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::compose_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale, if any, is
//               multiplied by the specified color scale.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4058  5 scale 1 4067  8 priority 1 3971  
1832 14 Dtool_w0CqRCj0 0 4 1404 3994 0 14 Dtool_w0CqRCj0 408 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::compose_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale, if any, is
//               multiplied by the specified color scale.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  5 scale 1 4067  
1833 14 Dtool_w0CqdWqt 0 4 1404 3994 0 14 Dtool_w0CqdWqt 408 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::compose_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale, if any, is
//               multiplied by the specified color scale.
//////////////////////////////////////////////////////////////////// 6 4 this 3 4058  1 r 1 3979  1 g 1 3979  1 b 1 3979  1 a 1 3979  8 priority 1 3971  
1834 14 Dtool_w0Cq0rj1 0 4 1404 3994 0 14 Dtool_w0Cq0rj1 408 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::compose_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale, if any, is
//               multiplied by the specified color scale.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4058  1 r 1 3979  1 g 1 3979  1 b 1 3979  1 a 1 3979  
1835 14 Dtool_w0CqDeXy 0 4 1404 3994 0 14 Dtool_w0CqDeXy 408 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::compose_color_scale
//       Access: Published
//  Description: Applies color scales to all NodePaths in the
//               collection.  The existing color scale, if any, is
//               multiplied by the specified color scale.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4058  1 r 1 3979  1 g 1 3979  1 b 1 3979  
1836 14 Dtool_w0CqWzN6 0 4 1405 3994 0 14 Dtool_w0CqWzN6 504 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_attrib
//       Access: Published
//  Description: Applies the indicated RenderAttrib to all NodePaths
//               in the collection.  An effort is made to apply the
//               attrib to many NodePaths as quickly as possible;
//               redundant RenderState compositions are not
//               duplicated.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4058  6 attrib 1 4005  8 priority 1 3971  
1837 14 Dtool_w0CqkrMD 0 4 1405 3994 0 14 Dtool_w0CqkrMD 504 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::set_attrib
//       Access: Published
//  Description: Applies the indicated RenderAttrib to all NodePaths
//               in the collection.  An effort is made to apply the
//               attrib to many NodePaths as quickly as possible;
//               redundant RenderState compositions are not
//               duplicated.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4058  6 attrib 1 4005  
1838 14 Dtool_w0CquSFB 0 4 1406 3994 0 14 Dtool_w0CquSFB 336 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::output
//       Access: Published
//  Description: Writes a brief one-line description of the
//               NodePathCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4291  3 out 1 3997  
1839 14 Dtool_w0Cqcn9H 0 4 1407 3994 0 14 Dtool_w0Cqcn9H 340 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               NodePathCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4291  3 out 1 3997  12 indent_level 1 3971  
1840 14 Dtool_w0Cq_nJZ 0 4 1407 3994 0 14 Dtool_w0Cq_nJZ 340 ////////////////////////////////////////////////////////////////////
//     Function: NodePathCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               NodePathCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4291  3 out 1 3997  
1841 14 Dtool_w0Cq92CO 0 7 1409 4005 0 14 Dtool_w0Cq92CO 300 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make
//       Access: Published, Static
//  Description: Constructs a new TextureAttrib object that does
//               nothing.
//////////////////////////////////////////////////////////////////// 0 
1842 14 Dtool_w0Cq0rhz 0 7 1409 4005 0 14 Dtool_w0Cq0rhz 390 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make
//       Access: Published, Static
//  Description: Constructs a new TextureAttrib object suitable for
//               rendering the indicated texture onto geometry, using
//               the default TextureStage.
//////////////////////////////////////////////////////////////////// 1 3 tex 1 4071  
1843 14 Dtool_w0CqHcOV 0 7 1410 4005 0 14 Dtool_w0CqHcOV 329 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new TextureAttrib object suitable for
//               rendering untextured geometry.
//////////////////////////////////////////////////////////////////// 0 
1844 14 Dtool_w0CqdQuh 0 7 1411 4005 0 14 Dtool_w0CqdQuh 400 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1845 14 Dtool_w0CqSDxK 0 6 1412 3970 0 14 Dtool_w0CqSDxK 679 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::is_off
//       Access: Published
//  Description: Returns true if the TextureAttrib is an 'off'
//               TextureAttrib, indicating that it should disable
//               texturing.
//
//               If multitexture is in effect, a TextureAttrib may not
//               be strictly "on" or "off"; therefore, to get a more
//               precise answer to this question, you should consider
//               using has_all_off() or get_num_off_stages() or
//               has_off_stage() instead.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4293  
1846 14 Dtool_w0Cqa2tR 0 7 1413 4071 0 14 Dtool_w0Cqa2tR 386 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_texture
//       Access: Published
//  Description: If the TextureAttrib is not an 'off' TextureAttrib,
//               returns the base-level texture that is associated.
//               Otherwise, return NULL.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4293  
1847 14 Dtool_w0CqiAmG 0 7 1414 4005 0 14 Dtool_w0CqiAmG 347 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::make_all_off
//       Access: Published, Static
//  Description: Constructs a new TextureAttrib object that turns off
//               all stages (and hence disables texturing).
//////////////////////////////////////////////////////////////////// 0 
1848 14 Dtool_w0CqPts5 0 6 1415 3971 0 14 Dtool_w0CqPts5 314 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_num_on_stages
//       Access: Published
//  Description: Returns the number of stages that are turned on by
//               the attribute.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4293  
1849 14 Dtool_w0CqxAIF 0 7 1416 4012 0 14 Dtool_w0CqxAIF 317 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_on_stage
//       Access: Published
//  Description: Returns the nth stage turned on by the attribute,
//               sorted in render order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  1 n 1 3971  
1850 14 Dtool_w0CqM6wU 0 6 1417 3971 0 14 Dtool_w0CqM6wU 410 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_num_on_ff_stages
//       Access: Published
//  Description: Returns the number of on-stages that are relevant
//               to the classic fixed function pipeline.  This excludes 
//               texture stages such as normal maps.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4293  
1851 14 Dtool_w0CquP0R 0 7 1418 4012 0 14 Dtool_w0CquP0R 480 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_render_ff_stage
//       Access: Published
//  Description: Returns the nth stage turned on by the attribute,
//               sorted in render order, including only those relevant
//               to the classic fixed function pipeline.  This excludes 
//               texture stages such as normal maps.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  1 n 1 3971  
1852 14 Dtool_w0CqKGh7 0 6 1419 3971 0 14 Dtool_w0CqKGh7 610 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_ff_tc_index
//       Access: Published
//  Description: For each TextureStage listed in get_on_ff_stage(),
//               this returns a unique index number for the texture
//               coordinate name used by that TextureStage.  It is
//               guaranteed to remain the same index number for each
//               texcoord name (for a given set of TextureStages),
//               even if the texture render order changes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  1 n 1 3971  
1853 14 Dtool_w0CqJ52n 0 6 1420 3970 0 14 Dtool_w0CqJ52n 324 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::has_on_stage
//       Access: Published
//  Description: Returns true if the indicated stage is turned on by
//               the attrib, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  5 stage 1 4012  
1854 14 Dtool_w0CqNSWS 0 7 1421 4071 0 14 Dtool_w0CqNSWS 339 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_on_texture
//       Access: Published
//  Description: Returns the texture associated with the indicated
//               stage, or NULL if no texture is associated.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  5 stage 1 4012  
1855 14 Dtool_w0Cql_GX 0 6 1422 3971 0 14 Dtool_w0Cql_GX 316 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_on_stage_override
//       Access: Published
//  Description: Returns the override value associated with the
//               indicated stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  5 stage 1 4012  
1856 14 Dtool_w0CqcPt4 0 6 1423 3971 0 14 Dtool_w0CqcPt4 390 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::find_on_stage
//       Access: Published
//  Description: Returns the index number of the indicated
//               TextureStage within the list of on_stages, or -1 if
//               the indicated stage is not listed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  5 stage 1 4295  
1857 14 Dtool_w0CqRCki 0 6 1424 3971 0 14 Dtool_w0CqRCki 316 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_num_off_stages
//       Access: Published
//  Description: Returns the number of stages that are turned off by
//               the attribute.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4293  
1858 14 Dtool_w0Cqfsjm 0 7 1425 4012 0 14 Dtool_w0Cqfsjm 332 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::get_off_stage
//       Access: Published
//  Description: Returns the nth stage turned off by the attribute,
//               sorted in arbitrary (pointer) order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  1 n 1 3971  
1859 14 Dtool_w0CqIoIC 0 6 1426 3970 0 14 Dtool_w0CqIoIC 326 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::has_off_stage
//       Access: Published
//  Description: Returns true if the indicated stage is turned off by
//               the attrib, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  5 stage 1 4012  
1860 14 Dtool_w0CqQEFa 0 6 1427 3970 0 14 Dtool_w0CqQEFa 328 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::has_all_off
//       Access: Published
//  Description: Returns true if this attrib turns off all stages
//               (although it may also turn some on).
//////////////////////////////////////////////////////////////////// 1 4 this 3 4293  
1861 14 Dtool_w0CqJvNO 0 6 1428 3970 0 14 Dtool_w0CqJvNO 331 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::is_identity
//       Access: Published
//  Description: Returns true if this is an identity attrib: it does
//               not change the set of stages in use.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4293  
1862 14 Dtool_w0Cq4qWu 0 7 1429 4005 0 14 Dtool_w0Cq4qWu 392 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::add_on_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage added to the list of stages
//               turned on by this attrib.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4293  5 stage 1 4012  3 tex 1 4071  8 override 1 3971  
1863 14 Dtool_w0CqCbpG 0 7 1429 4005 0 14 Dtool_w0CqCbpG 392 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::add_on_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage added to the list of stages
//               turned on by this attrib.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4293  5 stage 1 4012  3 tex 1 4071  
1864 14 Dtool_w0CqpW4_ 0 7 1430 4005 0 14 Dtool_w0CqpW4_ 399 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::remove_on_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage removed from the list of
//               stages turned on by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  5 stage 1 4012  
1865 14 Dtool_w0CqMrXC 0 7 1431 4005 0 14 Dtool_w0CqMrXC 394 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::add_off_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage added to the list of stages
//               turned off by this attrib.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4293  5 stage 1 4012  8 override 1 3971  
1866 14 Dtool_w0Cq7rdo 0 7 1431 4005 0 14 Dtool_w0Cq7rdo 394 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::add_off_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage added to the list of stages
//               turned off by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  5 stage 1 4012  
1867 14 Dtool_w0CqpBrg 0 7 1432 4005 0 14 Dtool_w0CqpBrg 401 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::remove_off_stage
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with the indicated stage removed from the list of
//               stages turned off by this attrib.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  5 stage 1 4012  
1868 14 Dtool_w0Cq3f6O 0 7 1433 4005 0 14 Dtool_w0Cq3f6O 451 ////////////////////////////////////////////////////////////////////
//     Function: TextureAttrib::unify_texture_stages
//       Access: Published
//  Description: Returns a new TextureAttrib, just like this one, but
//               with any included TextureAttribs that happen to have
//               the same name as the given object replaced with the
//               object.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4293  5 stage 1 4012  
1869 14 Dtool_w0CqOj1a 0 6 1434 3971 0 14 Dtool_w0CqOj1a 0 0 
1870 14 Dtool_w0CqpGJm 0 7 1435 4000 0 14 Dtool_w0CqpGJm 0 0 
1871 14 Dtool_w0CqmQma 0 7 1438 4005 0 14 Dtool_w0CqmQma 301 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexGenAttrib that generates no stages at
//               all.
//////////////////////////////////////////////////////////////////// 0 
1872 14 Dtool_w0CqLPjv 0 7 1438 4005 0 14 Dtool_w0CqLPjv 309 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::make
//       Access: Published, Static
//  Description: Constructs a TexGenAttrib that generates just the
//               indicated stage.
//////////////////////////////////////////////////////////////////// 2 5 stage 1 4012  4 mode 1 3843  
1873 14 Dtool_w0Cq_0Nx 0 7 1439 4005 0 14 Dtool_w0Cq_0Nx 399 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
1874 14 Dtool_w0CqV2tb 0 7 1440 4005 0 14 Dtool_w0CqV2tb 437 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::add_stage
//       Access: Published, Static
//  Description: Returns a new TexGenAttrib just like this one,
//               with the indicated generation mode for the given
//               stage.  If this stage already exists, its mode is
//               replaced.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4297  5 stage 1 4012  4 mode 1 3843  
1875 14 Dtool_w0Cq_t59 0 7 1440 4005 0 14 Dtool_w0Cq_t59 564 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::add_stage
//       Access: Published, Static
//  Description: Returns a new TexGenAttrib just like this one,
//               with the indicated generation mode for the given
//               stage.  If this stage already exists, its mode is
//               replaced.
//
//               This variant also accepts constant_value, which is
//               only meaningful if mode is M_constant.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4297  5 stage 1 4012  4 mode 1 3843  14 constant_value 1 3989  
1876 14 Dtool_w0Cqw3gR 0 7 1440 4005 0 14 Dtool_w0Cqw3gR 576 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::add_stage
//       Access: Published, Static
//  Description: Returns a new TexGenAttrib just like this one,
//               with the indicated generation mode for the given
//               stage.  If this stage already exists, its mode is
//               replaced.
//
//               This variant also accepts source_name and light,
//               which are only meaningful if mode is M_light_vector.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4297  5 stage 1 4012  4 mode 1 3843  11 source_name 1 4028  5 light 1 4056  
1877 14 Dtool_w0Cq5OGR 0 7 1441 4005 0 14 Dtool_w0Cq5OGR 331 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::remove_stage
//       Access: Published, Static
//  Description: Returns a new TexGenAttrib just like this one,
//               with the indicated stage removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4297  5 stage 1 4012  
1878 14 Dtool_w0CqBBIE 0 6 1442 3970 0 14 Dtool_w0CqBBIE 323 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::is_empty
//       Access: Published
//  Description: Returns true if no stages are defined in the
//               TexGenAttrib, false if at least one is.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4297  
1879 14 Dtool_w0CqbnHK 0 6 1443 3970 0 14 Dtool_w0CqbnHK 400 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::has_stage
//       Access: Published
//  Description: Returns true if there is a mode associated with
//               the indicated stage, or false otherwise (in which
//               case get_transform(stage) will return M_off).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4297  5 stage 1 4012  
1880 14 Dtool_w0CqeJNN 0 6 1444 3843 0 14 Dtool_w0CqeJNN 384 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_mode
//       Access: Published
//  Description: Returns the generation mode associated with
//               the named texture stage, or M_off if
//               nothing is associated with the indicated stage.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4297  5 stage 1 4012  
1881 14 Dtool_w0CqWmtc 0 6 1445 3970 0 14 Dtool_w0CqWmtc 477 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::has_gen_texcoord_stage
//       Access: Published
//  Description: Returns true if the indicated TextureStage will have
//               texture coordinates generated for it automatically
//               (and thus there is no need to upload the texture
//               coordinates encoded in the vertices).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4297  5 stage 1 4012  
1882 14 Dtool_w0CqrGMS 0 6 1446 4028 0 14 Dtool_w0CqrGMS 644 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_source_name
//       Access: Published
//  Description: Returns the source name associated with the named
//               texture stage, or the empty string if no name is
//               associated with the indicated stage.  This is only
//               meaningful if the mode is M_light_vector, in which
//               case it indicates the name of the source texture
//               coordinate set from which the tangent and binormal
//               are derived.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4297  5 stage 1 4012  
1883 14 Dtool_w0Cqyomo 0 7 1447 4055 2948 14 Dtool_w0Cqyomo 462 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_light
//       Access: Published
//  Description: Returns the Light associated with the named texture
//               stage, or the empty NodePath if no light is
//               associated with the indicated stage.  This is only
//               meaningful if the mode is M_light_vector.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4297  5 stage 1 4012  
1884 14 Dtool_w0CqYu8z 0 6 1448 3989 0 14 Dtool_w0CqYu8z 385 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_constant_value
//       Access: Published
//  Description: Returns the constant value associated with the named
//               texture stage.  This is only meaningful if the mode
//               is M_constant.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4297  5 stage 1 4012  
1885 14 Dtool_w0CqhRI_ 0 6 1449 3971 0 14 Dtool_w0CqhRI_ 448 ////////////////////////////////////////////////////////////////////
//     Function: TexGenAttrib::get_geom_rendering
//       Access: Published
//  Description: Returns the union of the Geom::GeomRendering bits
//               that will be required once this TexGenAttrib is
//               applied to a geom which includes the indicated
//               geom_rendering bits.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4297  14 geom_rendering 1 3971  
1886 14 Dtool_w0CqqJ9K 0 6 1450 3971 0 14 Dtool_w0CqqJ9K 0 0 
1887 14 Dtool_w0CqleUJ 0 7 1451 4000 0 14 Dtool_w0CqleUJ 0 0 
1888 14 Dtool_w0CqO5Hy 0 7 1453 4299 2486 14 Dtool_w0CqO5Hy 539 ////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::Constructor
//       Access: Public
//  Description: The default constructor creates a default occlusion
//               polygon in the XZ plane (or XY plane in a y-up
//               coordinate system).  Use the normal Panda set_pos(),
//               set_hpr(), set_scale() to position it appropriately,
//               or replace the vertices with set_vertices().
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1889 14 Dtool_w0CqXbC0 0 4 1454 3994 0 14 Dtool_w0CqXbC0 281 ////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::set_double_sided
//       Access: Published
//  Description: If true, the back-face will also be used to occlude
//////////////////////////////////////////////////////////////////// 2 4 this 3 4299  5 value 1 3970  
1890 14 Dtool_w0Cqjfzo 0 6 1455 3970 0 14 Dtool_w0Cqjfzo 258 ////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::is_double_sided
//       Access: Published
//  Description: Is this occluder double-sided
//////////////////////////////////////////////////////////////////// 1 4 this 3 4299  
1891 14 Dtool_w0Cq5oWg 0 4 1456 3994 0 14 Dtool_w0Cq5oWg 465 ////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::set_min_coverage
//       Access: Published
//  Description: Minimum screen coverage needed before occluder used.
//               Range should be 0 to 1. For example, setting to 0.2
//               would mean that the occluder needs to cover 20% of
//               the screen to be considered.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4299  5 value 1 3979  
1892 14 Dtool_w0Cql9rn 0 6 1457 3979 0 14 Dtool_w0Cql9rn 266 ////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::get_min_coverage
//       Access: Published
//  Description: Returns the minimum screen coverage.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4299  
1893 14 Dtool_w0CqKatr 0 4 1458 3994 0 14 Dtool_w0CqKatr 906 // Filename: occluderNode.I
// Created by:  jenes (11Mar11)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::set_vertices
//       Access: Published
//  Description: Replaces the four vertices of the occluder polygon.
//               The vertices should be defined in a counterclockwise
//               orientation when looking at the face of the occluder.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4299  2 v0 1 3989  2 v1 1 3989  2 v2 1 3989  2 v3 1 3989  
1894 14 Dtool_w0CqzwM4 0 6 1459 3971 0 14 Dtool_w0CqzwM4 332 ////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::get_num_vertices
//       Access: Published
//  Description: Returns the number of vertices in the occluder
//               polygon.  This should always return 4.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4300  
1895 14 Dtool_w0CqU2_T 0 6 1460 3989 0 14 Dtool_w0CqU2_T 271 ////////////////////////////////////////////////////////////////////
//     Function: OccluderNode::get_vertex
//       Access: Published
//  Description: Returns the nth vertex of the occluder polygon.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4300  1 n 1 3971  
1896 14 Dtool_w0CqHPM4 0 7 1461 4000 0 14 Dtool_w0CqHPM4 0 0 
1897 14 Dtool_w0CqZ_Ik 0 7 1463 4024 0 14 Dtool_w0CqZ_Ik 302 ////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::make
//       Access: Published, Static
//  Description: Constructs a new OccluderEffect object that does
//               nothing.
//////////////////////////////////////////////////////////////////// 0 
1898 14 Dtool_w0CqUhL2 0 6 1464 3971 0 14 Dtool_w0CqUhL2 319 ////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::get_num_on_occluders
//       Access: Published
//  Description: Returns the number of occluders that are enabled by
//               the effectute.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4302  
1899 14 Dtool_w0Cqh0jr 0 7 1465 4055 2948 14 Dtool_w0Cqh0jr 322 ////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::get_on_occluder
//       Access: Published
//  Description: Returns the nth occluder enabled by the effectute,
//               sorted in render order.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4302  1 n 1 3971  
1900 14 Dtool_w0CqWbfB 0 6 1466 3970 0 14 Dtool_w0CqWbfB 329 ////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::has_on_occluder
//       Access: Published
//  Description: Returns true if the indicated occluder is enabled by
//               the effect, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4302  8 occluder 1 4056  
1901 14 Dtool_w0Cqr8Qq 0 6 1467 3970 0 14 Dtool_w0Cqr8Qq 335 ////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::is_identity
//       Access: Published
//  Description: Returns true if this is an identity effect: it does
//               not change the set of occluders in use.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4302  
1902 14 Dtool_w0CqZ5_K 0 7 1468 4024 0 14 Dtool_w0CqZ5_K 401 ////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::add_on_occluder
//       Access: Published
//  Description: Returns a new OccluderEffect, just like this one, but
//               with the indicated occluder added to the list of occluders
//               enabled by this effect.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4302  8 occluder 1 4056  
1903 14 Dtool_w0CqeeCQ 0 7 1469 4024 0 14 Dtool_w0CqeeCQ 408 ////////////////////////////////////////////////////////////////////
//     Function: OccluderEffect::remove_on_occluder
//       Access: Published
//  Description: Returns a new OccluderEffect, just like this one, but
//               with the indicated occluder removed from the list of
//               occluders enabled by this effect.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4302  8 occluder 1 4056  
1904 14 Dtool_w0CqkClo 0 7 1470 4000 0 14 Dtool_w0CqkClo 0 0 
1905 14 Dtool_w0CqQvIh 0 7 1475 4304 3651 14 Dtool_w0CqQvIh 303 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::Constructor
//       Access: Published
//  Description: Use PolylightNode() to construct a new
//               PolylightNode object.
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
1906 14 Dtool_w0CqJ7oX 0 4 1476 3994 0 14 Dtool_w0CqJ7oX 238 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::enable
//       Access: Published
//  Description: Enable this light
//////////////////////////////////////////////////////////////////// 1 4 this 3 4304  
1907 14 Dtool_w0CqqVNP 0 4 1477 3994 0 14 Dtool_w0CqqVNP 240 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::disable
//       Access: Published
//  Description: Disable this light
//////////////////////////////////////////////////////////////////// 1 4 this 3 4304  
1908 14 Dtool_w0Cq5EU0 0 4 1478 3994 0 14 Dtool_w0Cq5EU0 247 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_pos
//       Access: Published
//  Description: Set this light's position
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  8 position 1 3973  
1909 14 Dtool_w0Cql5pP 0 4 1478 3994 0 14 Dtool_w0Cql5pP 247 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_pos
//       Access: Published
//  Description: Set this light's position
//////////////////////////////////////////////////////////////////// 4 4 this 3 4304  1 x 1 3979  1 y 1 3979  1 z 1 3979  
1910 14 Dtool_w0Cq6Ddh 0 7 1479 4062 0 14 Dtool_w0Cq6Ddh 251 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_pos
//       Access: Published
//  Description: Returns position as a LPoint3
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1911 14 Dtool_w0CqlWcS 0 4 1480 3994 0 14 Dtool_w0CqlWcS 249 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_color
//       Access: Published
//  Description: Set the light's color... 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  5 color 1 4067  
1912 14 Dtool_w0CqrXKS 0 4 1480 3994 0 14 Dtool_w0CqrXKS 273 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_color
//       Access: Published
//  Description: Set the light's color... 3 floats between 0 and 1
//////////////////////////////////////////////////////////////////// 4 4 this 3 4304  1 r 1 3979  1 g 1 3979  1 b 1 3979  
1913 14 Dtool_w0CqrYAt 0 7 1481 4070 0 14 Dtool_w0CqrYAt 259 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_color
//       Access: Published
//  Description: Returns the light's color as LColor
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1914 14 Dtool_w0Cqs21Z 0 7 1482 4070 0 14 Dtool_w0Cqs21Z 443 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_color_scenegraph
//       Access: Published
//  Description: This differs from get_color in that when applying
//               the light color we need to make sure that a color
//               flattening external to the PolylightNode is not 
//               ignored.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1915 14 Dtool_w0CqjENz 0 4 1483 3994 0 14 Dtool_w0CqjENz 265 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_radius
//       Access: Published
//  Description: Set radius of the spherical light volume
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  1 r 1 3979  
1916 14 Dtool_w0CqmN_F 0 6 1484 3979 0 14 Dtool_w0CqmN_F 265 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_radius
//       Access: Published
//  Description: Get radius of the spherical light volume
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1917 14 Dtool_w0CqNzMK 0 6 1485 3970 0 14 Dtool_w0CqNzMK 267 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_attenuation
//       Access: Published
//  Description: Set ALINEAR or AQUADRATIC attenuation
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  4 type 1 3941  
1918 14 Dtool_w0CqgukW 0 6 1486 3941 0 14 Dtool_w0CqgukW 274 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_attenuation
//       Access: Published
//  Description: Get "linear" or "quadratic" attenuation type
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1919 14 Dtool_w0Cq6AyF 0 4 1487 3994 0 14 Dtool_w0Cq6AyF 329 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_a0
//       Access: Published
//  Description: Set the quadratic attenuation factor a0
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  2 a0 1 3979  
1920 14 Dtool_w0CqqeGG 0 4 1488 3994 0 14 Dtool_w0CqqeGG 329 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_a1
//       Access: Published
//  Description: Set the quadratic attenuation factor a1
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  2 a1 1 3979  
1921 14 Dtool_w0Cqa8aG 0 4 1489 3994 0 14 Dtool_w0Cqa8aG 329 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_a2
//       Access: Published
//  Description: Set the quadratic attenuation factor a2
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  2 a2 1 3979  
1922 14 Dtool_w0CqfYRN 0 6 1490 3979 0 14 Dtool_w0CqfYRN 329 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_a0
//       Access: Published
//  Description: Get the quadratic attenuation factor a0
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1923 14 Dtool_w0Cqv_lN 0 6 1491 3979 0 14 Dtool_w0Cqv_lN 329 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_a1
//       Access: Published
//  Description: Get the quadratic attenuation factor a1
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1924 14 Dtool_w0Cq_c4N 0 6 1492 3979 0 14 Dtool_w0Cq_c4N 329 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_a2
//       Access: Published
//  Description: Get the quadratic attenuation factor a2
//               fd = 1 / ( a0 + a1*distance + a2*distance*distance)
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1925 14 Dtool_w0Cq6XFe 0 4 1493 3994 0 14 Dtool_w0Cq6XFe 332 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::flicker_on
//       Access: Published
//  Description: Set flickering to true so at every loop this light's
//               color is varied based on flicker_type
//////////////////////////////////////////////////////////////////// 1 4 this 3 4304  
1926 14 Dtool_w0CqTEHE 0 4 1494 3994 0 14 Dtool_w0CqTEHE 245 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::flicker_off
//       Access: Published
//  Description: Turn flickering off
//////////////////////////////////////////////////////////////////// 1 4 this 3 4304  
1927 14 Dtool_w0CqLCTy 0 6 1495 3970 0 14 Dtool_w0CqLCTy 261 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::is_flickering
//       Access: Published
//  Description: Check is this light is flickering
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1928 14 Dtool_w0CqrALY 0 6 1496 3970 0 14 Dtool_w0CqrALY 446 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_flicker_type
//       Access: Published
//  Description: Flicker type can be FRANDOM or FSIN
//               At a later point there might be a FCUSTOM
//               Custom flicker will be a set of fix points recorded
//               by animating the light's intensity
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  4 type 1 3940  
1929 14 Dtool_w0Cql3py 0 6 1497 3940 0 14 Dtool_w0Cql3py 254 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_flicker_type
//       Access: Published
//  Description: Returns FRANDOM or FSIN
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1930 14 Dtool_w0Cqpyo8 0 4 1498 3994 0 14 Dtool_w0Cqpyo8 387 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_offset
//       Access: Published
//  Description: Set the offset value for the random and sin
//               flicker variations... used to tweak the flicker
//               This value is added to the variation
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  6 offset 1 3979  
1931 14 Dtool_w0Cqy2YP 0 6 1499 3979 0 14 Dtool_w0Cqy2YP 304 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_offset
//       Access: Published
//  Description: Get the offset value for the random and sin
//               flicker variations
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1932 14 Dtool_w0Cq5u_H 0 4 1500 3994 0 14 Dtool_w0Cq5u_H 392 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_scale
//       Access: Published
//  Description: Set the scale value for the random and sin
//               flicker variations... used to tweak the flicker
//               This value is multiplied with the variation
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  5 scale 1 3979  
1933 14 Dtool_w0Cqriye 0 6 1501 3979 0 14 Dtool_w0Cqriye 302 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_scale
//       Access: Published
//  Description: Get the scale value for the random and sin
//               flicker variations
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1934 14 Dtool_w0CqN2Pf 0 4 1502 3994 0 14 Dtool_w0CqN2Pf 381 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_step_size
//       Access: Published
//  Description: Set the step size for the sin function in flicker
//               This is the increment size for the value supplied
//               to the sin function
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  4 step 1 3979  
1935 14 Dtool_w0CqCj7S 0 6 1503 3979 0 14 Dtool_w0CqCj7S 381 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_step_size
//       Access: Published
//  Description: Get the step size for the sin function in flicker
//               This is the increment size for the value supplied
//               to the sin function
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1936 14 Dtool_w0Cq_d8J 0 4 1504 3994 0 14 Dtool_w0Cq_d8J 251 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::set_freq
//       Access: Published
//  Description: Set frequency of sin flicker
//////////////////////////////////////////////////////////////////// 2 4 this 3 4304  1 f 1 3979  
1937 14 Dtool_w0CqpD4C 0 6 1505 3979 0 14 Dtool_w0CqpD4C 251 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::get_freq
//       Access: Published
//  Description: Get frequency of sin flicker
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1938 14 Dtool_w0CqE3DF 0 6 1506 3970 0 14 Dtool_w0CqE3DF 825 // Filename: PolylightNodeEffect.I
// Created by:  sshodhan (02Jun04)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::operator ==
//       Access: Published
//  Description: Returns true if the two lights are equivalent
//               that is, all their properties are same
//////////////////////////////////////////////////////////////////// 2 4 this 3 4305  5 other 1 4305  
1939 14 Dtool_w0Cq4ihE 0 6 1507 3970 0 14 Dtool_w0Cq4ihE 276 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::operator !=
//       Access: Published
//  Description: Returns true if the two lights are not equivalent.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4305  5 other 1 4305  
1940 14 Dtool_w0Cqtfyl 0 6 1508 3970 0 14 Dtool_w0Cqtfyl 541 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::operator <
//       Access: Published
//  Description: Returns true if this PolylightNode sorts before the other
//               one, false otherwise.  The sorting order of two
//               nonequivalent PolylightNodes is consistent but undefined,
//               and is useful only for storing PolylightNodes in a sorted
//               container like an STL set.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4305  5 other 1 4305  
1941 14 Dtool_w0Cq2MS5 0 6 1509 3971 0 14 Dtool_w0Cq2MS5 832 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::compare_to
//       Access: Published
//  Description: Returns a number less than zero if this PolylightNode
//               sorts before the other one, greater than zero if it
//               sorts after, or zero if they are equivalent.
//
//               Two PolylightNodes are considered equivalent if they
//               consist of exactly the same properties
//               Otherwise, they are different; different
//               PolylightNodes will be ranked in a consistent but
//               undefined ordering; the ordering is useful only for
//               placing the PolylightNodes in a sorted container like an
//               STL set.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4305  5 other 1 4305  
1942 14 Dtool_w0CqhYfZ 0 6 1510 3970 0 14 Dtool_w0CqhYfZ 259 ////////////////////////////////////////////////////////////////////
//     Function: PolylightNode::is_enabled
//       Access: Published
//  Description: Is this light is enabled/disabled?
//////////////////////////////////////////////////////////////////// 1 4 this 3 4305  
1943 14 Dtool_w0Cqz1P9 0 7 1511 4000 0 14 Dtool_w0Cqz1P9 0 0 
1944 14 Dtool_w0CqX4w6 0 7 1515 4024 0 14 Dtool_w0CqX4w6 269 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::make
//       Access: Published, Static
//  Description: Constructs a new PolylightEffect object.
//////////////////////////////////////////////////////////////////// 0 
1945 14 Dtool_w0CqwQWw 0 7 1515 4024 0 14 Dtool_w0CqwQWw 269 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::make
//       Access: Published, Static
//  Description: Constructs a new PolylightEffect object.
//////////////////////////////////////////////////////////////////// 3 6 weight 1 3979  7 contrib 1 3943  13 effect_center 1 3989  
1946 14 Dtool_w0CqgXbG 0 7 1515 4024 0 14 Dtool_w0CqgXbG 269 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::make
//       Access: Published, Static
//  Description: Constructs a new PolylightEffect object.
//////////////////////////////////////////////////////////////////// 4 6 weight 1 3979  7 contrib 1 3943  13 effect_center 1 3989  6 lights 1 4307  
1947 14 Dtool_w0Cq5iCT 0 7 1516 4024 0 14 Dtool_w0Cq5iCT 308 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::add_light
//       Access: Published
//  Description: Add a PolylightNode object to this effect and return
//               a new effect
//////////////////////////////////////////////////////////////////// 2 4 this 3 4310  8 newlight 1 4056  
1948 14 Dtool_w0CqneGr 0 7 1517 4024 0 14 Dtool_w0CqneGr 308 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::remove_light
//       Access: Published
//  Description: Remove a light from this effect. Return the new updated
//               effect
//////////////////////////////////////////////////////////////////// 2 4 this 3 4310  8 newlight 1 4056  
1949 14 Dtool_w0Cq5_KQ 0 7 1518 4024 0 14 Dtool_w0Cq5_KQ 517 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::set_weight
//       Access: Published
//  Description: Set weight and return a new effect... the reason
//               this couldnt be done through make was because
//               that would return a new effect without the 
//               lightgroup which is static and cant be accessed
//               Here, we just pass that to the make
//////////////////////////////////////////////////////////////////// 2 4 this 3 4310  1 w 1 3979  
1950 14 Dtool_w0Cqqn_x 0 7 1519 4024 0 14 Dtool_w0Cqqn_x 524 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::set_contrib
//       Access: Published
//  Description: Set Contrib Type and return a new effect... the reason
//               this couldnt be done through make was because
//               that would return a new effect without the 
//               lightgroup which is static and cant be accessed
//               Here, we just pass that to the make
//////////////////////////////////////////////////////////////////// 2 4 this 3 4310  1 c 1 3943  
1951 14 Dtool_w0Cq2mzF 0 7 1520 4024 0 14 Dtool_w0Cq2mzF 524 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::set_effect_center
//       Access: Published
//  Description: Set weight and return a new effect... the reason
//               this couldnt be done through make was because
//               that would return a new effect without the 
//               lightgroup which is static and cant be accessed
//               Here, we just pass that to the make
//////////////////////////////////////////////////////////////////// 2 4 this 3 4310  2 ec 1 3989  
1952 14 Dtool_w0CqTSvb 0 6 1521 3979 0 14 Dtool_w0CqTSvb 247 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::get_weight
//       Access: Published
//  Description: Get the weight value
//////////////////////////////////////////////////////////////////// 1 4 this 3 4310  
1953 14 Dtool_w0CqQ433 0 6 1522 3943 0 14 Dtool_w0CqQ433 257 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::get_contrib
//       Access: Published
//  Description: Returns CT_all or CT_proximal
//////////////////////////////////////////////////////////////////// 1 4 this 3 4310  
1954 14 Dtool_w0CqGfeT 0 7 1523 4059 0 14 Dtool_w0CqGfeT 272 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::get_effect_center
//       Access: Published
//  Description: Return the value of the _effect_center
//////////////////////////////////////////////////////////////////// 1 4 this 3 4310  
1955 14 Dtool_w0Cqedsj 0 6 1524 3970 0 14 Dtool_w0Cqedsj 329 ////////////////////////////////////////////////////////////////////
//     Function: PolylightEffect::has_light
//       Access: Published
//  Description: Returns true if the indicated light is listed in the
//               PolylightEffect, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4310  5 light 1 4056  
1956 14 Dtool_w0CqTUuJ 0 7 1525 4000 0 14 Dtool_w0CqTUuJ 0 0 
1957 14 Dtool_w0CqR5BI 0 7 1529 4315 0 14 Dtool_w0CqR5BI 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 mat 1 4312  8 priority 1 3971  
1958 14 Dtool_w0CqHz_Z 0 7 1529 4315 0 14 Dtool_w0CqHz_Z 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 mat 1 4312  
1959 14 Dtool_w0CqO5IW 0 7 1529 4315 0 14 Dtool_w0CqO5IW 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 mat 1 3986  8 priority 1 3971  
1960 14 Dtool_w0CqEzGo 0 7 1529 4315 0 14 Dtool_w0CqEzGo 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 mat 1 3986  
1961 14 Dtool_w0CqRmPJ 0 7 1529 4315 0 14 Dtool_w0CqRmPJ 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 mat 1 4316  8 priority 1 3971  
1962 14 Dtool_w0CqHoNb 0 7 1529 4315 0 14 Dtool_w0CqHoNb 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 mat 1 4316  
1963 14 Dtool_w0CqOmWX 0 7 1529 4315 0 14 Dtool_w0CqOmWX 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 mat 1 3980  8 priority 1 3971  
1964 14 Dtool_w0CqEoUp 0 7 1529 4315 0 14 Dtool_w0CqEoUp 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 mat 1 3980  
1965 14 Dtool_w0CqJKCj 0 7 1529 4315 0 14 Dtool_w0CqJKCj 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 vec 1 4319  8 priority 1 3971  
1966 14 Dtool_w0CqVZFi 0 7 1529 4315 0 14 Dtool_w0CqVZFi 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 vec 1 4319  
1967 14 Dtool_w0CqgKim 0 7 1529 4315 0 14 Dtool_w0CqgKim 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 vec 1 3983  8 priority 1 3971  
1968 14 Dtool_w0Cq8Zll 0 7 1529 4315 0 14 Dtool_w0Cq8Zll 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 vec 1 3983  
1969 14 Dtool_w0CqrLyL 0 7 1529 4315 0 14 Dtool_w0CqrLyL 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 vec 1 4079  8 priority 1 3971  
1970 14 Dtool_w0Cq7Y1K 0 7 1529 4315 0 14 Dtool_w0Cq7Y1K 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 vec 1 4079  
1971 14 Dtool_w0CqKqGK 0 7 1529 4315 0 14 Dtool_w0CqKqGK 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 vec 1 4322  8 priority 1 3971  
1972 14 Dtool_w0Cqa5IJ 0 7 1529 4315 0 14 Dtool_w0Cqa5IJ 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 vec 1 4322  
1973 14 Dtool_w0CqhqmN 0 7 1529 4315 0 14 Dtool_w0CqhqmN 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 vec 1 3973  8 priority 1 3971  
1974 14 Dtool_w0Cq95oM 0 7 1529 4315 0 14 Dtool_w0Cq95oM 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 vec 1 3973  
1975 14 Dtool_w0Cqrr2y 0 7 1529 4315 0 14 Dtool_w0Cqrr2y 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 vec 1 4082  8 priority 1 3971  
1976 14 Dtool_w0Cq744x 0 7 1529 4315 0 14 Dtool_w0Cq744x 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 vec 1 4082  
1977 14 Dtool_w0CqKKJx 0 7 1529 4315 0 14 Dtool_w0CqKKJx 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 vec 1 4325  8 priority 1 3971  
1978 14 Dtool_w0CqaZMw 0 7 1529 4315 0 14 Dtool_w0CqaZMw 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 vec 1 4325  
1979 14 Dtool_w0CqhKp0 0 7 1529 4315 0 14 Dtool_w0CqhKp0 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 vec 1 4067  8 priority 1 3971  
1980 14 Dtool_w0Cq9Zsz 0 7 1529 4315 0 14 Dtool_w0Cq9Zsz 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 vec 1 4067  
1981 14 Dtool_w0CqsL5Z 0 7 1529 4315 0 14 Dtool_w0CqsL5Z 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 vec 1 4085  8 priority 1 3971  
1982 14 Dtool_w0Cq4Y8Y 0 7 1529 4315 0 14 Dtool_w0Cq4Y8Y 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 vec 1 4085  
1983 14 Dtool_w0Cq8RyZ 0 7 1529 4315 0 14 Dtool_w0Cq8RyZ 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  2 np 1 4056  8 priority 1 3971  
1984 14 Dtool_w0Cq1VXO 0 7 1529 4315 0 14 Dtool_w0Cq1VXO 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  2 np 1 4056  
1985 14 Dtool_w0CqAyhv 0 7 1529 4315 0 14 Dtool_w0CqAyhv 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4328  8 priority 1 3971  
1986 14 Dtool_w0Cqm_zJ 0 7 1529 4315 0 14 Dtool_w0Cqm_zJ 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4328  
1987 14 Dtool_w0CqP3hL 0 7 1529 4315 0 14 Dtool_w0CqP3hL 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4088  8 priority 1 3971  
1988 14 Dtool_w0Cqu1zl 0 7 1529 4315 0 14 Dtool_w0Cqu1zl 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4088  
1989 14 Dtool_w0Cqe1sZ 0 7 1529 4315 0 14 Dtool_w0Cqe1sZ 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4331  8 priority 1 3971  
1990 14 Dtool_w0Cqp5ri 0 7 1529 4315 0 14 Dtool_w0Cqp5ri 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4331  
1991 14 Dtool_w0CqsZuZ 0 7 1529 4315 0 14 Dtool_w0CqsZuZ 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4091  8 priority 1 3971  
1992 14 Dtool_w0Cqbdui 0 7 1529 4315 0 14 Dtool_w0Cqbdui 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4091  
1993 14 Dtool_w0CqDyyZ 0 7 1529 4315 0 14 Dtool_w0CqDyyZ 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4094  8 priority 1 3971  
1994 14 Dtool_w0CqMzxi 0 7 1529 4315 0 14 Dtool_w0CqMzxi 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4094  
1995 14 Dtool_w0CqC3sn 0 7 1529 4315 0 14 Dtool_w0CqC3sn 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4334  8 priority 1 3971  
1996 14 Dtool_w0CqFGrw 0 7 1529 4315 0 14 Dtool_w0CqFGrw 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4334  
1997 14 Dtool_w0Cqwbun 0 7 1529 4315 0 14 Dtool_w0Cqwbun 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4097  8 priority 1 3971  
1998 14 Dtool_w0Cq3iuw 0 7 1529 4315 0 14 Dtool_w0Cq3iuw 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4097  
1999 14 Dtool_w0Cqfwyn 0 7 1529 4315 0 14 Dtool_w0Cqfwyn 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4100  8 priority 1 3971  
2000 14 Dtool_w0CqgMxw 0 7 1529 4315 0 14 Dtool_w0CqgMxw 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4100  
2001 14 Dtool_w0CqMy22 0 7 1529 4315 0 14 Dtool_w0CqMy22 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4337  8 priority 1 3971  
2002 14 Dtool_w0Cq2AKC 0 7 1529 4315 0 14 Dtool_w0Cq2AKC 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4337  
2003 14 Dtool_w0Cq3zW6 0 7 1529 4315 0 14 Dtool_w0Cq3zW6 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4103  8 priority 1 3971  
2004 14 Dtool_w0CqvBqF 0 7 1529 4315 0 14 Dtool_w0CqvBqF 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4103  
2005 14 Dtool_w0Cqo7kg 0 7 1529 4315 0 14 Dtool_w0Cqo7kg 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4340  8 priority 1 3971  
2006 14 Dtool_w0CqRytJ 0 7 1529 4315 0 14 Dtool_w0CqRytJ 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4340  
2007 14 Dtool_w0CqOnkQ 0 7 1529 4315 0 14 Dtool_w0CqOnkQ 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4106  8 priority 1 3971  
2008 14 Dtool_w0Cqyht5 0 7 1529 4315 0 14 Dtool_w0Cqyht5 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4106  
2009 14 Dtool_w0CqH8m4 0 7 1529 4315 0 14 Dtool_w0CqH8m4 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4109  8 priority 1 3971  
2010 14 Dtool_w0Cqpiuh 0 7 1529 4315 0 14 Dtool_w0Cqpiuh 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4109  
2011 14 Dtool_w0CqwfTp 0 7 1529 4315 0 14 Dtool_w0CqwfTp 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4112  8 priority 1 3971  
2012 14 Dtool_w0CqFgC5 0 7 1529 4315 0 14 Dtool_w0CqFgC5 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4112  
2013 14 Dtool_w0CqTOoG 0 7 1529 4315 0 14 Dtool_w0CqTOoG 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4115  8 priority 1 3971  
2014 14 Dtool_w0CqNoIr 0 7 1529 4315 0 14 Dtool_w0CqNoIr 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4115  
2015 14 Dtool_w0Cqt08U 0 7 1529 4315 0 14 Dtool_w0Cqt08U 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 ptr 1 4118  8 priority 1 3971  
2016 14 Dtool_w0CqMUXW 0 7 1529 4315 0 14 Dtool_w0CqMUXW 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 ptr 1 4118  
2017 14 Dtool_w0Cq8HEk 0 7 1529 4315 0 14 Dtool_w0Cq8HEk 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 2 id 1 4076  3 tex 1 4071  8 priority 1 3971  
2018 14 Dtool_w0Cqa0C2 0 7 1529 4315 0 14 Dtool_w0Cqa0C2 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  3 tex 1 4071  
2019 14 Dtool_w0CqzdyX 0 7 1529 4315 0 14 Dtool_w0CqzdyX 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 2 id 1 4076  8 priority 1 3971  
2020 14 Dtool_w0CqLq6E 0 7 1529 4315 0 14 Dtool_w0CqLq6E 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 2 id 1 4076  
2021 14 Dtool_w0CqB963 0 7 1528 4121 0 14 Dtool_w0CqB963 371 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_blank
//       Access: Public, Static
//  Description: Returns a static ShaderInput object with
//               name NULL, priority zero, type INVALID, and
//               all value-fields cleared.
//////////////////////////////////////////////////////////////////// 0 
2022 14 Dtool_w0Cq72k1 0 7 1531 4076 0 14 Dtool_w0Cq72k1 221 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_name
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4121  
2023 14 Dtool_w0Cq2Nv1 0 6 1532 3971 0 14 Dtool_w0Cq2Nv1 227 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_value_type
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4121  
2024 14 Dtool_w0Cqvnas 0 6 1533 3971 0 14 Dtool_w0Cqvnas 225 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_priority
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4121  
2025 14 Dtool_w0CqB_Q3 0 7 1534 4071 0 14 Dtool_w0CqB_Q3 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_texture
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4121  
2026 14 Dtool_w0Cqnygk 0 6 1535 4056 0 14 Dtool_w0Cqnygk 225 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_nodepath
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4121  
2027 14 Dtool_w0CqXBST 0 6 1536 4067 0 14 Dtool_w0CqXBST 223 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_vector
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4121  
2028 14 Dtool_w0CqYJVa 0 6 1537 4343 0 14 Dtool_w0CqYJVa 220 ////////////////////////////////////////////////////////////////////
//     Function: ShaderInput::get_ptr
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4121  
2029 14 Dtool_w0CqIk03 0 7 1538 4000 0 14 Dtool_w0CqIk03 0 0 
2030 14 Dtool_w0Cq7MRb 0 7 1540 4005 0 14 Dtool_w0Cq7MRb 297 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ShaderAttrib object with nothing
//               set.
//////////////////////////////////////////////////////////////////// 1 6 shader 1 4073  
2031 14 Dtool_w0Cq56zk 0 7 1540 4005 0 14 Dtool_w0Cq56zk 297 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ShaderAttrib object with nothing
//               set.
//////////////////////////////////////////////////////////////////// 0 
2032 14 Dtool_w0CqonB5 0 7 1541 4005 0 14 Dtool_w0CqonB5 383 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ShaderAttrib object that disables
//               the use of shaders (it does not clear out all shader
//               data, however.)
//////////////////////////////////////////////////////////////////// 0 
2033 14 Dtool_w0CqUka7 0 7 1542 4005 0 14 Dtool_w0CqUka7 399 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
2034 14 Dtool_w0CqgTqm 0 6 1543 3970 0 14 Dtool_w0CqgTqm 336 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::has_shader
//       Access: Published
//  Description: If true, the shader field of this attribute overrides
//               the shader field of the parent attribute.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2035 14 Dtool_w0Cqs1Xg 0 6 1544 3970 0 14 Dtool_w0Cqs1Xg 387 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_shader
//       Access: Published
//  Description: If true, then this ShaderAttrib does not contain an
//               explicit shader - instead, it requests the automatic
//               generation of a shader.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2036 14 Dtool_w0Cqaasp 0 6 1545 3971 0 14 Dtool_w0Cqaasp 233 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_priority
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2037 14 Dtool_w0Cqht1f 0 6 1546 3971 0 14 Dtool_w0Cqht1f 339 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_instance_count
//       Access: Published
//  Description: Returns the number of geometry instances. A value
//               of 0 means not to use instancing at all.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2038 14 Dtool_w0Cq5AlN 0 6 1547 3970 0 14 Dtool_w0Cq5AlN 239 //weifengh
////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_normal_on
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2039 14 Dtool_w0CqKnY9 0 6 1548 3970 0 14 Dtool_w0CqKnY9 226 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_glow_on
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2040 14 Dtool_w0Cqf28T 0 6 1549 3970 0 14 Dtool_w0Cqf28T 227 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_gloss_on
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2041 14 Dtool_w0CqNQj7 0 6 1550 3970 0 14 Dtool_w0CqNQj7 226 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_ramp_on
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2042 14 Dtool_w0CqFYxN 0 6 1551 3970 0 14 Dtool_w0CqFYxN 228 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::auto_shadow_on
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2043 14 Dtool_w0CqRCIc 0 7 1552 4005 0 14 Dtool_w0CqRCIc 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  1 s 1 4073  8 priority 1 3971  
2044 14 Dtool_w0CqeBO9 0 7 1552 4005 0 14 Dtool_w0CqeBO9 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  1 s 1 4073  
2045 14 Dtool_w0CqvUho 0 7 1553 4005 0 14 Dtool_w0CqvUho 228 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_off
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  8 priority 1 3971  
2046 14 Dtool_w0CqAR_j 0 7 1553 4005 0 14 Dtool_w0CqAR_j 228 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_off
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2047 14 Dtool_w0CqAZt_ 0 7 1554 4005 0 14 Dtool_w0CqAZt_ 323 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_auto
//       Access: Published
//  Description: Set auto shader with bitmask to customize use,
//  e.g., to keep normal, glow, etc., on or off
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  13 shader_switch 1 4037  8 priority 1 3971  
2048 14 Dtool_w0Cq8qPI 0 7 1554 4005 0 14 Dtool_w0Cq8qPI 323 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_auto
//       Access: Published
//  Description: Set auto shader with bitmask to customize use,
//  e.g., to keep normal, glow, etc., on or off
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  13 shader_switch 1 4037  
2049 14 Dtool_w0CqytdZ 0 7 1554 4005 0 14 Dtool_w0CqytdZ 229 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_auto
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  8 priority 1 3971  
2050 14 Dtool_w0Cqdl0H 0 7 1554 4005 0 14 Dtool_w0Cqdl0H 229 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_auto
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2051 14 Dtool_w0CqROF5 0 7 1555 4005 0 14 Dtool_w0CqROF5 226 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_shader
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2052 14 Dtool_w0CqSEMG 0 7 1556 4005 0 14 Dtool_w0CqSEMG 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 3986  8 priority 1 3971  
2053 14 Dtool_w0CqNdOZ 0 7 1556 4005 0 14 Dtool_w0CqNdOZ 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 3986  
2054 14 Dtool_w0CqTETU 0 7 1556 4005 0 14 Dtool_w0CqTETU 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 3980  8 priority 1 3971  
2055 14 Dtool_w0CqydVn 0 7 1556 4005 0 14 Dtool_w0CqydVn 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 3980  
2056 14 Dtool_w0CqdmVL 0 7 1556 4005 0 14 Dtool_w0CqdmVL 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 3983  8 priority 1 3971  
2057 14 Dtool_w0Cqtrbs 0 7 1556 4005 0 14 Dtool_w0Cqtrbs 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 3983  
2058 14 Dtool_w0Cq2h1O 0 7 1556 4005 0 14 Dtool_w0Cq2h1O 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 3973  8 priority 1 3971  
2059 14 Dtool_w0CqNl6v 0 7 1556 4005 0 14 Dtool_w0CqNl6v 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 3973  
2060 14 Dtool_w0CqPhVS 0 7 1556 4005 0 14 Dtool_w0CqPhVS 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 4067  8 priority 1 3971  
2061 14 Dtool_w0Cqmkaz 0 7 1556 4005 0 14 Dtool_w0Cqmkaz 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 4067  
2062 14 Dtool_w0CqqOJB 0 7 1556 4005 0 14 Dtool_w0CqqOJB 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  2 np 1 4056  8 priority 1 3971  
2063 14 Dtool_w0Cqgsux 0 7 1556 4005 0 14 Dtool_w0Cqgsux 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  2 np 1 4056  
2064 14 Dtool_w0CqOUC_ 0 7 1556 4005 0 14 Dtool_w0CqOUC_ 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 4088  8 priority 1 3971  
2065 14 Dtool_w0CqAFWX 0 7 1556 4005 0 14 Dtool_w0CqAFWX 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 4088  
2066 14 Dtool_w0CqHaDE 0 7 1556 4005 0 14 Dtool_w0CqHaDE 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 4091  8 priority 1 3971  
2067 14 Dtool_w0CqivmN 0 7 1556 4005 0 14 Dtool_w0CqivmN 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 4091  
2068 14 Dtool_w0CqV2GE 0 7 1556 4005 0 14 Dtool_w0CqV2GE 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 4097  8 priority 1 3971  
2069 14 Dtool_w0CqwDoN 0 7 1556 4005 0 14 Dtool_w0CqwDoN 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 4097  
2070 14 Dtool_w0CqaslR 0 7 1556 4005 0 14 Dtool_w0CqaslR 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 4103  8 priority 1 3971  
2071 14 Dtool_w0Cqrrmc 0 7 1556 4005 0 14 Dtool_w0Cqrrmc 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 4103  
2072 14 Dtool_w0CqLLue 0 7 1556 4005 0 14 Dtool_w0CqLLue 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 4106  8 priority 1 3971  
2073 14 Dtool_w0CqMb7_ 0 7 1556 4005 0 14 Dtool_w0CqMb7_ 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 4106  
2074 14 Dtool_w0CqHD2s 0 7 1556 4005 0 14 Dtool_w0CqHD2s 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 4112  8 priority 1 3971  
2075 14 Dtool_w0Cq51JF 0 7 1556 4005 0 14 Dtool_w0Cq51JF 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 4112  
2076 14 Dtool_w0CqHkjH 0 7 1556 4005 0 14 Dtool_w0CqHkjH 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  1 v 1 4115  8 priority 1 3971  
2077 14 Dtool_w0Cq7kWM 0 7 1556 4005 0 14 Dtool_w0Cq7kWM 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  1 v 1 4115  
2078 14 Dtool_w0CqXTQC 0 7 1556 4005 0 14 Dtool_w0CqXTQC 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  3 tex 1 4071  8 priority 1 3971  
2079 14 Dtool_w0Cq_pUV 0 7 1556 4005 0 14 Dtool_w0Cq_pUV 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  3 tex 1 4071  
2080 14 Dtool_w0CqIWdB 0 7 1556 4005 0 14 Dtool_w0CqIWdB 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 7 4 this 3 4346  2 id 1 4076  2 n1 1 4147  2 n2 1 4147  2 n3 1 4147  2 n4 1 4147  8 priority 1 3971  
2081 14 Dtool_w0CqAgoS 0 7 1556 4005 0 14 Dtool_w0CqAgoS 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 6 4 this 3 4346  2 id 1 4076  2 n1 1 4147  2 n2 1 4147  2 n3 1 4147  2 n4 1 4147  
2082 14 Dtool_w0CqMKfG 0 7 1556 4005 0 14 Dtool_w0CqMKfG 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 5 4 this 3 4346  2 id 1 4076  2 n1 1 4147  2 n2 1 4147  2 n3 1 4147  
2083 14 Dtool_w0CqEt8a 0 7 1556 4005 0 14 Dtool_w0CqEt8a 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 4 4 this 3 4346  2 id 1 4076  2 n1 1 4147  2 n2 1 4147  
2084 14 Dtool_w0Cq_ZbK 0 7 1556 4005 0 14 Dtool_w0Cq_ZbK 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  2 n1 1 4147  
2085 14 Dtool_w0Cqy_S_ 0 7 1556 4005 0 14 Dtool_w0Cqy_S_ 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  2 id 1 4076  
2086 14 Dtool_w0Cqs2JU 0 7 1556 4005 0 14 Dtool_w0Cqs2JU 230 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  3 inp 1 4121  
2087 14 Dtool_w0CqdxLU 0 7 1557 4005 0 14 Dtool_w0CqdxLU 475 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_instance_count
//       Access: Published
//  Description: Sets the geometry instance count. Do not confuse
//               this with instanceTo, which is used for animation
//               instancing, and has nothing to do with this.
//               A value of 0 means not to use instancing at all.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  14 instance_count 1 3971  
2088 14 Dtool_w0CqiWwU 0 7 1558 4005 0 14 Dtool_w0CqiWwU 222 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::set_flag
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  4 flag 1 3971  5 value 1 3970  
2089 14 Dtool_w0CqNhAi 0 7 1559 4005 0 14 Dtool_w0CqNhAi 224 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_flag
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  4 flag 1 3971  
2090 14 Dtool_w0CqRaxg 0 7 1560 4005 0 14 Dtool_w0CqRaxg 232 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  2 id 1 4076  
2091 14 Dtool_w0Cqxmfl 0 7 1560 4005 0 14 Dtool_w0Cqxmfl 232 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_shader_input
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  2 id 1 4028  
2092 14 Dtool_w0Cq8KLn 0 7 1561 4005 0 14 Dtool_w0Cq8KLn 280 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::clear_all_shader_inputs
//       Access: Published
//  Description: Clears all the shader inputs on the attrib.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2093 14 Dtool_w0CqwD4v 0 6 1562 3970 0 14 Dtool_w0CqwD4v 222 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_flag
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  4 flag 1 3971  
2094 14 Dtool_w0Cq9RI8 0 7 1563 4073 0 14 Dtool_w0Cq9RI8 444 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader
//       Access: Published
//  Description: Returns the shader object associated with the node.
//               If get_override returns true, but get_shader 
//               returns NULL, that means that this attribute should
//               disable the shader.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4346  
2095 14 Dtool_w0CqpIO_ 0 7 1564 4121 0 14 Dtool_w0CqpIO_ 408 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input
//       Access: Published
//  Description: Returns the ShaderInput of the given name.  If
//               no such name is found, this function does not return
//               NULL --- it returns the "blank" ShaderInput.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  2 id 1 4076  
2096 14 Dtool_w0CqslPs 0 7 1564 4121 0 14 Dtool_w0CqslPs 408 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input
//       Access: Published
//  Description: Returns the ShaderInput of the given name.  If
//               no such name is found, this function does not return
//               NULL --- it returns the "blank" ShaderInput.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  2 id 1 4028  
2097 14 Dtool_w0CqrGFb 0 6 1565 4056 0 14 Dtool_w0CqrGFb 358 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_nodepath
//       Access: Published
//  Description: Returns the ShaderInput as a nodepath.  Assertion 
//               fails if there is none, or if it is not a nodepath.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  2 id 1 4076  
2098 14 Dtool_w0CqZy3W 0 6 1566 4067 0 14 Dtool_w0CqZy3W 352 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_vector
//       Access: Published
//  Description: Returns the ShaderInput as a vector.  Assertion 
//               fails if there is none, or if it is not a vector.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  2 id 1 4245  
2099 14 Dtool_w0Cqn5tI 0 7 1567 4071 0 14 Dtool_w0Cqn5tI 355 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_texture
//       Access: Published
//  Description: Returns the ShaderInput as a texture.  Assertion 
//               fails if there is none, or if it is not a texture.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  2 id 1 4076  
2100 14 Dtool_w0CqgtrN 0 6 1568 4343 0 14 Dtool_w0CqgtrN 390 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_ptr
//       Access: Published
//  Description: Returns the ShaderInput as a ShaderPtrData struct. 
//               Assertion fails if there is none. or if it is not 
//               a PTA(double/float)
//////////////////////////////////////////////////////////////////// 2 4 this 3 4346  2 id 1 4076  
2101 14 Dtool_w0Cq7lel 0 6 1569 3980 0 14 Dtool_w0Cq7lel 380 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::get_shader_input_matrix
//       Access: Published
//  Description: Returns the ShaderInput as a matrix.  Assertion
//               fails if there is none, or if it is not a matrix
//               or NodePath.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4346  2 id 1 4076  6 matrix 1 4064  
2102 14 Dtool_w0CqFVkO 0 4 1570 3994 0 14 Dtool_w0CqFVkO 287 ////////////////////////////////////////////////////////////////////
//     Function: ShaderAttrib::register_with_read_factory
//       Access: Public, Static
//  Description: Factory method to generate a Shader object
//////////////////////////////////////////////////////////////////// 0 
2103 14 Dtool_w0CqZXKV 0 6 1571 3971 0 14 Dtool_w0CqZXKV 0 0 
2104 14 Dtool_w0Cqg_gT 0 7 1572 4000 0 14 Dtool_w0Cqg_gT 0 0 
2105 14 Dtool_w0CqZA7W 0 7 1575 4024 0 14 Dtool_w0CqZA7W 271 ////////////////////////////////////////////////////////////////////
//     Function: ShowBoundsEffect::make
//       Access: Published, Static
//  Description: Constructs a new ShowBoundsEffect object.
//////////////////////////////////////////////////////////////////// 1 5 tight 1 3970  
2106 14 Dtool_w0Cq9fNi 0 7 1575 4024 0 14 Dtool_w0Cq9fNi 271 ////////////////////////////////////////////////////////////////////
//     Function: ShowBoundsEffect::make
//       Access: Published, Static
//  Description: Constructs a new ShowBoundsEffect object.
//////////////////////////////////////////////////////////////////// 0 
2107 14 Dtool_w0Cqw6EW 0 6 1576 3970 0 14 Dtool_w0Cqw6EW 404 ////////////////////////////////////////////////////////////////////
//     Function: ShowBoundsEffect::get_tight
//       Access: Published
//  Description: Returns true if the "tight" flag was set, meaning the
//               effect should compute and draw the tight bounding-box
//               of the node's vertices every frame.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4348  
2108 14 Dtool_w0Cq6KHB 0 7 1577 4000 0 14 Dtool_w0Cq6KHB 0 0 
2109 14 Dtool_w0CqDEqP 0 7 1580 4024 0 14 Dtool_w0CqDEqP 312 ////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::make
//       Access: Published, Static
//  Description: Constructs a TexProjectorEffect that modifies
//               no stages at all.
//////////////////////////////////////////////////////////////////// 0 
2110 14 Dtool_w0CqcW2d 0 7 1581 4024 0 14 Dtool_w0CqcW2d 910 ////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::add_stage
//       Access: Published, Static
//  Description: Returns a new TexProjectorEffect just like this one,
//               with the indicated projection for the given stage.
//               If this stage already exists, its projection
//               definition is replaced.
//
//               The relative transform between the "from" and the
//               "to" nodes is automatically applied to the texture
//               transform each frame.
//
//               Furthermore, if the "to" node is a LensNode, its
//               projection matrix is also applied to the texture
//               transform.  In this case, the lens_index may be used
//               to select the particular lens that should be used.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4350  5 stage 1 4012  4 from 1 4056  2 to 1 4056  10 lens_index 1 3971  
2111 14 Dtool_w0CqhiLA 0 7 1581 4024 0 14 Dtool_w0CqhiLA 910 ////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::add_stage
//       Access: Published, Static
//  Description: Returns a new TexProjectorEffect just like this one,
//               with the indicated projection for the given stage.
//               If this stage already exists, its projection
//               definition is replaced.
//
//               The relative transform between the "from" and the
//               "to" nodes is automatically applied to the texture
//               transform each frame.
//
//               Furthermore, if the "to" node is a LensNode, its
//               projection matrix is also applied to the texture
//               transform.  In this case, the lens_index may be used
//               to select the particular lens that should be used.
//////////////////////////////////////////////////////////////////// 4 4 this 3 4350  5 stage 1 4012  4 from 1 4056  2 to 1 4056  
2112 14 Dtool_w0CqA6h1 0 7 1582 4024 0 14 Dtool_w0CqA6h1 343 ////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::remove_stage
//       Access: Published, Static
//  Description: Returns a new TexProjectorEffect just like this one,
//               with the indicated stage removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4350  5 stage 1 4012  
2113 14 Dtool_w0CqmEHy 0 6 1583 3970 0 14 Dtool_w0CqmEHy 335 ////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::is_empty
//       Access: Published
//  Description: Returns true if no stages are defined in the
//               TexProjectorEffect, false if at least one is.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4350  
2114 14 Dtool_w0CqgRPz 0 6 1584 3970 0 14 Dtool_w0CqgRPz 445 ////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::has_stage
//       Access: Published
//  Description: Returns true if there is a transform associated with
//               the indicated stage, or false otherwise (in which
//               case get_transform(stage) will return the identity
//               transform).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4350  5 stage 1 4012  
2115 14 Dtool_w0CqKzra 0 7 1585 4055 2948 14 Dtool_w0CqKzra 506 ////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::get_from
//       Access: Published
//  Description: Returns the "from" node associated with the
//               TexProjectorEffect on the indicated stage.  The
//               relative transform between the "from" and the "to"
//               nodes is automatically applied to the texture
//               transform each frame.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4350  5 stage 1 4012  
2116 14 Dtool_w0CqM8Eo 0 7 1586 4055 2948 14 Dtool_w0CqM8Eo 665 ////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::get_to
//       Access: Published
//  Description: Returns the "to" node associated with the
//               TexProjectorEffect on the indicated stage.  The
//               relative transform between the "from" and the "to"
//               nodes is automatically applied to the texture
//               transform each frame.
//
//               Furthermore, if the "to" node is a LensNode, its
//               projection matrix is also applied to the texture
//               transform.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4350  5 stage 1 4012  
2117 14 Dtool_w0Cq9lSw 0 6 1587 3971 0 14 Dtool_w0Cq9lSw 506 ////////////////////////////////////////////////////////////////////
//     Function: TexProjectorEffect::get_lens_index
//       Access: Published
//  Description: Returns the lens_index associated with the
//               TexProjectorEffect on the indicated stage.  This is
//               only used if the "to" node is a LensNode, in which
//               case it specifies the particular lens that should be
//               used.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4350  5 stage 1 4012  
2118 14 Dtool_w0CqC85_ 0 7 1588 4000 0 14 Dtool_w0CqC85_ 0 0 
2119 14 Dtool_w0CqYr7Q 0 7 1590 4024 0 14 Dtool_w0CqYr7Q 420 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_screen
//       Access: Published, Static
//  Description: Constructs a new screen-relative ScissorEffect.  The
//               frame defines a left, right, bottom, top region,
//               relative to the DisplayRegion.  See ScissorAttrib.
//////////////////////////////////////////////////////////////////// 2 5 frame 1 4067  4 clip 1 3970  
2120 14 Dtool_w0CqPbvI 0 7 1590 4024 0 14 Dtool_w0CqPbvI 420 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_screen
//       Access: Published, Static
//  Description: Constructs a new screen-relative ScissorEffect.  The
//               frame defines a left, right, bottom, top region,
//               relative to the DisplayRegion.  See ScissorAttrib.
//////////////////////////////////////////////////////////////////// 1 5 frame 1 4067  
2121 14 Dtool_w0CqBQmx 0 7 1591 4024 0 14 Dtool_w0CqBQmx 529 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_node
//       Access: Published, Static
//  Description: Constructs a new node-relative ScissorEffect.  The
//               four points are understood to be relative to the
//               indicated node, or the current node if the indicated
//               NodePath is empty, and determine four points
//               surrounding the scissor region.
//////////////////////////////////////////////////////////////////// 5 1 a 1 3989  1 b 1 3989  1 c 1 3989  1 d 1 3989  4 node 1 4056  
2122 14 Dtool_w0CqkBew 0 7 1591 4024 0 14 Dtool_w0CqkBew 529 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_node
//       Access: Published, Static
//  Description: Constructs a new node-relative ScissorEffect.  The
//               four points are understood to be relative to the
//               indicated node, or the current node if the indicated
//               NodePath is empty, and determine four points
//               surrounding the scissor region.
//////////////////////////////////////////////////////////////////// 4 1 a 1 3989  1 b 1 3989  1 c 1 3989  1 d 1 3989  
2123 14 Dtool_w0CqADC1 0 7 1591 4024 0 14 Dtool_w0CqADC1 529 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_node
//       Access: Published, Static
//  Description: Constructs a new node-relative ScissorEffect.  The
//               two points are understood to be relative to the
//               indicated node, or the current node if the NodePath
//               is empty, and determine the diagonally opposite
//               corners of the scissor region.
//////////////////////////////////////////////////////////////////// 3 1 a 1 3989  1 b 1 3989  4 node 1 4056  
2124 14 Dtool_w0Cqwb_A 0 7 1591 4024 0 14 Dtool_w0Cqwb_A 529 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_node
//       Access: Published, Static
//  Description: Constructs a new node-relative ScissorEffect.  The
//               two points are understood to be relative to the
//               indicated node, or the current node if the NodePath
//               is empty, and determine the diagonally opposite
//               corners of the scissor region.
//////////////////////////////////////////////////////////////////// 2 1 a 1 3989  1 b 1 3989  
2125 14 Dtool_w0Cq6X0q 0 7 1591 4024 0 14 Dtool_w0Cq6X0q 463 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_node
//       Access: Published, Static
//  Description: Constructs a new node-relative ScissorEffect, with no
//               points.  This empty ScissorEffect does nothing.  You
//               must then call add_point a number of times to add the
//               points you require.
//////////////////////////////////////////////////////////////////// 1 4 clip 1 3970  
2126 14 Dtool_w0Cq_UsN 0 7 1591 4024 0 14 Dtool_w0Cq_UsN 463 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::make_node
//       Access: Published, Static
//  Description: Constructs a new node-relative ScissorEffect, with no
//               points.  This empty ScissorEffect does nothing.  You
//               must then call add_point a number of times to add the
//               points you require.
//////////////////////////////////////////////////////////////////// 0 
2127 14 Dtool_w0Cqw2IL 0 7 1592 4024 0 14 Dtool_w0Cqw2IL 628 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::add_point
//       Access: Published
//  Description: Returns a new ScissorEffect with the indicated point
//               added.  It is only valid to call this on a "node"
//               type ScissorEffect.  The full set of points,
//               projected into screen space, defines the bounding
//               volume of the rectangular scissor region.
//
//               Each point may be relative to a different node, if
//               desired.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4352  5 point 1 3989  4 node 1 4056  
2128 14 Dtool_w0Cqefqt 0 7 1592 4024 0 14 Dtool_w0Cqefqt 628 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::add_point
//       Access: Published
//  Description: Returns a new ScissorEffect with the indicated point
//               added.  It is only valid to call this on a "node"
//               type ScissorEffect.  The full set of points,
//               projected into screen space, defines the bounding
//               volume of the rectangular scissor region.
//
//               Each point may be relative to a different node, if
//               desired.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4352  5 point 1 3989  
2129 14 Dtool_w0CqdO6I 0 6 1593 3970 0 14 Dtool_w0CqdO6I 882 // Filename: scissorEffect.I
// Created by:  drose (30Jul08)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::is_screen
//       Access: Published
//  Description: Returns true if the ScissorEffect is a screen-based
//               effect, meaning get_frame() has a meaningful value,
//               but get_a() and get_b() do not.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4352  
2130 14 Dtool_w0CqzaVH 0 6 1594 4067 0 14 Dtool_w0CqzaVH 524 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_frame
//       Access: Published
//  Description: If is_screen() returns true, this method may be
//               called to query the screen-based scissor frame.  This
//               is a series of left, right, bottom, top, representing
//               the scissor frame relative to the current
//               DisplayRegion.  See ScissorAttrib.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4352  
2131 14 Dtool_w0Cq8Mg5 0 6 1595 3971 0 14 Dtool_w0Cq8Mg5 312 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_num_points
//       Access: Published
//  Description: Returns the number of node-based scissor points.  See
//               get_point().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4352  
2132 14 Dtool_w0Cqxp5n 0 6 1596 3989 0 14 Dtool_w0Cqxp5n 582 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_point
//       Access: Published
//  Description: If is_screen() returns false, then get_num_points() and
//               get_point() may be called to query the node-based scissor
//               frame.  These return n points (at least two), which
//               are understood to be in the space of this node, and
//               which define any opposite corners of the scissor
//               frame.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4352  1 n 1 3971  
2133 14 Dtool_w0CqZ09A 0 7 1597 4055 2948 14 Dtool_w0CqZ09A 340 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_node
//       Access: Published
//  Description: Returns the node to which the nth point is relative,
//               or empty NodePath to indicate the current node.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4352  1 n 1 3971  
2134 14 Dtool_w0CqfGSb 0 6 1598 3970 0 14 Dtool_w0CqfGSb 330 ////////////////////////////////////////////////////////////////////
//     Function: ScissorEffect::get_clip
//       Access: Published
//  Description: Returns true if this ScissorEffect actually enables
//               scissoring, or false if it culls only.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4352  
2135 14 Dtool_w0CqMP4I 0 7 1599 4000 0 14 Dtool_w0CqMP4I 0 0 
2136 14 Dtool_w0Cq35FV 0 7 1602 4354 3733 14 Dtool_w0Cq35FV 722 // Filename: sceneGraphReducer.I
// Created by:  drose (14Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 3 gsg 1 4038  
2137 14 Dtool_w0CqZ4fC 0 7 1602 4354 3733 14 Dtool_w0CqZ4fC 722 // Filename: sceneGraphReducer.I
// Created by:  drose (14Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 0 
2138 14 Dtool_w0CqeKDE 0 4 1608 3994 0 14 Dtool_w0CqeKDE 664 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::set_gsg
//       Access: Published
//  Description: Specifies the particular GraphicsStateGuardian that
//               this object will attempt to optimize to.  The GSG may
//               specify parameters such as maximum number of vertices
//               per vertex data, max number of vertices per
//               primitive, and whether triangle strips are preferred.
//               It also affects the types of vertex column data that
//               is created by premunge().
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  3 gsg 1 4038  
2139 14 Dtool_w0CqgV3J 0 4 1609 3994 0 14 Dtool_w0CqgV3J 480 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::clear_gsg
//       Access: Published
//  Description: Specifies that no particular GraphicsStateGuardian
//               will be used to guide the optimization.  The
//               SceneGraphReducer will instead use config variables
//               such as max-collect-vertices and max-collect-indices.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4354  
2140 14 Dtool_w0CqgCJ8 0 7 1610 4038 0 14 Dtool_w0CqgCJ8 366 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::get_gsg
//       Access: Published
//  Description: Returns the particular GraphicsStateGuardian that
//               this object will attempt to optimize to. 
//               See set_gsg().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4355  
2141 14 Dtool_w0CqLWXy 0 4 1611 3994 0 14 Dtool_w0CqLWXy 757 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::set_combine_radius
//       Access: Published
//  Description: Specifies the radius that is used in conjunction with
//               CS_within_radius to decide whether a subgraph's
//               siblings should be combined into a single node or
//               not.
//
//               If the CS_within_radius bit is included in the
//               combine_siblings_bits parameter passed to flatten,
//               than any nodes whose bounding volume is smaller than
//               the indicated radius will be combined together (as if
//               CS_other were set).
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  14 combine_radius 1 3979  
2142 14 Dtool_w0CqnG9A 0 6 1612 3979 0 14 Dtool_w0CqnG9A 350 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::get_combine_radius
//       Access: Published
//  Description: Returns the radius that is used in conjunction with
//               CS_within_radius.  See set_combine_radius().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4355  
2143 14 Dtool_w0Cq8UjV 0 4 1613 3994 0 14 Dtool_w0Cq8UjV 524 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::apply_attribs
//       Access: Published
//  Description: This flavor of apply_attribs() can be called
//               recursively from within another flatten process
//               (e.g. from PandaNode::apply_attribs_to_vertices()).
//               The parameters were presumably received from a parent
//               SceneGraphReducer object.
//////////////////////////////////////////////////////////////////// 5 4 this 3 4354  4 node 1 4029  7 attribs 1 4357  12 attrib_types 1 3971  11 transformer 1 4360  
2144 14 Dtool_w0CqTFiF 0 4 1613 3994 0 14 Dtool_w0CqTFiF 883 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::apply_attribs
//       Access: Published
//  Description: Walks the scene graph, accumulating attribs of
//               the indicated types, applying them to the vertices,
//               and removing them from the scene graph.  This has a
//               performance optimization benefit in itself, but is
//               especially useful to pave the way for a call to
//               flatten() and greatly improve the effectiveness of
//               the flattening operation.
//
//               Multiply instanced geometry is duplicated before the
//               attribs are applied.
//
//               Of course, this operation does make certain dynamic
//               operations impossible.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4354  4 node 1 4029  12 attrib_types 1 3971  
2145 14 Dtool_w0CqVc_G 0 4 1613 3994 0 14 Dtool_w0CqVc_G 883 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::apply_attribs
//       Access: Published
//  Description: Walks the scene graph, accumulating attribs of
//               the indicated types, applying them to the vertices,
//               and removing them from the scene graph.  This has a
//               performance optimization benefit in itself, but is
//               especially useful to pave the way for a call to
//               flatten() and greatly improve the effectiveness of
//               the flattening operation.
//
//               Multiply instanced geometry is duplicated before the
//               attribs are applied.
//
//               Of course, this operation does make certain dynamic
//               operations impossible.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  4 node 1 4029  
2146 14 Dtool_w0Cq_6fT 0 6 1614 3971 0 14 Dtool_w0Cq_6fT 940 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::flatten
//       Access: Published
//  Description: Simplifies the graph by removing unnecessary nodes
//               and nodes.
//
//               In general, a node (and its parent node) is a
//               candidate for removal if the node has no siblings and
//               the node has no special properties.
//
//               If combine_siblings_bits is nonzero, some sibling
//               nodes (according to the bits set in
//               combine_siblings_bits) may also be collapsed into a
//               single node.  This will further reduce scene graph
//               complexity, sometimes substantially, at the cost of
//               reduced spatial separation.
//
//               Returns the number of nodes removed from the graph.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4354  4 root 1 4029  21 combine_siblings_bits 1 3971  
2147 14 Dtool_w0CqsSFD 0 6 1615 3971 0 14 Dtool_w0CqsSFD 406 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::remove_column
//       Access: Published
//  Description: Removes the indicated data column from any
//               GeomVertexDatas found at the indicated root and
//               below.  Returns the number of GeomNodes modified.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4354  4 root 1 4029  6 column 1 4076  
2148 14 Dtool_w0Cq0hLU 0 6 1616 3971 0 14 Dtool_w0Cq0hLU 542 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::make_compatible_state
//       Access: Published
//  Description: Searches for GeomNodes that contain multiple Geoms
//               that differ only in their ColorAttribs.  If such a
//               GeomNode is found, then all the colors are pushed
//               down into the vertices.  This makes it feasible for
//               the geoms to be unified later.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  4 root 1 4029  
2149 14 Dtool_w0CqYpIW 0 6 1617 3971 0 14 Dtool_w0CqYpIW 1154 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::make_compatible_format
//       Access: Published
//  Description: Walks through the tree at this node and below and
//               unifies the GeomVertexFormat for any GeomVertexData
//               objects that are found, so that all eligible vdatas
//               (according to collect_bits; see collect_vertex_data)
//               will share the same vertex format.
//
//               This will add unused columns where necessary to match
//               formats.  It can result in suboptimal performance if
//               used needlessly.
//
//               There is usually no reason to call this explicitly,
//               since collect_vertex_data() will do this anyway if it
//               has not been done already.  However, calling it ahead
//               of time can make that future call to
//               collect_vertex_data() run a little bit faster.
//
//               The return value is the number of vertex datas
//               modified.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4354  4 root 1 4029  12 collect_bits 1 3971  
2150 14 Dtool_w0CqDCUG 0 6 1617 3971 0 14 Dtool_w0CqDCUG 1154 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::make_compatible_format
//       Access: Published
//  Description: Walks through the tree at this node and below and
//               unifies the GeomVertexFormat for any GeomVertexData
//               objects that are found, so that all eligible vdatas
//               (according to collect_bits; see collect_vertex_data)
//               will share the same vertex format.
//
//               This will add unused columns where necessary to match
//               formats.  It can result in suboptimal performance if
//               used needlessly.
//
//               There is usually no reason to call this explicitly,
//               since collect_vertex_data() will do this anyway if it
//               has not been done already.  However, calling it ahead
//               of time can make that future call to
//               collect_vertex_data() run a little bit faster.
//
//               The return value is the number of vertex datas
//               modified.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  4 root 1 4029  
2151 14 Dtool_w0CqnM_2 0 4 1618 3994 0 14 Dtool_w0CqnM_2 716 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::decompose
//       Access: Published
//  Description: Calls decompose() on every GeomNode at this level and
//               below.
//
//               There is usually no reason to call this explicitly,
//               since unify() will do this anyway if it needs to be
//               done.  However, calling it ahead of time can make
//               that future call to unify() run a little bit faster.
//
//               This operation has no effect if the config variable
//               preserve-triangle-strips has been set true.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  4 root 1 4029  
2152 14 Dtool_w0CqO4J5 0 6 1619 3971 0 14 Dtool_w0CqO4J5 955 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::collect_vertex_data
//       Access: Published
//  Description: Collects all different GeomVertexData blocks that
//               have compatible formats at this node and below into a
//               single, unified block (or at least multiple larger
//               blocks).  This is intended to reduce rendering
//               overhead incurred by switching vertex buffers.  It
//               can also make a subsequent call to unify() much more
//               effective than it would have been otherwise.
//
//               The set of bits passed in collect_bits indicates
//               which properties are used to differentiate
//               GeomVertexData blocks.  If it is 0, then more blocks
//               will be combined together than if it is nonzero.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4354  4 root 1 4029  12 collect_bits 1 3971  
2153 14 Dtool_w0CqnPcT 0 6 1619 3971 0 14 Dtool_w0CqnPcT 955 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::collect_vertex_data
//       Access: Published
//  Description: Collects all different GeomVertexData blocks that
//               have compatible formats at this node and below into a
//               single, unified block (or at least multiple larger
//               blocks).  This is intended to reduce rendering
//               overhead incurred by switching vertex buffers.  It
//               can also make a subsequent call to unify() much more
//               effective than it would have been otherwise.
//
//               The set of bits passed in collect_bits indicates
//               which properties are used to differentiate
//               GeomVertexData blocks.  If it is 0, then more blocks
//               will be combined together than if it is nonzero.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  4 root 1 4029  
2154 14 Dtool_w0CqqC3R 0 6 1620 3971 0 14 Dtool_w0CqqC3R 604 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::make_nonindexed
//       Access: Published
//  Description: Converts indexed geometry to nonindexed geometry at
//               the indicated node and below, by duplicating vertices
//               where necessary.  The parameter nonindexed_bits is a
//               union of bits defined in
//               SceneGraphReducer::MakeNonindexed, which specifes
//               which types of geometry to avoid making nonindexed.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4354  4 root 1 4029  15 nonindexed_bits 1 3971  
2155 14 Dtool_w0CqITX2 0 6 1620 3971 0 14 Dtool_w0CqITX2 604 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::make_nonindexed
//       Access: Published
//  Description: Converts indexed geometry to nonindexed geometry at
//               the indicated node and below, by duplicating vertices
//               where necessary.  The parameter nonindexed_bits is a
//               union of bits defined in
//               SceneGraphReducer::MakeNonindexed, which specifes
//               which types of geometry to avoid making nonindexed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  4 root 1 4029  
2156 14 Dtool_w0Cqvm1Y 0 4 1621 3994 0 14 Dtool_w0Cqvm1Y 499 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::unify
//       Access: Published
//  Description: Calls unify() on every GeomNode at this level and
//               below.  This attempts to reduce the total number of
//               individual Geoms and GeomPrimitives by combining
//               these objects wherever possible.  See
//               GeomNode::unify().
//////////////////////////////////////////////////////////////////// 3 4 this 3 4354  4 root 1 4029  14 preserve_order 1 3970  
2157 14 Dtool_w0CqJFO9 0 4 1622 3994 0 14 Dtool_w0CqJFO9 579 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::remove_unused_vertices
//       Access: Published
//  Description: Removes any vertices in GeomVertexDatas that are no
//               longer used at this level and below.  This requires
//               remapping vertex indices in all of the
//               GeomPrimitives, to remove holes in the
//               GeomVertexDatas.  It is normally not necessary to
//               call this explicitly.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  4 root 1 4029  
2158 14 Dtool_w0CqvpNB 0 4 1623 3994 0 14 Dtool_w0CqvpNB 609 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::premunge
//       Access: Published
//  Description: Walks the scene graph rooted at this node and below,
//               and uses the indicated GSG to premunge every Geom
//               found to optimize it for eventual rendering on the
//               indicated GSG.  If there is no GSG indicated for the
//               SceneGraphReducer, this is a no-op.
//
//               This operation will also apply to stashed children.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4354  4 root 1 4029  13 initial_state 1 4008  
2159 14 Dtool_w0Cq_7dE 0 6 1624 3970 0 14 Dtool_w0Cq_7dE 672 ////////////////////////////////////////////////////////////////////
//     Function: SceneGraphReducer::check_live_flatten
//       Access: Published
//  Description: In a non-release build, returns false if the node is
//               correctly not in a live scene graph.  (Calling
//               flatten on a node that is part of a live scene graph,
//               for instance, a node somewhere under render, can
//               cause problems in a multithreaded environment.)
//
//               If allow_live_flatten is true, or in a release build,
//               this always returns true.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4354  4 node 1 4029  
2160 14 Dtool_w0CqxpnH 0 7 1626 4126 3753 14 Dtool_w0CqxpnH 234 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 0 
2161 14 Dtool_w0CqWv2z 0 7 1626 4126 3753 14 Dtool_w0CqWv2z 239 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::Copy Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 copy 1 4362  
2162 14 Dtool_w0CqNQDB 0 6 1627 4126 0 14 Dtool_w0CqNQDB 247 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::Copy Assignment Operator
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 this 3 4126  4 copy 1 4362  
2163 14 Dtool_w0CqGIjY 0 4 1629 3994 0 14 Dtool_w0CqGIjY 283 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::add_texture_stage
//       Access: Published
//  Description: Adds a new TextureStage to the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4126  18 node_texture_stage 1 4012  
2164 14 Dtool_w0CqZ9r9 0 6 1630 3970 0 14 Dtool_w0CqZ9r9 428 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::remove_texture_stage
//       Access: Published
//  Description: Removes the indicated TextureStage from the collection.
//               Returns true if the texture_stage was removed, false if it was
//               not a member of the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4126  18 node_texture_stage 1 4012  
2165 14 Dtool_w0CqVfWB 0 4 1631 3994 0 14 Dtool_w0CqVfWB 516 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::add_texture_stages_from
//       Access: Published
//  Description: Adds all the TextureStages indicated in the other
//               collection to this texture_stage.  The other texture_stages are simply
//               appended to the end of the texture_stages in this list;
//               duplicates are not automatically removed.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4126  5 other 1 4362  
2166 14 Dtool_w0Cq8M8q 0 4 1632 3994 0 14 Dtool_w0Cq8M8q 352 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::remove_texture_stages_from
//       Access: Published
//  Description: Removes from this collection all of the TextureStages
//               listed in the other collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4126  5 other 1 4362  
2167 14 Dtool_w0CqrJqC 0 4 1633 3994 0 14 Dtool_w0CqrJqC 494 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::remove_duplicate_texture_stages
//       Access: Published
//  Description: Removes any duplicate entries of the same TextureStages
//               on this collection.  If a TextureStage appears multiple
//               times, the first appearance is retained; subsequent
//               appearances are removed.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4126  
2168 14 Dtool_w0CqXvY1 0 6 1634 3970 0 14 Dtool_w0CqXvY1 345 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::has_texture_stage
//       Access: Published
//  Description: Returns true if the indicated TextureStage appears in
//               this collection, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4362  13 texture_stage 1 4012  
2169 14 Dtool_w0CqT2Xf 0 4 1635 3994 0 14 Dtool_w0CqT2Xf 275 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::clear
//       Access: Published
//  Description: Removes all TextureStages from the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4126  
2170 14 Dtool_w0Cq_5YH 0 7 1636 4012 0 14 Dtool_w0Cq_5YH 395 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::find_texture_stage
//       Access: Published
//  Description: Returns the texture_stage in the collection with the
//               indicated name, if any, or NULL if no texture_stage has
//               that name.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4362  4 name 1 4028  
2171 14 Dtool_w0CqtfCs 0 6 1637 3971 0 14 Dtool_w0CqtfCs 300 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::get_num_texture_stages
//       Access: Published
//  Description: Returns the number of TextureStages in the collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4362  
2172 14 Dtool_w0Cq9Uz2 0 7 1638 4012 0 14 Dtool_w0Cq9Uz2 288 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::get_texture_stage
//       Access: Published
//  Description: Returns the nth TextureStage in the collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4362  5 index 1 3971  
2173 14 Dtool_w0Cq5fT7 0 7 1639 4012 0 14 Dtool_w0Cq5fT7 408 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::operator []
//       Access: Published
//  Description: Returns the nth TextureStage in the collection.  This is
//               the same as get_texture_stage(), but it may be a more
//               convenient way to access it.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4362  5 index 1 3971  
2174 14 Dtool_w0CqVONJ 0 6 1640 3971 0 14 Dtool_w0CqVONJ 370 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::size
//       Access: Published
//  Description: Returns the number of texture stages in the
//               collection.  This is the same thing as
//               get_num_texture_stages().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4362  
2175 14 Dtool_w0CqbCnW 0 6 1641 4126 0 14 Dtool_w0CqbCnW 283 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::operator +=
//       Access: Published
//  Description: Appends the other list onto the end of this one.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4126  5 other 1 4362  
2176 14 Dtool_w0CqA0eG 0 7 1642 4126 3753 14 Dtool_w0CqA0eG 332 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::operator +
//       Access: Published
//  Description: Returns a TextureStageCollection representing the
//               concatenation of the two lists.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4362  5 other 1 4362  
2177 14 Dtool_w0Cqlg51 0 4 1643 3994 0 14 Dtool_w0Cqlg51 347 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::sort
//       Access: Published
//  Description: Sorts the TextureStages in this collection into order
//               by TextureStage::sort(), from lowest to highest.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4126  
2178 14 Dtool_w0CqI4CN 0 4 1644 3994 0 14 Dtool_w0CqI4CN 344 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::output
//       Access: Published
//  Description: Writes a brief one-line description of the
//               TextureStageCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4362  3 out 1 3997  
2179 14 Dtool_w0Cq5JdN 0 4 1645 3994 0 14 Dtool_w0Cq5JdN 348 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               TextureStageCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 3 4 this 3 4362  3 out 1 3997  12 indent_level 1 3971  
2180 14 Dtool_w0CqqJju 0 4 1645 3994 0 14 Dtool_w0CqqJju 348 ////////////////////////////////////////////////////////////////////
//     Function: TextureStageCollection::write
//       Access: Published
//  Description: Writes a complete multi-line description of the
//               TextureStageCollection to the indicated output stream.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4362  3 out 1 3997  
2181 14 Dtool_w0CqI_Vv 0 7 1649 4364 2486 14 Dtool_w0CqI_Vv 475 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::Constructor
//       Access: Public
//  Description: Default constructor, just an empty node, no geo
//               This is used to read portal from model. You can also
//               use this from python to create an empty portal. Then
//               you can set the vertices yourself, with addVertex.
//////////////////////////////////////////////////////////////////// 1 4 name 1 4028  
2182 14 Dtool_w0CqJd3Z 0 7 1649 4364 2486 14 Dtool_w0CqJd3Z 335 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::Constructor
//       Access: Public
//  Description: Create a default rectangle as portal. Use this
//               to create an arbitrary portal and setup from Python
//////////////////////////////////////////////////////////////////// 3 4 name 1 4028  3 pos 1 4059  5 scale 1 3979  
2183 14 Dtool_w0Cq1A14 0 7 1649 4364 2486 14 Dtool_w0Cq1A14 335 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::Constructor
//       Access: Public
//  Description: Create a default rectangle as portal. Use this
//               to create an arbitrary portal and setup from Python
//////////////////////////////////////////////////////////////////// 2 4 name 1 4028  3 pos 1 4059  
2184 14 Dtool_w0CqeCYW 0 4 1650 3994 0 14 Dtool_w0CqeCYW 813 // Filename: portalNode.I
// Created by:  masad (13May04)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_portal_mask
//       Access: Published
//  Description: Simultaneously sets both the "from" and "into"
//               PortalMask values to the same thing.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  4 mask 1 4037  
2185 14 Dtool_w0CqgmFL 0 4 1651 3994 0 14 Dtool_w0CqgmFL 501 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_from_portal_mask
//       Access: Published
//  Description: Sets the "from" PortalMask.  In order for a
//               portal to be detected from this object into
//               another object, the intersection of this object's
//               "from" mask and the other object's "into" mask must
//               be nonzero.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  4 mask 1 4037  
2186 14 Dtool_w0CqTI3L 0 4 1652 3994 0 14 Dtool_w0CqTI3L 501 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_into_portal_mask
//       Access: Published
//  Description: Sets the "into" PortalMask.  In order for a
//               portal to be detected from another object into
//               this object, the intersection of the other object's
//               "from" mask and this object's "into" mask must be
//               nonzero.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  4 mask 1 4037  
2187 14 Dtool_w0CqK6im 0 7 1653 4037 0 14 Dtool_w0CqK6im 512 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_from_portal_mask
//       Access: Published
//  Description: Returns the current "from" PortalMask.  In order for
//               a portal to be detected from this object into
//               another object, the intersection of this object's
//               "from" mask and the other object's "into" mask must
//               be nonzero.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4365  
2188 14 Dtool_w0CqMSVn 0 7 1654 4037 0 14 Dtool_w0CqMSVn 512 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_into_portal_mask
//       Access: Published
//  Description: Returns the current "into" PortalMask.  In order for
//               a portal to be detected from another object into
//               this object, the intersection of the other object's
//               "from" mask and this object's "into" mask must be
//               nonzero.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4365  
2189 14 Dtool_w0CqhvNY 0 4 1655 3994 0 14 Dtool_w0CqhvNY 847 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_portal_geom
//       Access: Published
//  Description: Sets the state of the "portal geom" flag for this
//               PortalNode.  Normally, this is false; when this is
//               set true, the PortalSolids in this node will test
//               for portals with actual renderable geometry, in
//               addition to whatever PortalSolids may be indicated
//               by the from_portal_mask.
//
//               Setting this to true causes this to test *all*
//               GeomNodes for portals.  It is an all-or-none
//               thing; there is no way to portal with only some
//               GeomNodes, as GeomNodes have no into_portal_mask.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  4 flag 1 3970  
2190 14 Dtool_w0CqWqMg 0 6 1656 3970 0 14 Dtool_w0CqWqMg 317 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_portal_geom
//       Access: Published
//  Description: Returns the current state of the portal_geom flag.
//               See set_portal_geom().
//////////////////////////////////////////////////////////////////// 1 4 this 3 4365  
2191 14 Dtool_w0CqjFbb 0 4 1657 3994 0 14 Dtool_w0CqjFbb 278 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::clear_vertices
//       Access: Published
//  Description: Resets the vertices of the portal to the empty list.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4364  
2192 14 Dtool_w0CqpPIP 0 4 1658 3994 0 14 Dtool_w0CqpPIP 395 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::add_vertex
//       Access: Published
//  Description: Adds a new vertex to the portal polygon.  The
//               vertices should be defined in a counterclockwise
//               orientation when viewing through the portal.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  6 vertex 1 3989  
2193 14 Dtool_w0Cq7Gy1 0 6 1659 3971 0 14 Dtool_w0Cq7Gy1 281 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_num_vertices
//       Access: Published
//  Description: Returns the number of vertices in the portal polygon.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4365  
2194 14 Dtool_w0CqXSGA 0 6 1660 3989 0 14 Dtool_w0CqXSGA 267 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_vertex
//       Access: Published
//  Description: Returns the nth vertex of the portal polygon.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4365  1 n 1 3971  
2195 14 Dtool_w0Cq7zo5 0 4 1661 3994 0 14 Dtool_w0Cq7zo5 264 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_cell_in
//       Access: Published
//  Description: Sets the cell that this portal belongs to
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  4 cell 1 4056  
2196 14 Dtool_w0CqUl43 0 7 1662 4055 2948 14 Dtool_w0CqUl43 264 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_cell_in
//       Access: Published
//  Description: Sets the cell that this portal belongs to
//////////////////////////////////////////////////////////////////// 1 4 this 3 4365  
2197 14 Dtool_w0CqsRjH 0 4 1663 3994 0 14 Dtool_w0CqsRjH 267 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_cell_out
//       Access: Published
//  Description: Sets the cell that this portal leads out to
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  4 cell 1 4056  
2198 14 Dtool_w0CqpkJR 0 7 1664 4055 2948 14 Dtool_w0CqpkJR 267 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_cell_out
//       Access: Published
//  Description: Sets the cell that this portal leads out to
//////////////////////////////////////////////////////////////////// 1 4 this 3 4365  
2199 14 Dtool_w0CqysiG 0 4 1665 3994 0 14 Dtool_w0CqysiG 313 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_clip_plane
//       Access: Published
//  Description: this is set if the portal will clip against its 
//               left and right planes
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  5 value 1 3970  
2200 14 Dtool_w0CqRkXV 0 6 1666 3970 0 14 Dtool_w0CqRkXV 278 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::is_clip_plane
//       Access: Published
//  Description: Is this portal clipping against its left-right planes
//////////////////////////////////////////////////////////////////// 1 4 this 3 4364  
2201 14 Dtool_w0CqvbBN 0 4 1667 3994 0 14 Dtool_w0CqvbBN 265 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_visible
//       Access: Published
//  Description: this is set if the portal is facing camera
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  5 value 1 3970  
2202 14 Dtool_w0CqKXV7 0 6 1668 3970 0 14 Dtool_w0CqKXV7 254 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::is_visible
//       Access: Published
//  Description: Is this portal facing the camera
//////////////////////////////////////////////////////////////////// 1 4 this 3 4364  
2203 14 Dtool_w0Cql0Zq 0 4 1669 3994 0 14 Dtool_w0Cql0Zq 277 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_max_depth
//       Access: Published
//  Description: Set the maximum depth this portal will be visible at
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  5 value 1 3971  
2204 14 Dtool_w0Cqs3Yt 0 6 1670 3971 0 14 Dtool_w0Cqs3Yt 281 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::get_max_depth
//       Access: Published
//  Description: Returns the maximum depth this portal will be visible at
//////////////////////////////////////////////////////////////////// 1 4 this 3 4364  
2205 14 Dtool_w0Cqsf7U 0 4 1671 3994 0 14 Dtool_w0Cqsf7U 264 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::set_open
//       Access: Published
//  Description: Python sets this based on curent camera zone
//////////////////////////////////////////////////////////////////// 2 4 this 3 4364  5 value 1 3970  
2206 14 Dtool_w0CqzTu1 0 6 1672 3970 0 14 Dtool_w0CqzTu1 263 ////////////////////////////////////////////////////////////////////
//     Function: PortalNode::is_open
//       Access: Published
//  Description: Is this portal open from current camera zone
//////////////////////////////////////////////////////////////////// 1 4 this 3 4364  
2207 14 Dtool_w0Cq0Yop 0 7 1673 4000 0 14 Dtool_w0Cq0Yop 0 0 
2208 14 Dtool_w0CqsZHo 0 7 1676 4005 0 14 Dtool_w0CqsZHo 419 ////////////////////////////////////////////////////////////////////
//     Function: RescaleNormalAttrib::make
//       Access: Published, Static
//  Description: Constructs a new RescaleNormalAttrib object that
//               specifies whether to rescale normals to compensate
//               for transform scales or incorrectly defined normals.
//////////////////////////////////////////////////////////////////// 1 4 mode 1 3958  
2209 14 Dtool_w0CqUWoq 0 7 1677 4005 0 14 Dtool_w0CqUWoq 483 ////////////////////////////////////////////////////////////////////
//     Function: RescaleNormalAttrib::make_default
//       Access: Published, Static
//  Description: Constructs a RescaleNoramlAttrib object that's
//               suitable for putting at the top of a scene graph.
//               This will contain whatever attrib was suggested by
//               the user's rescale-normals Config variable.
//////////////////////////////////////////////////////////////////// 0 
2210 14 Dtool_w0CqTBI4 0 6 1678 3958 0 14 Dtool_w0CqTBI4 253 ////////////////////////////////////////////////////////////////////
//     Function: RescaleNormalAttrib::get_mode
//       Access: Published
//  Description: Returns the render mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4367  
2211 14 Dtool_w0CqEHFy 0 6 1679 3971 0 14 Dtool_w0CqEHFy 0 0 
2212 14 Dtool_w0CqJ1xG 0 7 1680 4000 0 14 Dtool_w0CqJ1xG 0 0 
2213 14 Dtool_w0Cq348V 0 7 1683 4005 0 14 Dtool_w0Cq348V 346 ////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a new ScissorAttrib object that removes
//               the scissor region and fills the DisplayRegion.
//////////////////////////////////////////////////////////////////// 0 
2214 14 Dtool_w0CqG31_ 0 7 1684 4005 0 14 Dtool_w0CqG31_ 477 ////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::make
//       Access: Published, Static
//  Description: Constructs a ScissorAttrib that restricts rendering
//               to the indicated frame within the current
//               DisplayRegion.  (0,0) is the lower-left corner of the
//               DisplayRegion, and (1,1) is the upper-right corner.
//////////////////////////////////////////////////////////////////// 1 5 frame 1 4067  
2215 14 Dtool_w0CqKT2j 0 7 1684 4005 0 14 Dtool_w0CqKT2j 966 // Filename: scissorAttrib.I
// Created by:  drose (29Jul08)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::make
//       Access: Published, Static
//  Description: Constructs a ScissorAttrib that restricts rendering
//               to the indicated frame within the current
//               DisplayRegion.  (0,0) is the lower-left corner of the
//               DisplayRegion, and (1,1) is the upper-right corner.
//////////////////////////////////////////////////////////////////// 4 4 left 1 3979  5 right 1 3979  6 bottom 1 3979  3 top 1 3979  
2216 14 Dtool_w0Cqtlci 0 7 1685 4005 0 14 Dtool_w0Cqtlci 400 ////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
2217 14 Dtool_w0CqSYVl 0 6 1686 4067 0 14 Dtool_w0CqSYVl 510 ////////////////////////////////////////////////////////////////////
//     Function: ScissorAttrib::get_frame
//       Access: Published
//  Description: Returns the left, right, bottom, top coordinates of
//               the scissor frame.  This defines a frame within the
//               current DisplayRegion, where 0,0 is the lower-left
//               corner of the DisplayRegion, and 1,1 is the
//               upper-right corner.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4369  
2218 14 Dtool_w0CqcYjb 0 6 1687 3971 0 14 Dtool_w0CqcYjb 0 0 
2219 14 Dtool_w0Cq5p4m 0 7 1688 4000 0 14 Dtool_w0Cq5p4m 0 0 
2220 14 Dtool_w0CqlxrR 0 7 1692 4005 0 14 Dtool_w0CqlxrR 399 ////////////////////////////////////////////////////////////////////
//     Function: ShadeModelAttrib::make
//       Access: Published, Static
//  Description: Constructs a new ShadeModelAttrib object that specifies
//               whether to draw polygons with flat shading or with
//               per-vertex (smooth) shading.
//////////////////////////////////////////////////////////////////// 1 4 mode 1 3961  
2221 14 Dtool_w0Cqp1Ye 0 7 1693 4005 0 14 Dtool_w0Cqp1Ye 403 ////////////////////////////////////////////////////////////////////
//     Function: ShadeModelAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
2222 14 Dtool_w0CqV0vm 0 6 1694 3961 0 14 Dtool_w0CqV0vm 249 ////////////////////////////////////////////////////////////////////
//     Function: ShadeModelAttrib::get_mode
//       Access: Published
//  Description: Returns the shade mode.
//////////////////////////////////////////////////////////////////// 1 4 this 3 4371  
2223 14 Dtool_w0CqOPBM 0 6 1695 3971 0 14 Dtool_w0CqOPBM 0 0 
2224 14 Dtool_w0CqVo4f 0 7 1696 4000 0 14 Dtool_w0CqVo4f 0 0 
2225 14 Dtool_w0CqESTW 0 7 1703 4005 0 14 Dtool_w0CqESTW 307 ////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make_off
//       Access: Published, Static
//  Description: Constructs a StencilAttrib that has stenciling 
//               turned off.
//////////////////////////////////////////////////////////////////// 0 
2226 14 Dtool_w0Cq6exi 0 7 1704 4005 0 14 Dtool_w0Cq6exi 400 ////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make_default
//       Access: Published, Static
//  Description: Returns a RenderAttrib that corresponds to whatever
//               the standard default properties for render attributes
//               of this type ought to be.
//////////////////////////////////////////////////////////////////// 0 
2227 14 Dtool_w0CqmxxL 0 7 1705 4005 0 14 Dtool_w0CqmxxL 265 ////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make
//       Access: Published, Static
//  Description: Constructs a front face StencilAttrib.
//////////////////////////////////////////////////////////////////// 8 12 front_enable 1 3972  25 front_comparison_function 1 3972  22 stencil_fail_operation 1 3972  29 stencil_pass_z_fail_operation 1 3972  35 front_stencil_pass_z_pass_operation 1 3972  9 reference 1 3972  9 read_mask 1 3972  10 write_mask 1 3972  
2228 14 Dtool_w0CqFjdx 0 7 1706 4005 0 14 Dtool_w0CqFjdx 272 ////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make_2_sided
//       Access: Published, Static
//  Description: Constructs a two-sided StencilAttrib.
//////////////////////////////////////////////////////////////////// 13 12 front_enable 1 3972  11 back_enable 1 3972  25 front_comparison_function 1 3972  22 stencil_fail_operation 1 3972  29 stencil_pass_z_fail_operation 1 3972  35 front_stencil_pass_z_pass_operation 1 3972  9 reference 1 3972  9 read_mask 1 3972  10 write_mask 1 3972  24 back_comparison_function 1 3972  27 back_stencil_fail_operation 1 3972  34 back_stencil_pass_z_fail_operation 1 3972  34 back_stencil_pass_z_pass_operation 1 3972  
2229 14 Dtool_w0CqGCEU 0 7 1707 4005 0 14 Dtool_w0CqGCEU 265 ////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make
//       Access: Published, Static
//  Description: Constructs a front face StencilAttrib.
//////////////////////////////////////////////////////////////////// 10 12 front_enable 1 3972  25 front_comparison_function 1 3972  22 stencil_fail_operation 1 3972  29 stencil_pass_z_fail_operation 1 3972  35 front_stencil_pass_z_pass_operation 1 3972  9 reference 1 3972  9 read_mask 1 3972  10 write_mask 1 3972  5 clear 1 3972  11 clear_value 1 3972  
2230 14 Dtool_w0Cqp_qW 0 7 1708 4005 0 14 Dtool_w0Cqp_qW 272 ////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::make_2_sided
//       Access: Published, Static
//  Description: Constructs a two-sided StencilAttrib.
//////////////////////////////////////////////////////////////////// 15 12 front_enable 1 3972  11 back_enable 1 3972  25 front_comparison_function 1 3972  22 stencil_fail_operation 1 3972  29 stencil_pass_z_fail_operation 1 3972  35 front_stencil_pass_z_pass_operation 1 3972  9 reference 1 3972  9 read_mask 1 3972  10 write_mask 1 3972  24 back_comparison_function 1 3972  27 back_stencil_fail_operation 1 3972  34 back_stencil_pass_z_fail_operation 1 3972  34 back_stencil_pass_z_pass_operation 1 3972  5 clear 1 3972  11 clear_value 1 3972  
2231 14 Dtool_w0Cqn86b 0 6 1709 3972 0 14 Dtool_w0Cqn86b 744 // Filename: stencilAttrib.I
// Created by:  aignacio (18May06)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: StencilAttrib::get_render_state
//       Access: Published
//  Description: Returns render state.
//////////////////////////////////////////////////////////////////// 2 4 this 3 4373  23 render_state_identifier 1 3972  
2232 14 Dtool_w0CqNj4b 0 6 1710 3971 0 14 Dtool_w0CqNj4b 0 0 
2233 14 Dtool_w0CquEMn 0 7 1711 4000 0 14 Dtool_w0CquEMn 0 0 
2234 14 Dtool_w0CqQpAl 0 6 1714 3970 0 14 Dtool_w0CqQpAl 796 // Filename: shaderPool.I
// Created by:  aignacio (Mar06)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::has_shader
//       Access: Public, Static
//  Description: Returns true if the shader has ever been loaded,
//               false otherwise.
//////////////////////////////////////////////////////////////////// 1 8 filename 1 4132  
2235 14 Dtool_w0CqqTdM 0 6 1715 3970 0 14 Dtool_w0CqqTdM 602 ////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::verify_shader
//       Access: Public, Static
//  Description: Loads the given filename up into a shader, if it has
//               not already been loaded, and returns true to indicate
//               success, or false to indicate failure.  If this
//               returns true, it is guaranteed that a subsequent call
//               to load_shader() with the same shader name will
//               return a valid Shader pointer.
//////////////////////////////////////////////////////////////////// 1 8 filename 1 4132  
2236 14 Dtool_w0CqgLpU 0 7 1716 4073 0 14 Dtool_w0CqgLpU 536 ////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::load_shader
//       Access: Public, Static
//  Description: Loads the given filename up into a shader, if it has
//               not already been loaded, and returns the new shader.
//               If a shader with the same filename was previously
//               loaded, returns that one instead.  If the shader
//               file cannot be found, returns NULL.
//////////////////////////////////////////////////////////////////// 1 8 filename 1 4132  
2237 14 Dtool_w0CqSimi 0 4 1717 3994 0 14 Dtool_w0CqSimi 432 ////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::add_shader
//       Access: Public, Static
//  Description: Adds the indicated already-loaded shader to the
//               pool.  The shader will always replace any
//               previously-loaded shader in the pool that had the
//               same filename.
//////////////////////////////////////////////////////////////////// 2 8 filename 1 4132  6 shader 1 4375  
2238 14 Dtool_w0CqffAR 0 4 1718 3994 0 14 Dtool_w0CqffAR 549 ////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::release_shader
//       Access: Public, Static
//  Description: Removes the indicated shader from the pool,
//               indicating it will never be loaded again; the shader
//               may then be freed.  If this function is never called,
//               a reference count will be maintained on every shader
//               every loaded, and shaders will never be freed.
//////////////////////////////////////////////////////////////////// 1 8 filename 1 4132  
2239 14 Dtool_w0CqVWS0 0 4 1719 3994 0 14 Dtool_w0CqVWS0 327 ////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::release_all_shaders
//       Access: Public, Static
//  Description: Releases all shaders in the pool and restores the
//               pool to the empty state.
//////////////////////////////////////////////////////////////////// 0 
2240 14 Dtool_w0CqZabE 0 6 1720 3971 0 14 Dtool_w0CqZabE 473 ////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::garbage_collect
//       Access: Public, Static
//  Description: Releases only those shaders in the pool that have a
//               reference count of exactly 1; i.e. only those
//               shaders that are not being used outside of the pool.
//               Returns the number of shaders released.
//////////////////////////////////////////////////////////////////// 0 
2241 14 Dtool_w0CqPPub 0 4 1721 3994 0 14 Dtool_w0CqPPub 316 ////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::list_contents
//       Access: Public, Static
//  Description: Lists the contents of the shader pool to the
//               indicated output stream.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
2242 14 Dtool_w0CqYTty 0 4 1722 3994 0 14 Dtool_w0CqYTty 311 ////////////////////////////////////////////////////////////////////
//     Function: ShaderPool::write
//       Access: Published, Static
//  Description: Lists the contents of the shader pool to the
//               indicated output stream.
//////////////////////////////////////////////////////////////////// 1 3 out 1 3997  
2243 14 Dtool_w0CqQcNo 0 7 1646 4055 2948 14 Dtool_w0CqQcNo 319 ////////////////////////////////////////////////////////////////////
//     Function: py_decode_NodePath_from_bam_stream
//       Access: Published
//  Description: This wrapper is defined as a global function to suit
//               pickle's needs.
//////////////////////////////////////////////////////////////////// 1 4 data 1 4028  
2244 14 Dtool_w0CqQ_nt 0 7 1647 4055 2948 14 Dtool_w0CqQ_nt 327 ////////////////////////////////////////////////////////////////////
//     Function: py_decode_NodePath_from_bam_stream_persist
//       Access: Published
//  Description: This wrapper is defined as a global function to suit
//               pickle's needs.
//////////////////////////////////////////////////////////////////// 2 9 unpickler 1 3995  4 data 1 4028  
539
3837 14 TransformState 0 75777 14 TransformState 14 TransformState 0 0 0 0 0 0 96 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 0 0 1 0 3838 0 0 0 0 1138
////////////////////////////////////////////////////////////////////
//       Class : TransformState
// Description : Indicates a coordinate-system transform on vertices.
//               TransformStates are the primary means for storing
//               transformations on the scene graph.
//
//               Transforms may be specified in one of two ways:
//               componentwise, with a pos-hpr-scale, or with an
//               arbitrary transform matrix.  If you specify a
//               transform componentwise, it will remember its
//               original components.
//
//               TransformState objects are managed very much like
//               RenderState objects.  They are immutable and
//               reference-counted automatically.
//
//               You should not attempt to create or modify a
//               TransformState object directly.  Instead, call one of
//               the make() functions to create one for you.  And
//               instead of modifying a TransformState object, create a
//               new one.
////////////////////////////////////////////////////////////////////

3838 24 NodeCachedReferenceCount 0 2049 24 NodeCachedReferenceCount 24 NodeCachedReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 2143
////////////////////////////////////////////////////////////////////
//       Class : NodeCachedReferenceCount
// Description : This class further specializes
//               CachedTypedWritableReferenceCount to also add a
//               node_ref_count, for the purposes of counting the
//               number of times the object is referenced by a "node",
//               presumably a PandaNode.
//
//               This essentially combines the functionality of
//               NodeReferenceCount and
//               CachedTypedWritableReferenceCount, so that a
//               derivative of this object actually has three
//               counters: the standard reference count, the "cache"
//               reference count, and the "node" reference count.
//               Rather than multiply inheriting from the two
//               reference count classes, we inherit only from
//               CachedTypedWritableReferenceCount and simply
//               duplicate the functionality of NodeReferenceCount, to
//               avoid all of the problems associated with multiple
//               inheritance.
//
//               The intended design is to use this as a base class
//               for RenderState and TransformState, both of which are
//               held by PandaNodes, and also have caches which are
//               independently maintained.  By keeping track of how
//               many nodes hold a pointer to a particular object, we
//               can classify each object into node-referenced,
//               cache-referenced, or other, which is primarily useful
//               for PStats reporting.
//
//               As with CachedTypedWritableReferenceCount's
//               cache_ref() and cache_unref(), the new methods
//               node_ref() and node_unref() automatically increment
//               and decrement the primary reference count as well.
//               In this case, however, there does exist a
//               NodePointerTo<> class to maintain the node_ref
//               counters automatically.
////////////////////////////////////////////////////////////////////

3839 20 RenderAttribRegistry 0 43009 20 RenderAttribRegistry 20 RenderAttribRegistry 0 0 0 0 0 0 11 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 0 0 0 0 0 439
////////////////////////////////////////////////////////////////////
//       Class : RenderAttribRegistry
// Description : This class is used to associate each RenderAttrib
//               with a different slot index at runtime, so we can
//               store a list of RenderAttribs in the RenderState
//               object, and very quickly look them up by type.
////////////////////////////////////////////////////////////////////

3840 12 RenderAttrib 0 75777 12 RenderAttrib 12 RenderAttrib 0 0 0 0 0 0 15 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 0 0 1 0 3841 0 0 0 2 3842 3843 1564
////////////////////////////////////////////////////////////////////
//       Class : RenderAttrib
// Description : This is the base class for a number of render
//               attributes (other than transform) that may be set on
//               scene graph nodes to control the appearance of
//               geometry.  This includes TextureAttrib, ColorAttrib,
//               etc.
//
//               RenderAttrib represents render attributes that always
//               propagate down to the leaves without regard to the
//               particular node they are assigned to.  A RenderAttrib
//               will have the same effect on a leaf node whether it
//               is assigned to the graph at the leaf or several nodes
//               above.  This is different from RenderEffect, which
//               represents a particular render property that is
//               applied immediately to the node on which it is
//               encountered, like billboarding or decaling.
//
//               You should not attempt to create or modify a
//               RenderAttrib directly; instead, use the make() method
//               of the appropriate kind of attrib you want.  This
//               will allocate and return a new RenderAttrib of the
//               appropriate type, and it may share pointers if
//               possible.  Do not modify the new RenderAttrib if you
//               wish to change its properties; instead, create a new
//               one.
////////////////////////////////////////////////////////////////////

3841 27 TypedWritableReferenceCount 0 2049 27 TypedWritableReferenceCount 27 TypedWritableReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 722
////////////////////////////////////////////////////////////////////
//       Class : TypedWritableReferenceCount
// Description : A base class for things which need to inherit from
//               both TypedWritable and from ReferenceCount.  It's
//               convenient to define this intermediate base class
//               instead of multiply inheriting from the two classes
//               each time they are needed, so that we can sensibly
//               pass around pointers to things which are both
//               TypedWritables and ReferenceCounters.
//               
//               See also TypedObject for detailed instructions.
////////////////////////////////////////////////////////////////////

3842 16 PandaCompareFunc 0 794624 30 RenderAttrib::PandaCompareFunc 30 RenderAttrib::PandaCompareFunc 3840 0 0 0 0 0 0 0 0 0 9 6 M_none 20 RenderAttrib::M_none 0 7 M_never 21 RenderAttrib::M_never 1 6 M_less 20 RenderAttrib::M_less 2 7 M_equal 21 RenderAttrib::M_equal 3 12 M_less_equal 26 RenderAttrib::M_less_equal 4 9 M_greater 23 RenderAttrib::M_greater 5 11 M_not_equal 25 RenderAttrib::M_not_equal 6 15 M_greater_equal 29 RenderAttrib::M_greater_equal 7 8 M_always 22 RenderAttrib::M_always 8 0 0

3843 10 TexGenMode 0 794624 24 RenderAttrib::TexGenMode 24 RenderAttrib::TexGenMode 3840 0 0 0 0 0 0 0 0 0 12 5 M_off 19 RenderAttrib::M_off 0 16 M_eye_sphere_map 30 RenderAttrib::M_eye_sphere_map 1 16 M_world_cube_map 30 RenderAttrib::M_world_cube_map 2 14 M_eye_cube_map 28 RenderAttrib::M_eye_cube_map 3 14 M_world_normal 28 RenderAttrib::M_world_normal 4 12 M_eye_normal 26 RenderAttrib::M_eye_normal 5 16 M_world_position 30 RenderAttrib::M_world_position 6 8 M_unused 22 RenderAttrib::M_unused 7 14 M_eye_position 28 RenderAttrib::M_eye_position 8 14 M_point_sprite 28 RenderAttrib::M_point_sprite 9 14 M_light_vector 28 RenderAttrib::M_light_vector 10 10 M_constant 24 RenderAttrib::M_constant 11 0 179
// This is the enumerated type for TexGenAttrib.  It is inherited
// into TexGenAttrib.  It is defined up at this level only to avoid
// circular dependencies in the header files.

3844 16 RenderModeAttrib 0 141313 16 RenderModeAttrib 16 RenderModeAttrib 0 0 0 0 2375 0 8 2367 2368 2369 2370 2371 2372 2373 2374 0 0 1 0 3840 0 0 0 1 3845 228
////////////////////////////////////////////////////////////////////
//       Class : RenderModeAttrib
// Description : Specifies how polygons are to be drawn.
////////////////////////////////////////////////////////////////////

3845 4 Mode 0 794624 22 RenderModeAttrib::Mode 22 RenderModeAttrib::Mode 3844 0 0 0 0 0 0 0 0 0 5 11 M_unchanged 29 RenderModeAttrib::M_unchanged 0 8 M_filled 26 RenderModeAttrib::M_filled 1 11 M_wireframe 29 RenderModeAttrib::M_wireframe 2 7 M_point 25 RenderModeAttrib::M_point 3 13 M_filled_flat 31 RenderModeAttrib::M_filled_flat 4 0 0

3846 15 TexMatrixAttrib 0 75777 15 TexMatrixAttrib 15 TexMatrixAttrib 0 0 0 0 0 0 14 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 1 4376 0 1 0 3840 0 0 0 0 265
////////////////////////////////////////////////////////////////////
//       Class : TexMatrixAttrib
// Description : Applies a transform matrix to UV's before they are
//               rendered.
////////////////////////////////////////////////////////////////////

3847 11 RenderState 0 75777 11 RenderState 11 RenderState 0 0 0 0 0 0 51 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 0 0 1 0 3838 0 0 0 0 621
////////////////////////////////////////////////////////////////////
//       Class : RenderState
// Description : This represents a unique collection of RenderAttrib
//               objects that correspond to a particular renderable
//               state.
//
//               You should not attempt to create or modify a
//               RenderState object directly.  Instead, call one of
//               the make() functions to create one for you.  And
//               instead of modifying a RenderState object, create a
//               new one.
////////////////////////////////////////////////////////////////////

3848 15 AlphaTestAttrib 0 141313 15 AlphaTestAttrib 15 AlphaTestAttrib 0 0 0 0 2447 0 6 2441 2442 2443 2444 2445 2446 0 0 1 0 3840 0 0 0 0 317
////////////////////////////////////////////////////////////////////
//       Class : AlphaTestAttrib
// Description : Enables or disables writing of pixel to framebuffer
//               based on its alpha value relative to a reference alpha value
////////////////////////////////////////////////////////////////////

3849 15 AntialiasAttrib 0 141313 15 AntialiasAttrib 15 AntialiasAttrib 0 0 0 0 2455 0 7 2448 2449 2450 2451 2452 2453 2454 0 0 1 0 3840 0 0 0 1 3850 291
////////////////////////////////////////////////////////////////////
//       Class : AntialiasAttrib
// Description : Specifies whether or how to enable antialiasing, if
//               supported by the backend renderer.
////////////////////////////////////////////////////////////////////

3850 4 Mode 0 794624 21 AntialiasAttrib::Mode 21 AntialiasAttrib::Mode 3849 0 0 0 0 0 0 0 0 0 10 6 M_none 23 AntialiasAttrib::M_none 0 7 M_point 24 AntialiasAttrib::M_point 1 6 M_line 23 AntialiasAttrib::M_line 2 9 M_polygon 26 AntialiasAttrib::M_polygon 4 13 M_multisample 30 AntialiasAttrib::M_multisample 8 6 M_auto 23 AntialiasAttrib::M_auto 31 11 M_type_mask 28 AntialiasAttrib::M_type_mask 31 8 M_faster 25 AntialiasAttrib::M_faster 32 8 M_better 25 AntialiasAttrib::M_better 64 11 M_dont_care 28 AntialiasAttrib::M_dont_care 96 0 0

3851 12 RenderEffect 0 75777 12 RenderEffect 12 RenderEffect 0 0 0 0 0 0 7 2456 2457 2458 2459 2460 2461 2462 0 0 1 0 3841 0 0 0 0 1346
////////////////////////////////////////////////////////////////////
//       Class : RenderEffect
// Description : This is the base class for a number of special render
//               effects that may be set on scene graph nodes to
//               change the way they render.  This includes
//               BillboardEffect, DecalEffect, etc.
//
//               RenderEffect represents render properties that must
//               be applied as soon as they are encountered in the
//               scene graph, rather than propagating down to the
//               leaves.  This is different from RenderAttrib, which
//               represents properties like color and texture that
//               don't do anything until they propagate down to a
//               GeomNode.
//
//               You should not attempt to create or modify a
//               RenderEffect directly; instead, use the make() method
//               of the appropriate kind of effect you want.  This
//               will allocate and return a new RenderEffect of the
//               appropriate type, and it may share pointers if
//               possible.  Do not modify the new RenderEffect if you
//               wish to change its properties; instead, create a new
//               one.
////////////////////////////////////////////////////////////////////

3852 13 RenderEffects 0 75777 13 RenderEffects 13 RenderEffects 0 0 0 0 0 0 15 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 0 0 1 0 3841 0 0 0 0 627
////////////////////////////////////////////////////////////////////
//       Class : RenderEffects
// Description : This represents a unique collection of RenderEffect
//               objects that correspond to a particular renderable
//               state.
//
//               You should not attempt to create or modify a
//               RenderEffects object directly.  Instead, call one of
//               the make() functions to create one for you.  And
//               instead of modifying a RenderEffects object, create a
//               new one.
////////////////////////////////////////////////////////////////////

3853 9 PandaNode 0 26625 9 PandaNode 9 PandaNode 0 0 0 1 2485 2486 0 110 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 0 0 4 3 3854 2478 2479 3 3855 2480 2481 3 3856 2482 2483 5 3857 2484 0 0 2 3858 3859 374
////////////////////////////////////////////////////////////////////
//       Class : PandaNode
// Description : A basic node of the scene graph or data graph.  This
//               is the base class of all specialized nodes, and also
//               serves as a generic node with no special properties.
////////////////////////////////////////////////////////////////////

3854 13 TypedWritable 0 2049 13 TypedWritable 13 TypedWritable 0 0 0 0 0 0 0 0 0 0 0 0 341
////////////////////////////////////////////////////////////////////
//       Class : TypedWritable
// Description : Base class for objects that can be written to and
//               read from Bam files.
//
//               See also TypedObject for detailed instructions.
////////////////////////////////////////////////////////////////////

3855 7 Namable 0 2049 7 Namable 7 Namable 0 0 0 0 0 0 0 0 0 0 0 0 324
////////////////////////////////////////////////////////////////////
//       Class : Namable
// Description : A base class for all things which can have a name.
//               The name is either empty or nonempty, but it is never
//               NULL.
////////////////////////////////////////////////////////////////////

3856 14 LinkedListNode 0 2049 14 LinkedListNode 14 LinkedListNode 0 0 0 0 0 0 0 0 0 0 0 0 762
////////////////////////////////////////////////////////////////////
//       Class : LinkedListNode
// Description : This just stores the pointers to implement a
//               doubly-linked list of some kind of object.  There are
//               occasions when a hand-rolled linked list is more
//               appropriate than an STL container.
//
//               Typically, each node of the linked list, as well as
//               the root of the list, will inherit from this class.
//
//               Note that this class is not inherently thread-safe;
//               derived classes are responsible for protecting any
//               calls into it within mutexes, if necessary.
////////////////////////////////////////////////////////////////////

3857 14 ReferenceCount 0 2049 14 ReferenceCount 14 ReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 425
////////////////////////////////////////////////////////////////////
//       Class : ReferenceCount
// Description : A base class for all things that want to be
//               reference-counted.  ReferenceCount works in
//               conjunction with PointerTo to automatically delete
//               objects when the last pointer to them goes away.
////////////////////////////////////////////////////////////////////

3858 16 UnexpectedChange 0 794624 27 PandaNode::UnexpectedChange 27 PandaNode::UnexpectedChange 3853 0 0 0 0 0 0 0 0 0 5 10 UC_parents 21 PandaNode::UC_parents 1 11 UC_children 22 PandaNode::UC_children 2 12 UC_transform 23 PandaNode::UC_transform 4 8 UC_state 19 PandaNode::UC_state 8 12 UC_draw_mask 23 PandaNode::UC_draw_mask 16 0 0

3859 9 FancyBits 0 794624 20 PandaNode::FancyBits 20 PandaNode::FancyBits 3853 0 0 0 0 0 0 0 0 0 6 12 FB_transform 23 PandaNode::FB_transform 1 8 FB_state 19 PandaNode::FB_state 2 10 FB_effects 21 PandaNode::FB_effects 4 6 FB_tag 17 PandaNode::FB_tag 16 12 FB_draw_mask 23 PandaNode::FB_draw_mask 32 16 FB_cull_callback 27 PandaNode::FB_cull_callback 64 0 0

3860 18 TransparencyAttrib 0 141313 18 TransparencyAttrib 18 TransparencyAttrib 0 0 0 0 2602 0 5 2597 2598 2599 2600 2601 0 0 1 0 3840 0 0 0 1 3861 727
////////////////////////////////////////////////////////////////////
//       Class : TransparencyAttrib
// Description : This controls the enabling of transparency.  Simply
//               setting an alpha component to non-1 does not in
//               itself make an object transparent; you must also
//               enable transparency mode with a suitable
//               TransparencyAttrib.  Similarly, it is wasteful to
//               render an object with a TransparencyAttrib in
//               effect unless you actually want it to be at least
//               partially transparent (and it has alpha components
//               less than 1).
////////////////////////////////////////////////////////////////////

3861 4 Mode 0 794624 24 TransparencyAttrib::Mode 24 TransparencyAttrib::Mode 3860 0 0 0 0 0 0 0 0 0 7 6 M_none 26 TransparencyAttrib::M_none 0 7 M_alpha 27 TransparencyAttrib::M_alpha 1 9 M_notused 29 TransparencyAttrib::M_notused 2 13 M_multisample 33 TransparencyAttrib::M_multisample 3 18 M_multisample_mask 38 TransparencyAttrib::M_multisample_mask 4 8 M_binary 28 TransparencyAttrib::M_binary 5 6 M_dual 26 TransparencyAttrib::M_dual 6 0 0

3862 8 NodePath 0 141313 8 NodePath 8 NodePath 0 0 0 1 2603 2948 0 343 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2 4377 4378 1 2616 0 0 1 3863 4938
//
// A NodePath is the fundamental unit of high-level interaction with
// the scene graph.  It encapsulates the complete path down to a node
// from some other node, usually the root of the scene graph.  This is
// used to resolve ambiguities associated with instancing.
//
// NodePath also contains a number of handy high-level methods for
// common scene-graph manipulations, such as reparenting, and common
// state changes, such as repositioning.
//
// There are also a number of NodePath methods for finding nodes deep
// within the tree by name or by type.  These take a path string,
// which at its simplest consists of a series of node names separated
// by slashes, like a directory pathname.
//
// Each component of the path string may optionally consist of one of
// the following special names, instead of a node name:
//
//   *          -- matches exactly one node, with any name.
//   **         -- matches any sequence of zero or more nodes.
//   +typename  -- matches any node that is or derives from the given type.
//   -typename  -- matches any node that is the given type exactly.
//   =tag       -- matches any node that has the indicated tag.
//   =tag=value -- matches any node whose tag matches the indicated value.
//
// Furthermore, a node name may itself contain standard filename
// globbing characters, like *, ?, and [a-z], that will be accepted as
// a partial match.  (In fact, the '*' special name may be seen as
// just a special case of this.)  The globbing characters may not be
// used with the typename matches or with tag matches, but they may
// be used to match a tag's value in the =tag=value syntax.
//
// The special characters "@@", appearing at the beginning of a node
// name, indicate a stashed node.  Normally, stashed nodes are not
// returned by a find (but see the special flags, below), but a
// stashed node may be found if it is explicitly named with its
// leading @@ characters.  By extension, "@@*" may be used to identify
// any stashed node.
//
// Examples:
//
// "room//graph" will look for a node named "graph", which is a child
// of an unnamed node, which is a child of a node named "room", which
// is a child of the starting path.
//
// "**/red*" will look for any node anywhere in the tree (below the
// starting path) with a name that begins with "red".
//
// "**/+PartBundleNode/**/head" will look for a node named "head",
// somewhere below a PartBundleNode anywhere in the tree.
//
//
// The search is always potentially ambiguous, even if the special
// wildcard operators are not used, because there may be multiple
// nodes in the tree with the same name.  In general, in the case of
// an ambiguity, the shortest path is preferred; when a method (such
// as extend_by) must choose only only one of several possible paths,
// it will choose the shortest available; on the other hand, when a
// method (such as find_all_matches) is to return all of the matching
// paths, it will sort them so that the shortest paths appear first in
// the output.
//
//
// Special flags.  The entire string may optionally be followed by the
// ";" character, followed by one or more of the following special
// control flags, with no intervening spaces or punctuation:
//
//    -h    Do not return hidden nodes.
//    +h    Do return hidden nodes.
//    -s    Do not return stashed nodes unless explicitly referenced with @@.
//    +s    Return stashed nodes even without any explicit @@ characters.
//    -i    Node name comparisons are not case insensitive: case must match
//          exactly.
//    +i    Node name comparisons are case insensitive: case is not important.
//          This affects matches against the node name only; node type
//          and tag strings are always case sensitive.
//
// The default flags are +h-s-i.
//
////////////////////////////////////////////////////////////////////
//       Class : NodePath
// Description : NodePath is the fundamental system for disambiguating
//               instances, and also provides a higher-level interface
//               for manipulating the scene graph.
//
//               A NodePath is a list of connected nodes from the root
//               of the graph to any sub-node.  Each NodePath
//               therefore uniquely describes one instance of a node.
//
//               NodePaths themselves are lightweight objects that may
//               easily be copied and passed by value.  Their data is
//               stored as a series of NodePathComponents that are
//               stored on the nodes.  Holding a NodePath will keep a
//               reference count to all the nodes in the path.
//               However, if any node in the path is removed or
//               reparented (perhaps through a different NodePath),
//               the NodePath will automatically be updated to reflect
//               the changes.
////////////////////////////////////////////////////////////////////

3863 9 ErrorType 0 794624 19 NodePath::ErrorType 19 NodePath::ErrorType 3862 0 0 0 0 0 0 0 0 0 4 5 ET_ok 15 NodePath::ET_ok 0 12 ET_not_found 22 NodePath::ET_not_found 1 10 ET_removed 20 NodePath::ET_removed 2 7 ET_fail 17 NodePath::ET_fail 3 0 109
// This enumeration is returned by get_error_type() for an empty
// NodePath to report the reason it's empty.

3864 18 AttribNodeRegistry 0 141313 18 AttribNodeRegistry 18 AttribNodeRegistry 0 0 0 0 2961 0 12 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 1 4379 0 0 0 0 879
////////////////////////////////////////////////////////////////////
//       Class : AttribNodeRegistry
// Description : This global object records NodePaths that are
//               referenced by scene graph attribs, such as
//               ClipPlaneAttribs and LightAttribs.
//
//               Its primary purpose is to unify attribs that are
//               loaded in from bam files.  Attrib nodes are
//               identified by name and type; when a bam file that
//               contains references to some attrib nodes is loaded,
//               those nodes are first looked up here in the
//               AttribNodeRegistry.  If there is a match (by name and
//               node type), the identified node is used instead of
//               the node referenced within the bam file itself.
////////////////////////////////////////////////////////////////////

3865 17 AudioVolumeAttrib 0 141313 17 AudioVolumeAttrib 17 AudioVolumeAttrib 0 0 0 0 2972 0 10 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 0 0 1 0 3840 0 0 0 0 280
////////////////////////////////////////////////////////////////////
//       Class : AudioVolumeAttrib
// Description : Applies a scale to audio volume for positional sounds
//               in the scene graph.
////////////////////////////////////////////////////////////////////

3866 17 AuxBitplaneAttrib 0 141313 17 AuxBitplaneAttrib 17 AuxBitplaneAttrib 0 0 0 0 2978 0 5 2973 2974 2975 2976 2977 0 0 1 0 3840 0 0 0 1 3867 1769
////////////////////////////////////////////////////////////////////
//       Class : AuxBitplaneAttrib
// Description : Modern frame buffers can have 'aux' bitplanes, which
//               are additional bitplanes above and beyond the
//               standard depth and color.  This attrib controls what
//               gets rendered into those additional bitplanes.  It
//               can also affect what goes into the alpha channel
//               of the primary color buffer.
//
//               ABO_glow: copy the glow map into the alpha channel
//               of the primary frame buffer.  If there is no glow
//               map, set it to zero.  Caveat: it is not
//               possible to write glow or depth values to the
//               framebuffer alpha channel at the same time as using
//               alpha blending or alpha testing.  Any attempt to use
//               transparency, blending, or alpha testing will cause
//               this flag to be overridden.
//
//               ABO_aux_normal: put the camera-space normal into
//               the into the R,G components of the first auxiliary
//               bitplane.
//
//               ABO_aux_modelz: put the clip-space Z coordinate of
//               the center of the model (after perspective divide)
//               into the B channel of the first auxiliary bitplane.
//
//               ABO_aux_glow: put a copy of the glow map into the
//               alpha channel of the first auxiliary bitplane.
//               If there is no glow map, set it to zero.
//
//               AuxBitplaneAttrib is relevant only when shader
//               generation is enabled. Otherwise, it has no effect.
//
////////////////////////////////////////////////////////////////////

3867 17 AuxBitplaneOutput 0 794624 36 AuxBitplaneAttrib::AuxBitplaneOutput 36 AuxBitplaneAttrib::AuxBitplaneOutput 3866 0 0 0 0 0 0 0 0 0 3 8 ABO_glow 27 AuxBitplaneAttrib::ABO_glow 1 14 ABO_aux_normal 33 AuxBitplaneAttrib::ABO_aux_normal 2 12 ABO_aux_glow 31 AuxBitplaneAttrib::ABO_aux_glow 4 0 0

3868 12 AuxSceneData 0 141313 12 AuxSceneData 12 AuxSceneData 0 0 0 0 2987 0 8 2979 2980 2981 2982 2983 2984 2985 2986 0 0 1 0 3869 0 0 0 0 655
////////////////////////////////////////////////////////////////////
//       Class : AuxSceneData
// Description : This is a base class for a generic data structure
//               that can be attached per-instance to the camera, to
//               store per-instance data that must be preserved over
//               multiple frames.
//
//               In particular, this is used to implement the
//               FadeLODNode, which must remember during traversal at
//               what point it is in the fade, separately for each
//               instance and for each camera.
////////////////////////////////////////////////////////////////////

3869 19 TypedReferenceCount 0 2049 19 TypedReferenceCount 19 TypedReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 710
////////////////////////////////////////////////////////////////////
//       Class : TypedReferenceCount
// Description : A base class for things which need to inherit from
//               both TypedObject and from ReferenceCount.  It's
//               convenient to define this intermediate base class
//               instead of multiply inheriting from the two classes
//               each time they are needed, so that we can sensibly
//               pass around pointers to things which are both
//               TypedObjects and ReferenceCounters.
//               
//               See also TypedObject for detailed instructions.
////////////////////////////////////////////////////////////////////

3870 7 BamFile 0 26625 7 BamFile 7 BamFile 0 0 0 1 2988 2989 0 18 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 0 0 1 0 3871 0 0 0 0 889
////////////////////////////////////////////////////////////////////
//       Class : BamFile
// Description : The principle public interface to reading and writing
//               Bam disk files.  See also BamReader and BamWriter,
//               the more general implementation of this class.
//
//               Bam files are most often used to store scene graphs
//               or subgraphs, and by convention they are given
//               filenames ending in the extension ".bam" when they
//               are used for this purpose.  However, a Bam file may
//               store any arbitrary list of TypedWritable objects;
//               in this more general usage, they are given filenames
//               ending in ".boo" to differentiate them from the more
//               common scene graph files.
////////////////////////////////////////////////////////////////////

3871 8 BamEnums 0 2049 8 BamEnums 8 BamEnums 0 0 0 0 0 0 0 0 0 0 0 0 288
////////////////////////////////////////////////////////////////////
//       Class : BamEnums
// Description : This class exists just to provide scoping for the
//               enums shared by BamReader and BamWriter.
////////////////////////////////////////////////////////////////////

3872 15 BillboardEffect 0 141313 15 BillboardEffect 15 BillboardEffect 0 0 0 0 3020 0 12 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 0 0 1 0 3851 0 0 0 0 335
////////////////////////////////////////////////////////////////////
//       Class : BillboardEffect
// Description : Indicates that geometry at this node should
//               automatically rotate to face the camera, or any other
//               arbitrary node.
////////////////////////////////////////////////////////////////////

3873 8 LensNode 0 141313 8 LensNode 8 LensNode 0 0 0 1 3021 3033 0 11 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 0 0 1 0 3853 0 0 0 0 396
////////////////////////////////////////////////////////////////////
//       Class : LensNode
// Description : A node that contains a Lens.  The most important
//               example of this kind of node is a Camera, but other
//               kinds of nodes also contain a lens (for instance, a
//               Spotlight).
////////////////////////////////////////////////////////////////////

3874 6 Camera 0 75777 6 Camera 6 Camera 0 0 0 1 3034 3033 0 30 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 1 4380 0 1 0 3873 0 0 0 0 320
////////////////////////////////////////////////////////////////////
//       Class : Camera
// Description : A node that can be positioned around in the scene
//               graph to represent a point of view for rendering a
//               scene.
////////////////////////////////////////////////////////////////////

3875 9 PlaneNode 0 141313 9 PlaneNode 9 PlaneNode 0 0 0 1 3065 3075 0 9 3066 3067 3068 3069 3070 3071 3072 3073 3074 0 0 1 0 3853 0 0 0 1 3876 429
////////////////////////////////////////////////////////////////////
//       Class : PlaneNode
// Description : A node that contains a plane.  This is most often
//               used as a clipping plane, but it can serve other
//               purposes as well; whenever a plane is needed to be
//               defined in some coordinate space in the world.
////////////////////////////////////////////////////////////////////

3876 10 ClipEffect 0 794624 21 PlaneNode::ClipEffect 21 PlaneNode::ClipEffect 3875 0 0 0 0 0 0 0 0 0 2 10 CE_visible 21 PlaneNode::CE_visible 1 12 CE_collision 23 PlaneNode::CE_collision 2 0 0

3877 15 ClipPlaneAttrib 0 141313 15 ClipPlaneAttrib 15 ClipPlaneAttrib 0 0 0 0 3100 0 24 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 2 4381 4382 0 1 0 3840 0 0 0 1 3878 496
////////////////////////////////////////////////////////////////////
//       Class : ClipPlaneAttrib
// Description : This functions similarly to a LightAttrib.  It
//               indicates the set of clipping planes that modify the
//               geometry at this level and below.  A ClipPlaneAttrib
//               can either add planes or remove planes from the total
//               set of clipping planes in effect.
////////////////////////////////////////////////////////////////////

3878 9 Operation 0 794624 26 ClipPlaneAttrib::Operation 26 ClipPlaneAttrib::Operation 3877 0 0 0 0 0 0 0 0 0 3 5 O_set 22 ClipPlaneAttrib::O_set 0 5 O_add 22 ClipPlaneAttrib::O_add 1 8 O_remove 25 ClipPlaneAttrib::O_remove 2 0 149
// This is the old, deprecated interface to ClipPlaneAttrib.  Do not
// use any of these methods for new code; these methods will be
// removed soon.

3879 11 ColorAttrib 0 141313 11 ColorAttrib 11 ColorAttrib 0 0 0 0 3109 0 8 3101 3102 3103 3104 3105 3106 3107 3108 0 0 1 0 3840 0 0 0 1 3880 263
////////////////////////////////////////////////////////////////////
//       Class : ColorAttrib
// Description : Indicates what color should be applied to renderable
//               geometry.
////////////////////////////////////////////////////////////////////

3880 4 Type 0 794624 17 ColorAttrib::Type 17 ColorAttrib::Type 3879 0 0 0 0 0 0 0 0 0 3 8 T_vertex 21 ColorAttrib::T_vertex 0 6 T_flat 19 ColorAttrib::T_flat 1 5 T_off 18 ColorAttrib::T_off 2 0 0

3881 16 ColorBlendAttrib 0 141313 16 ColorBlendAttrib 16 ColorBlendAttrib 0 0 0 0 3121 0 11 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 0 0 1 0 3840 0 0 0 2 3882 3883 368
////////////////////////////////////////////////////////////////////
//       Class : ColorBlendAttrib
// Description : This specifies how colors are blended into the frame
//               buffer, for special effects.  This overrides
//               transparency if transparency is also specified.
////////////////////////////////////////////////////////////////////

3882 4 Mode 0 794624 22 ColorBlendAttrib::Mode 22 ColorBlendAttrib::Mode 3881 0 0 0 0 0 0 0 0 0 6 6 M_none 24 ColorBlendAttrib::M_none 0 5 M_add 23 ColorBlendAttrib::M_add 1 10 M_subtract 28 ColorBlendAttrib::M_subtract 2 14 M_inv_subtract 32 ColorBlendAttrib::M_inv_subtract 3 5 M_min 23 ColorBlendAttrib::M_min 4 5 M_max 23 ColorBlendAttrib::M_max 5 0 0

3883 7 Operand 0 794624 25 ColorBlendAttrib::Operand 25 ColorBlendAttrib::Operand 3881 0 0 0 0 0 0 0 0 0 19 6 O_zero 24 ColorBlendAttrib::O_zero 0 5 O_one 23 ColorBlendAttrib::O_one 1 16 O_incoming_color 34 ColorBlendAttrib::O_incoming_color 2 26 O_one_minus_incoming_color 44 ColorBlendAttrib::O_one_minus_incoming_color 3 15 O_fbuffer_color 33 ColorBlendAttrib::O_fbuffer_color 4 25 O_one_minus_fbuffer_color 43 ColorBlendAttrib::O_one_minus_fbuffer_color 5 16 O_incoming_alpha 34 ColorBlendAttrib::O_incoming_alpha 6 26 O_one_minus_incoming_alpha 44 ColorBlendAttrib::O_one_minus_incoming_alpha 7 15 O_fbuffer_alpha 33 ColorBlendAttrib::O_fbuffer_alpha 8 25 O_one_minus_fbuffer_alpha 43 ColorBlendAttrib::O_one_minus_fbuffer_alpha 9 16 O_constant_color 34 ColorBlendAttrib::O_constant_color 10 26 O_one_minus_constant_color 44 ColorBlendAttrib::O_one_minus_constant_color 11 16 O_constant_alpha 34 ColorBlendAttrib::O_constant_alpha 12 26 O_one_minus_constant_alpha 44 ColorBlendAttrib::O_one_minus_constant_alpha 13 25 O_incoming_color_saturate 43 ColorBlendAttrib::O_incoming_color_saturate 14 13 O_color_scale 31 ColorBlendAttrib::O_color_scale 15 23 O_one_minus_color_scale 41 ColorBlendAttrib::O_one_minus_color_scale 16 13 O_alpha_scale 31 ColorBlendAttrib::O_alpha_scale 17 23 O_one_minus_alpha_scale 41 ColorBlendAttrib::O_one_minus_alpha_scale 18 0 0

3884 16 ColorScaleAttrib 0 141313 16 ColorScaleAttrib 16 ColorScaleAttrib 0 0 0 0 3135 0 13 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 0 0 1 0 3840 0 0 0 0 267
////////////////////////////////////////////////////////////////////
//       Class : ColorScaleAttrib
// Description : Applies a scale to colors in the scene graph and on
//               vertices.
////////////////////////////////////////////////////////////////////

3885 16 ColorWriteAttrib 0 141313 16 ColorWriteAttrib 16 ColorWriteAttrib 0 0 0 0 3141 0 5 3136 3137 3138 3139 3140 0 0 1 0 3840 0 0 0 1 3886 431
////////////////////////////////////////////////////////////////////
//       Class : ColorWriteAttrib
// Description : Enables or disables writing to the color buffer.
//               This is primarily useful for certain special effects
//               in which it is important to write to the depth buffer
//               without affecting the color buffer.
////////////////////////////////////////////////////////////////////

3886 8 Channels 0 794624 26 ColorWriteAttrib::Channels 26 ColorWriteAttrib::Channels 3885 0 0 0 0 0 0 0 0 0 7 5 C_off 23 ColorWriteAttrib::C_off 0 5 C_red 23 ColorWriteAttrib::C_red 1 7 C_green 25 ColorWriteAttrib::C_green 2 6 C_blue 24 ColorWriteAttrib::C_blue 4 5 C_rgb 23 ColorWriteAttrib::C_rgb 7 7 C_alpha 25 ColorWriteAttrib::C_alpha 8 5 C_all 23 ColorWriteAttrib::C_all 15 0 0

3887 13 CompassEffect 0 141313 13 CompassEffect 13 CompassEffect 0 0 0 0 3146 0 4 3142 3143 3144 3145 0 0 1 0 3851 0 0 0 1 3888 1758
////////////////////////////////////////////////////////////////////
//       Class : CompassEffect
// Description : A CompassEffect causes a node to inherit its rotation
//               (or pos or scale, if specified) from some other
//               reference node in the graph, or more often from the
//               root.
//
//               In its purest form, a CompassEffect is used to keep
//               the node's rotation fixed relative to the top of the
//               scene graph, despite other transforms that may exist
//               above the node.  Hence the name: the node behaves
//               like a magnetic compass, always pointing in the same
//               direction.
//
//               As an couple of generalizing extensions, the
//               CompassEffect may also be set up to always orient its
//               node according to some other reference node than the
//               root of the scene graph.  Furthermore, it may
//               optionally adjust any of pos, rotation, or scale,
//               instead of necessarily rotation; and it may adjust
//               individual pos and scale components.  (Rotation may
//               not be adjusted on an individual component basis;
//               that's just asking for trouble.)
//
//               Be careful when using the pos and scale modes.  In
//               these modes, it's possible for the CompassEffect to
//               move its node far from its normal bounding volume,
//               causing culling to fail.  If this is an issue, you
//               may need to explicitly set a large (or infinite)
//               bounding volume on the effect node.
////////////////////////////////////////////////////////////////////

3888 10 Properties 0 794624 25 CompassEffect::Properties 25 CompassEffect::Properties 3887 0 0 0 0 0 0 0 0 0 10 3 P_x 18 CompassEffect::P_x 1 3 P_y 18 CompassEffect::P_y 2 3 P_z 18 CompassEffect::P_z 4 5 P_pos 20 CompassEffect::P_pos 7 5 P_rot 20 CompassEffect::P_rot 8 4 P_sx 19 CompassEffect::P_sx 16 4 P_sy 19 CompassEffect::P_sy 32 4 P_sz 19 CompassEffect::P_sz 64 7 P_scale 22 CompassEffect::P_scale 112 5 P_all 20 CompassEffect::P_all 127 0 0

3889 12 CullBinEnums 0 141313 12 CullBinEnums 12 CullBinEnums 0 0 0 0 3147 0 0 0 0 0 0 1 3890 280
////////////////////////////////////////////////////////////////////
//       Class : CullBinEnums
// Description : Provides scoping for the enumerated type shared by
//               CullBin and CullBinManager.
////////////////////////////////////////////////////////////////////

3890 7 BinType 0 794624 21 CullBinEnums::BinType 21 CullBinEnums::BinType 3889 0 0 0 0 0 0 0 0 0 6 10 BT_invalid 24 CullBinEnums::BT_invalid 0 11 BT_unsorted 25 CullBinEnums::BT_unsorted 1 15 BT_state_sorted 29 CullBinEnums::BT_state_sorted 2 16 BT_back_to_front 30 CullBinEnums::BT_back_to_front 3 16 BT_front_to_back 30 CullBinEnums::BT_front_to_back 4 8 BT_fixed 22 CullBinEnums::BT_fixed 5 0 0

3891 13 CullBinAttrib 0 141313 13 CullBinAttrib 13 CullBinAttrib 0 0 0 0 3154 0 6 3148 3149 3150 3151 3152 3153 0 0 1 0 3840 0 0 0 0 336
////////////////////////////////////////////////////////////////////
//       Class : CullBinAttrib
// Description : Assigns geometry to a particular bin by name.  The
//               bins must be created separately via the
//               CullBinManager interface.
////////////////////////////////////////////////////////////////////

3892 14 CullBinManager 0 43009 14 CullBinManager 14 CullBinManager 0 0 0 0 0 0 14 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 1 4383 0 1 0 3889 0 0 0 0 289
////////////////////////////////////////////////////////////////////
//       Class : CullBinManager
// Description : This is a global object that maintains the collection
//               of named CullBins in the world.
////////////////////////////////////////////////////////////////////

3893 14 CullFaceAttrib 0 141313 14 CullFaceAttrib 14 CullFaceAttrib 0 0 0 0 3177 0 8 3169 3170 3171 3172 3173 3174 3175 3176 0 0 1 0 3840 0 0 0 1 3894 274
////////////////////////////////////////////////////////////////////
//       Class : CullFaceAttrib
// Description : Indicates which faces should be culled based on their
//               vertex ordering.
////////////////////////////////////////////////////////////////////

3894 4 Mode 0 794624 20 CullFaceAttrib::Mode 20 CullFaceAttrib::Mode 3893 0 0 0 0 0 0 0 0 0 4 11 M_cull_none 27 CullFaceAttrib::M_cull_none 0 16 M_cull_clockwise 32 CullFaceAttrib::M_cull_clockwise 1 24 M_cull_counter_clockwise 40 CullFaceAttrib::M_cull_counter_clockwise 2 16 M_cull_unchanged 32 CullFaceAttrib::M_cull_unchanged 3 0 0

3895 8 GeomNode 0 75777 8 GeomNode 8 GeomNode 0 0 0 1 3178 2486 0 19 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 2 4384 4385 0 1 0 3853 0 0 0 0 423
////////////////////////////////////////////////////////////////////
//       Class : GeomNode
// Description : A node that holds Geom objects, renderable pieces of
//               geometry.  This is the primary kind of leaf node in
//               the scene graph; almost all visible objects will be
//               contained in a GeomNode somewhere.
////////////////////////////////////////////////////////////////////

3896 10 SceneSetup 0 141313 10 SceneSetup 10 SceneSetup 0 0 0 0 3224 0 26 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 0 0 1 0 3869 0 0 0 0 331
////////////////////////////////////////////////////////////////////
//       Class : SceneSetup
// Description : This object holds the camera position, etc., and
//               other general setup information for rendering a
//               particular scene.
////////////////////////////////////////////////////////////////////

3897 13 CullTraverser 0 141313 13 CullTraverser 13 CullTraverser 0 0 0 1 3225 3251 0 25 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 0 0 1 0 3869 0 0 0 0 512
////////////////////////////////////////////////////////////////////
//       Class : CullTraverser
// Description : This object performs a depth-first traversal of the
//               scene graph, with optional view-frustum culling,
//               collecting CullState and searching for GeomNodes.
//               Each renderable Geom encountered is passed along with
//               its associated RenderState to the CullHandler object.
////////////////////////////////////////////////////////////////////

3898 17 CullTraverserData 0 26625 17 CullTraverserData 17 CullTraverserData 0 0 0 0 3252 0 6 3253 3254 3255 3256 3257 3258 0 0 0 0 0 778
////////////////////////////////////////////////////////////////////
//       Class : CullTraverserData
// Description : This collects together the pieces of data that are
//               accumulated for each node while walking the scene
//               graph during the cull traversal.
//
//               Having this as a separate object simplifies the
//               parameter list to CullTraverser::r_traverse(), as
//               well as to other functions like
//               PandaNode::cull_callback().  It also makes it easier
//               to add cull parameters, and provides a place to
//               abstract out some of the cull behavior (like
//               view-frustum culling).
////////////////////////////////////////////////////////////////////

3899 10 CullResult 0 75777 10 CullResult 10 CullResult 0 0 0 0 0 0 7 3259 3260 3261 3262 3263 3264 3265 0 0 1 0 3857 0 0 0 0 611
////////////////////////////////////////////////////////////////////
//       Class : CullResult
// Description : This stores the result of a BinCullHandler traversal:
//               an ordered collection of CullBins, each of which
//               holds a number of Geoms and RenderStates to be
//               rendered in some defined order.
//
//               This is also used to keep the results of last frame's
//               cull traversal around to make next frame's traversal
//               of the same scene a little easier.
////////////////////////////////////////////////////////////////////

3900 11 DecalEffect 0 141313 11 DecalEffect 11 DecalEffect 0 0 0 0 3268 0 2 3266 3267 0 0 1 0 3851 0 0 0 0 355
////////////////////////////////////////////////////////////////////
//       Class : DecalEffect
// Description : Applied to a GeomNode to indicate that the children
//               of this GeomNode are coplanar and should be drawn as
//               decals (eliminating Z-fighting).
////////////////////////////////////////////////////////////////////

3901 17 DepthOffsetAttrib 0 141313 17 DepthOffsetAttrib 17 DepthOffsetAttrib 0 0 0 0 3276 0 7 3269 3270 3271 3272 3273 3274 3275 0 0 1 0 3840 0 0 0 0 1898
////////////////////////////////////////////////////////////////////
//       Class : DepthOffsetAttrib
// Description : This is a special kind of attribute that instructs
//               the graphics driver to apply an offset or bias to the
//               generated depth values for rendered polygons, before
//               they are written to the depth buffer.
//
//               This can be used to shift polygons forward slightly,
//               to resolve depth conflicts.  The cull traverser may
//               optionally use this, for instance, to implement
//               decals.  However, driver support for this feature
//               seems to be spotty, so use with caution.
//
//               The bias is always an integer number, and each
//               integer increment represents the smallest possible
//               increment in Z that is sufficient to completely
//               resolve two coplanar polygons.  Positive numbers are
//               closer towards the camera.
//
//               Nested DepthOffsetAttrib values accumulate; that is,
//               a DepthOffsetAttrib with a value of 1 beneath another
//               DepthOffsetAttrib with a value of 2 presents a net
//               offset of 3.  (A DepthOffsetAttrib will not, however,
//               combine with any other DepthOffsetAttribs with a
//               lower override parameter.)  The net value should
//               probably not exceed 16 or drop below 0 for maximum
//               portability.
//
//               Also, and only tangentially related, the
//               DepthOffsetAttrib can be used to constrain the Z
//               output value to a subset of the usual [0, 1] range
//               (or reversing its direction) by specifying a new
//               min_value and max_value.
////////////////////////////////////////////////////////////////////

3902 15 DepthTestAttrib 0 141313 15 DepthTestAttrib 15 DepthTestAttrib 0 0 0 0 3282 0 5 3277 3278 3279 3280 3281 0 0 1 0 3840 0 0 0 0 236
////////////////////////////////////////////////////////////////////
//       Class : DepthTestAttrib
// Description : Enables or disables writing to the depth buffer.
////////////////////////////////////////////////////////////////////

3903 16 DepthWriteAttrib 0 141313 16 DepthWriteAttrib 16 DepthWriteAttrib 0 0 0 0 3288 0 5 3283 3284 3285 3286 3287 0 0 1 0 3840 0 0 0 1 3904 237
////////////////////////////////////////////////////////////////////
//       Class : DepthWriteAttrib
// Description : Enables or disables writing to the depth buffer.
////////////////////////////////////////////////////////////////////

3904 4 Mode 0 794624 22 DepthWriteAttrib::Mode 22 DepthWriteAttrib::Mode 3903 0 0 0 0 0 0 0 0 0 2 5 M_off 23 DepthWriteAttrib::M_off 0 4 M_on 22 DepthWriteAttrib::M_on 1 0 0

3905 19 EventStorePandaNode 0 75777 19 EventStorePandaNode 19 EventStorePandaNode 0 0 0 1 3289 0 0 3 3290 3291 3292 0 0 1 0 3906 0 0 0 0 275
////////////////////////////////////////////////////////////////////
//       Class : EventStorePandaNode
// Description : A class object for storing specifically objects of
//               type PandaNode.
////////////////////////////////////////////////////////////////////

3906 19 EventStoreValueBase 0 2049 19 EventStoreValueBase 19 EventStoreValueBase 0 0 0 0 0 0 0 0 0 0 0 0 358
////////////////////////////////////////////////////////////////////
//       Class : EventStoreValueBase
// Description : A non-template base class of EventStoreValue (below),
//               which serves mainly to define the placeholder for the
//               virtual output function.
////////////////////////////////////////////////////////////////////

3907 3 Fog 0 75777 3 Fog 3 Fog 0 0 0 1 3293 2486 0 13 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 0 0 1 0 3853 0 0 0 1 3908 1150
////////////////////////////////////////////////////////////////////
//       Class : Fog
// Description : Specifies how atmospheric fog effects are applied to
//               geometry.  The Fog object is now a PandaNode, which
//               means it can be used similarly to a Light to define
//               effects relative to a particular coordinate system
//               within the scene graph.
//
//               In exponential mode, the fog effects are always
//               camera-relative, and it does not matter where the Fog
//               node is parented.  However, in linear mode, the onset
//               and opaque distances are defined as offsets along the
//               local forward axis (e.g. the Y axis).  This allows
//               the fog effect to be localized to a particular region
//               in space, rather than always camera-relative.  If the
//               fog object is not parented to any node, it is used to
//               generate traditonal camera-relative fog, as if it
//               were parented to the camera.
////////////////////////////////////////////////////////////////////

3908 4 Mode 0 794624 9 Fog::Mode 9 Fog::Mode 3907 0 0 0 0 0 0 0 0 0 3 8 M_linear 13 Fog::M_linear 0 13 M_exponential 18 Fog::M_exponential 1 21 M_exponential_squared 26 Fog::M_exponential_squared 2 0 0

3909 9 FogAttrib 0 141313 9 FogAttrib 9 FogAttrib 0 0 0 0 3314 0 7 3307 3308 3309 3310 3311 3312 3313 0 0 1 0 3840 0 0 0 0 235
////////////////////////////////////////////////////////////////////
//       Class : FogAttrib
// Description : Applies a Fog to the geometry at and below this node.
////////////////////////////////////////////////////////////////////

3910 20 GeomDrawCallbackData 0 141313 20 GeomDrawCallbackData 20 GeomDrawCallbackData 0 0 0 0 3321 0 6 3315 3316 3317 3318 3319 3320 0 0 1 0 3911 0 0 0 0 363
////////////////////////////////////////////////////////////////////
//       Class : GeomDrawCallbackData
// Description : This specialization on CallbackData is passed when
//               the callback is initiated from deep within the draw
//               traversal, for a particular Geom.
////////////////////////////////////////////////////////////////////

3911 12 CallbackData 0 2049 12 CallbackData 12 CallbackData 0 0 0 0 0 0 0 0 0 0 0 0 610
////////////////////////////////////////////////////////////////////
//       Class : CallbackData
// Description : This is a generic data block that is passed along to
//               a CallbackObject when a callback is made.  It
//               contains data specific to the particular callback
//               type in question.
//
//               This is actually an abstract base class and contains
//               no data.  Specializations of this class will contain
//               the actual data relevant to each callback type.
////////////////////////////////////////////////////////////////////

3912 22 InternalNameCollection 0 26625 22 InternalNameCollection 22 InternalNameCollection 0 0 0 1 3322 3324 0 16 3323 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 1 4386 0 0 0 0 195
////////////////////////////////////////////////////////////////////
//       Class : InternalNameCollection
// Description : 
////////////////////////////////////////////////////////////////////

3913 5 Light 0 26625 5 Light 5 Light 0 0 0 0 3341 0 8 3342 3343 3344 3345 3346 3347 3348 3349 0 0 1 5 3857 3340 0 0 0 460
////////////////////////////////////////////////////////////////////
//       Class : Light
// Description : The abstract interface to all kinds of lights.  The
//               actual light objects also inherit from PandaNode, and
//               can therefore be added to the scene graph at some
//               arbitrary point to define the coordinate system of
//               effect.
////////////////////////////////////////////////////////////////////

3914 11 LightAttrib 0 141313 11 LightAttrib 11 LightAttrib 0 0 0 0 3375 0 25 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 2 4387 4388 0 1 0 3840 0 0 0 1 3915 426
////////////////////////////////////////////////////////////////////
//       Class : LightAttrib
// Description : Indicates which set of lights should be considered
//               "on" to illuminate geometry at this level and below.
//               A LightAttrib can either add lights or remove lights
//               from the total set of "on" lights.
////////////////////////////////////////////////////////////////////

3915 9 Operation 0 794624 22 LightAttrib::Operation 22 LightAttrib::Operation 3914 0 0 0 0 0 0 0 0 0 3 5 O_set 18 LightAttrib::O_set 0 5 O_add 18 LightAttrib::O_add 1 8 O_remove 21 LightAttrib::O_remove 2 0 145
// This is the old, deprecated interface to LightAttrib.  Do not use
// any of these methods for new code; these methods will be removed
// soon.

3916 15 LightRampAttrib 0 141313 15 LightRampAttrib 15 LightRampAttrib 0 0 0 0 3388 0 12 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 0 0 1 0 3840 0 0 0 1 3917 556
////////////////////////////////////////////////////////////////////
//       Class : LightRampAttrib
// Description : A Light Ramp is any unary operator that takes a 
//               rendered pixel as input, and adjusts the brightness
//               of that pixel.  For example, gamma correction is a
//               kind of light ramp.  So is HDR tone mapping.  So is
//               cartoon shading.  See the constructors for an
//               explanation of each kind of ramp.
////////////////////////////////////////////////////////////////////

3917 13 LightRampMode 0 794624 30 LightRampAttrib::LightRampMode 30 LightRampAttrib::LightRampMode 3916 0 0 0 0 0 0 0 0 0 7 11 LRT_default 28 LightRampAttrib::LRT_default 0 12 LRT_identity 29 LightRampAttrib::LRT_identity 1 20 LRT_single_threshold 37 LightRampAttrib::LRT_single_threshold 2 20 LRT_double_threshold 37 LightRampAttrib::LRT_double_threshold 3 8 LRT_hdr0 25 LightRampAttrib::LRT_hdr0 4 8 LRT_hdr1 25 LightRampAttrib::LRT_hdr1 5 8 LRT_hdr2 25 LightRampAttrib::LRT_hdr2 6 0 0

3918 6 Loader 0 141313 6 Loader 6 Loader 0 0 0 1 3400 3417 0 16 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 0 0 2 3 3869 3389 3390 3 3855 3391 3392 0 1 3919 819
////////////////////////////////////////////////////////////////////
//       Class : Loader
// Description : A convenient class for loading models from disk, in
//               bam or egg format (or any of a number of other
//               formats implemented by a LoaderFileType, such as
//               ptloader).
//
//               This class supports synchronous as well as
//               asynchronous loading.  In asynchronous loading, the
//               model is loaded in the background by a thread, and an
//               event will be generated when the model is available.
//               If threading is not available, the asynchronous
//               loading interface may be used, but it loads
//               synchronously.
////////////////////////////////////////////////////////////////////

3919 7 Results 0 288769 15 Loader::Results 15 Loader::Results 3918 0 0 1 3393 3395 0 5 3394 3396 3397 3398 3399 2 4389 4390 0 0 0 0 0

3920 14 LoaderFileType 0 75777 14 LoaderFileType 14 LoaderFileType 0 0 0 0 0 0 9 3418 3419 3420 3421 3422 3423 3424 3425 3426 0 0 1 0 3921 0 0 0 0 436
////////////////////////////////////////////////////////////////////
//       Class : LoaderFileType
// Description : This is the base class for a family of scene-graph
//               file types that the Loader supports.  Each kind of
//               loader that's available should define a corresponding
//               LoaderFileType object and register itself.
////////////////////////////////////////////////////////////////////

3921 11 TypedObject 0 2049 11 TypedObject 11 TypedObject 0 0 0 0 0 0 0 0 0 0 0 0 3666
////////////////////////////////////////////////////////////////////
//       Class : TypedObject
// Description : This is an abstract class that all classes which
//               use TypeHandle, and also provide virtual functions to
//               support polymorphism, should inherit from.  Each
//               derived class should define get_type(), which should
//               return the specific type of the derived class.
//               Inheriting from this automatically provides support
//               for is_of_type() and is_exact_type().
//               
//               All classes that inherit directly or indirectly from
//               TypedObject should redefine get_type() and
//               force_init_type(), as shown below.  Some classes that
//               do not inherit from TypedObject may still declare
//               TypeHandles for themselves by defining methods called
//               get_class_type() and init_type().  Classes such as
//               these may serve as base classes, but the dynamic type
//               identification system will be limited.  Classes that
//               do not inherit from TypedObject need not define the
//               virtual functions get_type() and force_init_type()
//               (or any other virtual functions).
//               
//               There is a specific layout for defining the
//               overrides from this class.  Keeping the definitions
//               formatted just like these examples will allow
//               someone in the future to use a sed (or similar)
//               script to make global changes, if necessary.  Avoid
//               rearranging the braces or the order of the functions
//               unless you're ready to change them in every file all
//               at once.
//               
//               What follows are some examples that can be used in
//               new classes that you create.
//               
//               @par In the class definition (.h file):
//               @code
//               public:
//                 static TypeHandle get_class_type() {
//                   return _type_handle;
//                 }
//                 static void init_type() {
//                   <<<BaseClassOne>>>::init_type();
//                   <<<BaseClassTwo>>>::init_type();
//                   <<<BaseClassN>>>::init_type();
//                   register_type(_type_handle, "<<<ThisClassStringName>>>",
//                                 <<<BaseClassOne>>>::get_class_type(),
//                                 <<<BaseClassTwo>>>::get_class_type(),
//                                 <<<BaseClassN>>>::get_class_type());
//                 }
//                 virtual TypeHandle get_type() const {
//                   return get_class_type();
//                 }
//                 virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
//               
//               private:
//                 static TypeHandle _type_handle;
//               @endcode
//               
//               @par In the class .cxx file:
//               @code
//               TypeHandle <<<ThisClassStringName>>>::_type_handle;
//               @endcode
//               
//               @par In the class config_<<<PackageName>>>.cxx file:
//               @code
//               ConfigureFn(config_<<<PackageName>>>) {
//                 <<<ClassOne>>>::init_type();
//                 <<<ClassTwo>>>::init_type();
//                 <<<ClassN>>>::init_type();
//               }
//               @endcode
////////////////////////////////////////////////////////////////////

3922 22 LoaderFileTypeRegistry 0 26625 22 LoaderFileTypeRegistry 22 LoaderFileTypeRegistry 0 0 0 0 3427 0 5 3428 3429 3430 3431 3432 1 4391 0 0 0 0 286
////////////////////////////////////////////////////////////////////
//       Class : LoaderFileTypeRegistry
// Description : This class maintains the set of all known
//               LoaderFileTypes in the universe.
////////////////////////////////////////////////////////////////////

3923 14 MaterialAttrib 0 141313 14 MaterialAttrib 14 MaterialAttrib 0 0 0 0 3440 0 7 3433 3434 3435 3436 3437 3438 3439 0 0 1 0 3840 0 0 0 0 423
////////////////////////////////////////////////////////////////////
//       Class : MaterialAttrib
// Description : Indicates which, if any, material should be applied
//               to geometry.  The material is used primarily to
//               control lighting effects, and isn't necessary (or
//               useful) in the absence of lighting.
////////////////////////////////////////////////////////////////////

3924 18 MaterialCollection 0 26625 18 MaterialCollection 18 MaterialCollection 0 0 0 1 3441 3443 0 17 3442 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 0 0 0 0 0 191
////////////////////////////////////////////////////////////////////
//       Class : MaterialCollection
// Description : 
////////////////////////////////////////////////////////////////////

3925 19 ModelFlattenRequest 0 141313 19 ModelFlattenRequest 19 ModelFlattenRequest 0 0 0 1 3460 3465 0 4 3461 3462 3463 3464 0 0 1 0 3926 0 0 0 0 545
////////////////////////////////////////////////////////////////////
//       Class : ModelFlattenRequest
// Description : This class object manages a single asynchronous
//               request to flatten a model.  The model will be
//               duplicated and flattened in a sub-thread (if
//               threading is available), without affecting the
//               original model; and when the result is done it may be
//               retrieved from this object.
////////////////////////////////////////////////////////////////////

3926 9 AsyncTask 0 2049 9 AsyncTask 9 AsyncTask 0 0 0 0 0 0 0 0 0 0 0 0 434
////////////////////////////////////////////////////////////////////
//       Class : AsyncTask
// Description : This class represents a concrete task performed by an
//               AsyncManager.  Normally, you would subclass from this
//               class, and override do_task(), to define the
//               functionality you wish to have the task perform.
////////////////////////////////////////////////////////////////////

3927 16 ModelLoadRequest 0 141313 16 ModelLoadRequest 16 ModelLoadRequest 0 0 0 1 3466 3473 0 6 3467 3468 3469 3470 3471 3472 0 0 1 0 3926 0 0 0 0 415
////////////////////////////////////////////////////////////////////
//       Class : ModelLoadRequest
// Description : A class object that manages a single asynchronous
//               model load request.  Create a new ModelLoadRequest,
//               and add it to the loader via load_async(), to begin
//               an asynchronous load.
////////////////////////////////////////////////////////////////////

3928 9 ModelNode 0 141313 9 ModelNode 9 ModelNode 0 0 0 1 3474 3481 0 6 3475 3476 3477 3478 3479 3480 0 0 1 0 3853 0 0 0 1 3929 683
////////////////////////////////////////////////////////////////////
//       Class : ModelNode
// Description : This node is placed at key points within the scene
//               graph to indicate the roots of "models": subtrees
//               that are conceptually to be treated as a single unit,
//               like a car or a room, for instance.  It doesn't
//               affect rendering or any other operations; it's
//               primarily useful as a high-level model indication.
//
//               ModelNodes are created in response to a <Model> { 1 }
//               flag within an egg file.
////////////////////////////////////////////////////////////////////

3929 17 PreserveTransform 0 794624 28 ModelNode::PreserveTransform 28 ModelNode::PreserveTransform 3928 0 0 0 0 0 0 0 0 0 5 7 PT_none 18 ModelNode::PT_none 0 8 PT_local 19 ModelNode::PT_local 1 6 PT_net 17 ModelNode::PT_net 2 12 PT_drop_node 23 ModelNode::PT_drop_node 3 11 PT_no_touch 22 ModelNode::PT_no_touch 4 0 0

3930 9 ModelRoot 0 141313 9 ModelRoot 9 ModelRoot 0 0 0 1 3482 3493 0 8 3483 3484 3485 3486 3487 3490 3491 3492 0 0 1 0 3928 0 0 0 1 3931 561
////////////////////////////////////////////////////////////////////
//       Class : ModelRoot
// Description : A node of this type is created automatically at the
//               root of each model file that is loaded.  It may
//               eventually contain some information about the
//               contents of the model; at the moment, it contains no
//               special information, but can be used as a flag to
//               indicate the presence of a loaded model file.
////////////////////////////////////////////////////////////////////

3931 14 ModelReference 0 403457 25 ModelRoot::ModelReference 25 ModelRoot::ModelReference 3930 0 0 1 3488 3489 0 0 0 0 1 0 3857 0 0 0 0 60
// This class is used to unify references to the same model.

3932 9 ModelPool 0 141313 9 ModelPool 9 ModelPool 0 0 0 0 3503 0 9 3494 3495 3496 3497 3498 3499 3500 3501 3502 0 0 0 0 0 1197
////////////////////////////////////////////////////////////////////
//       Class : ModelPool
// Description : This class unifies all references to the same
//               filename, so that multiple attempts to load the same
//               model will return the same pointer.  Note that the
//               default behavior is thus to make instances: use with
//               caution.  Use the copy_subgraph() method on Node (or
//               use NodePath::copy_to) to make modifiable copies of
//               the node.
//
//               Unlike TexturePool, this class does not automatically
//               resolve the model filenames before loading, so a
//               relative path and an absolute path to the same model
//               will appear to be different filenames.
//
//               However, see the Loader class, which is now the
//               preferred interface for loading models.  The Loader
//               class can resolve filenames, supports threaded
//               loading, and can automatically consult the ModelPool,
//               according to the supplied LoaderOptions.
////////////////////////////////////////////////////////////////////

3933 16 ModelSaveRequest 0 141313 16 ModelSaveRequest 16 ModelSaveRequest 0 0 0 1 3504 3512 0 7 3505 3506 3507 3508 3509 3510 3511 0 0 1 0 3926 0 0 0 0 415
////////////////////////////////////////////////////////////////////
//       Class : ModelSaveRequest
// Description : A class object that manages a single asynchronous
//               model save request.  Create a new ModelSaveRequest,
//               and add it to the loader via save_async(), to begin
//               an asynchronous save.
////////////////////////////////////////////////////////////////////

3934 18 NodePathCollection 0 26625 18 NodePathCollection 18 NodePathCollection 0 0 0 1 3513 3515 0 39 3514 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 1 4392 0 0 0 0 403
////////////////////////////////////////////////////////////////////
//       Class : NodePathCollection
// Description : This is a set of zero or more NodePaths.  It's handy
//               for returning from functions that need to return
//               multiple NodePaths (for instance,
//               NodePaths::get_children).
////////////////////////////////////////////////////////////////////

3935 13 TextureAttrib 0 141313 13 TextureAttrib 13 TextureAttrib 0 0 0 0 3581 0 27 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3 4393 4394 4395 0 1 0 3840 0 0 0 0 336
////////////////////////////////////////////////////////////////////
//       Class : TextureAttrib
// Description : Indicates the set of TextureStages and their
//               associated Textures that should be applied to (or
//               removed from) a node.
////////////////////////////////////////////////////////////////////

3936 12 TexGenAttrib 0 75777 12 TexGenAttrib 12 TexGenAttrib 0 0 0 0 0 0 14 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 0 0 1 0 3840 0 0 0 0 530
////////////////////////////////////////////////////////////////////
//       Class : TexGenAttrib
// Description : Computes texture coordinates for geometry
//               automatically based on vertex position and/or normal.
//               This can be used to implement reflection and/or
//               refraction maps, for instance to make shiny surfaces,
//               as well as other special effects such as projective
//               texturing.
////////////////////////////////////////////////////////////////////

3937 12 OccluderNode 0 75777 12 OccluderNode 12 OccluderNode 0 0 0 1 3596 2486 0 8 3597 3598 3599 3600 3601 3602 3603 3604 1 4396 0 1 0 3853 0 0 0 0 524
////////////////////////////////////////////////////////////////////
//       Class : OccluderNode 
// Description : A node in the scene graph that can hold an 
//               occluder polygon, which must be a rectangle.  When
//               the occluder is activated with something like
//               render.set_occluder(), then objects whose bouding
//               volume lies entirely behind the occluder will not be
//               rendered.
////////////////////////////////////////////////////////////////////

3938 14 OccluderEffect 0 141313 14 OccluderEffect 14 OccluderEffect 0 0 0 0 3613 0 8 3605 3606 3607 3608 3609 3610 3611 3612 1 4397 0 1 0 3851 0 0 0 0 602
////////////////////////////////////////////////////////////////////
//       Class : OccluderEffect
// Description : This functions similarly to a LightAttrib or
//               ClipPlaneAttrib.  It indicates the set of occluders
//               that modify the geometry at this level and below.
//               Unlike a ClipPlaneAttrib, an OccluderEffect takes
//               effect immediately when it is encountered during
//               traversal, and thus can only add occluders; it may
//               not remove them.
////////////////////////////////////////////////////////////////////

3939 13 PolylightNode 0 141313 13 PolylightNode 13 PolylightNode 0 0 0 1 3614 3651 0 36 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 0 0 1 0 3853 0 0 0 2 3940 3941 201
////////////////////////////////////////////////////////////////////
//       Class : PolylightNode
// Description : A PolylightNode
////////////////////////////////////////////////////////////////////

3940 12 Flicker_Type 0 794624 27 PolylightNode::Flicker_Type 27 PolylightNode::Flicker_Type 3939 0 0 0 0 0 0 0 0 0 3 7 FRANDOM 22 PolylightNode::FRANDOM 0 4 FSIN 19 PolylightNode::FSIN 1 7 FCUSTOM 22 PolylightNode::FCUSTOM 2 0 0

3941 16 Attenuation_Type 0 794624 31 PolylightNode::Attenuation_Type 31 PolylightNode::Attenuation_Type 3939 0 0 0 0 0 0 0 0 0 2 7 ALINEAR 22 PolylightNode::ALINEAR 0 10 AQUADRATIC 25 PolylightNode::AQUADRATIC 1 0 0

3942 15 PolylightEffect 0 141313 15 PolylightEffect 15 PolylightEffect 0 0 0 0 3663 0 11 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 0 0 1 0 3851 0 0 0 1 3943 559
////////////////////////////////////////////////////////////////////
//       Class : PolylightEffect
// Description : A PolylightEffect can be used on a node to define a
//               LightGroup  for that node. A LightGroup contains 
//               PolylightNodes which are essentially nodes that add 
//               color to the polygons of a model based on distance.
//               PolylightNode is a cheap way to get lighting effects
//               specially for night scenes
////////////////////////////////////////////////////////////////////

3943 11 ContribType 0 794624 28 PolylightEffect::ContribType 28 PolylightEffect::ContribType 3942 0 0 0 0 0 0 0 0 0 2 11 CT_proximal 28 PolylightEffect::CT_proximal 0 6 CT_all 23 PolylightEffect::CT_all 1 0 0

3944 11 ShaderInput 0 75777 11 ShaderInput 11 ShaderInput 0 0 0 1 3665 0 0 9 3664 3666 3667 3668 3669 3670 3671 3672 3673 0 0 1 0 3841 0 0 0 1 3945 331
////////////////////////////////////////////////////////////////////
//       Class : ShaderInput
// Description : This is a small container class that can hold any
//               one of the value types that can be passed as input
//               to a shader.
////////////////////////////////////////////////////////////////////

3945 15 ShaderInputType 0 794624 28 ShaderInput::ShaderInputType 28 ShaderInput::ShaderInputType 3944 0 0 0 0 0 0 0 0 0 4 9 M_invalid 22 ShaderInput::M_invalid 0 9 M_texture 22 ShaderInput::M_texture 1 10 M_nodepath 23 ShaderInput::M_nodepath 2 9 M_numeric 22 ShaderInput::M_numeric 3 0 0

3946 12 ShaderAttrib 0 141313 12 ShaderAttrib 12 ShaderAttrib 0 0 0 0 3707 0 33 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 0 0 1 0 3840 0 0 0 0 185
////////////////////////////////////////////////////////////////////
//       Class : ShaderAttrib
// Description : 
////////////////////////////////////////////////////////////////////

3947 16 ShowBoundsEffect 0 141313 16 ShowBoundsEffect 16 ShowBoundsEffect 0 0 0 0 3711 0 3 3708 3709 3710 0 0 1 0 3851 0 0 0 0 412
////////////////////////////////////////////////////////////////////
//       Class : ShowBoundsEffect
// Description : Applied to a GeomNode to cause a visible bounding
//               volume to be drawn for this node.  This is generally
//               used only during development to help identify
//               bounding volume issues.
////////////////////////////////////////////////////////////////////

3948 18 TexProjectorEffect 0 75777 18 TexProjectorEffect 18 TexProjectorEffect 0 0 0 0 0 0 9 3712 3713 3714 3715 3716 3717 3718 3719 3720 0 0 1 0 3851 0 0 0 0 1911
////////////////////////////////////////////////////////////////////
//       Class : TexProjectorEffect
// Description : This effect automatically applies a computed texture
//               matrix to the specified texture stage, according to
//               the relative position of two specified nodes.
//
//               The relative transform from the "from" node to the
//               "to" node is applied directly to the texture matrix
//               each frame.  If the "to" node happens to be a
//               LensNode, its lens projection matrix is applied as
//               well.
//
//               This can be used to apply a number of special
//               effects.  Fundamentally, it may simply be used to
//               provide a separate PandaNode that may be adjusted
//               (e.g. via a LerpInterval) in order to easily apply a
//               linear transformation to an object's texture
//               coordinates (rather than having to explicitly call
//               NodePath.set_tex_transform() each frame).
//
//               In a more sophisticated case, the TexProjectorEffect
//               is particularly useful in conjunction with a
//               TexGenAttrib that specifies a mode of
//               M_world_position (which copies the world position of
//               each vertex to the texture coordinates).  Then the
//               TexProjector can be used to convert these world
//               coordinates to the relative coordinates of a
//               particular node, causing (for instance) a texture to
//               appear to follow a node around as it moves through
//               the world.  With a LensNode, you can project a
//               texture onto the walls, for instance to apply a
//               flashlight effect or an image-based shadow.
////////////////////////////////////////////////////////////////////

3949 13 ScissorEffect 0 141313 13 ScissorEffect 13 ScissorEffect 0 0 0 0 3731 0 10 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 2 4398 4399 0 1 0 3851 0 0 0 0 456
////////////////////////////////////////////////////////////////////
//       Class : ScissorEffect
// Description : This provides a higher-level wrapper around
//               ScissorAttrib.  It allows for the scissor region to
//               be defined via points relative to the current node,
//               and also performs culling based on the scissor
//               region.
////////////////////////////////////////////////////////////////////

3950 17 SceneGraphReducer 0 26625 17 SceneGraphReducer 17 SceneGraphReducer 0 0 0 1 3732 3733 0 17 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 0 0 0 0 4 3951 3952 3953 3954 610
////////////////////////////////////////////////////////////////////
//       Class : SceneGraphReducer
// Description : An interface for simplifying ("flattening") scene
//               graphs by eliminating unneeded nodes and collapsing
//               out unneeded state changes and transforms.
//
//               This class is designed so that it may be inherited
//               from and specialized, if needed, to fine-tune the
//               flattening behavior, but normally the default
//               behavior is sufficient.
////////////////////////////////////////////////////////////////////

3951 11 AttribTypes 0 794624 30 SceneGraphReducer::AttribTypes 30 SceneGraphReducer::AttribTypes 3950 0 0 0 0 0 0 0 0 0 8 12 TT_transform 31 SceneGraphReducer::TT_transform 1 8 TT_color 27 SceneGraphReducer::TT_color 2 14 TT_color_scale 33 SceneGraphReducer::TT_color_scale 4 13 TT_tex_matrix 32 SceneGraphReducer::TT_tex_matrix 8 13 TT_clip_plane 32 SceneGraphReducer::TT_clip_plane 16 12 TT_cull_face 31 SceneGraphReducer::TT_cull_face 32 22 TT_apply_texture_color 41 SceneGraphReducer::TT_apply_texture_color 64 8 TT_other 27 SceneGraphReducer::TT_other 128 0 0

3952 15 CombineSiblings 0 794624 34 SceneGraphReducer::CombineSiblings 34 SceneGraphReducer::CombineSiblings 3950 0 0 0 0 0 0 0 0 0 4 12 CS_geom_node 31 SceneGraphReducer::CS_geom_node 1 16 CS_within_radius 35 SceneGraphReducer::CS_within_radius 2 8 CS_other 27 SceneGraphReducer::CS_other 4 10 CS_recurse 29 SceneGraphReducer::CS_recurse 8 0 0

3953 17 CollectVertexData 0 794624 36 SceneGraphReducer::CollectVertexData 36 SceneGraphReducer::CollectVertexData 3950 0 0 0 0 0 0 0 0 0 8 8 CVD_name 27 SceneGraphReducer::CVD_name 1 9 CVD_model 28 SceneGraphReducer::CVD_model 2 13 CVD_transform 32 SceneGraphReducer::CVD_transform 4 17 CVD_avoid_dynamic 36 SceneGraphReducer::CVD_avoid_dynamic 8 17 CVD_one_node_only 36 SceneGraphReducer::CVD_one_node_only 16 10 CVD_format 29 SceneGraphReducer::CVD_format 32 14 CVD_usage_hint 33 SceneGraphReducer::CVD_usage_hint 64 18 CVD_animation_type 37 SceneGraphReducer::CVD_animation_type 128 0 0

3954 14 MakeNonindexed 0 794624 33 SceneGraphReducer::MakeNonindexed 33 SceneGraphReducer::MakeNonindexed 3950 0 0 0 0 0 0 0 0 0 3 17 MN_composite_only 36 SceneGraphReducer::MN_composite_only 1 17 MN_avoid_animated 36 SceneGraphReducer::MN_avoid_animated 2 16 MN_avoid_dynamic 35 SceneGraphReducer::MN_avoid_dynamic 4 0 0

3955 22 TextureStageCollection 0 26625 22 TextureStageCollection 22 TextureStageCollection 0 0 0 1 3751 3753 0 18 3752 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 1 4400 0 0 0 0 195
////////////////////////////////////////////////////////////////////
//       Class : TextureStageCollection
// Description : 
////////////////////////////////////////////////////////////////////

3956 10 PortalNode 0 75777 10 PortalNode 10 PortalNode 0 0 0 1 3773 2486 0 24 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 1 4401 0 1 0 3853 0 0 0 0 483
////////////////////////////////////////////////////////////////////
//       Class : PortalNode 
//       Description : A node in the scene graph that can hold a 
//                     Portal Polygon, which is a rectangle. Other 
//                     types of polygons are not supported for
//                     now. It also holds a PT(PandaNode) Cell that 
//                     this portal is connected to
////////////////////////////////////////////////////////////////////

3957 19 RescaleNormalAttrib 0 141313 19 RescaleNormalAttrib 19 RescaleNormalAttrib 0 0 0 0 3803 0 5 3798 3799 3800 3801 3802 0 0 1 0 3840 0 0 0 1 3958 231
////////////////////////////////////////////////////////////////////
//       Class : RescaleNormalAttrib
// Description : Specifies how polygons are to be drawn.
////////////////////////////////////////////////////////////////////

3958 4 Mode 0 794624 25 RescaleNormalAttrib::Mode 25 RescaleNormalAttrib::Mode 3957 0 0 0 0 0 0 0 0 0 4 6 M_none 27 RescaleNormalAttrib::M_none 0 9 M_rescale 30 RescaleNormalAttrib::M_rescale 1 11 M_normalize 32 RescaleNormalAttrib::M_normalize 2 6 M_auto 27 RescaleNormalAttrib::M_auto 3 0 0

3959 13 ScissorAttrib 0 141313 13 ScissorAttrib 13 ScissorAttrib 0 0 0 0 3810 0 6 3804 3805 3806 3807 3808 3809 0 0 1 0 3840 0 0 0 0 852
////////////////////////////////////////////////////////////////////
//       Class : ScissorAttrib
// Description : This restricts rendering to within a rectangular
//               region of the scene, without otherwise affecting the
//               viewport or lens properties.  Geometry that falls
//               outside the scissor region is not rendered.  It is
//               akin to the OpenGL glScissor() function.
//
//               The ScissorAttrib always specifies its region
//               relative to its enclosing DisplayRegion, in screen
//               space, and performs no culling.
//
//               See ScissorEffect if you wish to define a
//               region relative to 2-D or 3-D coordinates in the
//               scene graph, with culling.
////////////////////////////////////////////////////////////////////

3960 16 ShadeModelAttrib 0 141313 16 ShadeModelAttrib 16 ShadeModelAttrib 0 0 0 0 3816 0 5 3811 3812 3813 3814 3815 0 0 1 0 3840 0 0 0 1 3961 295
////////////////////////////////////////////////////////////////////
//       Class : ShadeModelAttrib
// Description : Specifies whether flat shading (per-polygon) or
//               smooth shading (per-vertex) is in effect.
////////////////////////////////////////////////////////////////////

3961 4 Mode 0 794624 22 ShadeModelAttrib::Mode 22 ShadeModelAttrib::Mode 3960 0 0 0 0 0 0 0 0 0 2 6 M_flat 24 ShadeModelAttrib::M_flat 0 8 M_smooth 26 ShadeModelAttrib::M_smooth 1 0 0

3962 13 StencilAttrib 0 141313 13 StencilAttrib 13 StencilAttrib 0 0 0 0 3826 0 9 3817 3818 3819 3820 3821 3822 3823 3824 3825 0 0 1 0 3840 0 0 0 4 3963 3964 3965 3966 566
////////////////////////////////////////////////////////////////////
//       Class : StencilAttrib
// Description : A StencilAttrib is a collection of all stencil render
//               states.  The render states in a StencilAttrib are 
//               read-only.  A StencilAttrib is created with make or 
//               make_2_sided.  To determine if two sided stencil is 
//               supported, call the function GraphicsStateGuardian::
//               get_supports_two_sided_stencil.
////////////////////////////////////////////////////////////////////

3963 18 StencilRenderState 0 794624 33 StencilAttrib::StencilRenderState 33 StencilAttrib::StencilRenderState 3962 0 0 0 0 0 0 0 0 0 17 16 SRS_front_enable 31 StencilAttrib::SRS_front_enable 0 15 SRS_back_enable 30 StencilAttrib::SRS_back_enable 1 29 SRS_front_comparison_function 44 StencilAttrib::SRS_front_comparison_function 2 32 SRS_front_stencil_fail_operation 47 StencilAttrib::SRS_front_stencil_fail_operation 3 39 SRS_front_stencil_pass_z_fail_operation 54 StencilAttrib::SRS_front_stencil_pass_z_fail_operation 4 39 SRS_front_stencil_pass_z_pass_operation 54 StencilAttrib::SRS_front_stencil_pass_z_pass_operation 5 13 SRS_reference 28 StencilAttrib::SRS_reference 6 13 SRS_read_mask 28 StencilAttrib::SRS_read_mask 7 14 SRS_write_mask 29 StencilAttrib::SRS_write_mask 8 28 SRS_back_comparison_function 43 StencilAttrib::SRS_back_comparison_function 9 31 SRS_back_stencil_fail_operation 46 StencilAttrib::SRS_back_stencil_fail_operation 10 38 SRS_back_stencil_pass_z_fail_operation 53 StencilAttrib::SRS_back_stencil_pass_z_fail_operation 11 38 SRS_back_stencil_pass_z_pass_operation 53 StencilAttrib::SRS_back_stencil_pass_z_pass_operation 12 9 SRS_clear 24 StencilAttrib::SRS_clear 13 15 SRS_clear_value 30 StencilAttrib::SRS_clear_value 14 9 SRS_total 24 StencilAttrib::SRS_total 15 9 SRS_first 24 StencilAttrib::SRS_first 0 0 77
// enums are duplicated here from class StencilRenderStates for use in Python

3964 25 StencilComparisonFunction 0 794624 40 StencilAttrib::StencilComparisonFunction 40 StencilAttrib::StencilComparisonFunction 3962 0 0 0 0 0 0 0 0 0 8 9 SCF_never 24 StencilAttrib::SCF_never 0 13 SCF_less_than 28 StencilAttrib::SCF_less_than 1 9 SCF_equal 24 StencilAttrib::SCF_equal 2 22 SCF_less_than_or_equal 37 StencilAttrib::SCF_less_than_or_equal 3 16 SCF_greater_than 31 StencilAttrib::SCF_greater_than 4 13 SCF_not_equal 28 StencilAttrib::SCF_not_equal 5 25 SCF_greater_than_or_equal 40 StencilAttrib::SCF_greater_than_or_equal 6 10 SCF_always 25 StencilAttrib::SCF_always 7 0 0

3965 16 StencilOperation 0 794624 31 StencilAttrib::StencilOperation 31 StencilAttrib::StencilOperation 3962 0 0 0 0 0 0 0 0 0 8 7 SO_keep 22 StencilAttrib::SO_keep 0 7 SO_zero 22 StencilAttrib::SO_zero 1 10 SO_replace 25 StencilAttrib::SO_replace 2 12 SO_increment 27 StencilAttrib::SO_increment 3 12 SO_decrement 27 StencilAttrib::SO_decrement 4 9 SO_invert 24 StencilAttrib::SO_invert 5 21 SO_increment_saturate 36 StencilAttrib::SO_increment_saturate 6 21 SO_decrement_saturate 36 StencilAttrib::SO_decrement_saturate 7 0 0

3966 11 StencilMask 0 794624 26 StencilAttrib::StencilMask 26 StencilAttrib::StencilMask 3962 0 0 0 0 0 0 0 0 0 1 10 SM_default 25 StencilAttrib::SM_default -1 0 0

3967 10 ShaderPool 0 141313 10 ShaderPool 10 ShaderPool 0 0 0 0 3836 0 9 3827 3828 3829 3830 3831 3832 3833 3834 3835 0 0 0 0 0 406
////////////////////////////////////////////////////////////////////
//       Class : ShaderPool
// Description : This is the preferred interface for loading shaders for
//               the TextNode system.  It is similar to ModelPool and
//               TexturePool in that it unifies references to the same
//               filename.
////////////////////////////////////////////////////////////////////

3968 22 TransformState const * 0 8576 22 TransformState const * 22 TransformState const * 0 0 3969 0 0 0 0 0 0 0 0 0 0

3969 20 TransformState const 0 8832 20 TransformState const 20 TransformState const 0 0 3837 0 0 0 0 0 0 0 0 0 0

3970 4 bool 0 8194 4 bool 4 bool 0 4 0 0 0 0 0 0 0 0 0 0 0

3971 3 int 0 8194 3 int 3 int 0 1 0 0 0 0 0 0 0 0 0 0 0

3972 12 unsigned int 0 8198 12 unsigned int 12 unsigned int 0 1 0 0 0 0 0 0 0 0 0 0 0

3973 18 LVecBase3f const * 0 8576 18 LVecBase3f const * 18 LVecBase3f const * 0 0 3974 0 0 0 0 0 0 0 0 0 0

3974 16 LVecBase3f const 0 8832 16 LVecBase3f const 16 LVecBase3f const 0 0 3975 0 0 0 0 0 0 0 0 0 0

3975 10 LVecBase3f 0 2048 10 LVecBase3f 10 LVecBase3f 0 0 0 0 0 0 0 0 0 0 0 0 754
// Filename: lvecBase3_src.h
// Created by:  drose (08Mar00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LVecBase3
// Description : This is the base class for all three-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

3976 20 LQuaternionf const * 0 8576 20 LQuaternionf const * 20 LQuaternionf const * 0 0 3977 0 0 0 0 0 0 0 0 0 0

3977 18 LQuaternionf const 0 8832 18 LQuaternionf const 18 LQuaternionf const 0 0 3978 0 0 0 0 0 0 0 0 0 0

3978 12 LQuaternionf 0 2048 12 LQuaternionf 12 LQuaternionf 0 0 0 0 0 0 0 0 0 0 0 0 719
// Filename: lquaternion_src.h
// Created by:  frang (06Jun00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : FLOATNAME(LQuaternion)
// Description : This is the base quaternion class
////////////////////////////////////////////////////////////////////

3979 5 float 0 8194 5 float 5 float 0 2 0 0 0 0 0 0 0 0 0 0 0

3980 17 LMatrix4f const * 0 8576 17 LMatrix4f const * 17 LMatrix4f const * 0 0 3981 0 0 0 0 0 0 0 0 0 0

3981 15 LMatrix4f const 0 8832 15 LMatrix4f const 15 LMatrix4f const 0 0 3982 0 0 0 0 0 0 0 0 0 0

3982 9 LMatrix4f 0 2048 9 LMatrix4f 9 LMatrix4f 0 0 0 0 0 0 0 3 4402 4403 4404 0 0 0 0 215
////////////////////////////////////////////////////////////////////
//       Class : LMatrix4
// Description : This is a 4-by-4 transform matrix.
////////////////////////////////////////////////////////////////////

3983 18 LVecBase2f const * 0 8576 18 LVecBase2f const * 18 LVecBase2f const * 0 0 3984 0 0 0 0 0 0 0 0 0 0

3984 16 LVecBase2f const 0 8832 16 LVecBase2f const 16 LVecBase2f const 0 0 3985 0 0 0 0 0 0 0 0 0 0

3985 10 LVecBase2f 0 2048 10 LVecBase2f 10 LVecBase2f 0 0 0 0 0 0 0 0 0 0 0 0 752
// Filename: lvecBase2_src.h
// Created by:  drose (08Mar00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LVecBase2
// Description : This is the base class for all two-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

3986 17 LMatrix3f const * 0 8576 17 LMatrix3f const * 17 LMatrix3f const * 0 0 3987 0 0 0 0 0 0 0 0 0 0

3987 15 LMatrix3f const 0 8832 15 LMatrix3f const 15 LMatrix3f const 0 0 3988 0 0 0 0 0 0 0 0 0 0

3988 9 LMatrix3f 0 2048 9 LMatrix3f 9 LMatrix3f 0 0 0 0 0 0 0 4 4405 4406 4407 4408 0 0 0 0 462
////////////////////////////////////////////////////////////////////
//       Class : LMatrix3
// Description : This is a 3-by-3 transform matrix.  It typically will
//               represent either a rotation-and-scale (no
//               translation) matrix in 3-d, or a full affine matrix
//               (rotation, scale, translation) in 2-d, e.g. for a
//               texture matrix.
////////////////////////////////////////////////////////////////////

3989 16 LPoint3f const * 0 8576 16 LPoint3f const * 16 LPoint3f const * 0 0 3990 0 0 0 0 0 0 0 0 0 0

3990 14 LPoint3f const 0 8832 14 LPoint3f const 14 LPoint3f const 0 0 3991 0 0 0 0 0 0 0 0 0 0

3991 8 LPoint3f 0 2048 8 LPoint3f 8 LPoint3f 0 0 0 0 0 0 0 0 0 0 0 0 1083
// Filename: lpoint3_src.h
// Created by:  drose (25Sep99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LPoint3
// Description : This is a three-component point in space (as opposed
//               to a three-component vector, which represents a
//               direction and a distance).  Some of the methods are
//               slightly different between LPoint3 and LVector3; in
//               particular, subtraction of two points yields a
//               vector, while addition of a vector and a point yields
//               a point.
////////////////////////////////////////////////////////////////////

3992 12 LVecBase2f * 0 8576 12 LVecBase2f * 12 LVecBase2f * 0 0 3985 0 0 0 0 0 0 0 0 0 0

3993 11 LMatrix3f * 0 8576 11 LMatrix3f * 11 LMatrix3f * 0 0 3988 0 0 0 0 0 0 0 0 0 0

3994 4 void 0 8194 4 void 4 void 0 6 0 0 0 0 0 0 0 0 0 0 0

3995 10 PyObject * 0 8576 10 PyObject * 10 PyObject * 0 0 3996 0 0 0 0 0 0 0 0 0 0

3996 8 PyObject 0 2048 8 PyObject 8 PyObject 0 0 0 0 0 0 0 0 0 0 0 0 0

3997 9 ostream * 0 8576 9 ostream * 9 ostream * 0 0 3998 0 0 0 0 0 0 0 0 0 0

3998 7 ostream 0 2048 7 ostream 7 ostream 0 0 0 0 0 0 0 0 0 0 0 0 0

3999 10 TypeHandle 0 2048 10 TypeHandle 10 TypeHandle 0 0 0 0 0 0 0 0 0 0 0 0 1098
////////////////////////////////////////////////////////////////////
//       Class : TypeHandle
// Description : TypeHandle is the identifier used to differentiate
//               C++ class types.  Any C++ classes that inherit from
//               some base class, and must be differentiated at run
//               time, should store a static TypeHandle object that
//               can be queried through a static member function
//               named get_class_type().  Most of the time, it is also
//               desirable to inherit from TypedObject, which provides
//               some virtual functions to return the TypeHandle for a
//               particular instance.
//
//               At its essence, a TypeHandle is simply a unique
//               identifier that is assigned by the TypeRegistry.  The
//               TypeRegistry stores a tree of TypeHandles, so that
//               ancestry of a particular type may be queried, and the
//               type name may be retrieved for run-time display.
////////////////////////////////////////////////////////////////////

4000 12 TypeHandle * 0 8576 12 TypeHandle * 12 TypeHandle * 0 0 3999 0 0 0 0 0 0 0 0 0 0

4001 28 RenderAttribRegistry const * 0 8576 28 RenderAttribRegistry const * 28 RenderAttribRegistry const * 0 0 4002 0 0 0 0 0 0 0 0 0 0

4002 26 RenderAttribRegistry const 0 8832 26 RenderAttribRegistry const 26 RenderAttribRegistry const 0 0 3839 0 0 0 0 0 0 0 0 0 0

4003 22 RenderAttribRegistry * 0 8576 22 RenderAttribRegistry * 22 RenderAttribRegistry * 0 0 3839 0 0 0 0 0 0 0 0 0 0

4004 18 RenderAttrib const 0 8832 18 RenderAttrib const 18 RenderAttrib const 0 0 3840 0 0 0 0 0 0 0 0 0 0

4005 20 RenderAttrib const * 0 8576 20 RenderAttrib const * 20 RenderAttrib const * 0 0 4004 0 0 0 0 0 0 0 0 0 0

4006 20 DeletedBufferChain * 0 8576 20 DeletedBufferChain * 20 DeletedBufferChain * 0 0 4007 0 0 0 0 0 0 0 0 0 0

4007 18 DeletedBufferChain 0 2048 18 DeletedBufferChain 18 DeletedBufferChain 0 0 0 0 0 0 0 0 0 0 0 0 911
////////////////////////////////////////////////////////////////////
//       Class : DeletedBufferChain
// Description : This template class can be used to provide faster
//               allocation/deallocation for many Panda objects.  It
//               works by maintaining a linked list of deleted buffers
//               that are all of the same size; when a new object is
//               allocated that matches that size, the same space is
//               just reused.
//
//               This class manages untyped buffers of a fixed size.
//               It can be used directly; or it also serves as a
//               backbone for DeletedChain, which is a template class
//               that manages object allocations.
//
//               Use MemoryHook to get a new DeletedBufferChain of a
//               particular size.
////////////////////////////////////////////////////////////////////

4008 19 RenderState const * 0 8576 19 RenderState const * 19 RenderState const * 0 0 4009 0 0 0 0 0 0 0 0 0 0

4009 17 RenderState const 0 8832 17 RenderState const 17 RenderState const 0 0 3847 0 0 0 0 0 0 0 0 0 0

4010 24 RenderModeAttrib const * 0 8576 24 RenderModeAttrib const * 24 RenderModeAttrib const * 0 0 4011 0 0 0 0 0 0 0 0 0 0

4011 22 RenderModeAttrib const 0 8832 22 RenderModeAttrib const 22 RenderModeAttrib const 0 0 3844 0 0 0 0 0 0 0 0 0 0

4012 14 TextureStage * 0 8576 14 TextureStage * 14 TextureStage * 0 0 4013 0 0 0 0 0 0 0 0 0 0

4013 12 TextureStage 0 2048 12 TextureStage 12 TextureStage 0 0 0 0 0 0 0 0 0 0 0 0 600
////////////////////////////////////////////////////////////////////
//       Class : TextureStage
// Description : Defines the properties of a named stage of the
//               multitexture pipeline.  The TextureAttrib will
//               associated a number of these stages with Texture
//               objects, and the GSG will render geometry by sorting
//               all of the currently active TextureStages in order
//               and then issuing the appropriate rendering calls to
//               activate them.
////////////////////////////////////////////////////////////////////

4014 23 TexMatrixAttrib const * 0 8576 23 TexMatrixAttrib const * 23 TexMatrixAttrib const * 0 0 4015 0 0 0 0 0 0 0 0 0 0

4015 21 TexMatrixAttrib const 0 8832 21 TexMatrixAttrib const 21 TexMatrixAttrib const 0 0 3846 0 0 0 0 0 0 0 0 0 0

4016 15 CullTraverser * 0 8576 15 CullTraverser * 15 CullTraverser * 0 0 3897 0 0 0 0 0 0 0 0 0 0

4017 25 CullTraverserData const * 0 8576 25 CullTraverserData const * 25 CullTraverserData const * 0 0 4018 0 0 0 0 0 0 0 0 0 0

4018 23 CullTraverserData const 0 8832 23 CullTraverserData const 23 CullTraverserData const 0 0 3898 0 0 0 0 0 0 0 0 0 0

4019 23 AlphaTestAttrib const * 0 8576 23 AlphaTestAttrib const * 23 AlphaTestAttrib const * 0 0 4020 0 0 0 0 0 0 0 0 0 0

4020 21 AlphaTestAttrib const 0 8832 21 AlphaTestAttrib const 21 AlphaTestAttrib const 0 0 3848 0 0 0 0 0 0 0 0 0 0

4021 18 unsigned short int 0 8262 18 unsigned short int 18 unsigned short int 0 1 0 0 0 0 0 0 0 0 0 0 0

4022 23 AntialiasAttrib const * 0 8576 23 AntialiasAttrib const * 23 AntialiasAttrib const * 0 0 4023 0 0 0 0 0 0 0 0 0 0

4023 21 AntialiasAttrib const 0 8832 21 AntialiasAttrib const 21 AntialiasAttrib const 0 0 3849 0 0 0 0 0 0 0 0 0 0

4024 20 RenderEffect const * 0 8576 20 RenderEffect const * 20 RenderEffect const * 0 0 4025 0 0 0 0 0 0 0 0 0 0

4025 18 RenderEffect const 0 8832 18 RenderEffect const 18 RenderEffect const 0 0 3851 0 0 0 0 0 0 0 0 0 0

4026 21 RenderEffects const * 0 8576 21 RenderEffects const * 21 RenderEffects const * 0 0 4027 0 0 0 0 0 0 0 0 0 0

4027 19 RenderEffects const 0 8832 19 RenderEffects const 19 RenderEffects const 0 0 3852 0 0 0 0 0 0 0 0 0 0

4028 13 atomic string 0 2 13 atomic string 13 atomic string 0 7 0 0 0 0 0 0 0 0 0 0 0

4029 11 PandaNode * 0 8576 11 PandaNode * 11 PandaNode * 0 0 3853 0 0 0 0 0 0 0 0 0 0

4030 17 PandaNode const * 0 8576 17 PandaNode const * 17 PandaNode const * 0 0 4031 0 0 0 0 0 0 0 0 0 0

4031 15 PandaNode const 0 8832 15 PandaNode const 15 PandaNode const 0 0 3853 0 0 0 0 0 0 0 0 0 0

4032 8 Thread * 0 8576 8 Thread * 8 Thread * 0 0 4033 0 0 0 0 0 0 0 0 0 0

4033 6 Thread 0 2048 6 Thread 6 Thread 0 0 0 0 0 0 0 0 0 0 0 0 668
////////////////////////////////////////////////////////////////////
//       Class : Thread
// Description : A thread; that is, a lightweight process.  This is an
//               abstract base class; to use it, you must subclass
//               from it and redefine thread_main().
//
//               The thread itself will keep a reference count on the
//               Thread object while it is running; when the thread
//               returns from its root function, the Thread object
//               will automatically be destructed if no other pointers
//               are referencing it.
////////////////////////////////////////////////////////////////////

4034 32 vector< basic_string< char > > * 0 8576 32 vector< basic_string< char > > * 32 vector< basic_string< char > > * 0 0 4035 0 0 0 0 0 0 0 0 0 0

4035 13 vector_string 0 2048 30 vector< basic_string< char > > 30 vector< basic_string< char > > 0 0 0 0 0 0 0 0 0 0 0 0 0

4036 9 BitMask32 0 2048 27 BitMask< unsigned int, 32 > 27 BitMask< unsigned int, 32 > 0 0 0 0 0 0 0 0 0 0 0 0 0

4037 29 BitMask< unsigned int, 32 > * 0 8576 29 BitMask< unsigned int, 32 > * 29 BitMask< unsigned int, 32 > * 0 0 4036 0 0 0 0 0 0 0 0 0 0

4038 27 GraphicsStateGuardianBase * 0 8576 27 GraphicsStateGuardianBase * 27 GraphicsStateGuardianBase * 0 0 4039 0 0 0 0 0 0 0 0 0 0

4039 25 GraphicsStateGuardianBase 0 2048 25 GraphicsStateGuardianBase 25 GraphicsStateGuardianBase 0 0 0 0 0 0 0 1 4409 0 0 0 0 957
////////////////////////////////////////////////////////////////////
//       Class : GraphicsStateGuardianBase
// Description : This is a base class for the GraphicsStateGuardian
//               class, which is itself a base class for the various
//               GSG's for different platforms.  This class contains
//               all the function prototypes to support the
//               double-dispatch of GSG to geoms, transitions, etc.  It
//               lives in a separate class in its own package so we
//               can avoid circular build dependency problems.
//
//               GraphicsStateGuardians are not actually writable to
//               bam files, of course, but they may be passed as event
//               parameters, so they inherit from
//               TypedWritableReferenceCount instead of
//               TypedReferenceCount for that convenience.
////////////////////////////////////////////////////////////////////

4040 10 BoundsType 0 794624 26 BoundingVolume::BoundsType 26 BoundingVolume::BoundsType 4041 0 0 0 0 0 0 0 0 0 4 10 BT_default 26 BoundingVolume::BT_default 0 7 BT_best 23 BoundingVolume::BT_best 1 9 BT_sphere 25 BoundingVolume::BT_sphere 2 6 BT_box 22 BoundingVolume::BT_box 3 0 80
// This enum is used to control the automatic generation of bounding
// volumes.

4041 14 BoundingVolume 0 2048 14 BoundingVolume 14 BoundingVolume 0 0 0 0 0 0 0 0 0 0 0 0 596
////////////////////////////////////////////////////////////////////
//       Class : BoundingVolume
// Description : This is an abstract class for any volume in any sense
//               which can be said to define the locality of reference
//               of a node in a graph, along with all of its
//               descendants.  It is not necessarily a geometric
//               volume (although see GeometricBoundingVolume); this
//               is simply an abstract interface for bounds of any
//               sort.
////////////////////////////////////////////////////////////////////

4042 22 BoundingVolume const * 0 8576 22 BoundingVolume const * 22 BoundingVolume const * 0 0 4043 0 0 0 0 0 0 0 0 0 0

4043 20 BoundingVolume const 0 8832 20 BoundingVolume const 20 BoundingVolume const 0 0 4041 0 0 0 0 0 0 0 0 0 0

4044 11 UpdateSeq * 0 8576 11 UpdateSeq * 11 UpdateSeq * 0 0 4045 0 0 0 0 0 0 0 0 0 0

4045 9 UpdateSeq 0 2048 9 UpdateSeq 9 UpdateSeq 0 0 0 0 0 0 0 0 0 0 0 0 1140
////////////////////////////////////////////////////////////////////
//       Class : UpdateSeq
// Description : This is a sequence number that increments
//               monotonically.  It can be used to track cache
//               updates, or serve as a kind of timestamp for any
//               changing properties.
//
//               A special class is used instead of simply an int, so
//               we can elegantly handle such things as wraparound and
//               special cases.  There are two special cases.
//               Firstly, a sequence number is 'initial' when it is
//               first created.  This sequence is older than any other
//               sequence number.  Secondly, a sequence number may be
//               explicitly set to 'old'.  This is older than any
//               other sequence number except 'initial'.  Finally, we
//               have the explicit number 'fresh', which is newer
//               than any other sequence number.  All other sequences
//               are numeric and are monotonically increasing.
////////////////////////////////////////////////////////////////////

4046 7 Light * 0 8576 7 Light * 7 Light * 0 0 3913 0 0 0 0 0 0 0 0 0 0

4047 11 BamReader * 0 8576 11 BamReader * 11 BamReader * 0 0 4048 0 0 0 0 0 0 0 0 0 0

4048 9 BamReader 0 2048 9 BamReader 9 BamReader 0 0 0 0 0 0 0 0 0 0 0 0 1870
////////////////////////////////////////////////////////////////////
//       Class : BamReader
// Description : This is the fundamental interface for extracting
//               binary objects from a Bam file, as generated by a
//               BamWriter.
//
//               A Bam file can be thought of as a linear collection
//               of objects.  Each object is an instance of a class
//               that inherits, directly or indirectly, from
//               TypedWritable.  The objects may include pointers to
//               other objects within the Bam file; the BamReader
//               automatically manages these (with help from code
//               within each class) and restores the pointers
//               correctly.
//
//               This is the abstract interface and does not
//               specifically deal with disk files, but rather with a
//               DatagramGenerator of some kind, which is simply a
//               linear source of Datagrams.  It is probably from a
//               disk file, but it might conceivably be streamed
//               directly from a network or some such nonsense.
//
//               Bam files are most often used to store scene graphs
//               or subgraphs, and by convention they are given
//               filenames ending in the extension ".bam" when they
//               are used for this purpose.  However, a Bam file may
//               store any arbitrary list of TypedWritable objects;
//               in this more general usage, they are given filenames
//               ending in ".boo" to differentiate them from the more
//               common scene graph files.
//
//               See also BamFile, which defines a higher-level
//               interface to read and write Bam files on disk.
////////////////////////////////////////////////////////////////////

4049 15 TypedWritable * 0 8576 15 TypedWritable * 15 TypedWritable * 0 0 3854 0 0 0 0 0 0 0 0 0 0

4050 9 Namable * 0 8576 9 Namable * 9 Namable * 0 0 3855 0 0 0 0 0 0 0 0 0 0

4051 16 LinkedListNode * 0 8576 16 LinkedListNode * 16 LinkedListNode * 0 0 3856 0 0 0 0 0 0 0 0 0 0

4052 16 ReferenceCount * 0 8576 16 ReferenceCount * 16 ReferenceCount * 0 0 3857 0 0 0 0 0 0 0 0 0 0

4053 26 TransparencyAttrib const * 0 8576 26 TransparencyAttrib const * 26 TransparencyAttrib const * 0 0 4054 0 0 0 0 0 0 0 0 0 0

4054 24 TransparencyAttrib const 0 8832 24 TransparencyAttrib const 24 TransparencyAttrib const 0 0 3860 0 0 0 0 0 0 0 0 0 0

4055 10 NodePath * 0 8576 10 NodePath * 10 NodePath * 0 0 3862 0 0 0 0 0 0 0 0 0 0

4056 16 NodePath const * 0 8576 16 NodePath const * 16 NodePath const * 0 0 4057 0 0 0 0 0 0 0 0 0 0

4057 14 NodePath const 0 8832 14 NodePath const 14 NodePath const 0 0 3862 0 0 0 0 0 0 0 0 0 0

4058 20 NodePathCollection * 0 8576 20 NodePathCollection * 20 NodePathCollection * 0 0 3934 0 0 0 0 0 0 0 0 0 0

4059 10 LPoint3f * 0 8576 10 LPoint3f * 10 LPoint3f * 0 0 3991 0 0 0 0 0 0 0 0 0 0

4060 9 LVector3f 0 2048 9 LVector3f 9 LVector3f 0 0 0 0 0 0 0 0 0 0 0 0 1086
// Filename: lvector3_src.h
// Created by:  drose (24Sep99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LVector3
// Description : This is a three-component vector distance (as opposed
//               to a three-component point, which represents a
//               particular point in space).  Some of the methods are
//               slightly different between LPoint3 and LVector3; in
//               particular, subtraction of two points yields a
//               vector, while addition of a vector and a point yields
//               a point.
////////////////////////////////////////////////////////////////////

4061 11 LVector3f * 0 8576 11 LVector3f * 11 LVector3f * 0 0 4060 0 0 0 0 0 0 0 0 0 0

4062 12 LVecBase3f * 0 8576 12 LVecBase3f * 12 LVecBase3f * 0 0 3975 0 0 0 0 0 0 0 0 0 0

4063 14 LQuaternionf * 0 8576 14 LQuaternionf * 14 LQuaternionf * 0 0 3978 0 0 0 0 0 0 0 0 0 0

4064 11 LMatrix4f * 0 8576 11 LMatrix4f * 11 LMatrix4f * 0 0 3982 0 0 0 0 0 0 0 0 0 0

4065 17 LVector3f const * 0 8576 17 LVector3f const * 17 LVector3f const * 0 0 4066 0 0 0 0 0 0 0 0 0 0

4066 15 LVector3f const 0 8832 15 LVector3f const 15 LVector3f const 0 0 4060 0 0 0 0 0 0 0 0 0 0

4067 18 LVecBase4f const * 0 8576 18 LVecBase4f const * 18 LVecBase4f const * 0 0 4068 0 0 0 0 0 0 0 0 0 0

4068 16 LVecBase4f const 0 8832 16 LVecBase4f const 16 LVecBase4f const 0 0 4069 0 0 0 0 0 0 0 0 0 0

4069 10 LVecBase4f 0 2048 10 LVecBase4f 10 LVecBase4f 0 0 0 0 0 0 0 0 0 0 0 0 265
////////////////////////////////////////////////////////////////////
//       Class : LVecBase4
// Description : This is the base class for all three-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

4070 12 LVecBase4f * 0 8576 12 LVecBase4f * 12 LVecBase4f * 0 0 4069 0 0 0 0 0 0 0 0 0 0

4071 9 Texture * 0 8576 9 Texture * 9 Texture * 0 0 4072 0 0 0 0 0 0 0 0 0 0

4072 7 Texture 0 2048 7 Texture 7 Texture 0 0 0 0 0 0 0 0 0 0 0 0 1051
////////////////////////////////////////////////////////////////////
//       Class : Texture
// Description : Represents a texture object, which is typically a
//               single 2-d image but may also represent a 1-d or 3-d
//               texture image, or the six 2-d faces of a cube map
//               texture.
//
//               A texture's image data might be stored in system RAM
//               (see get_ram_image()) or its image may be represented
//               in texture memory on one or more
//               GraphicsStateGuardians (see prepare()), or both.  The
//               typical usage pattern is that a texture is loaded
//               from an image file on disk, which copies its image
//               data into system RAM; then the first time the texture
//               is rendered its image data is copied to texture
//               memory (actually, to the graphics API), and the
//               system RAM image is automatically freed.
////////////////////////////////////////////////////////////////////

4073 14 Shader const * 0 8576 14 Shader const * 14 Shader const * 0 0 4074 0 0 0 0 0 0 0 0 0 0

4074 12 Shader const 0 8832 12 Shader const 12 Shader const 0 0 4075 0 0 0 0 0 0 0 0 0 0

4075 6 Shader 0 2048 6 Shader 6 Shader 0 0 0 0 0 0 0 0 0 0 0 0 418
////////////////////////////////////////////////////////////////////
//       Class : Shader
//      Summary: The Shader class is meant to select the Shader Language,
//               select the available profile, compile the shader, and
//               finally compile and store the shader parameters
//               in the appropriate structure.
////////////////////////////////////////////////////////////////////

4076 20 InternalName const * 0 8576 20 InternalName const * 20 InternalName const * 0 0 4077 0 0 0 0 0 0 0 0 0 0

4077 18 InternalName const 0 8832 18 InternalName const 18 InternalName const 0 0 4078 0 0 0 0 0 0 0 0 0 0

4078 12 InternalName 0 2048 12 InternalName 12 InternalName 0 0 0 0 0 0 0 0 0 0 0 0 837
////////////////////////////////////////////////////////////////////
//       Class : InternalName
// Description : Encodes a string name in a hash table, mapping it to
//               a pointer.  This is used to tokenify names so they
//               may be used efficiently in low-level Panda
//               structures, for instance to differentiate the
//               multiple sets of texture coordinates that might be
//               stored on a Geom.
//
//               InternalNames are hierarchical, with the '.' used by
//               convention as a separator character.  You can
//               construct a single InternalName as a composition of
//               one or more other names, or by giving it a source
//               string directly.
////////////////////////////////////////////////////////////////////

4079 18 LVecBase2i const * 0 8576 18 LVecBase2i const * 18 LVecBase2i const * 0 0 4080 0 0 0 0 0 0 0 0 0 0

4080 16 LVecBase2i const 0 8832 16 LVecBase2i const 16 LVecBase2i const 0 0 4081 0 0 0 0 0 0 0 0 0 0

4081 10 LVecBase2i 0 2048 10 LVecBase2i 10 LVecBase2i 0 0 0 0 0 0 0 0 0 0 0 0 752
// Filename: lvecBase2_src.h
// Created by:  drose (08Mar00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LVecBase2
// Description : This is the base class for all two-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

4082 18 LVecBase3i const * 0 8576 18 LVecBase3i const * 18 LVecBase3i const * 0 0 4083 0 0 0 0 0 0 0 0 0 0

4083 16 LVecBase3i const 0 8832 16 LVecBase3i const 16 LVecBase3i const 0 0 4084 0 0 0 0 0 0 0 0 0 0

4084 10 LVecBase3i 0 2048 10 LVecBase3i 10 LVecBase3i 0 0 0 0 0 0 0 0 0 0 0 0 754
// Filename: lvecBase3_src.h
// Created by:  drose (08Mar00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LVecBase3
// Description : This is the base class for all three-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

4085 18 LVecBase4i const * 0 8576 18 LVecBase4i const * 18 LVecBase4i const * 0 0 4086 0 0 0 0 0 0 0 0 0 0

4086 16 LVecBase4i const 0 8832 16 LVecBase4i const 16 LVecBase4i const 0 0 4087 0 0 0 0 0 0 0 0 0 0

4087 10 LVecBase4i 0 2048 10 LVecBase4i 10 LVecBase4i 0 0 0 0 0 0 0 0 0 0 0 0 265
////////////////////////////////////////////////////////////////////
//       Class : LVecBase4
// Description : This is the base class for all three-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

4088 35 PointerToArray< LMatrix3f > const * 0 8576 35 PointerToArray< LMatrix3f > const * 35 PointerToArray< LMatrix3f > const * 0 0 4089 0 0 0 0 0 0 0 0 0 0

4089 33 PointerToArray< LMatrix3f > const 0 8832 33 PointerToArray< LMatrix3f > const 33 PointerToArray< LMatrix3f > const 0 0 4090 0 0 0 0 0 0 0 0 0 0

4090 13 PTA_LMatrix3f 0 2048 27 PointerToArray< LMatrix3f > 27 PointerToArray< LMatrix3f > 0 0 0 0 0 0 0 0 0 0 0 0 0

4091 36 PointerToArray< LVecBase2f > const * 0 8576 36 PointerToArray< LVecBase2f > const * 36 PointerToArray< LVecBase2f > const * 0 0 4092 0 0 0 0 0 0 0 0 0 0

4092 34 PointerToArray< LVecBase2f > const 0 8832 34 PointerToArray< LVecBase2f > const 34 PointerToArray< LVecBase2f > const 0 0 4093 0 0 0 0 0 0 0 0 0 0

4093 14 PTA_LVecBase2f 0 2048 28 PointerToArray< LVecBase2f > 28 PointerToArray< LVecBase2f > 0 0 0 0 0 0 0 0 0 0 0 0 0

4094 36 PointerToArray< LVecBase2i > const * 0 8576 36 PointerToArray< LVecBase2i > const * 36 PointerToArray< LVecBase2i > const * 0 0 4095 0 0 0 0 0 0 0 0 0 0

4095 34 PointerToArray< LVecBase2i > const 0 8832 34 PointerToArray< LVecBase2i > const 34 PointerToArray< LVecBase2i > const 0 0 4096 0 0 0 0 0 0 0 0 0 0

4096 14 PTA_LVecBase2i 0 2048 28 PointerToArray< LVecBase2i > 28 PointerToArray< LVecBase2i > 0 0 0 0 0 0 0 0 0 0 0 0 0

4097 36 PointerToArray< LVecBase3f > const * 0 8576 36 PointerToArray< LVecBase3f > const * 36 PointerToArray< LVecBase3f > const * 0 0 4098 0 0 0 0 0 0 0 0 0 0

4098 34 PointerToArray< LVecBase3f > const 0 8832 34 PointerToArray< LVecBase3f > const 34 PointerToArray< LVecBase3f > const 0 0 4099 0 0 0 0 0 0 0 0 0 0

4099 14 PTA_LVecBase3f 0 2048 28 PointerToArray< LVecBase3f > 28 PointerToArray< LVecBase3f > 0 0 0 0 0 0 0 0 0 0 0 0 0

4100 36 PointerToArray< LVecBase3i > const * 0 8576 36 PointerToArray< LVecBase3i > const * 36 PointerToArray< LVecBase3i > const * 0 0 4101 0 0 0 0 0 0 0 0 0 0

4101 34 PointerToArray< LVecBase3i > const 0 8832 34 PointerToArray< LVecBase3i > const 34 PointerToArray< LVecBase3i > const 0 0 4102 0 0 0 0 0 0 0 0 0 0

4102 14 PTA_LVecBase3i 0 2048 28 PointerToArray< LVecBase3i > 28 PointerToArray< LVecBase3i > 0 0 0 0 0 0 0 0 0 0 0 0 0

4103 44 PointerToArray< UnalignedLMatrix4f > const * 0 8576 44 PointerToArray< UnalignedLMatrix4f > const * 44 PointerToArray< UnalignedLMatrix4f > const * 0 0 4104 0 0 0 0 0 0 0 0 0 0

4104 42 PointerToArray< UnalignedLMatrix4f > const 0 8832 42 PointerToArray< UnalignedLMatrix4f > const 42 PointerToArray< UnalignedLMatrix4f > const 0 0 4105 0 0 0 0 0 0 0 0 0 0

4105 13 PTA_LMatrix4f 0 2048 36 PointerToArray< UnalignedLMatrix4f > 36 PointerToArray< UnalignedLMatrix4f > 0 0 0 0 0 0 0 0 0 0 0 0 0

4106 45 PointerToArray< UnalignedLVecBase4f > const * 0 8576 45 PointerToArray< UnalignedLVecBase4f > const * 45 PointerToArray< UnalignedLVecBase4f > const * 0 0 4107 0 0 0 0 0 0 0 0 0 0

4107 43 PointerToArray< UnalignedLVecBase4f > const 0 8832 43 PointerToArray< UnalignedLVecBase4f > const 43 PointerToArray< UnalignedLVecBase4f > const 0 0 4108 0 0 0 0 0 0 0 0 0 0

4108 14 PTA_LVecBase4f 0 2048 37 PointerToArray< UnalignedLVecBase4f > 37 PointerToArray< UnalignedLVecBase4f > 0 0 0 0 0 0 0 0 0 0 0 0 0

4109 45 PointerToArray< UnalignedLVecBase4i > const * 0 8576 45 PointerToArray< UnalignedLVecBase4i > const * 45 PointerToArray< UnalignedLVecBase4i > const * 0 0 4110 0 0 0 0 0 0 0 0 0 0

4110 43 PointerToArray< UnalignedLVecBase4i > const 0 8832 43 PointerToArray< UnalignedLVecBase4i > const 43 PointerToArray< UnalignedLVecBase4i > const 0 0 4111 0 0 0 0 0 0 0 0 0 0

4111 14 PTA_LVecBase4i 0 2048 37 PointerToArray< UnalignedLVecBase4i > 37 PointerToArray< UnalignedLVecBase4i > 0 0 0 0 0 0 0 0 0 0 0 0 0

4112 32 PointerToArray< double > const * 0 8576 32 PointerToArray< double > const * 32 PointerToArray< double > const * 0 0 4113 0 0 0 0 0 0 0 0 0 0

4113 30 PointerToArray< double > const 0 8832 30 PointerToArray< double > const 30 PointerToArray< double > const 0 0 4114 0 0 0 0 0 0 0 0 0 0

4114 10 PTA_double 0 2048 24 PointerToArray< double > 24 PointerToArray< double > 0 0 0 0 0 0 0 0 0 0 0 0 0

4115 31 PointerToArray< float > const * 0 8576 31 PointerToArray< float > const * 31 PointerToArray< float > const * 0 0 4116 0 0 0 0 0 0 0 0 0 0

4116 29 PointerToArray< float > const 0 8832 29 PointerToArray< float > const 29 PointerToArray< float > const 0 0 4117 0 0 0 0 0 0 0 0 0 0

4117 9 PTA_float 0 2048 23 PointerToArray< float > 23 PointerToArray< float > 0 0 0 0 0 0 0 0 0 0 0 0 0

4118 29 PointerToArray< int > const * 0 8576 29 PointerToArray< int > const * 29 PointerToArray< int > const * 0 0 4119 0 0 0 0 0 0 0 0 0 0

4119 27 PointerToArray< int > const 0 8832 27 PointerToArray< int > const 27 PointerToArray< int > const 0 0 4120 0 0 0 0 0 0 0 0 0 0

4120 7 PTA_int 0 2048 21 PointerToArray< int > 21 PointerToArray< int > 0 0 0 0 0 0 0 0 0 0 0 0 0

4121 19 ShaderInput const * 0 8576 19 ShaderInput const * 19 ShaderInput const * 0 0 4122 0 0 0 0 0 0 0 0 0 0

4122 17 ShaderInput const 0 8832 17 ShaderInput const 17 ShaderInput const 0 0 3944 0 0 0 0 0 0 0 0 0 0

4123 24 InternalNameCollection * 0 8576 24 InternalNameCollection * 24 InternalNameCollection * 0 0 3912 0 0 0 0 0 0 0 0 0 0

4124 17 TextureCollection 0 2048 17 TextureCollection 17 TextureCollection 0 0 0 0 0 0 0 0 0 0 0 0 290
////////////////////////////////////////////////////////////////////
//       Class : TextureCollection
// Description : Manages a list of Texture objects, as returned by
//               TexturePool::find_all_textures().
////////////////////////////////////////////////////////////////////

4125 19 TextureCollection * 0 8576 19 TextureCollection * 19 TextureCollection * 0 0 4124 0 0 0 0 0 0 0 0 0 0

4126 24 TextureStageCollection * 0 8576 24 TextureStageCollection * 24 TextureStageCollection * 0 0 3955 0 0 0 0 0 0 0 0 0 0

4127 8 Material 0 2048 8 Material 8 Material 0 0 0 0 0 0 0 0 0 0 0 0 373
////////////////////////////////////////////////////////////////////
//       Class : Material
// Description : Defines the way an object appears in the presence of
//               lighting.  A material is only necessary if lighting
//               is to be enabled; otherwise, the material isn't used.
////////////////////////////////////////////////////////////////////

4128 10 Material * 0 8576 10 Material * 10 Material * 0 0 4127 0 0 0 0 0 0 0 0 0 0

4129 20 MaterialCollection * 0 8576 20 MaterialCollection * 20 MaterialCollection * 0 0 3924 0 0 0 0 0 0 0 0 0 0

4130 5 Fog * 0 8576 5 Fog * 5 Fog * 0 0 3907 0 0 0 0 0 0 0 0 0 0

4131 16 BoundingVolume * 0 8576 16 BoundingVolume * 16 BoundingVolume * 0 0 4041 0 0 0 0 0 0 0 0 0 0

4132 16 Filename const * 0 8576 16 Filename const * 16 Filename const * 0 0 4133 0 0 0 0 0 0 0 0 0 0

4133 14 Filename const 0 8832 14 Filename const 14 Filename const 0 0 4134 0 0 0 0 0 0 0 0 0 0

4134 8 Filename 0 2048 8 Filename 8 Filename 0 0 0 0 0 0 0 0 0 0 0 0 869
////////////////////////////////////////////////////////////////////
//       Class : Filename
// Description : The name of a file, such as a texture file or an Egg
//               file.  Stores the full pathname, and includes
//               functions for extracting out the directory prefix
//               part and the file extension and stuff.
//
//               A Filename is also aware of the mapping between the
//               Unix-like filename convention we use internally, and
//               the local OS's specific filename convention, and it
//               knows how to perform basic OS-specific I/O, like
//               testing for file existence and searching a
//               searchpath, as well as the best way to open an
//               fstream for reading or writing.
////////////////////////////////////////////////////////////////////

4135 22 basic_string< char > * 0 8576 22 basic_string< char > * 22 basic_string< char > * 0 0 4136 0 0 0 0 0 0 0 0 0 0

4136 6 string 0 2048 20 basic_string< char > 20 basic_string< char > 0 0 0 0 0 0 0 0 0 0 0 0 0

4137 11 BamWriter * 0 8576 11 BamWriter * 11 BamWriter * 0 0 4138 0 0 0 0 0 0 0 0 0 0

4138 9 BamWriter 0 2048 9 BamWriter 9 BamWriter 0 0 0 0 0 0 0 0 0 0 0 0 1949
////////////////////////////////////////////////////////////////////
//       Class : BamWriter
// Description : This is the fundamental interface for writing binary
//               objects to a Bam file, to be extracted later by a
//               BamReader.
//
//               A Bam file can be thought of as a linear collection
//               of objects.  Each object is an instance of a class
//               that inherits, directly or indirectly, from
//               TypedWritable.  The objects may include pointers to
//               other objects; the BamWriter automatically manages
//               these (with help from code within each class) and
//               writes all referenced objects to the file in such a
//               way that the pointers may be correctly restored
//               later.
//
//               This is the abstract interface and does not
//               specifically deal with disk files, but rather with a
//               DatagramSink of some kind, which simply accepts a
//               linear stream of Datagrams.  It is probably written
//               to a disk file, but it might conceivably be streamed
//               directly to a network or some such nonsense.
//
//               Bam files are most often used to store scene graphs
//               or subgraphs, and by convention they are given
//               filenames ending in the extension ".bam" when they
//               are used for this purpose.  However, a Bam file may
//               store any arbitrary list of TypedWritable objects;
//               in this more general usage, they are given filenames
//               ending in ".boo" to differentiate them from the more
//               common scene graph files.
//
//               See also BamFile, which defines a higher-level
//               interface to read and write Bam files on disk.
////////////////////////////////////////////////////////////////////

4139 20 AttribNodeRegistry * 0 8576 20 AttribNodeRegistry * 20 AttribNodeRegistry * 0 0 3864 0 0 0 0 0 0 0 0 0 0

4140 26 AttribNodeRegistry const * 0 8576 26 AttribNodeRegistry const * 26 AttribNodeRegistry const * 0 0 4141 0 0 0 0 0 0 0 0 0 0

4141 24 AttribNodeRegistry const 0 8832 24 AttribNodeRegistry const 24 AttribNodeRegistry const 0 0 3864 0 0 0 0 0 0 0 0 0 0

4142 25 AudioVolumeAttrib const * 0 8576 25 AudioVolumeAttrib const * 25 AudioVolumeAttrib const * 0 0 4143 0 0 0 0 0 0 0 0 0 0

4143 23 AudioVolumeAttrib const 0 8832 23 AudioVolumeAttrib const 23 AudioVolumeAttrib const 0 0 3865 0 0 0 0 0 0 0 0 0 0

4144 25 AuxBitplaneAttrib const * 0 8576 25 AuxBitplaneAttrib const * 25 AuxBitplaneAttrib const * 0 0 4145 0 0 0 0 0 0 0 0 0 0

4145 23 AuxBitplaneAttrib const 0 8832 23 AuxBitplaneAttrib const 23 AuxBitplaneAttrib const 0 0 3866 0 0 0 0 0 0 0 0 0 0

4146 14 AuxSceneData * 0 8576 14 AuxSceneData * 14 AuxSceneData * 0 0 3868 0 0 0 0 0 0 0 0 0 0

4147 6 double 0 8194 6 double 6 double 0 3 0 0 0 0 0 0 0 0 0 0 0

4148 20 AuxSceneData const * 0 8576 20 AuxSceneData const * 20 AuxSceneData const * 0 0 4149 0 0 0 0 0 0 0 0 0 0

4149 18 AuxSceneData const 0 8832 18 AuxSceneData const 18 AuxSceneData const 0 0 3868 0 0 0 0 0 0 0 0 0 0

4150 9 BamFile * 0 8576 9 BamFile * 9 BamFile * 0 0 3870 0 0 0 0 0 0 0 0 0 0

4151 9 istream * 0 8576 9 istream * 9 istream * 0 0 4152 0 0 0 0 0 0 0 0 0 0

4152 7 istream 0 2048 7 istream 7 istream 0 0 0 0 0 0 0 0 0 0 0 0 0

4153 15 BamFile const * 0 8576 15 BamFile const * 15 BamFile const * 0 0 4154 0 0 0 0 0 0 0 0 0 0

4154 13 BamFile const 0 8832 13 BamFile const 13 BamFile const 0 0 3870 0 0 0 0 0 0 0 0 0 0

4155 21 TypedWritable const * 0 8576 21 TypedWritable const * 21 TypedWritable const * 0 0 4156 0 0 0 0 0 0 0 0 0 0

4156 19 TypedWritable const 0 8832 19 TypedWritable const 19 TypedWritable const 0 0 3854 0 0 0 0 0 0 0 0 0 0

4157 9 BamEndian 0 794624 19 BamEnums::BamEndian 19 BamEnums::BamEndian 3871 0 0 0 0 0 0 0 0 0 3 12 BE_bigendian 22 BamEnums::BE_bigendian 0 15 BE_littleendian 25 BamEnums::BE_littleendian 1 9 BE_native 19 BamEnums::BE_native 1 0 345
// This defines an enumerated type used to represent the endianness of
// certain numeric values stored in a Bam file.  It really has only
// two possible values, either BE_bigendian or BE_littleendian; but
// through a preprocessor trick we also add BE_native, which is the
// same numerically as whichever value the hardware supports natively.

4158 23 BillboardEffect const * 0 8576 23 BillboardEffect const * 23 BillboardEffect const * 0 0 4159 0 0 0 0 0 0 0 0 0 0

4159 21 BillboardEffect const 0 8832 21 BillboardEffect const 21 BillboardEffect const 0 0 3872 0 0 0 0 0 0 0 0 0 0

4160 6 Lens * 0 8576 6 Lens * 6 Lens * 0 0 4161 0 0 0 0 0 0 0 0 0 0

4161 4 Lens 0 2048 4 Lens 4 Lens 0 0 0 0 0 0 0 0 0 0 0 0 668
////////////////////////////////////////////////////////////////////
//       Class : Lens
// Description : A base class for any number of different kinds of
//               lenses, linear and otherwise.  Presently, this
//               includes perspective and orthographic lenses.
//
//               A Lens object is the main part of a Camera node,
//               which defines the fundamental interface to
//               point-of-view for rendering.  Lenses are also used in
//               other contexts, however; for instance, a Spotlight is
//               also defined using a lens.
////////////////////////////////////////////////////////////////////

4162 10 LensNode * 0 8576 10 LensNode * 10 LensNode * 0 0 3873 0 0 0 0 0 0 0 0 0 0

4163 12 Lens const * 0 8576 12 Lens const * 12 Lens const * 0 0 4164 0 0 0 0 0 0 0 0 0 0

4164 10 Lens const 0 8832 10 Lens const 10 Lens const 0 0 4161 0 0 0 0 0 0 0 0 0 0

4165 16 LensNode const * 0 8576 16 LensNode const * 16 LensNode const * 0 0 4166 0 0 0 0 0 0 0 0 0 0

4166 14 LensNode const 0 8832 14 LensNode const 14 LensNode const 0 0 3873 0 0 0 0 0 0 0 0 0 0

4167 14 Camera const * 0 8576 14 Camera const * 14 Camera const * 0 0 4168 0 0 0 0 0 0 0 0 0 0

4168 12 Camera const 0 8832 12 Camera const 12 Camera const 0 0 3874 0 0 0 0 0 0 0 0 0 0

4169 8 Camera * 0 8576 8 Camera * 8 Camera * 0 0 3874 0 0 0 0 0 0 0 0 0 0

4170 17 DisplayRegionBase 0 2048 17 DisplayRegionBase 17 DisplayRegionBase 0 0 0 0 0 0 0 0 0 0 0 0 307
////////////////////////////////////////////////////////////////////
//       Class : DisplayRegionBase
// Description : An abstract base class for DisplayRegion, mainly so
//               we can store DisplayRegion pointers in a Camera.
////////////////////////////////////////////////////////////////////

4171 19 DisplayRegionBase * 0 8576 19 DisplayRegionBase * 19 DisplayRegionBase * 0 0 4170 0 0 0 0 0 0 0 0 0 0

4172 15 LPlanef const * 0 8576 15 LPlanef const * 15 LPlanef const * 0 0 4173 0 0 0 0 0 0 0 0 0 0

4173 13 LPlanef const 0 8832 13 LPlanef const 13 LPlanef const 0 0 4174 0 0 0 0 0 0 0 0 0 0

4174 7 LPlanef 0 2048 7 LPlanef 7 LPlanef 0 0 0 0 0 0 0 0 0 0 0 0 786
// Filename: plane_src.h
// Created by:  mike (09Jan97)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LPlane
// Description : An abstract mathematical description of a plane.  A
//               plane is defined by the equation Ax + By + Cz + D = 0.
////////////////////////////////////////////////////////////////////

4175 11 PlaneNode * 0 8576 11 PlaneNode * 11 PlaneNode * 0 0 3875 0 0 0 0 0 0 0 0 0 0

4176 17 PlaneNode const * 0 8576 17 PlaneNode const * 17 PlaneNode const * 0 0 4177 0 0 0 0 0 0 0 0 0 0

4177 15 PlaneNode const 0 8832 15 PlaneNode const 15 PlaneNode const 0 0 3875 0 0 0 0 0 0 0 0 0 0

4178 23 ClipPlaneAttrib const * 0 8576 23 ClipPlaneAttrib const * 23 ClipPlaneAttrib const * 0 0 4179 0 0 0 0 0 0 0 0 0 0

4179 21 ClipPlaneAttrib const 0 8832 21 ClipPlaneAttrib const 21 ClipPlaneAttrib const 0 0 3877 0 0 0 0 0 0 0 0 0 0

4180 19 ColorAttrib const * 0 8576 19 ColorAttrib const * 19 ColorAttrib const * 0 0 4181 0 0 0 0 0 0 0 0 0 0

4181 17 ColorAttrib const 0 8832 17 ColorAttrib const 17 ColorAttrib const 0 0 3879 0 0 0 0 0 0 0 0 0 0

4182 24 ColorBlendAttrib const * 0 8576 24 ColorBlendAttrib const * 24 ColorBlendAttrib const * 0 0 4183 0 0 0 0 0 0 0 0 0 0

4183 22 ColorBlendAttrib const 0 8832 22 ColorBlendAttrib const 22 ColorBlendAttrib const 0 0 3881 0 0 0 0 0 0 0 0 0 0

4184 24 ColorScaleAttrib const * 0 8576 24 ColorScaleAttrib const * 24 ColorScaleAttrib const * 0 0 4185 0 0 0 0 0 0 0 0 0 0

4185 22 ColorScaleAttrib const 0 8832 22 ColorScaleAttrib const 22 ColorScaleAttrib const 0 0 3884 0 0 0 0 0 0 0 0 0 0

4186 24 ColorWriteAttrib const * 0 8576 24 ColorWriteAttrib const * 24 ColorWriteAttrib const * 0 0 4187 0 0 0 0 0 0 0 0 0 0

4187 22 ColorWriteAttrib const 0 8832 22 ColorWriteAttrib const 22 ColorWriteAttrib const 0 0 3885 0 0 0 0 0 0 0 0 0 0

4188 21 CompassEffect const * 0 8576 21 CompassEffect const * 21 CompassEffect const * 0 0 4189 0 0 0 0 0 0 0 0 0 0

4189 19 CompassEffect const 0 8832 19 CompassEffect const 19 CompassEffect const 0 0 3887 0 0 0 0 0 0 0 0 0 0

4190 21 CullBinAttrib const * 0 8576 21 CullBinAttrib const * 21 CullBinAttrib const * 0 0 4191 0 0 0 0 0 0 0 0 0 0

4191 19 CullBinAttrib const 0 8832 19 CullBinAttrib const 19 CullBinAttrib const 0 0 3891 0 0 0 0 0 0 0 0 0 0

4192 16 CullBinManager * 0 8576 16 CullBinManager * 16 CullBinManager * 0 0 3892 0 0 0 0 0 0 0 0 0 0

4193 22 CullBinManager const * 0 8576 22 CullBinManager const * 22 CullBinManager const * 0 0 4194 0 0 0 0 0 0 0 0 0 0

4194 20 CullBinManager const 0 8832 20 CullBinManager const 20 CullBinManager const 0 0 3892 0 0 0 0 0 0 0 0 0 0

4195 22 CullFaceAttrib const * 0 8576 22 CullFaceAttrib const * 22 CullFaceAttrib const * 0 0 4196 0 0 0 0 0 0 0 0 0 0

4196 20 CullFaceAttrib const 0 8832 20 CullFaceAttrib const 20 CullFaceAttrib const 0 0 3893 0 0 0 0 0 0 0 0 0 0

4197 10 GeomNode * 0 8576 10 GeomNode * 10 GeomNode * 0 0 3895 0 0 0 0 0 0 0 0 0 0

4198 16 GeomNode const * 0 8576 16 GeomNode const * 16 GeomNode const * 0 0 4199 0 0 0 0 0 0 0 0 0 0

4199 14 GeomNode const 0 8832 14 GeomNode const 14 GeomNode const 0 0 3895 0 0 0 0 0 0 0 0 0 0

4200 10 Geom const 0 8832 10 Geom const 10 Geom const 0 0 4201 0 0 0 0 0 0 0 0 0 0

4201 4 Geom 0 2048 4 Geom 4 Geom 0 0 0 0 0 0 0 1 4410 0 0 0 0 687
////////////////////////////////////////////////////////////////////
//       Class : Geom
// Description : A container for geometry primitives.  This class
//               associates one or more GeomPrimitive objects with a
//               table of vertices defined by a GeomVertexData object.
//               All of the primitives stored in a particular Geom are
//               drawn from the same set of vertices (each primitive
//               uses a subset of all of the vertices in the table),
//               and all of them must be rendered at the same time, in
//               the same graphics state.
////////////////////////////////////////////////////////////////////

4202 12 Geom const * 0 8576 12 Geom const * 12 Geom const * 0 0 4200 0 0 0 0 0 0 0 0 0 0

4203 6 Geom * 0 8576 6 Geom * 6 Geom * 0 0 4201 0 0 0 0 0 0 0 0 0 0

4204 12 SceneSetup * 0 8576 12 SceneSetup * 12 SceneSetup * 0 0 3896 0 0 0 0 0 0 0 0 0 0

4205 15 DisplayRegion * 0 8576 15 DisplayRegion * 15 DisplayRegion * 0 0 4206 0 0 0 0 0 0 0 0 0 0

4206 13 DisplayRegion 0 2048 13 DisplayRegion 13 DisplayRegion 0 0 0 0 0 0 0 0 0 0 0 0 0

4207 18 SceneSetup const * 0 8576 18 SceneSetup const * 18 SceneSetup const * 0 0 4208 0 0 0 0 0 0 0 0 0 0

4208 16 SceneSetup const 0 8832 16 SceneSetup const 16 SceneSetup const 0 0 3896 0 0 0 0 0 0 0 0 0 0

4209 21 CullTraverser const * 0 8576 21 CullTraverser const * 21 CullTraverser const * 0 0 4210 0 0 0 0 0 0 0 0 0 0

4210 19 CullTraverser const 0 8832 19 CullTraverser const 19 CullTraverser const 0 0 3897 0 0 0 0 0 0 0 0 0 0

4211 35 BitMask< unsigned int, 32 > const * 0 8576 35 BitMask< unsigned int, 32 > const * 35 BitMask< unsigned int, 32 > const * 0 0 4212 0 0 0 0 0 0 0 0 0 0

4212 33 BitMask< unsigned int, 32 > const 0 8832 33 BitMask< unsigned int, 32 > const 33 BitMask< unsigned int, 32 > const 0 0 4036 0 0 0 0 0 0 0 0 0 0

4213 25 GeometricBoundingVolume * 0 8576 25 GeometricBoundingVolume * 25 GeometricBoundingVolume * 0 0 4214 0 0 0 0 0 0 0 0 0 0

4214 23 GeometricBoundingVolume 0 2048 23 GeometricBoundingVolume 23 GeometricBoundingVolume 0 0 0 0 0 0 0 0 0 0 0 0 380
////////////////////////////////////////////////////////////////////
//       Class : GeometricBoundingVolume
// Description : This is another abstract class, for a general class
//               of bounding volumes that actually enclose points in
//               3-d space, such as BSP's and bounding spheres.
////////////////////////////////////////////////////////////////////

4215 13 CullHandler * 0 8576 13 CullHandler * 13 CullHandler * 0 0 4216 0 0 0 0 0 0 0 0 0 0

4216 11 CullHandler 0 2048 11 CullHandler 11 CullHandler 0 0 0 0 0 0 0 0 0 0 0 0 0

4217 15 PortalClipper * 0 8576 15 PortalClipper * 15 PortalClipper * 0 0 4218 0 0 0 0 0 0 0 0 0 0

4218 13 PortalClipper 0 2048 13 PortalClipper 13 PortalClipper 0 0 0 0 0 0 0 0 0 0 0 0 0

4219 19 CullTraverserData * 0 8576 19 CullTraverserData * 19 CullTraverserData * 0 0 3898 0 0 0 0 0 0 0 0 0 0

4220 18 CullResult const * 0 8576 18 CullResult const * 18 CullResult const * 0 0 4221 0 0 0 0 0 0 0 0 0 0

4221 16 CullResult const 0 8832 16 CullResult const 16 CullResult const 0 0 3899 0 0 0 0 0 0 0 0 0 0

4222 12 CullResult * 0 8576 12 CullResult * 12 CullResult * 0 0 3899 0 0 0 0 0 0 0 0 0 0

4223 7 CullBin 0 1050624 7 CullBin 7 CullBin 0 0 0 0 0 0 0 0 0 0 0 0 580
////////////////////////////////////////////////////////////////////
//       Class : CullBin
// Description : A collection of Geoms and their associated state, for
//               a particular scene.  The cull traversal (and the
//               BinCullHandler) assigns Geoms to bins as it comes
//               across them.
//
//               This is an abstract base class; derived classes like
//               CullBinStateSorted and CullBinBackToFront provide the
//               actual implementation.
////////////////////////////////////////////////////////////////////

4224 9 CullBin * 0 8576 9 CullBin * 9 CullBin * 0 0 4223 0 0 0 0 0 0 0 0 0 0

4225 16 CullableObject * 0 8576 16 CullableObject * 16 CullableObject * 0 0 4226 0 0 0 0 0 0 0 0 0 0

4226 14 CullableObject 0 1050624 14 CullableObject 14 CullableObject 0 0 0 0 0 0 0 0 0 0 0 0 425
////////////////////////////////////////////////////////////////////
//       Class : CullableObject
// Description : The smallest atom of cull.  This is normally just a
//               Geom and its associated state, but it also represent
//               a number of Geoms to be drawn together, with a number
//               of Geoms decalled onto them.
////////////////////////////////////////////////////////////////////

4227 25 DepthOffsetAttrib const * 0 8576 25 DepthOffsetAttrib const * 25 DepthOffsetAttrib const * 0 0 4228 0 0 0 0 0 0 0 0 0 0

4228 23 DepthOffsetAttrib const 0 8832 23 DepthOffsetAttrib const 23 DepthOffsetAttrib const 0 0 3901 0 0 0 0 0 0 0 0 0 0

4229 23 DepthTestAttrib const * 0 8576 23 DepthTestAttrib const * 23 DepthTestAttrib const * 0 0 4230 0 0 0 0 0 0 0 0 0 0

4230 21 DepthTestAttrib const 0 8832 21 DepthTestAttrib const 21 DepthTestAttrib const 0 0 3902 0 0 0 0 0 0 0 0 0 0

4231 24 DepthWriteAttrib const * 0 8576 24 DepthWriteAttrib const * 24 DepthWriteAttrib const * 0 0 4232 0 0 0 0 0 0 0 0 0 0

4232 22 DepthWriteAttrib const 0 8832 22 DepthWriteAttrib const 22 DepthWriteAttrib const 0 0 3903 0 0 0 0 0 0 0 0 0 0

4233 21 EventStorePandaNode * 0 8576 21 EventStorePandaNode * 21 EventStorePandaNode * 0 0 3905 0 0 0 0 0 0 0 0 0 0

4234 27 EventStorePandaNode const * 0 8576 27 EventStorePandaNode const * 27 EventStorePandaNode const * 0 0 4235 0 0 0 0 0 0 0 0 0 0

4235 25 EventStorePandaNode const 0 8832 25 EventStorePandaNode const 25 EventStorePandaNode const 0 0 3905 0 0 0 0 0 0 0 0 0 0

4236 11 Fog const * 0 8576 11 Fog const * 11 Fog const * 0 0 4237 0 0 0 0 0 0 0 0 0 0

4237 9 Fog const 0 8832 9 Fog const 9 Fog const 0 0 3907 0 0 0 0 0 0 0 0 0 0

4238 17 FogAttrib const * 0 8576 17 FogAttrib const * 17 FogAttrib const * 0 0 4239 0 0 0 0 0 0 0 0 0 0

4239 15 FogAttrib const 0 8832 15 FogAttrib const 15 FogAttrib const 0 0 3909 0 0 0 0 0 0 0 0 0 0

4240 28 GeomDrawCallbackData const * 0 8576 28 GeomDrawCallbackData const * 28 GeomDrawCallbackData const * 0 0 4241 0 0 0 0 0 0 0 0 0 0

4241 26 GeomDrawCallbackData const 0 8832 26 GeomDrawCallbackData const 26 GeomDrawCallbackData const 0 0 3910 0 0 0 0 0 0 0 0 0 0

4242 22 GeomDrawCallbackData * 0 8576 22 GeomDrawCallbackData * 22 GeomDrawCallbackData * 0 0 3910 0 0 0 0 0 0 0 0 0 0

4243 30 InternalNameCollection const * 0 8576 30 InternalNameCollection const * 30 InternalNameCollection const * 0 0 4244 0 0 0 0 0 0 0 0 0 0

4244 28 InternalNameCollection const 0 8832 28 InternalNameCollection const 28 InternalNameCollection const 0 0 3912 0 0 0 0 0 0 0 0 0 0

4245 14 InternalName * 0 8576 14 InternalName * 14 InternalName * 0 0 4078 0 0 0 0 0 0 0 0 0 0

4246 13 Light const * 0 8576 13 Light const * 13 Light const * 0 0 4247 0 0 0 0 0 0 0 0 0 0

4247 11 Light const 0 8832 11 Light const 11 Light const 0 0 3913 0 0 0 0 0 0 0 0 0 0

4248 19 LightAttrib const * 0 8576 19 LightAttrib const * 19 LightAttrib const * 0 0 4249 0 0 0 0 0 0 0 0 0 0

4249 17 LightAttrib const 0 8832 17 LightAttrib const 17 LightAttrib const 0 0 3914 0 0 0 0 0 0 0 0 0 0

4250 23 LightRampAttrib const * 0 8576 23 LightRampAttrib const * 23 LightRampAttrib const * 0 0 4251 0 0 0 0 0 0 0 0 0 0

4251 21 LightRampAttrib const 0 8832 21 LightRampAttrib const 21 LightRampAttrib const 0 0 3916 0 0 0 0 0 0 0 0 0 0

4252 8 Loader * 0 8576 8 Loader * 8 Loader * 0 0 3918 0 0 0 0 0 0 0 0 0 0

4253 18 AsyncTaskManager * 0 8576 18 AsyncTaskManager * 18 AsyncTaskManager * 0 0 4254 0 0 0 0 0 0 0 0 0 0

4254 16 AsyncTaskManager 0 2048 16 AsyncTaskManager 16 AsyncTaskManager 0 0 0 0 0 0 0 1 4411 0 0 0 0 1046
////////////////////////////////////////////////////////////////////
//       Class : AsyncTaskManager
// Description : A class to manage a loose queue of isolated tasks,
//               which can be performed either synchronously (in the
//               foreground thread) or asynchronously (by a background
//               thread).
//
//               The AsyncTaskManager is actually a collection of
//               AsyncTaskChains, each of which maintains a list of
//               tasks.  Each chain can be either foreground or
//               background (it may run only in the main thread, or it
//               may be serviced by one or more background threads).
//               See AsyncTaskChain for more information.
//
//               If you do not require background processing, it is
//               perfectly acceptable to create only one
//               AsyncTaskChain, which runs in the main thread.  This
//               is a common configuration.
////////////////////////////////////////////////////////////////////

4255 14 Loader const * 0 8576 14 Loader const * 14 Loader const * 0 0 4256 0 0 0 0 0 0 0 0 0 0

4256 12 Loader const 0 8832 12 Loader const 12 Loader const 0 0 3918 0 0 0 0 0 0 0 0 0 0

4257 11 AsyncTask * 0 8576 11 AsyncTask * 11 AsyncTask * 0 0 3926 0 0 0 0 0 0 0 0 0 0

4258 21 LoaderOptions const * 0 8576 21 LoaderOptions const * 21 LoaderOptions const * 0 0 4259 0 0 0 0 0 0 0 0 0 0

4259 19 LoaderOptions const 0 8832 19 LoaderOptions const 19 LoaderOptions const 0 0 4260 0 0 0 0 0 0 0 0 0 0

4260 13 LoaderOptions 0 2048 13 LoaderOptions 13 LoaderOptions 0 0 0 0 0 0 0 0 0 0 0 0 257
////////////////////////////////////////////////////////////////////
//       Class : LoaderOptions
// Description : Specifies parameters that may be passed to the
//               loader.
////////////////////////////////////////////////////////////////////

4261 21 TypedReferenceCount * 0 8576 21 TypedReferenceCount * 21 TypedReferenceCount * 0 0 3869 0 0 0 0 0 0 0 0 0 0

4262 9 Results * 0 8576 17 Loader::Results * 17 Loader::Results * 0 0 3919 0 0 0 0 0 0 0 0 0 0

4263 15 Results const * 0 8576 23 Loader::Results const * 23 Loader::Results const * 0 0 4264 0 0 0 0 0 0 0 0 0 0

4264 13 Results const 0 8832 21 Loader::Results const 21 Loader::Results const 0 0 3919 0 0 0 0 0 0 0 0 0 0

4265 16 LoaderFileType * 0 8576 16 LoaderFileType * 16 LoaderFileType * 0 0 3920 0 0 0 0 0 0 0 0 0 0

4266 22 LoaderFileType const * 0 8576 22 LoaderFileType const * 22 LoaderFileType const * 0 0 4267 0 0 0 0 0 0 0 0 0 0

4267 20 LoaderFileType const 0 8832 20 LoaderFileType const 20 LoaderFileType const 0 0 3920 0 0 0 0 0 0 0 0 0 0

4268 30 LoaderFileTypeRegistry const * 0 8576 30 LoaderFileTypeRegistry const * 30 LoaderFileTypeRegistry const * 0 0 4269 0 0 0 0 0 0 0 0 0 0

4269 28 LoaderFileTypeRegistry const 0 8832 28 LoaderFileTypeRegistry const 28 LoaderFileTypeRegistry const 0 0 3922 0 0 0 0 0 0 0 0 0 0

4270 24 LoaderFileTypeRegistry * 0 8576 24 LoaderFileTypeRegistry * 24 LoaderFileTypeRegistry * 0 0 3922 0 0 0 0 0 0 0 0 0 0

4271 22 MaterialAttrib const * 0 8576 22 MaterialAttrib const * 22 MaterialAttrib const * 0 0 4272 0 0 0 0 0 0 0 0 0 0

4272 20 MaterialAttrib const 0 8832 20 MaterialAttrib const 20 MaterialAttrib const 0 0 3923 0 0 0 0 0 0 0 0 0 0

4273 26 MaterialCollection const * 0 8576 26 MaterialCollection const * 26 MaterialCollection const * 0 0 4274 0 0 0 0 0 0 0 0 0 0

4274 24 MaterialCollection const 0 8832 24 MaterialCollection const 24 MaterialCollection const 0 0 3924 0 0 0 0 0 0 0 0 0 0

4275 21 ModelFlattenRequest * 0 8576 21 ModelFlattenRequest * 21 ModelFlattenRequest * 0 0 3925 0 0 0 0 0 0 0 0 0 0

4276 27 ModelFlattenRequest const * 0 8576 27 ModelFlattenRequest const * 27 ModelFlattenRequest const * 0 0 4277 0 0 0 0 0 0 0 0 0 0

4277 25 ModelFlattenRequest const 0 8832 25 ModelFlattenRequest const 25 ModelFlattenRequest const 0 0 3925 0 0 0 0 0 0 0 0 0 0

4278 18 ModelLoadRequest * 0 8576 18 ModelLoadRequest * 18 ModelLoadRequest * 0 0 3927 0 0 0 0 0 0 0 0 0 0

4279 24 ModelLoadRequest const * 0 8576 24 ModelLoadRequest const * 24 ModelLoadRequest const * 0 0 4280 0 0 0 0 0 0 0 0 0 0

4280 22 ModelLoadRequest const 0 8832 22 ModelLoadRequest const 22 ModelLoadRequest const 0 0 3927 0 0 0 0 0 0 0 0 0 0

4281 11 ModelNode * 0 8576 11 ModelNode * 11 ModelNode * 0 0 3928 0 0 0 0 0 0 0 0 0 0

4282 17 ModelNode const * 0 8576 17 ModelNode const * 17 ModelNode const * 0 0 4283 0 0 0 0 0 0 0 0 0 0

4283 15 ModelNode const 0 8832 15 ModelNode const 15 ModelNode const 0 0 3928 0 0 0 0 0 0 0 0 0 0

4284 11 ModelRoot * 0 8576 11 ModelRoot * 11 ModelRoot * 0 0 3930 0 0 0 0 0 0 0 0 0 0

4285 17 ModelRoot const * 0 8576 17 ModelRoot const * 17 ModelRoot const * 0 0 4286 0 0 0 0 0 0 0 0 0 0

4286 15 ModelRoot const 0 8832 15 ModelRoot const 15 ModelRoot const 0 0 3930 0 0 0 0 0 0 0 0 0 0

4287 16 ModelReference * 0 8576 27 ModelRoot::ModelReference * 27 ModelRoot::ModelReference * 0 0 3931 0 0 0 0 0 0 0 0 0 0

4288 18 ModelSaveRequest * 0 8576 18 ModelSaveRequest * 18 ModelSaveRequest * 0 0 3933 0 0 0 0 0 0 0 0 0 0

4289 24 ModelSaveRequest const * 0 8576 24 ModelSaveRequest const * 24 ModelSaveRequest const * 0 0 4290 0 0 0 0 0 0 0 0 0 0

4290 22 ModelSaveRequest const 0 8832 22 ModelSaveRequest const 22 ModelSaveRequest const 0 0 3933 0 0 0 0 0 0 0 0 0 0

4291 26 NodePathCollection const * 0 8576 26 NodePathCollection const * 26 NodePathCollection const * 0 0 4292 0 0 0 0 0 0 0 0 0 0

4292 24 NodePathCollection const 0 8832 24 NodePathCollection const 24 NodePathCollection const 0 0 3934 0 0 0 0 0 0 0 0 0 0

4293 21 TextureAttrib const * 0 8576 21 TextureAttrib const * 21 TextureAttrib const * 0 0 4294 0 0 0 0 0 0 0 0 0 0

4294 19 TextureAttrib const 0 8832 19 TextureAttrib const 19 TextureAttrib const 0 0 3935 0 0 0 0 0 0 0 0 0 0

4295 20 TextureStage const * 0 8576 20 TextureStage const * 20 TextureStage const * 0 0 4296 0 0 0 0 0 0 0 0 0 0

4296 18 TextureStage const 0 8832 18 TextureStage const 18 TextureStage const 0 0 4013 0 0 0 0 0 0 0 0 0 0

4297 20 TexGenAttrib const * 0 8576 20 TexGenAttrib const * 20 TexGenAttrib const * 0 0 4298 0 0 0 0 0 0 0 0 0 0

4298 18 TexGenAttrib const 0 8832 18 TexGenAttrib const 18 TexGenAttrib const 0 0 3936 0 0 0 0 0 0 0 0 0 0

4299 14 OccluderNode * 0 8576 14 OccluderNode * 14 OccluderNode * 0 0 3937 0 0 0 0 0 0 0 0 0 0

4300 20 OccluderNode const * 0 8576 20 OccluderNode const * 20 OccluderNode const * 0 0 4301 0 0 0 0 0 0 0 0 0 0

4301 18 OccluderNode const 0 8832 18 OccluderNode const 18 OccluderNode const 0 0 3937 0 0 0 0 0 0 0 0 0 0

4302 22 OccluderEffect const * 0 8576 22 OccluderEffect const * 22 OccluderEffect const * 0 0 4303 0 0 0 0 0 0 0 0 0 0

4303 20 OccluderEffect const 0 8832 20 OccluderEffect const 20 OccluderEffect const 0 0 3938 0 0 0 0 0 0 0 0 0 0

4304 15 PolylightNode * 0 8576 15 PolylightNode * 15 PolylightNode * 0 0 3939 0 0 0 0 0 0 0 0 0 0

4305 21 PolylightNode const * 0 8576 21 PolylightNode const * 21 PolylightNode const * 0 0 4306 0 0 0 0 0 0 0 0 0 0

4306 19 PolylightNode const 0 8832 19 PolylightNode const 19 PolylightNode const 0 0 3939 0 0 0 0 0 0 0 0 0 0

4307 26 vector< NodePath > const * 0 8576 26 vector< NodePath > const * 26 vector< NodePath > const * 0 0 4308 0 0 0 0 0 0 0 0 0 0

4308 24 vector< NodePath > const 0 8832 24 vector< NodePath > const 24 vector< NodePath > const 0 0 4309 0 0 0 0 0 0 0 0 0 0

4309 18 vector< NodePath > 0 2048 18 vector< NodePath > 18 vector< NodePath > 0 0 0 0 0 0 0 0 0 0 0 0 0

4310 23 PolylightEffect const * 0 8576 23 PolylightEffect const * 23 PolylightEffect const * 0 0 4311 0 0 0 0 0 0 0 0 0 0

4311 21 PolylightEffect const 0 8832 21 PolylightEffect const 21 PolylightEffect const 0 0 3942 0 0 0 0 0 0 0 0 0 0

4312 17 LMatrix3d const * 0 8576 17 LMatrix3d const * 17 LMatrix3d const * 0 0 4313 0 0 0 0 0 0 0 0 0 0

4313 15 LMatrix3d const 0 8832 15 LMatrix3d const 15 LMatrix3d const 0 0 4314 0 0 0 0 0 0 0 0 0 0

4314 9 LMatrix3d 0 2048 9 LMatrix3d 9 LMatrix3d 0 0 0 0 0 0 0 4 4412 4413 4414 4415 0 0 0 0 462
////////////////////////////////////////////////////////////////////
//       Class : LMatrix3
// Description : This is a 3-by-3 transform matrix.  It typically will
//               represent either a rotation-and-scale (no
//               translation) matrix in 3-d, or a full affine matrix
//               (rotation, scale, translation) in 2-d, e.g. for a
//               texture matrix.
////////////////////////////////////////////////////////////////////

4315 13 ShaderInput * 0 8576 13 ShaderInput * 13 ShaderInput * 0 0 3944 0 0 0 0 0 0 0 0 0 0

4316 17 LMatrix4d const * 0 8576 17 LMatrix4d const * 17 LMatrix4d const * 0 0 4317 0 0 0 0 0 0 0 0 0 0

4317 15 LMatrix4d const 0 8832 15 LMatrix4d const 15 LMatrix4d const 0 0 4318 0 0 0 0 0 0 0 0 0 0

4318 9 LMatrix4d 0 2048 9 LMatrix4d 9 LMatrix4d 0 0 0 0 0 0 0 3 4416 4417 4418 0 0 0 0 215
////////////////////////////////////////////////////////////////////
//       Class : LMatrix4
// Description : This is a 4-by-4 transform matrix.
////////////////////////////////////////////////////////////////////

4319 18 LVecBase2d const * 0 8576 18 LVecBase2d const * 18 LVecBase2d const * 0 0 4320 0 0 0 0 0 0 0 0 0 0

4320 16 LVecBase2d const 0 8832 16 LVecBase2d const 16 LVecBase2d const 0 0 4321 0 0 0 0 0 0 0 0 0 0

4321 10 LVecBase2d 0 2048 10 LVecBase2d 10 LVecBase2d 0 0 0 0 0 0 0 0 0 0 0 0 752
// Filename: lvecBase2_src.h
// Created by:  drose (08Mar00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LVecBase2
// Description : This is the base class for all two-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

4322 18 LVecBase3d const * 0 8576 18 LVecBase3d const * 18 LVecBase3d const * 0 0 4323 0 0 0 0 0 0 0 0 0 0

4323 16 LVecBase3d const 0 8832 16 LVecBase3d const 16 LVecBase3d const 0 0 4324 0 0 0 0 0 0 0 0 0 0

4324 10 LVecBase3d 0 2048 10 LVecBase3d 10 LVecBase3d 0 0 0 0 0 0 0 0 0 0 0 0 754
// Filename: lvecBase3_src.h
// Created by:  drose (08Mar00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LVecBase3
// Description : This is the base class for all three-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

4325 18 LVecBase4d const * 0 8576 18 LVecBase4d const * 18 LVecBase4d const * 0 0 4326 0 0 0 0 0 0 0 0 0 0

4326 16 LVecBase4d const 0 8832 16 LVecBase4d const 16 LVecBase4d const 0 0 4327 0 0 0 0 0 0 0 0 0 0

4327 10 LVecBase4d 0 2048 10 LVecBase4d 10 LVecBase4d 0 0 0 0 0 0 0 0 0 0 0 0 265
////////////////////////////////////////////////////////////////////
//       Class : LVecBase4
// Description : This is the base class for all three-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

4328 35 PointerToArray< LMatrix3d > const * 0 8576 35 PointerToArray< LMatrix3d > const * 35 PointerToArray< LMatrix3d > const * 0 0 4329 0 0 0 0 0 0 0 0 0 0

4329 33 PointerToArray< LMatrix3d > const 0 8832 33 PointerToArray< LMatrix3d > const 33 PointerToArray< LMatrix3d > const 0 0 4330 0 0 0 0 0 0 0 0 0 0

4330 13 PTA_LMatrix3d 0 2048 27 PointerToArray< LMatrix3d > 27 PointerToArray< LMatrix3d > 0 0 0 0 0 0 0 0 0 0 0 0 0

4331 36 PointerToArray< LVecBase2d > const * 0 8576 36 PointerToArray< LVecBase2d > const * 36 PointerToArray< LVecBase2d > const * 0 0 4332 0 0 0 0 0 0 0 0 0 0

4332 34 PointerToArray< LVecBase2d > const 0 8832 34 PointerToArray< LVecBase2d > const 34 PointerToArray< LVecBase2d > const 0 0 4333 0 0 0 0 0 0 0 0 0 0

4333 14 PTA_LVecBase2d 0 2048 28 PointerToArray< LVecBase2d > 28 PointerToArray< LVecBase2d > 0 0 0 0 0 0 0 0 0 0 0 0 0

4334 36 PointerToArray< LVecBase3d > const * 0 8576 36 PointerToArray< LVecBase3d > const * 36 PointerToArray< LVecBase3d > const * 0 0 4335 0 0 0 0 0 0 0 0 0 0

4335 34 PointerToArray< LVecBase3d > const 0 8832 34 PointerToArray< LVecBase3d > const 34 PointerToArray< LVecBase3d > const 0 0 4336 0 0 0 0 0 0 0 0 0 0

4336 14 PTA_LVecBase3d 0 2048 28 PointerToArray< LVecBase3d > 28 PointerToArray< LVecBase3d > 0 0 0 0 0 0 0 0 0 0 0 0 0

4337 44 PointerToArray< UnalignedLMatrix4d > const * 0 8576 44 PointerToArray< UnalignedLMatrix4d > const * 44 PointerToArray< UnalignedLMatrix4d > const * 0 0 4338 0 0 0 0 0 0 0 0 0 0

4338 42 PointerToArray< UnalignedLMatrix4d > const 0 8832 42 PointerToArray< UnalignedLMatrix4d > const 42 PointerToArray< UnalignedLMatrix4d > const 0 0 4339 0 0 0 0 0 0 0 0 0 0

4339 13 PTA_LMatrix4d 0 2048 36 PointerToArray< UnalignedLMatrix4d > 36 PointerToArray< UnalignedLMatrix4d > 0 0 0 0 0 0 0 0 0 0 0 0 0

4340 45 PointerToArray< UnalignedLVecBase4d > const * 0 8576 45 PointerToArray< UnalignedLVecBase4d > const * 45 PointerToArray< UnalignedLVecBase4d > const * 0 0 4341 0 0 0 0 0 0 0 0 0 0

4341 43 PointerToArray< UnalignedLVecBase4d > const 0 8832 43 PointerToArray< UnalignedLVecBase4d > const 43 PointerToArray< UnalignedLVecBase4d > const 0 0 4342 0 0 0 0 0 0 0 0 0 0

4342 14 PTA_LVecBase4d 0 2048 37 PointerToArray< UnalignedLVecBase4d > 37 PointerToArray< UnalignedLVecBase4d > 0 0 0 0 0 0 0 0 0 0 0 0 0

4343 21 ShaderPtrData const * 0 8576 29 Shader::ShaderPtrData const * 29 Shader::ShaderPtrData const * 0 0 4344 0 0 0 0 0 0 0 0 0 0

4344 19 ShaderPtrData const 0 8832 27 Shader::ShaderPtrData const 27 Shader::ShaderPtrData const 0 0 4345 0 0 0 0 0 0 0 0 0 0

4345 13 ShaderPtrData 0 263168 21 Shader::ShaderPtrData 21 Shader::ShaderPtrData 4075 0 0 0 0 0 0 0 0 0 0 0 60
// Container structure for data of parameters ShaderPtrSpec.

4346 20 ShaderAttrib const * 0 8576 20 ShaderAttrib const * 20 ShaderAttrib const * 0 0 4347 0 0 0 0 0 0 0 0 0 0

4347 18 ShaderAttrib const 0 8832 18 ShaderAttrib const 18 ShaderAttrib const 0 0 3946 0 0 0 0 0 0 0 0 0 0

4348 24 ShowBoundsEffect const * 0 8576 24 ShowBoundsEffect const * 24 ShowBoundsEffect const * 0 0 4349 0 0 0 0 0 0 0 0 0 0

4349 22 ShowBoundsEffect const 0 8832 22 ShowBoundsEffect const 22 ShowBoundsEffect const 0 0 3947 0 0 0 0 0 0 0 0 0 0

4350 26 TexProjectorEffect const * 0 8576 26 TexProjectorEffect const * 26 TexProjectorEffect const * 0 0 4351 0 0 0 0 0 0 0 0 0 0

4351 24 TexProjectorEffect const 0 8832 24 TexProjectorEffect const 24 TexProjectorEffect const 0 0 3948 0 0 0 0 0 0 0 0 0 0

4352 21 ScissorEffect const * 0 8576 21 ScissorEffect const * 21 ScissorEffect const * 0 0 4353 0 0 0 0 0 0 0 0 0 0

4353 19 ScissorEffect const 0 8832 19 ScissorEffect const 19 ScissorEffect const 0 0 3949 0 0 0 0 0 0 0 0 0 0

4354 19 SceneGraphReducer * 0 8576 19 SceneGraphReducer * 19 SceneGraphReducer * 0 0 3950 0 0 0 0 0 0 0 0 0 0

4355 25 SceneGraphReducer const * 0 8576 25 SceneGraphReducer const * 25 SceneGraphReducer const * 0 0 4356 0 0 0 0 0 0 0 0 0 0

4356 23 SceneGraphReducer const 0 8832 23 SceneGraphReducer const 23 SceneGraphReducer const 0 0 3950 0 0 0 0 0 0 0 0 0 0

4357 26 AccumulatedAttribs const * 0 8576 26 AccumulatedAttribs const * 26 AccumulatedAttribs const * 0 0 4358 0 0 0 0 0 0 0 0 0 0

4358 24 AccumulatedAttribs const 0 8832 24 AccumulatedAttribs const 24 AccumulatedAttribs const 0 0 4359 0 0 0 0 0 0 0 0 0 0

4359 18 AccumulatedAttribs 0 1050624 18 AccumulatedAttribs 18 AccumulatedAttribs 0 0 0 0 0 0 0 0 0 0 0 0 431
////////////////////////////////////////////////////////////////////
//       Class : AccumulatedAttribs
// Description : This class is used by the SceneGraphReducer to
//               maintain and accumulate the set of attributes we have
//               encountered on each node that might eventually be
//               applied to the vertices at the leaves.
////////////////////////////////////////////////////////////////////

4360 17 GeomTransformer * 0 8576 17 GeomTransformer * 17 GeomTransformer * 0 0 4361 0 0 0 0 0 0 0 0 0 0

4361 15 GeomTransformer 0 1050624 15 GeomTransformer 15 GeomTransformer 0 0 0 0 0 0 0 0 0 0 0 0 970
////////////////////////////////////////////////////////////////////
//       Class : GeomTransformer
// Description : An object specifically designed to transform the
//               vertices of a Geom without disturbing indexing or
//               affecting any other Geoms that may share the same
//               vertex arrays, and without needlessly wasting memory
//               when different Geoms sharing the same vertex arrays
//               are transformed by the same amount.
//
//               If you create a single GeomTransformer and use it to
//               transform a number of different Geoms by various
//               transformations, then those Geoms which happen to
//               share the same arrays and are transformed by the same
//               amounts will still share the same arrays as each
//               other (but different from the original arrays).
////////////////////////////////////////////////////////////////////

4362 30 TextureStageCollection const * 0 8576 30 TextureStageCollection const * 30 TextureStageCollection const * 0 0 4363 0 0 0 0 0 0 0 0 0 0

4363 28 TextureStageCollection const 0 8832 28 TextureStageCollection const 28 TextureStageCollection const 0 0 3955 0 0 0 0 0 0 0 0 0 0

4364 12 PortalNode * 0 8576 12 PortalNode * 12 PortalNode * 0 0 3956 0 0 0 0 0 0 0 0 0 0

4365 18 PortalNode const * 0 8576 18 PortalNode const * 18 PortalNode const * 0 0 4366 0 0 0 0 0 0 0 0 0 0

4366 16 PortalNode const 0 8832 16 PortalNode const 16 PortalNode const 0 0 3956 0 0 0 0 0 0 0 0 0 0

4367 27 RescaleNormalAttrib const * 0 8576 27 RescaleNormalAttrib const * 27 RescaleNormalAttrib const * 0 0 4368 0 0 0 0 0 0 0 0 0 0

4368 25 RescaleNormalAttrib const 0 8832 25 RescaleNormalAttrib const 25 RescaleNormalAttrib const 0 0 3957 0 0 0 0 0 0 0 0 0 0

4369 21 ScissorAttrib const * 0 8576 21 ScissorAttrib const * 21 ScissorAttrib const * 0 0 4370 0 0 0 0 0 0 0 0 0 0

4370 19 ScissorAttrib const 0 8832 19 ScissorAttrib const 19 ScissorAttrib const 0 0 3959 0 0 0 0 0 0 0 0 0 0

4371 24 ShadeModelAttrib const * 0 8576 24 ShadeModelAttrib const * 24 ShadeModelAttrib const * 0 0 4372 0 0 0 0 0 0 0 0 0 0

4372 22 ShadeModelAttrib const 0 8832 22 ShadeModelAttrib const 22 ShadeModelAttrib const 0 0 3960 0 0 0 0 0 0 0 0 0 0

4373 21 StencilAttrib const * 0 8576 21 StencilAttrib const * 21 StencilAttrib const * 0 0 4374 0 0 0 0 0 0 0 0 0 0

4374 19 StencilAttrib const 0 8832 19 StencilAttrib const 19 StencilAttrib const 0 0 3962 0 0 0 0 0 0 0 0 0 0

4375 8 Shader * 0 8576 8 Shader * 8 Shader * 0 0 4075 0 0 0 0 0 0 0 0 0 0

0
0
43
4376 0 0 141 10 get_stages 14 get_num_stages 9 get_stage 
4377 0 0 384 9 get_nodes 13 get_num_nodes 8 get_node 
4378 0 0 384 13 get_ancestors 13 get_num_nodes 12 get_ancestor 
4379 0 0 732 9 get_nodes 13 get_num_nodes 8 get_node 
4380 0 0 827 19 get_display_regions 23 get_num_display_regions 18 get_display_region 
4381 0 0 872 13 get_on_planes 17 get_num_on_planes 12 get_on_plane 
4382 0 0 872 14 get_off_planes 18 get_num_off_planes 13 get_off_plane 
4383 0 0 966 8 get_bins 12 get_num_bins 7 get_bin 
4384 0 0 992 9 get_geoms 13 get_num_geoms 8 get_geom 
4385 0 0 992 15 get_geom_states 13 get_num_geoms 14 get_geom_state 
4386 0 0 1153 9 get_names 13 get_num_names 8 get_name 
4387 0 0 1183 13 get_on_lights 17 get_num_on_lights 12 get_on_light 
4388 0 0 1183 14 get_off_lights 18 get_num_off_lights 13 get_off_light 
4389 0 0 1231 9 get_files 13 get_num_files 8 get_file 
4390 0 0 1231 14 get_file_types 13 get_num_files 13 get_file_type 
4391 0 0 1268 9 get_types 13 get_num_types 8 get_type 
4392 0 0 1366 9 get_paths 13 get_num_paths 8 get_path 
4393 0 0 1408 13 get_on_stages 17 get_num_on_stages 12 get_on_stage 
4394 0 0 1408 16 get_on_ff_stages 20 get_num_on_ff_stages 15 get_on_ff_stage 
4395 0 0 1408 14 get_off_stages 18 get_num_off_stages 13 get_off_stage 
4396 0 0 1452 12 get_vertices 16 get_num_vertices 10 get_vertex 
4397 0 0 1462 16 get_on_occluders 20 get_num_on_occluders 15 get_on_occluder 
4398 0 0 1589 10 get_points 14 get_num_points 9 get_point 
4399 0 0 1589 9 get_nodes 14 get_num_points 8 get_node 
4400 0 0 1625 18 get_texture_stages 22 get_num_texture_stages 17 get_texture_stage 
4401 0 0 1648 12 get_vertices 16 get_num_vertices 10 get_vertex 
4402 0 0 1756 8 get_rows 4 size 7 get_row 
4403 0 0 1756 8 get_cols 4 size 7 get_col 
4404 0 0 1756 9 get_row3s 4 size 8 get_row3 
4405 0 0 1771 8 get_rows 4 size 7 get_row 
4406 0 0 1771 8 get_cols 4 size 7 get_col 
4407 0 0 1771 9 get_col2s 4 size 8 get_col2 
4408 0 0 1771 9 get_row2s 4 size 8 get_row2 
4409 0 0 2192 8 get_gsgs 12 get_num_gsgs 7 get_gsg 
4410 0 0 3406 14 get_primitives 18 get_num_primitives 13 get_primitive 
4411 0 0 3676 15 get_task_chains 19 get_num_task_chains 14 get_task_chain 
4412 0 0 4049 8 get_rows 4 size 7 get_row 
4413 0 0 4049 8 get_cols 4 size 7 get_col 
4414 0 0 4049 9 get_col2s 4 size 8 get_col2 
4415 0 0 4049 9 get_row2s 4 size 8 get_row2 
4416 0 0 4057 8 get_rows 4 size 7 get_row 
4417 0 0 4057 8 get_cols 4 size 7 get_col 
4418 0 0 4057 9 get_row3s 4 size 8 get_row3 
