#include <xsi_indexset.h>
CIndexSet encapsulates an index set for indexing CDataArray object types for the current evaluation.
XSIPLUGINCALLBACK CStatus YPosFilter_Evaluate( ICENodeContext& in_ctxt )
{
// The current output port being evaluated...
ULONG out_portID = in_ctxt.GetEvaluatedOutputPortID( );
switch( out_portID )
{
case OutPort200:
{
CDataArrayVector3f inputData( ctxt, InPort0 );
CDataArrayVector3f outData( ctxt );
// We need a CIndexSet to iterate over the data
CIndexSet indexSet( in_ctxt );
for(CIndexSet::Iterator it = indexSet.Begin(); it.HasNext(); )
{
outData[ it ] = inputData[ it ];
if ( inputData[it].GetY() < 0.0 )
{
it.Remove( );
}
else
{
it.Next( );
}
}
}
break;
};
return CStatus::OK;
}
Classes |
|
| class | Iterator |
| A class for iterating over
CDataArray objects during an evaluation.
Iterator objects must always be created with
CIndexSet::Begin(). More... |
|
Public Member Functions |
|
| SICPPSDK_INLINE | CIndexSet (const ICENodeContext &in_ctxt) |
| SICPPSDK_INLINE | CIndexSet (const ICENodeContext &in_ctxt, ULONG in_nInputPortID, ULONG in_nInstanceIndex=0) |
| SICPPSDK_INLINE | ~CIndexSet () |
| SICPPSDK_INLINE Iterator | Begin () |
| SICPPSDK_INLINE ULONG | GetFilteredCount () const |
| SICPPSDK_INLINE CIndexSet | ( | const ICENodeContext & | in_ctxt | ) |
Constructor.
| in_ctxt | ICENode evaluation context. |
| SICPPSDK_INLINE CIndexSet | ( | const ICENodeContext & | in_ctxt, |
| ULONG | in_nInputPortID, | ||
| ULONG | in_nInstanceIndex =
0 |
||
| ) |
Constructor. Creates the index set for a specific port.
| in_ctxt | ICENode evaluation context. |
| in_nInputPortID | Input port identifier. |
| in_nInstanceIndex | The group instance of the port. |
| SICPPSDK_INLINE ~CIndexSet | ( | ) |
Destructor.
| SICPPSDK_INLINE CIndexSet::Iterator Begin | ( | ) |
| SICPPSDK_INLINE ULONG GetFilteredCount | ( | ) | const |
Returns the filtered size of the index set.