#include
<MArrayDataHandle.h>
List of all
members.
Detailed Description
Data block handle for array data.
An MArrayDataHandle is a smart
pointer into a data block (MDataBlock) that handles access
to array data. MArrayDataHandle
supports attributes that can have an array of data.
The array indices do not have to be continuous. The array can be
sparse. Thus, an array could have four elements with the indicies
1, 6, 8, and 10.
MArrayDataHandle methods
cannot be assumed to be threadsafe. The jumpToElement()
method sets an internal pointer so definitely cannot be called by
multiple threads simultaneously.
-
anisotropicShader.cpp,
apiMeshShape.cpp,
apiMeshShape.h, backfillShader.cpp,
dynExprField.cpp,
fullLoftNode.cpp,
geometrySurfaceConstraint.cpp,
lambertShader.cpp,
multiCurveNode.cpp,
ownerEmitter.cpp,
ownerEmitter.h, phongShader.cpp,
shadowMatteShader.cpp,
simpleEmitter.cpp,
simpleEmitter.h,
stringFormatNode.cpp,
sweptEmitter.cpp,
sweptEmitter.h, testNucleusNode.cpp,
torusField.cpp, and
weightListNode.cpp.
Constructor & Destructor Documentation
MArrayDataHandle::MArrayDataHandle |
( |
const MDataHandle & |
in, |
|
|
MStatus * |
ReturnStatus =
NULL |
|
|
) |
|
|
|
Copy constructor. Creates an new array data handle from the
specified data handle.
This method can be used to access an array attribute that is a
child of a compound array. Example: weightList[].weights[]
This method will only work for data handles to attributes that
are arrays.
- Parameters:
-
[in] |
in |
Handle to the child array attribute. |
[out] |
ReturnStatus |
return status |
- Status Codes:
-
- kSuccess operation successful
- kInvalidParameter source handle is null or is not an
array
Member Function Documentation
Gets a handle into this data block for the current array
element. The data represented by the handle will be valid. If the
data is from an dirty connection, then the connection will be
evaluated.
It is important to note that you can not call inputValue on an
element that is greater than the elementCount in this
arrayDataHandle. That is, calls to inputValue must be protected by
a call to elementCount to ensure the element exists. If this is not
done, the call to inputValue will fail with an invalidParameter
error.
- Parameters:
-
[out] |
ReturnStatus |
return status |
- Returns:
- Data handle for the current element's data
- Status Codes:
-
- kSuccess operation successful
- kInvalidParameter the requested element is out of
range
- kFailure an object error has occurred
- anisotropicShader.cpp,
backfillShader.cpp,
dynExprField.cpp,
fullLoftNode.cpp,
geometrySurfaceConstraint.cpp,
lambertShader.cpp,
ownerEmitter.h, phongShader.cpp,
shadowMatteShader.cpp,
simpleEmitter.h, stringFormatNode.cpp,
sweptEmitter.h, testNucleusNode.cpp,
torusField.cpp, and
weightListNode.cpp.
Gets a handle into this data block for the current array
element. The data is not guaranteed to be valid. Therefore, this
handle should only be used for writing over the data.
- Parameters:
-
[out] |
ReturnStatus |
return status |
- Returns:
- Data handle for the current element's data
- Status Codes:
-
- kSuccess operation successful
- kFailure an object error has occurred
Gets a handle into this data block for the current array
element. This method should be used when the array elements are
also arrays. The data represented by the handle will be valid. If
the data is from an dirty connection, then the connection will be
evailuated.
It is important to note that you can not call inputArrayValue on
an element that is greater than the elementCount in this
arrayDataHandle. That is, calls to inputValue must be protected by
a call to elementCount to ensure the element exists. If this is not
done, the the call to inputArrayValue will fail with an
invalidParameter error.
- Parameters:
-
[out] |
ReturnStatus |
return status |
- Returns:
- Data handle for the current element's data
- Status Codes:
-
- kSuccess operation successful
- kInvalidParameter the current item is not an array or
the requested element is out of range.
- kFailure an object error has occurred
Gets a handle into this data block for the current array
element. This method should be used when the array elements are
also arrays. The data is not guaranteed to be valid. Therefore,
this handle should only be used for writing over the data.
- Parameters:
-
[out] |
ReturnStatus |
return status |
- Returns:
- Data handle for the current element's data
- Status Codes:
-
- kSuccess operation successful
- kInvalidParameter the current item is not an array
- kFailure an object error has occurred
Advance to the next element in the array. These may be sparse
arrays so the next consecutive element may not necessarily have a
consecutive index.
- Returns:
-
unsigned int
MArrayDataHandle::elementCount |
( |
MStatus * |
ReturnStatus =
NULL |
) |
|
Returns the number of elements in the array.
- Parameters:
-
[out] |
ReturnStatus |
return status |
- Returns:
- The number of elements
- Status Codes:
-
- kSuccess operation successful
- kFailure an object error has occurred
unsigned int
MArrayDataHandle::elementIndex |
( |
MStatus * |
ReturnStatus =
NULL |
) |
|
Returns the index that we are currently at in the array. It is
possible for the index to be invalid, in which case the return
status will report an error. These may be sparse arrays so the
element index returned will be a logical index.
- Parameters:
-
[out] |
ReturnStatus |
return status |
- Returns:
- The current element's logical index
- Status Codes:
-
- kSuccess operation successful
- kFailure current element has an invalid index, or this
function set has an invalid object
MStatus
MArrayDataHandle::jumpToElement |
( |
unsigned int |
index |
) |
|
Jump to a specific element in the array. The array is sparse, so
the indices may not be consecutive.
NOTE: The index is the logical element index, which may be
sparse. Jumping to an element is done through a binary search.
- Parameters:
-
[in] |
index |
the logical index to jump to |
- Returns:
- Status code
- Status Codes:
-
MStatus
MArrayDataHandle::jumpToArrayElement |
( |
unsigned int |
position |
) |
|
Jump to a specific array element in the array. This method can
be used to iterate over the entire array.
NOTE: Jumping to an array element does not require a search,
since the array indices are non-sparse. The MArrayDataHandle::elementIndex()
method can be used to determine the logical index related to the
current array index.
- Parameters:
-
[in] |
position |
the array position to jump to |
- Returns:
- Status code
- Status Codes:
-
MStatus MArrayDataHandle::setClean |
( |
|
) |
|
Marks the data that is represented by this handle as being
clean. This should be done after recalculating the data from the
inputs.
- Returns:
- Return status
- Status Codes:
-
- kSuccess operation successful
- kFailure an object error has occurred
MStatus
MArrayDataHandle::setAllClean |
( |
|
) |
|
Marks every element of the array attribute represented by the
handle as clean. This method should be used if a compute function
is asked to compute a single element of a multi, but instead
calculates all the elements. Calling setAllClean in this
situation will prevent further calls to the node's compute method
for the other elements of the multi.
- Returns:
- Return status
- Status Codes:
-
- kSuccess operation successful
- kFailure an object error has occurred
Returns a builder for this handle's array so that it can be
expanded.
This method will fail if the current array does not support
array data builders. This can be changed in a node's initialize
routine using the setUsesArrayDataBuilder method in MFnAttribute.
- Parameters:
-
[out] |
ReturnStatus |
return status |
- Returns:
- The builder object
- Status Codes:
-
- kSuccess operation successful
- kInvalidParameter This item does not support array data
builders
- kFailure an object error has occurred
Sets the data for this array from the data in the builder
object
- Parameters:
-
[in] |
builder |
the builder object |
- Returns:
- Return status
- Status Codes:
-
- kSuccess operation successful
- kInvalidParameter the builder passed is invalid
- kFailure an object error has occurred
/fn MArrayDataHandle::MArrayDataHandle( const MArrayDataHandle
&other )
Copy constructor.
Assignment operator.
- Parameters:
-
[in] |
other |
the source object to copy from. |