32 _flags &= ~F_tangible;
34 _flags |= F_viz_geom_stale;
49 return do_is_tangible();
67 _effective_normal = effective_normal;
68 _flags |= F_effective_normal;
80 _flags &= ~F_effective_normal;
92 return do_has_effective_normal();
106 return _effective_normal;
124 if (respect_effective_normal) {
125 _flags &= ~F_ignore_effective_normal;
127 _flags |= F_ignore_effective_normal;
139 return (_flags & F_ignore_effective_normal) == 0;
148 INLINE
bool CollisionSolid::
149 do_is_tangible()
const {
150 return (_flags & F_tangible) != 0;
160 INLINE
bool CollisionSolid::
161 do_has_effective_normal()
const {
162 return respect_effective_normal && (_flags & F_effective_normal) != 0;
173 INLINE
void CollisionSolid::
174 mark_internal_bounds_stale() {
176 _flags |= F_internal_bounds_stale;
187 INLINE
void CollisionSolid::
190 _flags |= F_viz_geom_stale;
void set_tangible(bool tangible)
Sets the current state of the 'tangible' flag.
bool get_respect_effective_normal() const
See set_respect_effective_normal().
static const LVector3f & zero()
Returns a zero-length vector.
This is a three-component vector distance (as opposed to a three-component point, which represents a ...
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...
const LVector3 & get_effective_normal() const
Returns the normal that was set by set_effective_normal().
void clear_effective_normal()
Removes the normal previously set by set_effective_normal().
Similar to MutexHolder, but for a light mutex.
bool is_tangible() const
Returns whether the solid is considered 'tangible' or not.
void set_respect_effective_normal(bool respect_effective_normal)
This is only meaningful for CollisionSolids that will be added to a traverser as colliders.
bool has_effective_normal() const
Returns true if a special normal was set by set_effective_normal(), false otherwise.