Om  1.0.0
A universal framework for multimedia simulation
Public Member Functions | Static Public Attributes | List of all members
om::graphics::shapes::CapsuleShape Class Reference

A class that provides a simple means to draw a 3D capsule shape. More...

#include <omGraphicsCapsuleShape.h>

Inheritance diagram for om::graphics::shapes::CapsuleShape:
om::graphics::shapes::SubdivisionShape om::graphics::shapes::GraphicsShape om::graphics::base::Renderable om::graphics::devices::GraphicsContextObject

Public Member Functions

 CapsuleShape ()
 Create a capsule shape centered at the origin with a radius and height of 1. More...
 
 CapsuleShape (const Vector3 &newEndpoint1, const Vector3 &newEndpoint2, Real newRadius)
 Create a capsule shape with the specified endpoints and radius. More...
 
 CapsuleShape (const Vector3 &newEndpoint1, const Vector3 &newEndpoint2, Real newRadius1, Real newRadius2)
 Create a capsule shape with the specified endpoints and radii. More...
 
const Vector3getEndpoint1 () const
 Return a const reference to the center of this capsule shape's first endcap in local coordinates. More...
 
void setEndpoint1 (const Vector3 &newEndpoint1)
 Set the center of this capsule shape's first endcap in local coordinates. More...
 
const Vector3getEndpoint2 () const
 Return a const reference to the center of this capsule shape's second endcap in local coordinates. More...
 
void setEndpoint2 (const Vector3 &newEndpoint2)
 Set the center of this capsule shape's second endcap in local coordinates. More...
 
const Vector3getAxis () const
 Return a normalized axis vector for this capsule, directed from endpoint 1 to endpoint 2. More...
 
void setAxis (const Vector3 &newAxis)
 Set a normalized axis vector for this capsule, directed from endpoint 1 to endpoint 2. More...
 
Real getHeight () const
 Get the distance between the endpoints of this capsule shape in local coordinates. More...
 
void setHeight (Real newHeight)
 Set the distance between the endpoints of this capsule shape in local coordinates. More...
 
Real getRadius1 () const
 Get the first endcap radius of this capsule shape in local coordinates. More...
 
void setRadius1 (Real newRadius1)
 Set the first endcap radius of this capsule shape in local coordinates. More...
 
Real getRadius2 () const
 Get the second endcap radius of this capsule shape in local coordinates. More...
 
void setRadius2 (Real newRadius2)
 Set the second endcap radius of this capsule shape in local coordinates. More...
 
void setRadius (Real newRadius)
 Set the radii of both endcaps of this capsule shape in local coordinates. More...
 
MaterialgetMaterial () const
 Return a pointer to the material of this capsule shape. More...
 
void setMaterial (Material *newMaterial)
 Set a pointer to the material of this capsule shape. More...
 
ConstantSetgetConstants () const
 Return an object that describes a set of shader constants and their corresponding semantic usages for this shape. More...
 
void setConstants (ConstantSet *newConstants)
 Set an object that describes a set of shader constants and their corresponding semantic usages for this shape. More...
 
TextureSetgetTextures () const
 Return an object that describes a set of textures and their corresponding semantic usages for this shape. More...
 
void setTextures (TextureSet *newTextures)
 Set an object that describes a set of textures and their corresponding semantic usages for this shape. More...
 
virtual void updateBoundingBox ()
 Update the capsule's axis-aligned bounding box. More...
 
virtual void intersectRay (GraphicsRay &ray) const
 Trace a ray against this shape and compute the closest intersection. More...
 
virtual void testRay (GraphicsRay &ray) const
 Trace a ray against this shape and determine if any intersection exist along the ray. More...
 
- Public Member Functions inherited from om::graphics::shapes::SubdivisionShape
 SubdivisionShape (const SubdivisionShape &other)
 Create a copy of another subdivision shape. More...
 
 ~SubdivisionShape ()
 Destroy a subdivision shape, releasing all internal resources. More...
 
SubdivisionShapeoperator= (const SubdivisionShape &other)
 Assign the state of another subdivision shape to this one. More...
 
Real getLODBias () const
 Get a value that multiplicatively biases the size of a pixel radius query. More...
 
void setLODBias (Real newLODBias)
 Set a value that multiplicatively biases the size of a pixel radius query. More...
 
virtual void setContext (devices::GraphicsContext *newContext)
 Change the graphics context that is used to create this subdivision shape. More...
 
virtual void upload (UploadRequest &request)
 Upload this subdivision shape's current CPU representation to the GPU device. More...
 
virtual void download (DownloadRequest &request)
 Download the subdivision shape's GPU representation to CPU memory. More...
 
virtual void getRenderables (const RenderRequest &request, const Transform3 &worldTransform, RenderQueue &outputQueue) const
 Process the renderable and add all child renderable objects to the output render queue. More...
 
- Public Member Functions inherited from om::graphics::shapes::GraphicsShape
ShapeTypeID getShapeTypeID () const
 Return an integer identifying the sub type of this shape. More...
 
