CollisionNode

class CollisionNode

Bases: PandaNode

A node in the scene graph that can hold any number of CollisionSolids. This may either represent a bit of static geometry in the scene that things will collide with, or an animated object twirling around in the world and running into things.

Inheritance diagram

Inheritance diagram of CollisionNode

explicit CollisionNode(std::string const &name)
std::size_t add_solid(CollisionSolid const *solid)

Adds the indicated solid to the node. Returns the index of the new solid within the node’s list of solids.

void clear_solids(void)

Removes all solids from the node.

static TypeHandle get_class_type(void)
int get_collider_sort(void) const

Returns the collider_sort value that has been set for this particular node. See set_collider_sort().

CollideMask get_default_collide_mask(void)

Returns the default into_collide_mask assigned to new CollisionNodes.

CollideMask get_from_collide_mask(void) const

Returns the current “from” CollideMask. In order for a collision 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.

CollideMask get_into_collide_mask(void) const

Returns the current “into” CollideMask. In order for a collision 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.

std::size_t get_num_solids(void) const
ConstPointerTo<CollisionSolid> get_solid(std::size_t n) const
void insert_solid(std::size_t n, CollisionSolid const *solid)

Inserts the indicated solid to the node at the indicated position.

PointerTo<CollisionSolid> modify_solid(std::size_t n)
void remove_solid(std::size_t n)

Removes the solid with the indicated index. This will shift all subsequent indices down by one.

void set_collide_mask(CollideMask mask)

Simultaneously sets both the “from” and “into” CollideMask values to the same thing.

void set_collider_sort(int sort)

Sets a particular collider_sort value on this node. This controls the order in which colliders (that is, “from nodes”) are grouped together for the collision traversal.

If there are 32 or fewer colliders added to any particular CollisionTraverser, then this value has no meaning. It is only useful if there are many colliders, which may force the CollisionTraverser to make multiple passes through the data; in that case, it may be a useful optimization to group colliders that have similar bounding volumes together (by giving them similar sort values).

void set_from_collide_mask(CollideMask mask)

Sets the “from” CollideMask. In order for a collision 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.

void set_into_collide_mask(CollideMask mask)

Sets the “into” CollideMask. In order for a collision 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.

void set_solid(std::size_t n, CollisionSolid *solid)

Replaces the solid with the indicated index.