Public Types | Public Member Functions | Friends

MGeometryData Class Reference

This reference page is linked to from the following overview topics: A hardware shading node plug-in example, 2.2 Geometric Data (MGeometry).


Search for all occurrences

Detailed Description

Geometric data container.

This class allows storage of arbitrary data which is formated to be specifically suitable for usage using a 3D display interface such as OpenGL.

Format options include:

Currently Maya only interprets a fixed format subset for data with recongnized semantics, This does not mean that the user cannot create any arbitrary format for data storage. Support formats with semantics includes:

Memory allocation of the correct size is left up to the user of this class.

Memory can be marked as "owned" by this class or the user of this class. Ownership by this class is the default behaviour specified in the constructor. If the data is marked as being owned by the class, it is assumed that the data is created using a "new" operation, as the destructor of this class will use a "delete" operation to free memory.

Internal Maya data which is passed to the user via this class is always assumed to be non-modifiable. If modified, stability cannot be ensured.

Examples:

cgfxShaderNode.cpp, D3DGeometryItem.cpp, GLSLShaderNode.cpp, GLSLShaderNode.h, hlslShader.cpp, hwColorPerVertexShader.cpp, hwPhongShader.cpp, hwPhongShader.h, and OpenGLViewportRenderer.cpp.

#include <MGeometryData.h>

List of all members.

Public Types

enum  ElementSize {
  kInvalidElementSize = 0, kOne = 1, kTwo, kThree,
  kFour
}
 

Specifies the size or dimension of each data element of the storage.

More...
enum  ElementType {
  kInvalidElementType = -1, kFloat = 0, kDouble, kChar,
  kUnsignedChar, kInt16, kUnsignedInt16, kInt32,
  kUnsignedInt32
}
 

Specifies the data type of each data element of the storage.

More...
enum  DataType {
  kInvalidDataType = 0, kPosition, kNormal, kTexCoord,
  kColor, kWeight, kAPISupported, kTangent,
  kBiNormal, kVelocity, kPrimitiveCenter, kColorMask,
  kUserData, kMaxDataTypeIndex
}
 

Specifies the data type of the storage array.

More...

Public Member Functions

 MGeometryData (const char *dataName, DataType dataType, ElementType elementType, ElementSize elementSize, unsigned int elementCount, void *dataPtr=NULL, bool ownsData=true)
 Geometry data constructor.
 MGeometryData (const MGeometryData &)
 Copy constructor.
 ~MGeometryData ()
 Class destructor.
const char * objectName () const
 Return the logical name of the geometry.
int uniqueID () const
 Return the per session unique identifier.
DataType dataType () const
 Get the data type for the data.
ElementType elementType () const
 Returns the data type.
unsigned int elementTypeSize () const
 Return the element type size.
ElementSize elementSize () const
 Return element size.
unsigned int elementCount () const
 Return element count.
void * data () const
 Retrieve a pointer to the internal data.
void setCollectionNumber (int cn)
 Set the collection number for the object.
int collectionNumber () const
 Get the collection number of the data.
void setObjectOwnsData (bool val)
 Set ownship of the interal data.
bool objectOwnsData () const
 Return if the MGeometryData object owns the internal data or not.

Friends

class MGeometry
class MHardwareRenderer
class MD3D9Renderer

Member Enumeration Documentation

Specifies the size or dimension of each data element of the storage.

Enumerator:
kInvalidElementSize 

Invalid element size.

kOne 

Single value.

kTwo 

2-tuple

kThree 

3-tuple

kFour 

4-tuple

Specifies the data type of each data element of the storage.

Enumerator:
kInvalidElementType 

Invalid element type (default value)

kFloat 

IEEE single precision floating point.

kDouble 

IEEE double precision floating point.

kChar 

Signed char.

kUnsignedChar 

Unsigned char.

kInt16 

Signed 16-bit integer.

kUnsignedInt16 

Unsigned 16-bit integer.

kInt32 

Signed 32-bit integer.

kUnsignedInt32 

Unsigned 32-bit integer.

enum DataType

Specifies the data type of the storage array.

Enumerator:
kInvalidDataType 

Invalid data type (default value)

kPosition 

Position vector.

kNormal 

Normal vector.

kTexCoord 

Texture coordinate tuple.

kColor 

Color tuple.

kWeight 

Vertex weighting data.

kAPISupported 

Separator to indicate native draw API supported types.

kTangent 

Tangent vector.

kBiNormal 

Bi-normal vector.

kVelocity 

Velocity vector.

kPrimitiveCenter 

Center of primitive.

kColorMask 

Mapped, unmapped color mask.

kUserData 

Arbitrary "user data".

kMaxDataTypeIndex 

Valid entries are < kMaxDataTypeIndex.


Constructor & Destructor Documentation

MGeometryData ( const char *  dataName,
MGeometryData::DataType  dataType,
MGeometryData::ElementType  elementType,
MGeometryData::ElementSize  elementSize,
unsigned int  elementCount,
void *  dataPtr = NULL,
bool  ownsData = true 
)

Geometry data constructor.

Data is reference counted. On creation the reference count is set to be 1.

Parameters:
[in]dataNamename of the data
[in]dataTypetype of data
[in]elementTypeelement type
[in]elementSizesize or dimension of an element. For example, a 3D position vector has three components per position (x, y, z) so it would have an elementSize of kThree.
[in]elementCountelement count
[in]dataPtrpointer to contiguous block of data
[in]ownsDataflag to tell if the instance owns the data or not.

Class destructor.

Automatically releases the associated image array.


Member Function Documentation

const char * objectName ( ) const

Return the logical name of the geometry.

Returns:
NULL or object name string pointer.
int uniqueID ( ) const

Return the per session unique identifier.

Returns:
Unique data identifier. -1 on error.
MGeometryData::DataType dataType ( ) const

Get the data type for the data.

Returns:
Geometry data type. MGeometryData::kInvalid on error.
MGeometryData::ElementType elementType ( ) const

Returns the data type.

Returns:
Element type. MGeometryData::kInvalidElementType on error.
unsigned int elementTypeSize ( ) const

Return the element type size.

Returns:
Size of element in bytes.
MGeometryData::ElementSize elementSize ( ) const

Return element size.

Returns:
Element size. MGeometryData::kInvalidElementSize is returned on error.
unsigned int elementCount ( ) const

Return element count.

Returns:
Element count. 0 is returned on error.
Examples:
D3DGeometryItem.cpp, and hlslShader.cpp.
void * data ( ) const

Retrieve a pointer to the internal data.

Returns:
Void pointer to the data. Pointer is NULL on error.
Examples:
D3DGeometryItem.cpp, hlslShader.cpp, and OpenGLViewportRenderer.cpp.
void setCollectionNumber ( int  collectionNumber)

Set the collection number for the object.

Numbers less than 0 are invalid collection numbers.

Parameters:
[in]collectionNumberThe number to use
int collectionNumber ( ) const

Get the collection number of the data.

Collection numbers are zero-based.

Returns:
-1 if failed. Else number greather than -1.
void setObjectOwnsData ( bool  value)

Set ownship of the interal data.

Parameters:
[in]valueownership flag to set to.
bool objectOwnsData ( ) const

Return if the MGeometryData object owns the internal data or not.

Returns:
True if owned internally, else false.

MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData
MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData MGeometryData