29 #include "logicOpAttrib.h" 173 INLINE
explicit NodePath(
const std::string &top_node_name,
Thread *current_thread = Thread::get_current_thread());
177 Thread *current_thread = Thread::get_current_thread());
182 INLINE
void operator = (
const NodePath ©);
183 INLINE
void operator = (
NodePath &&from) noexcept;
187 EXTENSION(
NodePath __copy__()
const);
188 EXTENSION(PyObject *__deepcopy__(PyObject *
self, PyObject *memo)
const);
189 EXTENSION(PyObject *__reduce__(PyObject *
self)
const);
190 EXTENSION(PyObject *__reduce_persist__(PyObject *
self, PyObject *pickler)
const);
196 INLINE
static void set_max_search_depth(
int max_search_depth);
197 INLINE
static int get_max_search_depth();
200 INLINE
bool is_empty()
const;
201 operator bool ()
const;
203 INLINE
bool is_singleton(
Thread *current_thread = Thread::get_current_thread())
const;
204 int get_num_nodes(
Thread *current_thread = Thread::get_current_thread())
const;
205 PandaNode *get_node(
int index,
Thread *current_thread = Thread::get_current_thread())
const;
206 MAKE_SEQ(get_nodes, get_num_nodes, get_node);
207 MAKE_SEQ_PROPERTY(nodes, get_num_nodes, get_node);
208 NodePath get_ancestor(
int index,
Thread *current_thread = Thread::get_current_thread())
const;
209 MAKE_SEQ(get_ancestors, get_num_nodes, get_ancestor);
210 MAKE_SEQ_PROPERTY(ancestors, get_num_nodes, get_ancestor);
212 INLINE ErrorType get_error_type()
const;
213 MAKE_PROPERTY(error_type, get_error_type);
215 INLINE
PandaNode *get_top_node(
Thread *current_thread = Thread::get_current_thread())
const;
216 NodePath get_top(
Thread *current_thread = Thread::get_current_thread())
const;
220 INLINE
int get_key()
const;
221 INLINE
size_t add_hash(
size_t hash)
const;
223 INLINE
bool is_same_graph(
const NodePath &other,
Thread *current_thread = Thread::get_current_thread())
const;
224 INLINE
bool is_ancestor_of(
const NodePath &other,
Thread *current_thread = Thread::get_current_thread())
const;
225 INLINE
NodePath get_common_ancestor(
const NodePath &other,
Thread *current_thread = Thread::get_current_thread())
const;
231 INLINE
int get_num_children(
Thread *current_thread = Thread::get_current_thread())
const;
232 INLINE
NodePath get_child(
int n,
Thread *current_thread = Thread::get_current_thread())
const;
235 MAKE_PROPERTY(children, get_children);
236 MAKE_PROPERTY(stashed_children, get_stashed_children);
238 INLINE
int count_num_descendants()
const;
240 INLINE
bool has_parent(
Thread *current_thread = Thread::get_current_thread())
const;
241 INLINE
NodePath get_parent(
Thread *current_thread = Thread::get_current_thread())
const;
242 int get_sort(
Thread *current_thread = Thread::get_current_thread())
const;
244 MAKE_PROPERTY2(parent, has_parent, get_parent);
245 MAKE_PROPERTY(sort, get_sort);
247 NodePath find(
const std::string &path)
const;
257 void reparent_to(
const NodePath &other,
int sort = 0,
258 Thread *current_thread = Thread::get_current_thread());
259 void stash_to(
const NodePath &other,
int sort = 0,
260 Thread *current_thread = Thread::get_current_thread());
261 void wrt_reparent_to(
const NodePath &other,
int sort = 0,
262 Thread *current_thread = Thread::get_current_thread());
264 Thread *current_thread = Thread::get_current_thread())
const;
265 NodePath instance_under_node(
const NodePath &other,
const std::string &name,
267 Thread *current_thread = Thread::get_current_thread())
const;
269 Thread *current_thread = Thread::get_current_thread())
const;
271 Thread *current_thread = Thread::get_current_thread())
const;
272 INLINE
NodePath attach_new_node(
const std::string &name,
int sort = 0,
273 Thread *current_thread = Thread::get_current_thread())
const;
274 void remove_node(
Thread *current_thread = Thread::get_current_thread());
275 void detach_node(
Thread *current_thread = Thread::get_current_thread());
279 void output(std::ostream &out)
const;
281 INLINE
void ls()
const;
282 INLINE
void ls(std::ostream &out,
int indent_level = 0)
const;
283 INLINE
void reverse_ls()
const;
284 int reverse_ls(std::ostream &out,
int indent_level = 0)
const;
287 const RenderState *get_state(
Thread *current_thread = Thread::get_current_thread())
const;
288 INLINE
void set_state(
const RenderState *state,
Thread *current_thread = Thread::get_current_thread());
291 INLINE CPT(
RenderState) get_net_state(
Thread *current_thread = Thread::get_current_thread())
const;
293 INLINE
void set_attrib(
const RenderAttrib *attrib,
int priority = 0);
295 INLINE
bool has_attrib(
TypeHandle type)
const;
300 INLINE
bool has_effect(
TypeHandle type)
const;
305 INLINE
void clear_effects();
307 const TransformState *get_transform(
Thread *current_thread = Thread::get_current_thread())
const;
308 INLINE
void clear_transform(
Thread *current_thread = Thread::get_current_thread());
309 INLINE
void set_transform(
const TransformState *transform,
Thread *current_thread = Thread::get_current_thread());
311 INLINE
void clear_transform(
const NodePath &other,
Thread *current_thread = Thread::get_current_thread());
313 INLINE CPT(
TransformState) get_net_transform(
Thread *current_thread = Thread::get_current_thread())
const;
315 const TransformState *get_prev_transform(
Thread *current_thread = Thread::get_current_thread())
const;
316 INLINE
void set_prev_transform(
const TransformState *transform,
Thread *current_thread = Thread::get_current_thread());
319 INLINE CPT(
TransformState) get_net_prev_transform(
Thread *current_thread = Thread::get_current_thread())
const;
325 INLINE
void set_pos(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
326 void set_pos(
const LVecBase3 &pos);
327 void set_x(PN_stdfloat x);
328 void set_y(PN_stdfloat y);
329 void set_z(PN_stdfloat z);
330 INLINE
void set_fluid_pos(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
331 void set_fluid_pos(
const LVecBase3 &pos);
332 void set_fluid_x(PN_stdfloat x);
333 void set_fluid_y(PN_stdfloat y);
334 void set_fluid_z(PN_stdfloat z);
335 LPoint3 get_pos()
const;
336 INLINE PN_stdfloat get_x()
const;
337 INLINE PN_stdfloat get_y()
const;
338 INLINE PN_stdfloat get_z()
const;
340 LVector3 get_pos_delta()
const;
342 INLINE
void set_hpr(PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
343 void set_hpr(
const LVecBase3 &hpr);
344 void set_h(PN_stdfloat h);
345 void set_p(PN_stdfloat p);
346 void set_r(PN_stdfloat r);
347 LVecBase3 get_hpr()
const;
348 INLINE PN_stdfloat get_h()
const;
349 INLINE PN_stdfloat get_p()
const;
350 INLINE PN_stdfloat get_r()
const;
352 void set_quat(
const LQuaternion &quat);
353 LQuaternion get_quat()
const;
355 INLINE
void set_scale(PN_stdfloat scale);
356 INLINE
void set_scale(PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
357 void set_scale(
const LVecBase3 &scale);
358 void set_sx(PN_stdfloat sx);
359 void set_sy(PN_stdfloat sy);
360 void set_sz(PN_stdfloat sz);
361 LVecBase3 get_scale()
const;
362 INLINE PN_stdfloat get_sx()
const;
363 INLINE PN_stdfloat get_sy()
const;
364 INLINE PN_stdfloat get_sz()
const;
366 INLINE
void set_shear(PN_stdfloat shxy, PN_stdfloat shxz, PN_stdfloat shyz);
367 void set_shear(
const LVecBase3 &shear);
368 void set_shxy(PN_stdfloat shxy);
369 void set_shxz(PN_stdfloat shxz);
370 void set_shyz(PN_stdfloat shyz);
371 LVecBase3 get_shear()
const;
372 INLINE PN_stdfloat get_shxy()
const;
373 INLINE PN_stdfloat get_shxz()
const;
374 INLINE PN_stdfloat get_shyz()
const;
376 INLINE
void set_pos_hpr(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z,
377 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
378 void set_pos_hpr(
const LVecBase3 &pos,
379 const LVecBase3 &hpr);
380 void set_pos_quat(
const LVecBase3 &pos,
381 const LQuaternion &quat);
383 INLINE
void set_hpr_scale(PN_stdfloat h, PN_stdfloat p, PN_stdfloat r,
384 PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
385 void set_hpr_scale(
const LVecBase3 &hpr,
386 const LVecBase3 &scale);
387 void set_quat_scale(
const LQuaternion &quat,
388 const LVecBase3 &scale);
389 INLINE
void set_pos_hpr_scale(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z,
390 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r,
391 PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
392 void set_pos_hpr_scale(
const LVecBase3 &pos,
393 const LVecBase3 &hpr,
394 const LVecBase3 &scale);
395 void set_pos_quat_scale(
const LVecBase3 &pos,
396 const LQuaternion &quat,
397 const LVecBase3 &scale);
398 void set_pos_hpr_scale_shear(
const LVecBase3 &pos,
399 const LVecBase3 &hpr,
400 const LVecBase3 &scale,
401 const LVecBase3 &shear);
402 void set_pos_quat_scale_shear(
const LVecBase3 &pos,
403 const LQuaternion &quat,
404 const LVecBase3 &scale,
405 const LVecBase3 &shear);
407 void set_mat(
const LMatrix4 &mat);
408 INLINE
void clear_mat();
409 INLINE
bool has_mat()
const;
410 INLINE
const LMatrix4 &get_mat()
const;
412 INLINE
void look_at(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
413 void look_at(
const LPoint3 &point,
const LVector3 &up = LVector3::up());
414 INLINE
void heads_up(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
415 void heads_up(
const LPoint3 &point,
const LVector3 &up = LVector3::up());
420 INLINE
void set_pos(
const NodePath &other, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
421 void set_pos(
const NodePath &other,
const LVecBase3 &pos);
422 void set_x(
const NodePath &other, PN_stdfloat x);
423 void set_y(
const NodePath &other, PN_stdfloat y);
424 void set_z(
const NodePath &other, PN_stdfloat z);
425 INLINE
void set_fluid_pos(
const NodePath &other, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
426 void set_fluid_pos(
const NodePath &other,
const LVecBase3 &pos);
427 void set_fluid_x(
const NodePath &other, PN_stdfloat x);
428 void set_fluid_y(
const NodePath &other, PN_stdfloat y);
429 void set_fluid_z(
const NodePath &other, PN_stdfloat z);
430 LPoint3 get_pos(
const NodePath &other)
const;
431 INLINE PN_stdfloat get_x(
const NodePath &other)
const;
432 INLINE PN_stdfloat get_y(
const NodePath &other)
const;
433 INLINE PN_stdfloat get_z(
const NodePath &other)
const;
435 LVector3 get_pos_delta(
const NodePath &other)
const;
437 INLINE
void set_hpr(
const NodePath &other, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
438 void set_hpr(
const NodePath &other,
const LVecBase3 &hpr);
439 void set_h(
const NodePath &other, PN_stdfloat h);
440 void set_p(
const NodePath &other, PN_stdfloat p);
441 void set_r(
const NodePath &other, PN_stdfloat r);
442 LVecBase3 get_hpr(
const NodePath &other)
const;
443 INLINE PN_stdfloat get_h(
const NodePath &other)
const;
444 INLINE PN_stdfloat get_p(
const NodePath &other)
const;
445 INLINE PN_stdfloat get_r(
const NodePath &other)
const;
447 void set_quat(
const NodePath &other,
const LQuaternion &quat);
448 LQuaternion get_quat(
const NodePath &other)
const;
450 INLINE
void set_scale(
const NodePath &other, PN_stdfloat scale);
451 INLINE
void set_scale(
const NodePath &other, PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
452 void set_scale(
const NodePath &other,
const LVecBase3 &scale);
453 void set_sx(
const NodePath &other, PN_stdfloat sx);
454 void set_sy(
const NodePath &other, PN_stdfloat sy);
455 void set_sz(
const NodePath &other, PN_stdfloat sz);
456 LVecBase3 get_scale(
const NodePath &other)
const;
457 INLINE PN_stdfloat get_sx(
const NodePath &other)
const;
458 INLINE PN_stdfloat get_sy(
const NodePath &other)
const;
459 INLINE PN_stdfloat get_sz(
const NodePath &other)
const;
461 INLINE
void set_shear(
const NodePath &other, PN_stdfloat shxy, PN_stdfloat shxz, PN_stdfloat shyz);
462 void set_shear(
const NodePath &other,
const LVecBase3 &shear);
463 void set_shxy(
const NodePath &other, PN_stdfloat shxy);
464 void set_shxz(
const NodePath &other, PN_stdfloat shxz);
465 void set_shyz(
const NodePath &other, PN_stdfloat shyz);
466 LVecBase3 get_shear(
const NodePath &other)
const;
467 INLINE PN_stdfloat get_shxy(
const NodePath &other)
const;
468 INLINE PN_stdfloat get_shxz(
const NodePath &other)
const;
469 INLINE PN_stdfloat get_shyz(
const NodePath &other)
const;
471 INLINE
void set_pos_hpr(
const NodePath &other,
472 PN_stdfloat x, PN_stdfloat y, PN_stdfloat z,
473 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
474 void set_pos_hpr(
const NodePath &other,
475 const LVecBase3 &pos,
476 const LVecBase3 &hpr);
477 void set_pos_quat(
const NodePath &other,
478 const LVecBase3 &pos,
479 const LQuaternion &quat);
480 INLINE
void set_hpr_scale(
const NodePath &other,
481 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r,
482 PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
483 void set_hpr_scale(
const NodePath &other,
484 const LVecBase3 &hpr,
485 const LVecBase3 &scale);
486 void set_quat_scale(
const NodePath &other,
487 const LQuaternion &quat,
488 const LVecBase3 &scale);
489 INLINE
void set_pos_hpr_scale(
const NodePath &other,
490 PN_stdfloat x, PN_stdfloat y, PN_stdfloat z,
491 PN_stdfloat h, PN_stdfloat p, PN_stdfloat r,
492 PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz);
493 void set_pos_hpr_scale(
const NodePath &other,
494 const LVecBase3 &pos,
495 const LVecBase3 &hpr,
496 const LVecBase3 &scale);
497 void set_pos_quat_scale(
const NodePath &other,
498 const LVecBase3 &pos,
499 const LQuaternion &quat,
500 const LVecBase3 &scale);
501 void set_pos_hpr_scale_shear(
const NodePath &other,
502 const LVecBase3 &pos,
503 const LVecBase3 &hpr,
504 const LVecBase3 &scale,
505 const LVecBase3 &shear);
506 void set_pos_quat_scale_shear(
const NodePath &other,
507 const LVecBase3 &pos,
508 const LQuaternion &quat,
509 const LVecBase3 &scale,
510 const LVecBase3 &shear);
512 LMatrix4 get_mat(
const NodePath &other)
const;
513 void set_mat(
const NodePath &other,
const LMatrix4 &mat);
515 LPoint3 get_relative_point(
const NodePath &other,
const LVecBase3 &point)
const;
516 LVector3 get_relative_vector(
const NodePath &other,
const LVecBase3 &vec)
const;
518 INLINE
void look_at(
const NodePath &other,
519 PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
521 const LPoint3 &point = LPoint3(0.0, 0.0, 0.0),
522 const LVector3 &up = LVector3::up());
523 INLINE
void heads_up(
const NodePath &other,
524 PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
525 void heads_up(
const NodePath &other,
526 const LPoint3 &point = LPoint3(0.0, 0.0, 0.0),
527 const LVector3 &up = LVector3::up());
529 INLINE PN_stdfloat get_distance(
const NodePath &other)
const;
535 void set_color(PN_stdfloat r, PN_stdfloat g, PN_stdfloat b, PN_stdfloat a = 1.0,
537 void set_color(
const LColor &color,
int priority = 0);
538 void set_color_off(
int priority = 0);
540 bool has_color()
const;
541 LColor get_color()
const;
543 bool has_color_scale()
const;
544 void clear_color_scale();
545 void set_color_scale(
const LVecBase4 &scale,
547 INLINE
void set_color_scale(PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz, PN_stdfloat sa,
549 void compose_color_scale(
const LVecBase4 &scale,
551 INLINE
void compose_color_scale(PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz, PN_stdfloat sa,
553 void set_color_scale_off(
int priority = 0);
555 void set_alpha_scale(PN_stdfloat scale,
int priority = 0);
556 void set_all_color_scale(PN_stdfloat scale,
int priority = 0);
557 INLINE
void set_sr(PN_stdfloat sr);
558 INLINE
void set_sg(PN_stdfloat sg);
559 INLINE
void set_sb(PN_stdfloat sb);
560 INLINE
void set_sa(PN_stdfloat sa);
562 const LVecBase4 &get_color_scale()
const;
563 INLINE PN_stdfloat get_sr()
const;
564 INLINE PN_stdfloat get_sg()
const;
565 INLINE PN_stdfloat get_sb()
const;
566 INLINE PN_stdfloat get_sa()
const;
568 void set_light(
const NodePath &light,
int priority = 0);
569 void set_light_off(
int priority = 0);
570 void set_light_off(
const NodePath &light,
int priority = 0);
572 void clear_light(
const NodePath &light);
573 bool has_light(
const NodePath &light)
const;
574 bool has_light_off()
const;
575 bool has_light_off(
const NodePath &light)
const;
577 void set_clip_plane(
const NodePath &clip_plane,
int priority = 0);
578 void set_clip_plane_off(
int priority = 0);
579 void set_clip_plane_off(
const NodePath &clip_plane,
int priority = 0);
580 void clear_clip_plane();
581 void clear_clip_plane(
const NodePath &clip_plane);
582 bool has_clip_plane(
const NodePath &clip_plane)
const;
583 bool has_clip_plane_off()
const;
584 bool has_clip_plane_off(
const NodePath &clip_plane)
const;
586 void set_scissor(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top);
587 void set_scissor(
const LPoint3 &a,
const LPoint3 &b);
588 void set_scissor(
const LPoint3 &a,
const LPoint3 &b,
589 const LPoint3 &c,
const LPoint3 &d);
590 void set_scissor(
const NodePath &other,
591 const LPoint3 &a,
const LPoint3 &b);
592 void set_scissor(
const NodePath &other,
593 const LPoint3 &a,
const LPoint3 &b,
594 const LPoint3 &c,
const LPoint3 &d);
595 void clear_scissor();
596 bool has_scissor()
const;
598 void set_occluder(
const NodePath &occluder);
599 void clear_occluder();
600 void clear_occluder(
const NodePath &occluder);
601 bool has_occluder(
const NodePath &occluder)
const;
603 void set_bin(
const std::string &bin_name,
int draw_order,
int priority = 0);
605 bool has_bin()
const;
606 std::string get_bin_name()
const;
607 int get_bin_draw_order()
const;
609 void set_texture(
Texture *tex,
int priority = 0);
613 void set_texture_off(
int priority = 0);
614 void set_texture_off(
TextureStage *stage,
int priority = 0);
615 void clear_texture();
617 bool has_texture()
const;
619 bool has_texture_off()
const;
626 void set_shader(
const Shader *sha,
int priority = 0);
627 void set_shader_off(
int priority = 0);
628 void set_shader_auto(
int priority = 0);
629 void set_shader_auto(
BitMask32 shader_switch,
int priority=0);
636 INLINE
void set_shader_input(
CPT_InternalName id,
Texture *tex,
bool read,
bool write,
int z=-1,
int n=0,
int priority=0);
642 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_float &v,
int priority=0);
643 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_double &v,
int priority=0);
644 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_int &v,
int priority=0);
645 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase4 &v,
int priority=0);
646 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase3 &v,
int priority=0);
647 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase2 &v,
int priority=0);
648 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LMatrix4 &v,
int priority=0);
649 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LMatrix3 &v,
int priority=0);
650 INLINE
void set_shader_input(
CPT_InternalName id,
const LVecBase4 &v,
int priority=0);
651 INLINE
void set_shader_input(
CPT_InternalName id,
const LVecBase3 &v,
int priority=0);
652 INLINE
void set_shader_input(
CPT_InternalName id,
const LVecBase2 &v,
int priority=0);
653 INLINE
void set_shader_input(
CPT_InternalName id,
const LMatrix4 &v,
int priority=0);
654 INLINE
void set_shader_input(
CPT_InternalName id,
const LMatrix3 &v,
int priority=0);
655 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase4i &v,
int priority=0);
656 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase3i &v,
int priority=0);
657 INLINE
void set_shader_input(
CPT_InternalName id,
const PTA_LVecBase2i &v,
int priority=0);
658 INLINE
void set_shader_input(
CPT_InternalName id,
const LVecBase4i &v,
int priority=0);
659 INLINE
void set_shader_input(
CPT_InternalName id,
const LVecBase3i &v,
int priority=0);
660 INLINE
void set_shader_input(
CPT_InternalName id,
const LVecBase2i &v,
int priority=0);
663 int n4=0,
int priority=0);
664 INLINE
void set_shader_input(
CPT_InternalName id, PN_stdfloat n1, PN_stdfloat n2,
665 PN_stdfloat n3=0, PN_stdfloat n4=0,
int priority=0);
667 EXTENSION(
void set_shader_input(
CPT_InternalName, PyObject *,
int priority=0));
668 EXTENSION(
void set_shader_inputs(PyObject *args, PyObject *kwargs));
671 void set_instance_count(
int instance_count);
673 const Shader *get_shader()
const;
675 int get_instance_count()
const;
678 void clear_tex_transform();
683 INLINE
void set_tex_offset(
TextureStage *stage, PN_stdfloat u, PN_stdfloat v);
684 INLINE
void set_tex_offset(
TextureStage *stage,
const LVecBase2 &uv);
685 INLINE
void set_tex_rotate(
TextureStage *stage, PN_stdfloat r);
686 INLINE
void set_tex_scale(
TextureStage *stage, PN_stdfloat scale);
687 INLINE
void set_tex_scale(
TextureStage *stage, PN_stdfloat su, PN_stdfloat sv);
688 INLINE
void set_tex_scale(
TextureStage *stage,
const LVecBase2 &scale);
689 INLINE LVecBase2 get_tex_offset(
TextureStage *stage)
const;
690 INLINE PN_stdfloat get_tex_rotate(
TextureStage *stage)
const;
691 INLINE LVecBase2 get_tex_scale(
TextureStage *stage)
const;
693 INLINE
void set_tex_pos(
TextureStage *stage, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w);
694 INLINE
void set_tex_pos(
TextureStage *stage,
const LVecBase3 &uvw);
695 INLINE
void set_tex_hpr(
TextureStage *stage, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
696 INLINE
void set_tex_hpr(
TextureStage *stage,
const LVecBase3 &hpr);
697 INLINE
void set_tex_scale(
TextureStage *stage, PN_stdfloat su, PN_stdfloat sv, PN_stdfloat sw);
698 INLINE
void set_tex_scale(
TextureStage *stage,
const LVecBase3 &scale);
699 INLINE LVecBase3 get_tex_pos(
TextureStage *stage)
const;
700 INLINE LVecBase3 get_tex_hpr(
TextureStage *stage)
const;
701 INLINE LVecBase3 get_tex_scale_3d(
TextureStage *stage)
const;
706 INLINE
void set_tex_offset(
const NodePath &other,
TextureStage *stage, PN_stdfloat u, PN_stdfloat v);
710 INLINE
void set_tex_scale(
const NodePath &other,
TextureStage *stage, PN_stdfloat su, PN_stdfloat sv);
716 INLINE
void set_tex_pos(
const NodePath &other,
TextureStage *stage, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w);
718 INLINE
void set_tex_hpr(
const NodePath &other,
TextureStage *stage, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
720 INLINE
void set_tex_scale(
const NodePath &other,
TextureStage *stage, PN_stdfloat su, PN_stdfloat sv, PN_stdfloat sw);
726 void set_tex_gen(
TextureStage *stage, RenderAttrib::TexGenMode mode,
int priority = 0);
727 void set_tex_gen(
TextureStage *stage, RenderAttrib::TexGenMode mode,
728 const LTexCoord3 &constant_value,
730 void clear_tex_gen();
733 RenderAttrib::TexGenMode get_tex_gen(
TextureStage *stage)
const;
738 void clear_tex_projector();
746 INLINE
bool has_texcoord(
const std::string &texcoord_name)
const;
753 Texture *find_texture(
const std::string &name)
const;
759 TextureStage *find_texture_stage(
const std::string &name)
const;
765 Material *find_material(
const std::string &name)
const;
769 void set_material(
Material *tex,
int priority = 0);
770 void set_material_off(
int priority = 0);
771 void clear_material();
772 bool has_material()
const;
776 void set_fog(
Fog *fog,
int priority = 0);
777 void set_fog_off(
int priority = 0);
779 bool has_fog()
const;
780 bool has_fog_off()
const;
781 Fog *get_fog()
const;
783 void set_render_mode_wireframe(
int priority = 0);
784 void set_render_mode_filled(
int priority = 0);
785 void set_render_mode_filled_wireframe(
const LColor &wireframe_color,
int priority = 0);
786 void set_render_mode_thickness(PN_stdfloat thickness,
int priority = 0);
787 void set_render_mode_perspective(
bool perspective,
int priority = 0);
788 void set_render_mode(RenderModeAttrib::Mode mode, PN_stdfloat thickness,
int priority = 0);
789 void clear_render_mode();
790 bool has_render_mode()
const;
791 RenderModeAttrib::Mode get_render_mode()
const;
792 PN_stdfloat get_render_mode_thickness()
const;
793 bool get_render_mode_perspective()
const;
795 void set_two_sided(
bool two_sided,
int priority = 0);
796 void clear_two_sided();
797 bool has_two_sided()
const;
798 bool get_two_sided()
const;
800 void set_depth_test(
bool depth_test,
int priority = 0);
801 void clear_depth_test();
802 bool has_depth_test()
const;
803 bool get_depth_test()
const;
805 void set_depth_write(
bool depth_write,
int priority = 0);
806 void clear_depth_write();
807 bool has_depth_write()
const;
808 bool get_depth_write()
const;
810 void set_depth_offset(
int bias,
int priority = 0);
811 void clear_depth_offset();
812 bool has_depth_offset()
const;
813 int get_depth_offset()
const;
815 void do_billboard_axis(
const NodePath &camera, PN_stdfloat offset);
816 void do_billboard_point_eye(
const NodePath &camera, PN_stdfloat offset);
817 void do_billboard_point_world(
const NodePath &camera, PN_stdfloat offset);
818 INLINE
void set_billboard_axis(PN_stdfloat offset = 0.0);
819 INLINE
void set_billboard_point_eye(PN_stdfloat offset = 0.0,
bool fixed_depth =
false);
820 INLINE
void set_billboard_point_world(PN_stdfloat offset = 0.0);
821 void set_billboard_axis(
const NodePath &camera, PN_stdfloat offset);
822 void set_billboard_point_eye(
const NodePath &camera, PN_stdfloat offset,
bool fixed_depth =
false);
823 void set_billboard_point_world(
const NodePath &camera, PN_stdfloat offset);
824 void clear_billboard();
825 bool has_billboard()
const;
828 void clear_compass();
829 bool has_compass()
const;
831 void set_transparency(TransparencyAttrib::Mode mode,
int priority = 0);
832 void clear_transparency();
833 bool has_transparency()
const;
834 TransparencyAttrib::Mode get_transparency()
const;
836 void set_logic_op(LogicOpAttrib::Operation op,
int priority = 0);
837 void clear_logic_op();
838 bool has_logic_op()
const;
839 LogicOpAttrib::Operation get_logic_op()
const;
841 void set_antialias(
unsigned short mode,
int priority = 0);
842 void clear_antialias();
843 bool has_antialias()
const;
844 unsigned short get_antialias()
const;
846 bool has_audio_volume()
const;
847 void clear_audio_volume();
848 void set_audio_volume(PN_stdfloat volume,
850 void set_audio_volume_off(
int priority = 0);
851 PN_stdfloat get_audio_volume()
const;
852 PN_stdfloat get_net_audio_volume()
const;
854 INLINE
void adjust_all_priorities(
int adjustment);
858 INLINE
void show(
DrawMask camera_mask);
859 INLINE
void show_through();
860 INLINE
void show_through(
DrawMask camera_mask);
862 INLINE
void hide(
DrawMask camera_mask);
863 INLINE
bool is_hidden(
DrawMask camera_mask = PandaNode::get_overall_bit())
const;
864 NodePath get_hidden_ancestor(
DrawMask camera_mask = PandaNode::get_overall_bit(),
865 Thread *current_thread = Thread::get_current_thread())
const;
867 void stash(
int sort = 0,
Thread *current_thread = Thread::get_current_thread());
868 void unstash(
int sort = 0,
Thread *current_thread = Thread::get_current_thread());
869 void unstash_all(
Thread *current_thread = Thread::get_current_thread());
870 INLINE
bool is_stashed()
const;
871 NodePath get_stashed_ancestor(
Thread *current_thread = Thread::get_current_thread())
const;
878 INLINE
bool operator == (
const NodePath &other)
const;
879 INLINE
bool operator != (
const NodePath &other)
const;
880 INLINE
bool operator < (
const NodePath &other)
const;
889 bool verify_complete(
Thread *current_thread = Thread::get_current_thread())
const;
895 void show_tight_bounds();
898 void force_recompute_bounds();
899 void write_bounds(std::ostream &out)
const;
900 bool calc_tight_bounds(LPoint3 &min_point, LPoint3 &max_point,
902 Thread *current_thread = Thread::get_current_thread())
const;
904 EXTENSION(PyObject *get_tight_bounds(
const NodePath &other =
NodePath())
const);
909 int flatten_medium();
910 int flatten_strong();
911 void apply_texture_colors();
912 INLINE
int clear_model_nodes();
914 INLINE
void set_tag(
const std::string &key,
const std::string &value);
915 INLINE std::string get_tag(
const std::string &key)
const;
916 INLINE
void get_tag_keys(vector_string &keys)
const;
917 INLINE
bool has_tag(
const std::string &key)
const;
918 INLINE
void clear_tag(
const std::string &key);
919 INLINE std::string get_net_tag(
const std::string &key)
const;
920 INLINE
bool has_net_tag(
const std::string &key)
const;
921 NodePath find_net_tag(
const std::string &key)
const;
923 MAKE_MAP_PROPERTY(net_tags, has_net_tag, get_net_tag);
925 EXTENSION(INLINE PyObject *get_tags()
const);
926 EXTENSION(INLINE PyObject *get_tag_keys()
const);
927 MAKE_PROPERTY(tags, get_tags);
929 EXTENSION(PyObject *get_python_tags());
930 EXTENSION(INLINE
void set_python_tag(PyObject *keys, PyObject *value));
931 EXTENSION(INLINE PyObject *get_python_tag(PyObject *keys)
const);
932 EXTENSION(INLINE PyObject *get_python_tag_keys()
const);
933 EXTENSION(INLINE
bool has_python_tag(PyObject *keys)
const);
934 EXTENSION(INLINE
void clear_python_tag(PyObject *keys));
935 EXTENSION(INLINE PyObject *get_net_python_tag(PyObject *keys)
const);
936 EXTENSION(INLINE
bool has_net_python_tag(PyObject *keys)
const);
937 EXTENSION(
NodePath find_net_python_tag(PyObject *keys)
const);
938 MAKE_PROPERTY(python_tags, get_python_tags);
940 EXTENSION(
int __traverse__(visitproc visit,
void *arg));
942 INLINE
void list_tags()
const;
944 INLINE
void set_name(
const std::string &name);
945 INLINE std::string get_name()
const;
946 MAKE_PROPERTY(name, get_name, set_name);
948 BLOCKING
bool write_bam_file(
const Filename &filename)
const;
949 BLOCKING
bool write_bam_stream(std::ostream &out)
const;
951 INLINE vector_uchar encode_to_bam_stream()
const;
952 bool encode_to_bam_stream(vector_uchar &data,
BamWriter *writer =
nullptr)
const;
953 static NodePath decode_from_bam_stream(vector_uchar data,
BamReader *reader =
nullptr);
958 int &a_count,
int &b_count,
962 Thread *current_thread)
const;
964 Thread *current_thread)
const;
966 Thread *current_thread)
const;
968 Thread *current_thread)
const;
970 Thread *current_thread)
const;
972 int n,
Thread *current_thread)
const;
975 const std::string &approx_path_str,
976 int max_matches)
const;
979 int max_matches)
const;
982 int max_matches)
const;
984 int r_clear_model_nodes(
PandaNode *node);
985 void r_adjust_all_priorities(
PandaNode *node,
int adjustment);
987 void r_force_recompute_bounds(
PandaNode *node);
993 typedef phash_set<const InternalName *, pointer_hash> InternalNames;
995 void r_find_all_vertex_columns(
PandaNode *node,
996 InternalNames &vertex_columns)
const;
998 typedef phash_set<Texture *, pointer_hash> Textures;
1002 Textures &textures)
const;
1005 Textures &textures)
const;
1007 typedef phash_set<TextureStage *, pointer_hash> TextureStages;
1011 TextureStages &texture_stages)
const;
1015 typedef phash_set<Material *, pointer_hash> Materials;
1019 Materials &materials)
const;
1025 ErrorType _error_type;
1026 static int _max_search_depth;
1038 return _type_handle;
1040 static void init_type() {
1053 INLINE std::ostream &operator << (std::ostream &out,
const NodePath &node_path);
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A basic node of the scene graph or data graph.
The abstract interface to all kinds of lights.
This is a const pointer to an InternalName, and should be used in lieu of a CPT(InternalName) in func...
This is a generic buffer object that lives in graphics memory.
This is the base class for a number of render attributes (other than transform) that may be set on sc...
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
Indicates which, if any, material should be applied to geometry.
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.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Represents a texture object, which is typically a single 2-d image but may also represent a 1-d or 3-...
Base class for objects that can be written to and read from Bam files.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class is local to this package only; it doesn't get exported.
This collects together the pieces of data that are accumulated for each node while walking the scene ...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
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...
This is our own Panda specialization on the default STL list.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
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 an abstract class for any volume in any sense which can be said to define the locality of ref...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A lightweight class that represents a single element that may be timed and/or counted via stats.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
The name of a file, such as a texture file or an Egg file.
Specifies how atmospheric fog effects are applied to geometry.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
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...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Defines the way an object appears in the presence of lighting.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Encodes a string name in a hash table, mapping it to a pointer.
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.
An STL function object class, this is intended to be used on any ordered collection of class objects ...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is a base class for the GraphicsStateGuardian class, which is itself a base class for the variou...
A thread; that is, a lightweight process.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A class to retrieve the individual data elements previously stored in a Datagram.
TypeHandle is the identifier used to differentiate C++ class types.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Defines the properties of a named stage of the multitexture pipeline.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
NodePath is the fundamental system for disambiguating instances, and also provides a higher-level int...
This represents a unique collection of RenderEffect objects that correspond to a particular renderabl...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class can be used to test for string matches against standard Unix- shell filename globbing conv...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is one component of a NodePath.
This is a set of zero or more NodePaths.