26 _flags &= ~F_tangible;
28 _flags |= F_viz_geom_stale;
37 INLINE
bool CollisionSolid::
40 return do_is_tangible();
53 _effective_normal = effective_normal;
54 _flags |= F_effective_normal;
63 _flags &= ~F_effective_normal;
73 return do_has_effective_normal();
83 nassertr(do_has_effective_normal(), LVector3::zero());
84 return _effective_normal;
98 if (respect_effective_normal) {
99 _flags &= ~F_ignore_effective_normal;
101 _flags |= F_ignore_effective_normal;
108 INLINE
bool CollisionSolid::
109 get_respect_effective_normal()
const {
111 return (_flags & F_ignore_effective_normal) == 0;
118 INLINE
bool CollisionSolid::
119 do_is_tangible()
const {
120 return (_flags & F_tangible) != 0;
127 INLINE
bool CollisionSolid::
128 do_has_effective_normal()
const {
129 return respect_effective_normal && (_flags & F_effective_normal) != 0;
137 INLINE
void CollisionSolid::
138 mark_internal_bounds_stale() {
140 _flags |= F_internal_bounds_stale;
148 INLINE
void CollisionSolid::
151 _flags |= F_viz_geom_stale;
const LVector3 & get_effective_normal() const
Returns the normal that was set by set_effective_normal().
void set_effective_normal(const LVector3 &effective_normal)
Records a false normal for this CollisionSolid that will be reported by the collision system with all...
void clear_effective_normal()
Removes the normal previously set by set_effective_normal().
set_respect_effective_normal
This is only meaningful for CollisionSolids that will be added to a traverser as colliders.
Similar to MutexHolder, but for a light mutex.
bool has_effective_normal() const
Returns true if a special normal was set by set_effective_normal(), false otherwise.
set_tangible
Sets the current state of the 'tangible' flag.