29#ifndef SN_XML_VISITOR_WRITER_H
30#define SN_XML_VISITOR_WRITER_H
32#include "foundation/PxInlineArray.h"
33#include "RepXMetaDataPropertyVisitor.h"
34#include "SnPxStreamOperators.h"
35#include "SnXmlMemoryPoolStreams.h"
36#include "SnXmlWriter.h"
38#include "foundation/PxStrideIterator.h"
40namespace physx {
namespace Sn {
42 template<
typename TDataType>
43 inline void writeReference( XmlWriter& writer, PxCollection& inCollection,
const char* inPropName,
const TDataType* inDatatype )
45 const PxBase* s =
static_cast<const PxBase*
>( inDatatype ) ;
46 if( inDatatype && !inCollection.contains( *
const_cast<PxBase*
>(s) ))
49 "PxSerialization::serializeCollectionToXml: Reference \"%s\" could not be resolved.", inPropName);
55 theId = inCollection.getId( *s );
57 theId =
static_cast<uint64_t>(size_t(inDatatype));
63 inline void writeProperty( XmlWriter& inWriter, MemoryBuffer& inBuffer,
const char* inProp )
66 inBuffer.write( &data,
sizeof(PxU8) );
67 inWriter.write( inProp,
reinterpret_cast<const char*
>( inBuffer.mBuffer ) );
71 template<
typename TDataType>
72 inline void writeProperty( XmlWriter& inWriter, PxCollection&, MemoryBuffer& inBuffer,
const char* inPropName, TDataType inValue )
75 writeProperty( inWriter, inBuffer, inPropName );
78 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName,
const PxConvexMesh* inDatatype )
80 writeReference( writer, inCollection, inPropName, inDatatype );
83 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName, PxConvexMesh* inDatatype )
85 writeReference( writer, inCollection, inPropName, inDatatype );
88 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName,
const PxTriangleMesh* inDatatype )
90 if (inDatatype->getConcreteType() == PxConcreteType::eTRIANGLE_MESH_BVH33)
92 const PxBVH33TriangleMesh* dataType = inDatatype->is<PxBVH33TriangleMesh>();
93 writeReference(writer, inCollection, inPropName, dataType);
95 else if (inDatatype->getConcreteType() == PxConcreteType::eTRIANGLE_MESH_BVH34)
97 const PxBVH34TriangleMesh* dataType = inDatatype->is<PxBVH34TriangleMesh>();
98 writeReference(writer, inCollection, inPropName, dataType);
106 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName, PxTriangleMesh* inDatatype )
108 if (inDatatype->getConcreteType() == PxConcreteType::eTRIANGLE_MESH_BVH33)
110 PxBVH33TriangleMesh* dataType = inDatatype->is<PxBVH33TriangleMesh>();
111 writeReference(writer, inCollection, inPropName, dataType);
113 else if (inDatatype->getConcreteType() == PxConcreteType::eTRIANGLE_MESH_BVH34)
115 PxBVH34TriangleMesh* dataType = inDatatype->is<PxBVH34TriangleMesh>();
116 writeReference(writer, inCollection, inPropName, dataType);
124 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName,
const PxBVH33TriangleMesh* inDatatype )
126 writeReference( writer, inCollection, inPropName, inDatatype );
129 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName, PxBVH33TriangleMesh* inDatatype )
131 writeReference( writer, inCollection, inPropName, inDatatype );
134 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName,
const PxBVH34TriangleMesh* inDatatype )
136 writeReference( writer, inCollection, inPropName, inDatatype );
139 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName, PxBVH34TriangleMesh* inDatatype )
141 writeReference( writer, inCollection, inPropName, inDatatype );
144 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName,
const PxHeightField* inDatatype )
146 writeReference( writer, inCollection, inPropName, inDatatype );
149 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName, PxHeightField* inDatatype )
151 writeReference( writer, inCollection, inPropName, inDatatype );
154 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName,
const PxRigidActor* inDatatype )
156 writeReference( writer, inCollection, inPropName, inDatatype );
159 inline void writeProperty(XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName, PxArticulationReducedCoordinate* inDatatype)
161 writeReference(writer, inCollection, inPropName, inDatatype);
164 inline void writeProperty( XmlWriter& writer, PxCollection& inCollection, MemoryBuffer& ,
const char* inPropName, PxRigidActor* inDatatype )
166 writeReference( writer, inCollection, inPropName, inDatatype );
169 inline void writeFlagsProperty( XmlWriter& inWriter, MemoryBuffer& tempBuf,
const char* inPropName, PxU32 inFlags,
const PxU32ToName* inTable )
173 PxU32 flagValue( inFlags );
176 for ( PxU32 idx =0; inTable[idx].mName != NULL; ++idx )
178 if ( (inTable[idx].mValue & flagValue) == inTable[idx].mValue )
180 if ( tempBuf.mWriteOffset != 0 )
182 tempBuf << inTable[idx].mName;
185 writeProperty( inWriter, tempBuf, inPropName );
189 if ( tempBuf.mWriteOffset != 0 )
192 writeProperty( inWriter, tempBuf, inPropName );
197 inline void writeFlagsBuffer( MemoryBuffer& tempBuf, PxU32 flagValue,
const PxU32ToName* inTable )
204 for ( PxU32 item =0; inTable[item].mName != NULL; ++item )
206 if ( (inTable[item].mValue & flagValue) != 0 )
210 tempBuf << inTable[item].mName;
217 inline void writePxVec3( PxOutputStream& inStream,
const PxVec3& inVec ) { inStream << inVec; }
220 template<
typename TDataType>
221 inline const TDataType& PtrAccess(
const TDataType* inPtr, PxU32 inIndex )
223 return inPtr[inIndex];
226 template<
typename TDataType>
227 inline void BasicDatatypeWrite( PxOutputStream& inStream,
const TDataType& item ) { inStream << item; }
229 template<
typename TObjType,
typename TAccessOperator,
typename TWriteOperator>
230 inline void writeBuffer( XmlWriter& inWriter, MemoryBuffer& inTempBuffer
231 , PxU32 inObjPerLine,
const TObjType* inObjType, TAccessOperator inAccessOperator
232 , PxU32 inBufSize,
const char* inPropName, TWriteOperator inOperator )
234 if ( inBufSize && inObjType )
236 for ( PxU32 idx = 0; idx < inBufSize; ++idx )
238 if ( idx && ( idx % inObjPerLine == 0 ) )
239 inTempBuffer <<
"\n\t\t\t";
242 inOperator( inTempBuffer, inAccessOperator( inObjType, idx ) );
244 writeProperty( inWriter, inTempBuffer, inPropName );
248 template<
typename TDataType,
typename TAccessOperator,
typename TWriteOperator>
249 inline void writeStrideBuffer( XmlWriter& inWriter, MemoryBuffer& inTempBuffer
250 , PxU32 inObjPerLine, PxStrideIterator<const TDataType>& inData, TAccessOperator inAccessOperator
251 , PxU32 inBufSize,
const char* inPropName, PxU32 , TWriteOperator inOperator )
254 const auto *dat = &inData[0];
255 if (inBufSize && dat != NULL)
257 if ( inBufSize && &inData[0])
260 for ( PxU32 idx = 0; idx < inBufSize; ++idx )
262 if ( idx && ( idx % inObjPerLine == 0 ) )
263 inTempBuffer <<
"\n\t\t\t";
267 inOperator( inTempBuffer, inAccessOperator( &inData[idx], 0 ) );
269 writeProperty( inWriter, inTempBuffer, inPropName );
274 template<
typename TDataType,
typename TAccessOperator>
275 inline void writeStrideFlags( XmlWriter& inWriter, MemoryBuffer& inTempBuffer
276 , PxU32 inObjPerLine, PxStrideIterator<const TDataType>& inData, TAccessOperator
277 , PxU32 inBufSize,
const char* inPropName,
const PxU32ToName* inTable)
280 const auto *dat = &inData[0];
281 if (inBufSize && dat != NULL)
283 if ( inBufSize && &inData[0])
286 for ( PxU32 idx = 0; idx < inBufSize; ++idx )
288 writeFlagsBuffer(inTempBuffer, inData[idx], inTable);
290 if ( idx && ( idx % inObjPerLine == 0 ) )
291 inTempBuffer <<
"\n\t\t\t";
295 writeProperty( inWriter, inTempBuffer, inPropName );
299 template<
typename TDataType,
typename TWriteOperator>
300 inline void writeBuffer( XmlWriter& inWriter, MemoryBuffer& inTempBuffer
301 , PxU32 inObjPerLine,
const TDataType* inBuffer
302 , PxU32 inBufSize,
const char* inPropName, TWriteOperator inOperator )
304 writeBuffer( inWriter, inTempBuffer, inObjPerLine, inBuffer, PtrAccess<TDataType>, inBufSize, inPropName, inOperator );
307 template<
typename TEnumType>
308 inline void writeEnumProperty( XmlWriter& inWriter,
const char* inPropName, TEnumType inEnumValue,
const PxU32ToName* inConversions )
310 PxU32 theValue =
static_cast<PxU32
>( inEnumValue );
311 for (
const PxU32ToName* conv = inConversions; conv->mName != NULL; ++conv )
312 if ( conv->mValue == theValue ) inWriter.write( inPropName, conv->mName );
317 template<
typename TObjType,
typename TWriterType,
typename TInfoType>
318 inline void handleComplexObj( TWriterType& oldVisitor,
const TObjType* inObj,
const TInfoType& info);
320 template<
typename TCollectionType,
typename TVisitor,
typename TPropType,
typename TInfoType >
321 void handleComplexCollection( TVisitor& visitor,
const TPropType& inProp,
const char* childName, TInfoType& inInfo )
323 PxU32 count( inProp.size( visitor.mObj ) );
326 PxInlineArray<TCollectionType*,5> theData;
327 theData.resize( count );
328 inProp.get( visitor.mObj, theData.begin(), count );
329 for( PxU32 idx =0; idx < count; ++idx )
331 visitor.pushName( childName );
332 handleComplexObj( visitor, theData[idx], inInfo );
338 template<
typename TCollectionType,
typename TVisitor,
typename TPropType,
typename TInfoType >
339 void handleBufferCollection( TVisitor& visitor,
const TPropType& inProp,
const char* childName, TInfoType& inInfo )
341 PxU32 count( inProp.size( visitor.mObj ) );
344 PxInlineArray<TCollectionType*,5> theData;
345 theData.resize( count );
346 inProp.get( visitor.mObj, theData.begin());
348 for( PxU32 idx =0; idx < count; ++idx )
350 visitor.pushName( childName );
351 handleComplexObj( visitor, theData[idx], inInfo );
357 template<
typename TVisitor>
358 void handleShapes( TVisitor& visitor,
const PxRigidActorShapeCollection& inProp )
362 PxU32 count( inProp.size( visitor.mObj ) );
365 PxInlineArray<PxShape*,5> theData;
366 theData.resize( count );
367 inProp.get( visitor.mObj, theData.begin(), count );
368 for( PxU32 idx = 0; idx < count; ++idx )
370 const PxShape* shape = theData[idx];
371 visitor.pushName(
"PxShape" );
373 if( !shape->isExclusive() )
375 writeReference( visitor.mWriter, visitor.mCollection,
"PxShapeRef", shape );
379 handleComplexObj( visitor, shape, theInfo );
386 template<
typename TVisitor>
387 void handleShapeMaterials( TVisitor& visitor,
const PxShapeMaterialsProperty& inProp )
389 PxU32 count( inProp.size( visitor.mObj ) );
392 PxInlineArray<PxMaterial*,5> theData;
393 theData.resize( count );
394 inProp.get( visitor.mObj, theData.begin(), count );
395 visitor.pushName(
"PxMaterialRef" );
397 for( PxU32 idx =0; idx < count; ++idx )
398 writeReference( visitor.mWriter, visitor.mCollection,
"PxMaterialRef", theData[idx] );
403 template<
typename TObjType>
408 const TObjType* mObj;
417 , mCollection( collection )
422 : mNameStack( other.mNameStack )
423 , mWriter( other.mWriter )
425 , mTempBuffer( other.mTempBuffer )
426 , mCollection( other.mCollection )
434 if ( mNameStack.
size() && mNameStack.
back().mOpen ==
false )
436 mWriter.addAndGotoChild( mNameStack.
back().mName );
437 mNameStack.
back().mOpen =
true;
441 void pushName(
const char* inName )
447 void pushBracketedName(
const char* inName ) { pushName( inName ); }
450 if ( mNameStack.
size() )
452 if ( mNameStack.
back().mOpen )
453 mWriter.leaveChild();
458 const char* topName()
const
460 if ( mNameStack.
size() )
return mNameStack.
back().mName;
462 return "bad__repx__name";
465 template<
typename TAccessorType>
466 void simpleProperty( PxU32 , TAccessorType& inProp )
468 typedef typename TAccessorType::prop_type TPropertyType;
469 TPropertyType propVal = inProp.get( mObj );
470 writeProperty( mWriter, mCollection, mTempBuffer, topName(), propVal );
473 template<
typename TAccessorType>
474 void enumProperty( PxU32 , TAccessorType& inProp,
const PxU32ToName* inConversions )
476 writeEnumProperty( mWriter, topName(), inProp.get( mObj ), inConversions );
479 template<
typename TAccessorType>
480 void flagsProperty( PxU32 ,
const TAccessorType& inProp,
const PxU32ToName* inConversions )
482 writeFlagsProperty( mWriter, mTempBuffer, topName(), inProp.get( mObj ), inConversions );
485 template<
typename TAccessorType,
typename TInfoType>
486 void complexProperty( PxU32* ,
const TAccessorType& inProp, TInfoType& inInfo )
488 typedef typename TAccessorType::prop_type TPropertyType;
489 TPropertyType propVal = inProp.get( mObj );
490 handleComplexObj( *
this, &propVal, inInfo );
493 template<
typename TAccessorType,
typename TInfoType>
494 void bufferCollectionProperty( PxU32* ,
const TAccessorType& inProp, TInfoType& inInfo )
496 typedef typename TAccessorType::prop_type TPropertyType;
498 PxU32 count( inProp.size( mObj ) );
503 PX_UNUSED(theTraits);
504 PxU32 numItems = inProp.get( mObj, theData.
begin(), count );
505 PX_ASSERT( numItems == count );
506 for( PxU32 idx =0; idx < numItems; ++idx )
508 pushName( inProp.name() );
509 handleComplexObj( *
this, &theData[idx], inInfo );
514 template<
typename TAccessorType,
typename TInfoType>
515 void extendedIndexedProperty( PxU32* ,
const TAccessorType& inProp, TInfoType& )
517 typedef typename TAccessorType::prop_type TPropertyType;
519 PxU32 count( inProp.size( mObj ) );
523 for(PxU32 i = 0; i < count; ++i)
525 char buffer[32] = { 0 };
526 sprintf( buffer,
"id_%u", i );
529 TPropertyType propVal = inProp.get( mObj, i );
531 handleComplexObj(*
this, &propVal, infoType);
536 template<
typename TAccessorType,
typename TInfoType>
537 void PxFixedSizeLookupTableProperty( PxU32* , TAccessorType& inProp, TInfoType& )
539 typedef typename TAccessorType::prop_type TPropertyType;
540 PxU32 count( inProp.size( mObj ) );
543 for(PxU32 i = 0; i < count; ++i)
545 char buffer[32] = { 0 };
546 sprintf( buffer,
"id_%u", index++ );
548 TPropertyType propVal = inProp.getX( mObj , i);
549 writeProperty( mWriter, mCollection, mTempBuffer, topName(), propVal );
552 sprintf( buffer,
"id_%u", index++ );
554 propVal = inProp.getY( mObj , i);
555 writeProperty( mWriter, mCollection, mTempBuffer, topName(), propVal );
562 physx::Sn::handleShapes( *
this, inProp );
567 physx::Sn::handleShapeMaterials( *
this, inProp );
573 simpleProperty(PxPropertyInfoName::PxRigidActor_GlobalPose, theAccessor);
578 template<
typename TObjType>
626 theChildren.
resize( childCount );
628 for ( PxU32 idx = 0; idx < childCount; ++idx )
629 recurseAddLinkAndChildren( theChildren[idx], ioLinks );
639 , mArticulationLinkParents(*artMap)
642 PxU32 numLinks = inArticulation->
getNbLinks();
643 linkList.
resize(numLinks);
645 for (PxU32 idx = 0; idx < numLinks; ++idx)
651 theChildList.
resize(numChildren);
653 for (PxU32 childIdx = 0; childIdx < numChildren; ++childIdx)
654 mArticulationLinkParents.insert(
static_cast<uint64_t
>(
size_t(theChildList[childIdx])), theLink);
660 , mArticulationLinkParents(other.mArticulationLinkParents)
663 template<
typename TAccessorType,
typename TInfoType>
664 void complexProperty(PxU32* ,
const TAccessorType& inProp, TInfoType& inInfo)
666 typedef typename TAccessorType::prop_type TPropertyType;
667 TPropertyType propVal = inProp.get(mObj);
668 handleComplexObj(*
this, &propVal, inInfo);
673 pushName(
"PxArticulationLink");
677 if (theParentPtr != NULL)
678 writeProperty(mWriter, mCollection, mTempBuffer,
"Parent", theParentPtr->second);
679 writeProperty(mWriter, mCollection, mTempBuffer,
"Id", inLink);
682 handleComplexObj(*
this, inLink, info);
691 PxU32 count(inProp.size(mObj));
696 inProp.get(mObj, theLinks.
begin(), count);
699 for (PxU32 idx = 0; idx < count; ++idx)
702 if (mArticulationLinkParents.find(
static_cast<uint64_t
>(
size_t(theLink))) == NULL)
703 recurseAddLinkAndChildren(theLink, theSortedLinks);
705 PX_ASSERT(theSortedLinks.
size() == count);
706 for (PxU32 idx = 0; idx < count; ++idx)
707 writeArticulationLink(theSortedLinks[idx]);
728 template<
typename GeometryType>
731 pushName(
"Geometry" );
732 pushName( inTypeName );
733 GeometryType theType;
734 inProp.getGeometry( mObj, theType );
736 PxU32 count = theTraits.Info.totalPropertyCount();
739 handleComplexObj( *
this, &theType, theTraits.Info);
743 writeProperty(mWriter, mTempBuffer, inTypeName);
751 switch( mObj->getGeometryType() )
753 case PxGeometryType::eSPHERE: writeGeomProperty<PxSphereGeometry>( inProp,
"PxSphereGeometry" );
break;
754 case PxGeometryType::ePLANE: writeGeomProperty<PxPlaneGeometry>( inProp,
"PxPlaneGeometry" );
break;
755 case PxGeometryType::eCAPSULE: writeGeomProperty<PxCapsuleGeometry>( inProp,
"PxCapsuleGeometry" );
break;
756 case PxGeometryType::eBOX: writeGeomProperty<PxBoxGeometry>( inProp,
"PxBoxGeometry" );
break;
757 case PxGeometryType::eCONVEXMESH: writeGeomProperty<PxConvexMeshGeometry>( inProp,
"PxConvexMeshGeometry" );
break;
758 case PxGeometryType::eTRIANGLEMESH: writeGeomProperty<PxTriangleMeshGeometry>( inProp,
"PxTriangleMeshGeometry" );
break;
759 case PxGeometryType::eHEIGHTFIELD: writeGeomProperty<PxHeightFieldGeometry>( inProp,
"PxHeightFieldGeometry" );
break;
760 case PxGeometryType::eTETRAHEDRONMESH: writeGeomProperty<PxTetrahedronMeshGeometry>( inProp,
"PxTetrahedronMeshGeometry" );
break;
767 template<
typename TObjType>
773 info.Info.visitBaseProperties( theOp );
774 info.Info.visitInstanceProperties( theOp );
777 template<
typename TObjType>
783 info.Info.visitBaseProperties( theOp );
784 info.Info.visitInstanceProperties( theOp );
787 template<
typename TObjType>
788 inline void writeAllProperties(
const TObjType* inObj, XmlWriter& writer, MemoryBuffer& buffer, PxCollection& collection )
790 TNameStack theNames( buffer.mManager->getWrapper() );
791 writeAllProperties( theNames, inObj, writer, buffer, collection );
794 template<
typename TObjType,
typename TWriterType,
typename TInfoType>
795 inline void handleComplexObj( TWriterType& oldVisitor,
const TObjType* inObj,
const TInfoType& )
797 writeAllProperties( oldVisitor.mNameStack, inObj, oldVisitor.mWriter, oldVisitor.mTempBuffer, oldVisitor.mCollection );
800 template<
typename TObjType,
typename TWriterType>
801 inline void handleComplexObj( TWriterType& oldVisitor,
const TObjType* inObj,
const PxUnknownClassInfo& )
803 writeProperty( oldVisitor.mWriter, oldVisitor.mCollection, oldVisitor.mTempBuffer, oldVisitor.topName(), *inObj );
Definition SnXmlMemoryPoolStreams.h:165
PX_NOINLINE void resize(const uint32_t size, const T &a=T())
Definition PxArray.h:637
PX_FORCE_INLINE uint32_t size() const
Definition PxArray.h:242
PX_FORCE_INLINE ConstIterator begin() const
Definition PxArray.h:176
PX_FORCE_INLINE T & pushBack(const T &a)
Definition PxArray.h:296
PX_INLINE T popBack()
Definition PxArray.h:311
PX_FORCE_INLINE const T & back() const
Definition PxArray.h:224
A joint between two links in an articulation.
Definition PxArticulationJointReducedCoordinate.h:49
A component of an articulation that represents a rigid body.
Definition PxArticulationLink.h:54
virtual PxU32 getChildren(PxArticulationLink **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
Retrieves the child links.
virtual PxU32 getNbChildren() const =0
Gets the number of child links.
A tree structure of bodies connected by joints that is treated as a unit by the dynamics solver....
Definition PxArticulationReducedCoordinate.h:448
virtual PxU32 getLinks(PxArticulationLink **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
Returns the set of links in the articulation in the order that they were added to the articulation us...
virtual PxU32 getNbLinks() const =0
Returns the number of links in the articulation.
Collection class for serialization.
Definition PxCollection.h:104
Definition PxInlineArray.h:43
Definition PxBasicTemplates.h:67
Abstract class for collision shapes.
Definition PxShape.h:146
Definition SnXmlSimpleXmlWriter.h:37
Helper class to encapsulate the reflection allocator.
Definition PxProfileAllocatorWrapper.h:71
PX_INLINE physx::PxRepXObject PxCreateRepXObject(const TDataType *inType, const physx::PxSerialObjectId inId)
Inline helper template function to create PxRepXObject from TDataType type supporting PxTypeInfo<TDat...
Definition PxRepXSerializer.h:111
PX_C_EXPORT PX_FOUNDATION_API physx::PxFoundation &PX_CALL_CONV PxGetFoundation()
Retrieves the Foundation SDK after it has been created.
Definition FdFoundation.cpp:279
uint64 uint64_t
Definition fwd.hpp:145
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
PxU64 PxSerialObjectId
ID type for PxBase objects in a PxCollection.
Definition PxSerialFramework.h:61
Definition PxAutoGeneratedMetaDataObjects.h:1188
Definition PxAutoGeneratedMetaDataObjects.h:1058
Definition PxAutoGeneratedMetaDataObjects.h:1595
Definition PxMetaDataObjects.h:575
Definition PxMetaDataObjects.h:478
@ eINTERNAL_ERROR
The library failed for some reason. Possibly you have passed invalid values like NaNs,...
Definition PxErrors.h:73
Definition PxMetaDataObjects.h:173
Definition PxMetaDataObjects.h:149
Definition RepXMetaDataPropertyVisitor.h:37
Definition PxMetaDataObjects.h:559
Definition PxMetaDataObjects.h:520
Definition PxMetaDataObjects.h:540
Definition PxMetaDataObjects.h:124
Definition RepXMetaDataPropertyVisitor.h:84
Definition SnXmlVisitorWriter.h:405
Definition SnXmlVisitorWriter.h:580
Helper struct to encapsulate the array.
Definition PxProfileAllocatorWrapper.h:152
Helper struct to encapsulate the array.
Definition PxProfileAllocatorWrapper.h:171