21 #include "pandabase.h"
23 #include "pandaNode.h"
24 #include "renderState.h"
25 #include "transformState.h"
26 #include "renderModeAttrib.h"
27 #include "transparencyAttrib.h"
28 #include "nodePathComponent.h"
29 #include "pointerTo.h"
30 #include "referenceCount.h"
32 #include "typedObject.h"
33 #include "pta_float.h"
34 #include "pta_double.h"
35 #include "pta_LMatrix4.h"
36 #include "pta_LMatrix3.h"
37 #include "pta_LVecBase4.h"
38 #include "pta_LVecBase3.h"
39 #include "pta_LVecBase2.h"
40 #include "stl_compares.h"
41 #include "shaderInput.h"
42 #include "textureCollection.h"
43 #include "textureStageCollection.h"
180 NodePath(
const NodePath &parent,
PandaNode *child_node,
183 INLINE NodePath(
const NodePath ©);
184 INLINE
void operator = (
const NodePath ©);
187 #ifdef USE_MOVE_SEMANTICS
188 INLINE NodePath(NodePath &&from) NOEXCEPT;
189 INLINE
void operator = (NodePath &&from) NOEXCEPT;
192 EXTENSION(NodePath __copy__()
const);
193 EXTENSION(PyObject *__deepcopy__(PyObject *
self, PyObject *memo)
const);
194 EXTENSION(PyObject *__reduce__(PyObject *
self)
const);
195 EXTENSION(PyObject *__reduce_persist__(PyObject *
self, PyObject *pickler)
const);
197 INLINE
static NodePath not_found();
198 INLINE
static NodePath removed();
199 INLINE
static NodePath fail();
201 INLINE
static void set_max_search_depth(
int max_search_depth);
202 INLINE
static int get_max_search_depth();
205 INLINE
bool is_empty()
const;
206 operator bool ()
const;
211 MAKE_SEQ(get_nodes, get_num_nodes, get_node);
213 MAKE_SEQ(get_ancestors, get_num_nodes, get_ancestor);
215 INLINE ErrorType get_error_type()
const;
222 INLINE
int get_key()
const;
223 INLINE
size_t add_hash(
size_t hash)
const;
237 INLINE
int count_num_descendants()
const;
243 NodePath find(
const string &path)
const;
244 NodePath find_path_to(
PandaNode *node)
const;
253 void reparent_to(
const NodePath &other,
int sort = 0,
255 void stash_to(
const NodePath &other,
int sort = 0,
257 void wrt_reparent_to(
const NodePath &other,
int sort = 0,
259 NodePath instance_to(
const NodePath &other,
int sort = 0,
261 NodePath instance_under_node(
const NodePath &other,
const string &name,
264 NodePath copy_to(
const NodePath &other,
int sort = 0,
266 NodePath attach_new_node(
PandaNode *node,
int sort = 0,
268 INLINE NodePath attach_new_node(
const string &name,
int sort = 0,
276 void output(ostream &out)
const;
278 INLINE
void ls()
const;
279 INLINE
void ls(ostream &out,
int indent_level = 0)
const;
280 INLINE
void reverse_ls()
const;
281 INLINE
int reverse_ls(ostream &out,
int indent_level = 0)
const;
291 INLINE
void set_attrib(
const RenderAttrib *attrib,
int priority = 0);
293 INLINE
bool has_attrib(
TypeHandle type)
const;
298 INLINE
bool has_effect(
TypeHandle type)
const;
303 INLINE
void clear_effects();
323 INLINE
void set_pos(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
325 void set_x(PN_stdfloat x);
326 void set_y(PN_stdfloat y);
327 void set_z(PN_stdfloat z);
328 INLINE
void set_fluid_pos(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
329 void set_fluid_pos(
const LVecBase3 &pos);
330 void set_fluid_x(PN_stdfloat x);
331 void set_fluid_y(PN_stdfloat y);
332 void set_fluid_z(PN_stdfloat z);
334 INLINE PN_stdfloat get_x()
const;
335 INLINE PN_stdfloat get_y()
const;
336 INLINE PN_stdfloat get_z()
const;
340 INLINE
void set_hpr(PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
342 void set_h(PN_stdfloat h);
343 void set_p(PN_stdfloat p);
344 void set_r(PN_stdfloat r);
346 INLINE PN_stdfloat get_h()
const;
347 INLINE PN_stdfloat get_p()
const;
348 INLINE PN_stdfloat get_r()
const;
353 INLINE
void set_scale(PN_stdfloat scale);
354 INLINE
void set_scale(PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
356 void set_sx(PN_stdfloat sx);
357 void set_sy(PN_stdfloat sy);
358 void set_sz(PN_stdfloat sz);
360 INLINE PN_stdfloat get_sx()
const;
361 INLINE PN_stdfloat get_sy()
const;
362 INLINE PN_stdfloat get_sz()
const;
364 INLINE
void set_shear(PN_stdfloat shxy, PN_stdfloat shxz, PN_stdfloat shyz);
366 void set_shxy(PN_stdfloat shxy);
367 void set_shxz(PN_stdfloat shxz);
368 void set_shyz(PN_stdfloat shyz);
370 INLINE PN_stdfloat get_shxy()
const;
371 INLINE PN_stdfloat get_shxz()
const;
372 INLINE PN_stdfloat get_shyz()
const;
374 INLINE
void set_pos_hpr(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z,
375 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
381 INLINE
void set_hpr_scale(PN_stdfloat h, PN_stdfloat p, PN_stdfloat r,
382 PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
387 INLINE
void set_pos_hpr_scale(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z,
388 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r,
389 PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
390 void set_pos_hpr_scale(
const LVecBase3 &pos,
393 void set_pos_quat_scale(
const LVecBase3 &pos,
396 void set_pos_hpr_scale_shear(
const LVecBase3 &pos,
400 void set_pos_quat_scale_shear(
const LVecBase3 &pos,
406 INLINE
void clear_mat();
407 INLINE
bool has_mat()
const;
408 INLINE
const LMatrix4 &get_mat()
const;
410 INLINE
void look_at(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
412 INLINE
void heads_up(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
418 INLINE
void set_pos(
const NodePath &other, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
419 void set_pos(
const NodePath &other,
const LVecBase3 &pos);
420 void set_x(
const NodePath &other, PN_stdfloat x);
421 void set_y(
const NodePath &other, PN_stdfloat y);
422 void set_z(
const NodePath &other, PN_stdfloat z);
423 INLINE
void set_fluid_pos(
const NodePath &other, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
424 void set_fluid_pos(
const NodePath &other,
const LVecBase3 &pos);
425 void set_fluid_x(
const NodePath &other, PN_stdfloat x);
426 void set_fluid_y(
const NodePath &other, PN_stdfloat y);
427 void set_fluid_z(
const NodePath &other, PN_stdfloat z);
428 LPoint3 get_pos(
const NodePath &other)
const;
429 INLINE PN_stdfloat get_x(
const NodePath &other)
const;
430 INLINE PN_stdfloat get_y(
const NodePath &other)
const;
431 INLINE PN_stdfloat get_z(
const NodePath &other)
const;
433 LVector3 get_pos_delta(
const NodePath &other)
const;
435 INLINE
void set_hpr(
const NodePath &other, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
436 void set_hpr(
const NodePath &other,
const LVecBase3 &hpr);
437 void set_h(
const NodePath &other, PN_stdfloat h);
438 void set_p(
const NodePath &other, PN_stdfloat p);
439 void set_r(
const NodePath &other, PN_stdfloat r);
440 LVecBase3 get_hpr(
const NodePath &other)
const;
441 INLINE PN_stdfloat get_h(
const NodePath &other)
const;
442 INLINE PN_stdfloat get_p(
const NodePath &other)
const;
443 INLINE PN_stdfloat get_r(
const NodePath &other)
const;
445 void set_quat(
const NodePath &other,
const LQuaternion &quat);
448 INLINE
void set_scale(
const NodePath &other, PN_stdfloat scale);
449 INLINE
void set_scale(
const NodePath &other, PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
450 void set_scale(
const NodePath &other,
const LVecBase3 &scale);
451 void set_sx(
const NodePath &other, PN_stdfloat sx);
452 void set_sy(
const NodePath &other, PN_stdfloat sy);
453 void set_sz(
const NodePath &other, PN_stdfloat sz);
454 LVecBase3 get_scale(
const NodePath &other)
const;
455 INLINE PN_stdfloat get_sx(
const NodePath &other)
const;
456 INLINE PN_stdfloat get_sy(
const NodePath &other)
const;
457 INLINE PN_stdfloat get_sz(
const NodePath &other)
const;
459 INLINE
void set_shear(
const NodePath &other, PN_stdfloat shxy, PN_stdfloat shxz, PN_stdfloat shyz);
460 void set_shear(
const NodePath &other,
const LVecBase3 &shear);
461 void set_shxy(
const NodePath &other, PN_stdfloat shxy);
462 void set_shxz(
const NodePath &other, PN_stdfloat shxz);
463 void set_shyz(
const NodePath &other, PN_stdfloat shyz);
464 LVecBase3 get_shear(
const NodePath &other)
const;
465 INLINE PN_stdfloat get_shxy(
const NodePath &other)
const;
466 INLINE PN_stdfloat get_shxz(
const NodePath &other)
const;
467 INLINE PN_stdfloat get_shyz(
const NodePath &other)
const;
469 INLINE
void set_pos_hpr(
const NodePath &other,
470 PN_stdfloat x, PN_stdfloat y, PN_stdfloat z,
471 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
472 void set_pos_hpr(
const NodePath &other,
475 void set_pos_quat(
const NodePath &other,
478 INLINE
void set_hpr_scale(
const NodePath &other,
479 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r,
480 PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
481 void set_hpr_scale(
const NodePath &other,
484 void set_quat_scale(
const NodePath &other,
487 INLINE
void set_pos_hpr_scale(
const NodePath &other,
488 PN_stdfloat x, PN_stdfloat y, PN_stdfloat z,
489 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r,
490 PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
491 void set_pos_hpr_scale(
const NodePath &other,
495 void set_pos_quat_scale(
const NodePath &other,
499 void set_pos_hpr_scale_shear(
const NodePath &other,
504 void set_pos_quat_scale_shear(
const NodePath &other,
510 LMatrix4 get_mat(
const NodePath &other)
const;
511 void set_mat(
const NodePath &other,
const LMatrix4 &mat);
513 LPoint3 get_relative_point(
const NodePath &other,
const LVecBase3 &point)
const;
516 INLINE
void look_at(
const NodePath &other,
517 PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
518 void look_at(
const NodePath &other,
521 INLINE
void heads_up(
const NodePath &other,
522 PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
523 void heads_up(
const NodePath &other,
527 INLINE PN_stdfloat get_distance(
const NodePath &other)
const;
533 void set_color(PN_stdfloat r, PN_stdfloat g, PN_stdfloat b, PN_stdfloat a = 1.0,
535 void set_color(
const LColor &
color,
int priority = 0);
536 void set_color_off(
int priority = 0);
538 bool has_color()
const;
541 bool has_color_scale()
const;
542 void clear_color_scale();
543 void set_color_scale(
const LVecBase4 &scale,
545 INLINE
void set_color_scale(PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz, PN_stdfloat sa,
547 void compose_color_scale(
const LVecBase4 &scale,
549 INLINE
void compose_color_scale(PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz, PN_stdfloat sa,
551 void set_color_scale_off(
int priority = 0);
553 void set_alpha_scale(PN_stdfloat scale,
int priority = 0);
554 void set_all_color_scale(PN_stdfloat scale,
int priority = 0);
555 INLINE
void set_sr(PN_stdfloat sr);
556 INLINE
void set_sg(PN_stdfloat sg);
557 INLINE
void set_sb(PN_stdfloat sb);
558 INLINE
void set_sa(PN_stdfloat sa);
560 const LVecBase4 &get_color_scale()
const;
561 INLINE PN_stdfloat get_sr()
const;
562 INLINE PN_stdfloat get_sg()
const;
563 INLINE PN_stdfloat get_sb()
const;
564 INLINE PN_stdfloat get_sa()
const;
566 void set_light(
const NodePath &light,
int priority = 0);
567 void set_light_off(
int priority = 0);
568 void set_light_off(
const NodePath &light,
int priority = 0);
570 void clear_light(
const NodePath &light);
571 bool has_light(
const NodePath &light)
const;
572 bool has_light_off()
const;
573 bool has_light_off(
const NodePath &light)
const;
575 void set_clip_plane(
const NodePath &clip_plane,
int priority = 0);
576 void set_clip_plane_off(
int priority = 0);
577 void set_clip_plane_off(
const NodePath &clip_plane,
int priority = 0);
578 void clear_clip_plane();
579 void clear_clip_plane(
const NodePath &clip_plane);
580 bool has_clip_plane(
const NodePath &clip_plane)
const;
581 bool has_clip_plane_off()
const;
582 bool has_clip_plane_off(
const NodePath &clip_plane)
const;
584 void set_scissor(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top);
588 void set_scissor(
const NodePath &other,
590 void set_scissor(
const NodePath &other,
593 void clear_scissor();
594 bool has_scissor()
const;
596 void set_occluder(
const NodePath &occluder);
597 void clear_occluder();
598 void clear_occluder(
const NodePath &occluder);
599 bool has_occluder(
const NodePath &occluder)
const;
601 void set_bin(
const string &bin_name,
int draw_order,
int priority = 0);
603 bool has_bin()
const;
604 string get_bin_name()
const;
605 int get_bin_draw_order()
const;
607 void set_texture(
Texture *tex,
int priority = 0);
611 void set_texture_off(
int priority = 0);
612 void set_texture_off(
TextureStage *stage,
int priority = 0);
613 void clear_texture();
615 bool has_texture()
const;
617 bool has_texture_off()
const;
624 void set_shader(
const Shader *sha,
int priority = 0);
625 void set_shader_off(
int priority = 0);
626 void set_shader_auto(
int priority = 0);
627 void set_shader_auto(
BitMask32 shader_switch,
int priority=0);
633 INLINE
void set_shader_input(
CPT_InternalName id,
Texture *tex,
bool read,
bool write,
int z=-1,
int n=0,
int priority=0);
634 INLINE
void set_shader_input(
CPT_InternalName id,
const NodePath &np,
int priority=0);
635 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_float &v,
int priority=0);
636 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_double &v,
int priority=0);
637 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_int &v,
int priority=0);
638 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase4 &v,
int priority=0);
639 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase3 &v,
int priority=0);
640 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase2 &v,
int priority=0);
641 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LMatrix4 &v,
int priority=0);
642 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LMatrix3 &v,
int priority=0);
648 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase4i &v,
int priority=0);
649 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase3i &v,
int priority=0);
650 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase2i &v,
int priority=0);
654 INLINE
void set_shader_input(
CPT_InternalName id,
int n1,
int n2=0,
int n3=0,
655 int n4=0,
int priority=0);
656 INLINE
void set_shader_input(
CPT_InternalName id, PN_stdfloat n1, PN_stdfloat n2=0,
657 PN_stdfloat n3=0, PN_stdfloat n4=0,
int priority=0);
660 void set_instance_count(
int instance_count);
662 const Shader *get_shader()
const;
664 int get_instance_count()
const;
666 void set_tex_transform(
TextureStage *stage,
const TransformState *transform);
667 void clear_tex_transform();
670 CPT(TransformState) get_tex_transform(
TextureStage *stage)
const;
672 INLINE
void set_tex_offset(
TextureStage *stage, PN_stdfloat u, PN_stdfloat v);
674 INLINE
void set_tex_rotate(
TextureStage *stage, PN_stdfloat r);
675 INLINE
void set_tex_scale(
TextureStage *stage, PN_stdfloat scale);
676 INLINE
void set_tex_scale(
TextureStage *stage, PN_stdfloat su, PN_stdfloat sv);
679 INLINE PN_stdfloat get_tex_rotate(
TextureStage *stage)
const;
682 INLINE
void set_tex_pos(
TextureStage *stage, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w);
684 INLINE
void set_tex_hpr(
TextureStage *stage, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
686 INLINE
void set_tex_scale(
TextureStage *stage, PN_stdfloat su, PN_stdfloat sv, PN_stdfloat sw);
692 void set_tex_transform(
const NodePath &other,
TextureStage *stage,
const TransformState *transform);
693 CPT(TransformState) get_tex_transform(
const NodePath &other,
TextureStage *stage)
const;
695 INLINE
void set_tex_offset(
const NodePath &other,
TextureStage *stage, PN_stdfloat u, PN_stdfloat v);
697 INLINE
void set_tex_rotate(
const NodePath &other,
TextureStage *stage, PN_stdfloat r);
698 INLINE
void set_tex_scale(
const NodePath &other,
TextureStage *stage, PN_stdfloat scale);
699 INLINE
void set_tex_scale(
const NodePath &other,
TextureStage *stage, PN_stdfloat su, PN_stdfloat sv);
702 INLINE PN_stdfloat get_tex_rotate(
const NodePath &other,
TextureStage *stage)
const;
705 INLINE
void set_tex_pos(
const NodePath &other,
TextureStage *stage, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w);
707 INLINE
void set_tex_hpr(
const NodePath &other,
TextureStage *stage, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
709 INLINE
void set_tex_scale(
const NodePath &other,
TextureStage *stage, PN_stdfloat su, PN_stdfloat sv, PN_stdfloat sw);
715 void set_tex_gen(
TextureStage *stage, RenderAttrib::TexGenMode mode,
int priority = 0);
716 void set_tex_gen(
TextureStage *stage, RenderAttrib::TexGenMode mode,
719 void clear_tex_gen();
722 RenderAttrib::TexGenMode get_tex_gen(
TextureStage *stage)
const;
724 void set_tex_projector(
TextureStage *stage,
const NodePath &from,
const NodePath &to,
727 void clear_tex_projector();
729 NodePath get_tex_projector_from(
TextureStage *stage)
const;
730 NodePath get_tex_projector_to(
TextureStage *stage)
const;
735 INLINE
bool has_texcoord(
const string &texcoord_name)
const;
736 bool has_vertex_column(
const InternalName *name)
const;
742 Texture *find_texture(
const string &name)
const;
748 TextureStage *find_texture_stage(
const string &name)
const;
754 Material *find_material(
const string &name)
const;
758 void set_material(
Material *tex,
int priority = 0);
759 void set_material_off(
int priority = 0);
760 void clear_material();
761 bool has_material()
const;
764 void set_fog(
Fog *fog,
int priority = 0);
765 void set_fog_off(
int priority = 0);
767 bool has_fog()
const;
768 bool has_fog_off()
const;
769 Fog *get_fog()
const;
771 void set_render_mode_wireframe(
int priority = 0);
772 void set_render_mode_filled(
int priority = 0);
773 void set_render_mode_filled_wireframe(
const LColor &wireframe_color,
int priority = 0);
774 void set_render_mode_thickness(PN_stdfloat thickness,
int priority = 0);
775 void set_render_mode_perspective(
bool perspective,
int priority = 0);
776 void set_render_mode(RenderModeAttrib::Mode mode, PN_stdfloat thickness,
int priority = 0);
777 void clear_render_mode();
778 bool has_render_mode()
const;
779 RenderModeAttrib::Mode get_render_mode()
const;
780 PN_stdfloat get_render_mode_thickness()
const;
781 bool get_render_mode_perspective()
const;
783 void set_two_sided(
bool two_sided,
int priority = 0);
784 void clear_two_sided();
785 bool has_two_sided()
const;
786 bool get_two_sided()
const;
788 void set_depth_test(
bool depth_test,
int priority = 0);
789 void clear_depth_test();
790 bool has_depth_test()
const;
791 bool get_depth_test()
const;
793 void set_depth_write(
bool depth_write,
int priority = 0);
794 void clear_depth_write();
795 bool has_depth_write()
const;
796 bool get_depth_write()
const;
798 void set_depth_offset(
int bias,
int priority = 0);
799 void clear_depth_offset();
800 bool has_depth_offset()
const;
801 int get_depth_offset()
const;
803 void do_billboard_axis(
const NodePath &camera, PN_stdfloat offset);
804 void do_billboard_point_eye(
const NodePath &camera, PN_stdfloat offset);
805 void do_billboard_point_world(
const NodePath &camera, PN_stdfloat offset);
806 INLINE
void set_billboard_axis(PN_stdfloat offset = 0.0);
807 INLINE
void set_billboard_point_eye(PN_stdfloat offset = 0.0);
808 INLINE
void set_billboard_point_world(PN_stdfloat offset = 0.0);
809 void set_billboard_axis(
const NodePath &camera, PN_stdfloat offset);
810 void set_billboard_point_eye(
const NodePath &camera, PN_stdfloat offset);
811 void set_billboard_point_world(
const NodePath &camera, PN_stdfloat offset);
812 void clear_billboard();
813 bool has_billboard()
const;
815 void set_compass(
const NodePath &reference = NodePath());
816 void clear_compass();
817 bool has_compass()
const;
819 void set_transparency(TransparencyAttrib::Mode mode,
int priority = 0);
820 void clear_transparency();
821 bool has_transparency()
const;
822 TransparencyAttrib::Mode get_transparency()
const;
824 void set_antialias(
unsigned short mode,
int priority = 0);
825 void clear_antialias();
826 bool has_antialias()
const;
827 unsigned short get_antialias()
const;
829 bool has_audio_volume()
const;
830 void clear_audio_volume();
831 void set_audio_volume(PN_stdfloat volume,
833 void set_audio_volume_off(
int priority = 0);
834 PN_stdfloat get_audio_volume()
const;
835 PN_stdfloat get_net_audio_volume()
const;
837 INLINE
void adjust_all_priorities(
int adjustment);
841 INLINE
void show(
DrawMask camera_mask);
842 INLINE
void show_through();
843 INLINE
void show_through(
DrawMask camera_mask);
845 INLINE
void hide(
DrawMask camera_mask);
853 INLINE
bool is_stashed()
const;
861 INLINE
bool operator == (
const NodePath &other)
const;
862 INLINE
bool operator != (
const NodePath &other)
const;
863 INLINE
bool operator < (
const NodePath &other)
const;
864 INLINE
int compare_to(
const NodePath &other)
const;
873 void show_tight_bounds();
876 void force_recompute_bounds();
877 void write_bounds(ostream &out)
const;
881 EXTENSION(PyObject *get_tight_bounds()
const);
886 int flatten_medium();
887 int flatten_strong();
888 void apply_texture_colors();
889 INLINE
int clear_model_nodes();
891 INLINE
void set_tag(
const string &key,
const string &value);
892 INLINE
string get_tag(
const string &key)
const;
893 INLINE
void get_tag_keys(vector_string &keys)
const;
894 INLINE
bool has_tag(
const string &key)
const;
895 INLINE
void clear_tag(
const string &key);
896 INLINE
string get_net_tag(
const string &key)
const;
897 INLINE
bool has_net_tag(
const string &key)
const;
898 NodePath find_net_tag(
const string &key)
const;
900 EXTENSION(INLINE PyObject *get_tag_keys()
const);
901 EXTENSION(INLINE
void set_python_tag(
const string &key, PyObject *value));
902 EXTENSION(INLINE PyObject *get_python_tag(
const string &key)
const);
903 EXTENSION(INLINE
void get_python_tag_keys(vector_string &keys)
const);
904 EXTENSION(INLINE PyObject *get_python_tag_keys()
const);
905 EXTENSION(INLINE
bool has_python_tag(
const string &key)
const);
906 EXTENSION(INLINE
void clear_python_tag(
const string &key));
907 EXTENSION(INLINE PyObject *get_net_python_tag(
const string &key)
const);
908 EXTENSION(INLINE
bool has_net_python_tag(
const string &key)
const);
909 EXTENSION(NodePath find_net_python_tag(
const string &key)
const);
911 INLINE
void list_tags()
const;
913 INLINE
void set_name(
const string &name);
914 INLINE
string get_name()
const;
916 BLOCKING
bool write_bam_file(
const Filename &filename)
const;
917 BLOCKING
bool write_bam_stream(ostream &out)
const;
919 INLINE
string encode_to_bam_stream()
const;
920 bool encode_to_bam_stream(
string &data,
BamWriter *writer = NULL)
const;
921 static NodePath decode_from_bam_stream(
const string &data,
BamReader *reader = NULL);
925 find_common_ancestor(
const NodePath &a,
const NodePath &b,
926 int &a_count,
int &b_count,
930 Thread *current_thread)
const;
932 Thread *current_thread)
const;
934 Thread *current_thread)
const;
936 Thread *current_thread)
const;
938 Thread *current_thread)
const;
940 int n,
Thread *current_thread)
const;
943 const string &approx_path_str,
944 int max_matches)
const;
947 int max_matches)
const;
950 int max_matches)
const;
952 int r_clear_model_nodes(
PandaNode *node);
953 void r_adjust_all_priorities(
PandaNode *node,
int adjustment);
955 void r_force_recompute_bounds(
PandaNode *node);
961 typedef phash_set<const InternalName *, pointer_hash> InternalNames;
962 bool r_has_vertex_column(
PandaNode *node,
const InternalName *name)
const;
963 void r_find_all_vertex_columns(
PandaNode *node,
964 InternalNames &vertex_columns)
const;
966 typedef phash_set<Texture *, pointer_hash> Textures;
970 Textures &textures)
const;
973 Textures &textures)
const;
975 typedef phash_set<TextureStage *, pointer_hash> TextureStages;
979 TextureStages &texture_stages)
const;
983 typedef phash_set<Material *, pointer_hash> Materials;
987 Materials &materials)
const;
991 ErrorType _error_type;
992 static int _max_search_depth;
1001 static void init_type() {
1002 register_type(_type_handle,
"NodePath");
1013 INLINE ostream &operator << (ostream &out,
const NodePath &node_path);
1015 #include "nodePath.I"
A basic node of the scene graph or data graph.
The abstract interface to all kinds of lights.
This is the base class for all three-component vectors and points.
This is a const pointer to an InternalName, and should be used in lieu of a CPT(InternalName) in func...
This is the base class for a number of render attributes (other than transform) that may be set on sc...
static TypeHandle none()
Returns a special zero-valued TypeHandle that is used to indicate no type.
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
This class is local to this package only; it doesn't get exported.
static BitMask< WType, nbits > all_on()
Returns a BitMask whose bits are all on.
Represents a texture object, which is typically a single 2-d image but may also represent a 1-d or 3-...
This class is local to this package only; it doesn't get exported.
This is the base class for all two-component vectors and points.
static DrawMask get_overall_bit()
Returns the special bit that, when specifically cleared in the node's DrawMask, indicates that the no...
This is a three-component vector distance (as opposed to a three-component point, which represents a ...
This is a three-component point in space (as opposed to a three-component vector, which represents a ...
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
This is the base class for a number of special render effects that may be set on scene graph nodes to...
A table of objects that are saved within the graphics context for reference by handle later...
This is a class designed to support low-overhead traversals of the complete scene graph...
This is the base class for all three-component vectors and points.
static Thread * get_current_thread()
Returns a pointer to the currently-executing Thread object.
This is an abstract class for any volume in any sense which can be said to define the locality of ref...
A lightweight class that represents a single element that may be timed and/or counted via stats...
The name of a file, such as a texture file or an Egg file.
This is a 4-by-4 transform matrix.
Specifies how atmospheric fog effects are applied to geometry.
This is the base class for all two-component vectors and points.
Manages a list of Texture objects, as returned by TexturePool::find_all_textures().
This class is a wrapper around a NodePath that, unlike the actual NodePath class, doesn't hold a refe...
Defines the way an object appears in the presence of lighting.
This represents a unique collection of RenderAttrib objects that correspond to a particular renderabl...
Represents a set of settings that indicate how a texture is sampled.
This is the base class for all three-component vectors and points.
This is the base class for all three-component vectors and points.
An STL function object class, this is intended to be used on any ordered collection of class objects ...
This is a base class for the GraphicsStateGuardian class, which is itself a base class for the variou...
This is the base quaternion class.
A thread; that is, a lightweight process.
TypeHandle is the identifier used to differentiate C++ class types.
This is a 3-by-3 transform matrix.
Defines the properties of a named stage of the multitexture pipeline.
NodePath is the fundamental system for disambiguating instances, and also provides a higher-level int...
static LVector3f up(CoordinateSystem cs=CS_default)
Returns the up vector for the given coordinate system.
This represents a unique collection of RenderEffect objects that correspond to a particular renderabl...
This class can be used to test for string matches against standard Unix-shell filename globbing conve...
This is one component of a NodePath.
This is a set of zero or more NodePaths.