52 TOperatorType mOperator;
54 PxU32* mOffsetOverride;
57 : mOperator( inOperator )
59 , mOffsetOverride( 0 ) {}
61 PvdPropertyFilter( TOperatorType& inOperator, PxU32* inKeyOverride, PxU32* inOffsetOverride )
62 : mOperator( inOperator )
63 , mKeyOverride( inKeyOverride )
64 , mOffsetOverride( inOffsetOverride ) {}
66 PvdPropertyFilter(
const PvdPropertyFilter& inOther ) : mOperator( inOther.mOperator ), mKeyOverride( inOther.mKeyOverride ), mOffsetOverride( inOther.mOffsetOverride ) {}
68 template<PxU32 TKey,
typename TAccessorType>
69 void dispatchAccessor( PxU32 inKey,
const TAccessorType& inAccessor,
bool,
bool,
bool)
71 mOperator.simpleProperty(inKey, inAccessor );
74 template<PxU32 TKey,
typename TAccessorType>
75 void dispatchAccessor( PxU32 inKey,
const TAccessorType& inAccessor,
bool,
bool,
const PxU32ToName* inConversions )
77 mOperator.flagsProperty(inKey, inAccessor, inConversions );
80 template<PxU32 TKey,
typename TAccessorType>
81 void dispatchAccessor( PxU32 inKey,
const TAccessorType& inAccessor,
const PxU32ToName* inConversions,
bool,
bool )
83 mOperator.enumProperty( inKey, inAccessor, inConversions );
86 template<PxU32 TKey,
typename TAccessorType,
typename TInfoType>
87 void dispatchAccessor(PxU32,
const TAccessorType& inAccessor,
bool,
const TInfoType* inInfo,
bool )
89 PxU32 rangeStart = TKey;
90 PxU32& propIdx = mKeyOverride == NULL ? rangeStart : *mKeyOverride;
91 mOperator.complexProperty( &propIdx, inAccessor, *inInfo );
94 PxU32 getKeyValue( PxU32 inPropertyKey )
96 PxU32 retval = inPropertyKey;
99 retval = *mKeyOverride;
107 void setupValueStructOffset(
const ValueStructOffsetRecord& inAccessor, PxU32 inOffset, PxU32* inAdditionalOffset )
110 if ( inAdditionalOffset ) inOffset += *inAdditionalOffset;
111 inAccessor.setupValueStructOffset( inOffset );
114 template<PxU32 TKey,
typename TAccessorType>
115 void handleAccessor( PxU32 inKey,
const TAccessorType& inAccessor )
117 typedef typename TAccessorType::prop_type TPropertyType;
118 dispatchAccessor<TKey>( inKey
126 template<PxU32 TKey,
typename TAccessorType>
127 void handleAccessor(
const TAccessorType& inAccessor )
130 handleAccessor<TKey>( getKeyValue( TKey ), inAccessor );
133 template<PxU32 TKey,
typename TObjType,
typename TPropertyType>
137 mOperator.pushName( inProperty.mName );
138 handleAccessor<TKey>( theAccessor );
143 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TPropertyType,
typename TValueConversionType,
typename TInfoType>
147 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TPropertyType>
150 mOperator.pushName( inProp.mName );
151 PxU32 rangeStart = TKey;
152 PxU32& propIdx = mKeyOverride == NULL ? rangeStart : *mKeyOverride;
154 if ( mOffsetOverride ) theOffset = *mOffsetOverride;
156 while( theConversions->mName != NULL )
158 mOperator.pushBracketedName( theConversions->mName );
161 handleAccessor<TKey>( propIdx, theAccessor );
165 theOffset +=
sizeof( TPropertyType );
170 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TPropertyType,
typename TInfoType>
174 mOperator.pushName( inProp.mName );
175 PxU32 propIdx = TKey;
177 if ( mOffsetOverride ) theOffset = *mOffsetOverride;
179 while( theConversions->mName != NULL )
181 mOperator.pushBracketedName( theConversions->mName );
184 PX_ASSERT( theAccessor.mHasValidOffset );
185 mOperator.complexProperty( &propIdx, theAccessor, inInfo );
188 theOffset +=
sizeof( TPropertyType );
193 static char* myStrcat(
const char* a,
const char * b)
195 size_t len = strlen(a)+strlen(b);
196 char* result =
new char[len+1];
205 template<PxU32 TKey,
typename TObjType,
typename TPropertyType,
typename TInfoType>
209 char* name = myStrcat(inProp.mName,
"Collection");
211 mOperator.pushName(name);
212 PxU32 propIdx = TKey;
218 mOperator.bufferCollectionProperty( &propIdx, theAccessor, inInfo );
223 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TPropertyType>
230 template<PxU32 TKey,
typename TObjType,
typename TPropertyType,
typename TIndexType,
typename TInfoType>
233 mOperator.pushName(inProp.mName);
234 PxU32 propIdx = TKey;
240 mOperator.extendedIndexedProperty( &propIdx, theAccessor, inInfo );
244 template<PxU32 TKey,
typename TObjType,
typename TPropertyType,
typename TIndexType,
typename TInfoType>
247 mOperator.pushName(inProp.mName);
249 PxU32 propIdx = TKey;
255 mOperator.PxFixedSizeLookupTableProperty( &propIdx, theAccessor, inInfo );
260 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TPropertyType>
266 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TPropertyType>
273 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TIndex2Type,
typename TPropertyType,
typename TNameConv,
typename TNameConv2 >
276 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TIndex2Type,
typename TPropertyType>
279 mOperator.pushName( inProp.mName );
280 PxU32 rangeStart = TKey;
281 PxU32& propIdx = mKeyOverride == NULL ? rangeStart : *mKeyOverride;
283 if ( mOffsetOverride ) theOffset = *mOffsetOverride;
284 while( c1->mName != NULL )
286 mOperator.pushBracketedName( c1->mName );
288 while( c2Idx->mName != NULL )
290 mOperator.pushBracketedName( c2Idx->mName );
293 handleAccessor<TKey>( propIdx, theAccessor );
297 theOffset +=
sizeof( TPropertyType );
305 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TIndex2Type,
typename TPropertyType>
308 mOperator.pushName( inProp.mName );
309 PxU32 rangeStart = TKey;
310 PxU32& propIdx = mKeyOverride == NULL ? rangeStart : *mKeyOverride;
312 if ( mOffsetOverride ) theOffset = *mOffsetOverride;
313 for(PxU32 i = 0; i < id0Count; ++i)
315 char buffer1[32] = { 0 };
316 sprintf( buffer1,
"eId1_%u", i );
318 mOperator.pushBracketedName( buffer1 );
319 for(PxU32 j = 0; j < id1Count; ++j)
321 char buffer2[32] = { 0 };
322 sprintf( buffer2,
"eId2_%u", j );
324 mOperator.pushBracketedName( buffer2 );
327 handleAccessor<TKey>( propIdx, theAccessor );
330 theOffset +=
sizeof( TPropertyType );
337 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TIndex2Type,
typename TPropertyType>
340 dualIndexedProperty( idx, inProp
345 template<PxU32 TKey,
typename TObjType,
typename TIndexType,
typename TIndex2Type,
typename TPropertyType>
348 extendedDualIndexedProperty( idx, inProp, inProp.mId0Count, inProp.mId1Count );
351 template<PxU32 TKey,
typename TObjType,
typename TPropertyType>
354 PxU32 rangeStart = TKey;
355 PxU32& propIdx = mKeyOverride == NULL ? rangeStart : *mKeyOverride;
357 if ( mOffsetOverride ) theOffset = *mOffsetOverride;
359 mOperator.pushName( inProperty.mName );
360 mOperator.pushName( inProperty.mArg0Name );
363 handleAccessor<TKey>( propIdx, theAccessor );
365 theOffset +=
sizeof( TPropertyType );
367 mOperator.pushName( inProperty.mArg1Name );
368 theAccessor.mFirstValue =
false;
370 handleAccessor<TKey>( propIdx, theAccessor );
375 template<PxU32 TKey,
typename TObjType,
typename TPropertyType>
381 template<PxU32 TKey,
typename TObjectType,
typename TPropertyType, PxU32 TEnableFlag>
384 mOperator.handleBuffer( inProp );
387 template<PxU32 TKey,
typename TObjectType,
typename TPropertyType, PxU32 TEnableFlag>
390 handleBuffer( inProp );
393 template<PxU32 TKey,
typename TObjType>
396 mOperator.handleCollection( prop );
399 template<PxU32 TKey,
typename TObjType>
402 mOperator.handleCollection( prop );
405 template<PxU32 TKey,
typename TObjType,
typename TPropertyType>
408 template<PxU32 TKey,
typename TObjType,
typename TCollectionType>
411 template<PxU32 TKey,
typename TObjType,
typename TCollectionType,
typename TFilterType>
416#define DEFINE_PVD_PROPERTY_NOP(datatype) \
417 template<PxU32 TKey, typename TObjType> \
418 void operator()( const PxReadOnlyPropertyInfo<TKey,TObjType,datatype>& inProperty, PxU32 ){PX_UNUSED(inProperty); }
420 DEFINE_PVD_PROPERTY_NOP(
const void* )
421 DEFINE_PVD_PROPERTY_NOP(
void* )
429 DEFINE_PVD_PROPERTY_NOP( physx::PxCudaContextManager* )
435 DEFINE_PVD_PROPERTY_NOP(
PxScene* )
448 DEFINE_PVD_PROPERTY_NOP( PxU32 * )