const ShapeTypegetShapeType () const
 Return a reference to an object representing the type of this Shape. More...
 
Sphere3 getBoundingSphere () const
 Return a bounding sphere for this transformable in its parent coordinate space. More...
 
const AABB3getBoundingBox () const
 Return an axis-aligned bounding box that encompases this entire transformable in its parent coordinate space. More...
 
- Public Member Functions inherited from om::graphics::base::Renderable
 Renderable ()
 Create a new renderable object with the default renderable flags. More...
 
 Renderable (const RenderableFlags &newFlags)
 Create a new renderable object with the specified renderable flags. More...
 
RenderableFlagsgetFlags ()
 Return a reference to an object that contains boolean parameters of the renderable. More...
 
const RenderableFlagsgetFlags () const
 Return an object that contains boolean parameters of the renderable. More...
 
void setFlags (const RenderableFlags &newFlags)
 Set an object that contains boolean parameters of the renderable. More...
 
Bool flagIsSet (RenderableFlags::Flag flag) const
 Return whether or not the specified boolan flag is set for this renderable. More...
 
Bool flagsAreSet (const RenderableFlags &otherFlags) const
 Return whether or not all of the specified boolan flags are set for this renderable. More...
 
void setFlag (RenderableFlags::Flag flag, Bool newIsSet=true)
 Set whether or not the specified boolan flag is set for this renderable. More...
 
Bool getIsVisible () const
 Get whether or not the renderable and its children are visible in the scene. More...
 
void setIsVisible (Bool newIsVisible)
 Set whether or not the renderable and its children are visible in the scene. More...
 
Bool getShadowsEnabled () const
 Return whether or not this renderable can cast shadows. More...
 
void setShadowsEnabled (Bool newCanCastShadows)
 Set whether or not this renderable can cast shadows. More...
 
- Public Member Functions inherited from om::graphics::devices::GraphicsContextObject
virtual ~GraphicsContextObject ()
 Destory this graphics context object. More...
 
GraphicsContextgetContext () const
 Return a pointer to the graphics context this context object is using to do rendering. More...
 
void clearContext ()
 Clear the previous context from this object. More...
 
void upload ()
 Upload this resource's CPU representation to the GPU device. More...
 
void download ()
 Upload this resource's CPU representation to the GPU device. More...
 
virtual Bool isUploaded () const
 Return whether or not this graphics resource has been successfully created and uploaded to the device. More...
 
virtual Bool isDownloaded () const
 Return whether or not this graphics resource has a copy of its data stored in CPU-side memory. More...
 
virtual Bool isValid () const
 Return whether or not the state of this graphics resource is valid (either on CPU or GPU) and able to be used for rendering. More...
 

Static Public Attributes

static const ShapeType TYPE
 A shape type object that represents the type to use for a capsule shape. More...
 
- Static Public Attributes inherited from om::graphics::shapes::GraphicsShape
static const ResourceType RESOURCE_TYPE
 The resource type for a graphics shape. More...
 

Additional Inherited Members

- Protected Member Functions inherited from om::graphics::shapes::SubdivisionShape
 SubdivisionShape (const ShapeType *newShapeType)
 Create a subdivision shape for the specified shape type. More...
 
void clearSubdivisions ()
 Clear all previously-generated subdivisions for this subdivision shape. More...
 
Size getSubdivisionCount () const
 Return the number of subdivisions there are in this shape. More...
 
SubdivisiongetSubdivision (Index subdivisionLevel) const
 Return a pointer to the subdivision in this shape for the specified level. More...
 
GraphicsShapegetSubdivisionForPixelRadius (Real pixelRadius) const
 Return the shape which should be used when the shape has the specified screen-space radius. More...
 
- Protected Member Functions inherited from om::graphics::shapes::GraphicsShape
 GraphicsShape (const ShapeType *newType)
 Create a new shape with the specified type. More...
 
void setBoundingBox (const AABB3 &newBoundingBox)
 Set the local axis-aligned bounding box for this shape. More...
 
- Protected Member Functions inherited from om::graphics::devices::GraphicsContextObject
 GraphicsContextObject ()
 Create a new graphics context object that doesn't have an associated graphics context. More...
 
 GraphicsContextObject (GraphicsContext *newContext)
 Create a new graphics context object that uses the specified context for rendering. More...
 
- Protected Attributes inherited from om::graphics::base::Renderable
RenderableFlags flags
 An object containing boolean configuration flags for this renderable. More...
 
- Protected Attributes inherited from om::graphics::devices::GraphicsContextObject
GraphicsContextcontext
 A pointer to the graphics context this object is using. More...
 

Detailed Description

A class that provides a simple means to draw a 3D capsule shape.

A capsule can be defined as two spheres that can have different radii, combined with a cylinder that is tangent to the two spheres, creating a convex shape.

This class handles all vertex and index buffer generation automatically, simplifying the visualization of capsules, such as for collision geometry. Internally, this class automatically chooses the proper geometric level of detail for the capsule representation in order to acheive nearly pixel-perfect accuracy when rendering from any perspective.

