Panda3D
Public Types | Public Member Functions | Static Public Member Functions | List of all members
BoundingVolume Class Reference

This is an abstract class for any volume in any sense which can be said to define the locality of reference of a node in a graph, along with all of its descendants. More...

Inheritance diagram for BoundingVolume:
TypedReferenceCount TypedObject ReferenceCount GeometricBoundingVolume BoundingLine BoundingPlane FiniteBoundingVolume IntersectionBoundingVolume OmniBoundingVolume UnionBoundingVolume BoundingBox BoundingHexahedron BoundingSphere

Public Types

enum  BoundsType {
  BT_default = 0, BT_best = 1, BT_sphere = 2, BT_box = 3,
  BT_fastest = 4
}
 
enum  IntersectionFlags {
  IF_no_intersection = 0, IF_possible = 1, IF_some = 2, IF_all = 4,
  IF_dont_understand = 8
}
 

Public Member Functions

int contains (const BoundingVolume vol)
 Returns the appropriate set of IntersectionFlags to indicate the amount of intersection with the indicated volume. More...
 
bool extendBy (const BoundingVolume vol)
 Increases the size of the volume to include the given volume. More...
 
bool isEmpty ()
 Any kind of volume might be empty. More...
 
bool isInfinite ()
 The other side of the empty coin is an infinite volume. More...
 
BoundingVolume makeCopy ()
 
 output (Ostream out)
 
 setInfinite ()
 Marks the volume as infinite, even if it is normally finite. More...
 
 write (Ostream out, int indent_level)
 
- Public Member Functions inherited from TypedObject
TypeHandle getType ()
 
int getTypeIndex ()
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More...
 
bool isExactType (TypeHandle handle)
 Returns true if the current object is the indicated type exactly. More...
 
bool isOfType (TypeHandle handle)
 Returns true if the current object is or derives from the indicated type. More...
 
- Public Member Functions inherited from ReferenceCount
int getRefCount ()
 Returns the current reference count. More...
 
 ref ()
 Explicitly increments the reference count. More...
 
bool testRefCountIntegrity ()
 Does some easy checks to make sure that the reference count isn't completely bogus. More...
 
bool testRefCountNonzero ()
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More...
 
bool unref ()
 Explicitly decrements the reference count. More...
 

Static Public Member Functions

static TypeHandle getClassType ()
 
- Static Public Member Functions inherited from TypedReferenceCount
static TypeHandle getClassType ()
 
- Static Public Member Functions inherited from TypedObject
static TypeHandle getClassType ()
 
- Static Public Member Functions inherited from ReferenceCount
static TypeHandle getClassType ()
 

Additional Inherited Members

- Public Attributes inherited from TypedObject
TypeHandle type
 Returns the TypeHandle representing this object's type. More...
 
- Public Attributes inherited from ReferenceCount
int ref_count
 The current reference count. More...
 

Detailed Description

This is an abstract class for any volume in any sense which can be said to define the locality of reference of a node in a graph, along with all of its descendants.

It is not necessarily a geometric volume (although see GeometricBoundingVolume); this is simply an abstract interface for bounds of any sort.

Member Enumeration Documentation

◆ BoundsType

enum BoundsType
Enumerator
BT_default 
BT_best 
BT_sphere 
BT_box 
BT_fastest 

◆ IntersectionFlags

Enumerator
IF_no_intersection 

If no bits are set, it is known that there is no intersection.

IF_possible 

IF_possible is set if there might be an intersection.

IF_some 

IF_some is set if there is definitely an intersection. In this case, IF_possible will also be set.

IF_all 

When IF_all is set, both IF_possible and IF_some will also be set.

IF_dont_understand 

IF_dont_understand is set if the particular volumevolume intersection test has not been implemented.

Member Function Documentation

◆ contains()

int contains ( const BoundingVolume  vol)

Returns the appropriate set of IntersectionFlags to indicate the amount of intersection with the indicated volume.

◆ extendBy()

bool extendBy ( const BoundingVolume  vol)

Increases the size of the volume to include the given volume.

◆ getClassType()

static TypeHandle getClassType ( )
static

◆ isEmpty()

bool isEmpty ( )

Any kind of volume might be empty.

This is a degenerate volume that contains no points; it's not the same as, for instance, a sphere with radius zero, since that contains one point (the center). It intersects with no other volumes.

◆ isInfinite()

bool isInfinite ( )

The other side of the empty coin is an infinite volume.

This is a degenerate state of a normally finite volume that contains all points. (Note that some kinds of infinite bounding volumes, like binary separating planes, do not contain all points and thus correctly return is_infinite() == false, even though they are technically infinite. This is a special case of the word 'infinite' meaning the volume covers all points in space.)

It completely intersects with all other volumes except empty volumes.

◆ makeCopy()

BoundingVolume makeCopy ( )

◆ output()

output ( Ostream  out)

◆ setInfinite()

setInfinite ( )

Marks the volume as infinite, even if it is normally finite.

You can think of this as an infinite extend_by() operation.

◆ write()

write ( Ostream  out,
int  indent_level 
)