Constructor & Destructor Documentation

om::graphics::shapes::CapsuleShape::CapsuleShape ( )

Create a capsule shape centered at the origin with a radius and height of 1.

om::graphics::shapes::CapsuleShape::CapsuleShape ( const Vector3 newEndpoint1,
const Vector3 newEndpoint2,
Real  newRadius 
)

Create a capsule shape with the specified endpoints and radius.

om::graphics::shapes::CapsuleShape::CapsuleShape ( const Vector3 newEndpoint1,
const Vector3 newEndpoint2,
Real  newRadius1,
Real  newRadius2 
)

Create a capsule shape with the specified endpoints and radii.

Member Function Documentation

const Vector3& om::graphics::shapes::CapsuleShape::getEndpoint1 ( ) const
inline

Return a const reference to the center of this capsule shape's first endcap in local coordinates.

void om::graphics::shapes::CapsuleShape::setEndpoint1 ( const Vector3 newEndpoint1)

Set the center of this capsule shape's first endcap in local coordinates.

const Vector3& om::graphics::shapes::CapsuleShape::getEndpoint2 ( ) const
inline

Return a const reference to the center of this capsule shape's second endcap in local coordinates.

void om::graphics::shapes::CapsuleShape::setEndpoint2 ( const Vector3 newEndpoint2)

Set the center of this capsule shape's second endcap in local coordinates.

const Vector3& om::graphics::shapes::CapsuleShape::getAxis ( ) const
inline

Return a normalized axis vector for this capsule, directed from endpoint 1 to endpoint 2.

void om::graphics::shapes::CapsuleShape::setAxis ( const Vector3 newAxis)

Set a normalized axis vector for this capsule, directed from endpoint 1 to endpoint 2.

Setting this capsule's axis keeps the capsule's first endpoint stationary in shape space and moves the second endpoint based on the new axis and capsule's height.

Real om::graphics::shapes::CapsuleShape::getHeight ( ) const
inline

Get the distance between the endpoints of this capsule shape in local coordinates.

void om::graphics::shapes::CapsuleShape::setHeight ( Real  newHeight)

Set the distance between the endpoints of this capsule shape in local coordinates.

The value is clamed to the range of [0,+infinity). Setting this height value causes the cylilnder's second endpoint to be repositioned, keeping the first endpoint stationary, based on the capsule's current axis vector.

Real om::graphics::shapes::CapsuleShape::getRadius1 ( ) const
inline

Get the first endcap radius of this capsule shape in local coordinates.

void om::graphics::shapes::CapsuleShape::setRadius1 ( Real  newRadius1)

Set the first endcap radius of this capsule shape in local coordinates.

The radius is clamed to the range of [0,+infinity).

Real om::graphics::shapes::CapsuleShape::getRadius2 ( ) const
inline

Get the second endcap radius of this capsule shape in local coordinates.

void om::graphics::shapes::CapsuleShape::setRadius2 ( Real  newRadius2)

Set the second endcap radius of this capsule shape in local coordinates.

The radius is clamed to the range of [0,+infinity).

void om::graphics::shapes::CapsuleShape::setRadius ( Real  newRadius)

Set the radii of both endcaps of this capsule shape in local coordinates.

The radius is clamed to the range of [0,+infinity).

Material* om::graphics::shapes::CapsuleShape::getMaterial ( ) const
inline

Return a pointer to the material of this capsule shape.

void om::graphics::shapes::CapsuleShape::setMaterial ( Material newMaterial)

Set a pointer to the material of this capsule shape.

ConstantSet* om::graphics::shapes::CapsuleShape::getConstants ( ) const
inline

Return an object that describes a set of shader constants and their corresponding semantic usages for this shape.

void om::graphics::shapes::CapsuleShape::setConstants ( ConstantSet newConstants)

Set an object that describes a set of shader constants and their corresponding semantic usages for this shape.

TextureSet* om::graphics::shapes::CapsuleShape::getTextures ( ) const
inline

Return an object that describes a set of textures and their corresponding semantic usages for this shape.

void om::graphics::shapes::CapsuleShape::setTextures ( TextureSet newTextures)

Set an object that describes a set of textures and their corresponding semantic usages for this shape.

virtual void om::graphics::shapes::CapsuleShape::updateBoundingBox ( )
virtual

Update the capsule's axis-aligned bounding box.

Reimplemented from om::graphics::shapes::GraphicsShape.

virtual void om::graphics::shapes::CapsuleShape::intersectRay ( GraphicsRay ray) const
virtual

Trace a ray against this shape and compute the closest intersection.

Reimplemented from om::graphics::shapes::SubdivisionShape.

virtual void om::graphics::shapes::CapsuleShape::testRay ( GraphicsRay ray) const
virtual

Trace a ray against this shape and determine if any intersection exist along the ray.

Reimplemented from om::graphics::shapes::SubdivisionShape.

Member Data Documentation

const ShapeType om::graphics::shapes::CapsuleShape::TYPE
static

A shape type object that represents the type to use for a capsule shape.


The documentation for this class was generated from the following file: