// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // * Neither the name of NVIDIA CORPORATION nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // Copyright (c) 2018 NVIDIA Corporation. All rights reserved. // This file was generated by NvParameterized/scripts/GenParameterized.pl #include "ClothingActorParam_0p2.h" #include #include using namespace NvParameterized; namespace nvidia { namespace parameterized { using namespace ClothingActorParam_0p2NS; const char* const ClothingActorParam_0p2Factory::vptr = NvParameterized::getVptr(); const uint32_t NumParamDefs = 66; static NvParameterized::DefinitionImpl* ParamDefTable; // now allocated in buildTree [NumParamDefs]; static const size_t ParamLookupChildrenTable[] = { 1, 2, 3, 9, 10, 11, 12, 13, 14, 15, 16, 21, 24, 27, 28, 30, 41, 57, 60, 61, 62, 64, 4, 5, 6, 7, 8, 17, 18, 19, 20, 22, 23, 25, 26, 29, 31, 32, 33, 38, 39, 40, 34, 35, 36, 37, 42, 48, 49, 54, 55, 56, 43, 44, 45, 46, 47, 50, 51, 52, 53, 58, 59, 63, 65, }; #define TENUM(type) nvidia::##type #define CHILDREN(index) &ParamLookupChildrenTable[index] static const NvParameterized::ParamLookupNode ParamLookupTable[NumParamDefs] = { { TYPE_STRUCT, false, 0, CHILDREN(0), 22 }, { TYPE_MAT44, false, (size_t)(&((ParametersStruct*)0)->globalPose), NULL, 0 }, // globalPose { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->useHardwareCloth), NULL, 0 }, // useHardwareCloth { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->flags), CHILDREN(22), 5 }, // flags { TYPE_BOOL, false, (size_t)(&((ClothingActorFlags_Type*)0)->ParallelPhysXMeshSkinning), NULL, 0 }, // flags.ParallelPhysXMeshSkinning { TYPE_BOOL, false, (size_t)(&((ClothingActorFlags_Type*)0)->ParallelMeshMeshSkinning), NULL, 0 }, // flags.ParallelMeshMeshSkinning { TYPE_BOOL, false, (size_t)(&((ClothingActorFlags_Type*)0)->ParallelCpuSkinning), NULL, 0 }, // flags.ParallelCpuSkinning { TYPE_BOOL, false, (size_t)(&((ClothingActorFlags_Type*)0)->RecomputeNormals), NULL, 0 }, // flags.RecomputeNormals { TYPE_BOOL, false, (size_t)(&((ClothingActorFlags_Type*)0)->Visualize), NULL, 0 }, // flags.Visualize { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->fallbackSkinning), NULL, 0 }, // fallbackSkinning { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->slowStart), NULL, 0 }, // slowStart { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->useInternalBoneOrder), NULL, 0 }, // useInternalBoneOrder { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->updateStateWithGlobalMatrices), NULL, 0 }, // updateStateWithGlobalMatrices { TYPE_U32, false, (size_t)(&((ParametersStruct*)0)->uvChannelForTangentUpdate), NULL, 0 }, // uvChannelForTangentUpdate { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->maxDistanceBlendTime), NULL, 0 }, // maxDistanceBlendTime { TYPE_U32, false, (size_t)(&((ParametersStruct*)0)->clothingMaterialIndex), NULL, 0 }, // clothingMaterialIndex { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->lodWeights), CHILDREN(27), 4 }, // lodWeights { TYPE_F32, false, (size_t)(&((LODWeights_Type*)0)->maxDistance), NULL, 0 }, // lodWeights.maxDistance { TYPE_F32, false, (size_t)(&((LODWeights_Type*)0)->distanceWeight), NULL, 0 }, // lodWeights.distanceWeight { TYPE_F32, false, (size_t)(&((LODWeights_Type*)0)->bias), NULL, 0 }, // lodWeights.bias { TYPE_F32, false, (size_t)(&((LODWeights_Type*)0)->benefitsBias), NULL, 0 }, // lodWeights.benefitsBias { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->windParams), CHILDREN(31), 2 }, // windParams { TYPE_VEC3, false, (size_t)(&((WindParameters_Type*)0)->Velocity), NULL, 0 }, // windParams.Velocity { TYPE_F32, false, (size_t)(&((WindParameters_Type*)0)->Adaption), NULL, 0 }, // windParams.Adaption { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->maxDistanceScale), CHILDREN(33), 2 }, // maxDistanceScale { TYPE_F32, false, (size_t)(&((MaxDistanceScale_Type*)0)->Scale), NULL, 0 }, // maxDistanceScale.Scale { TYPE_BOOL, false, (size_t)(&((MaxDistanceScale_Type*)0)->Multipliable), NULL, 0 }, // maxDistanceScale.Multipliable { TYPE_U64, false, (size_t)(&((ParametersStruct*)0)->userData), NULL, 0 }, // userData { TYPE_ARRAY, true, (size_t)(&((ParametersStruct*)0)->boneMatrices), CHILDREN(35), 1 }, // boneMatrices { TYPE_MAT44, false, 1 * sizeof(physx::PxMat44), NULL, 0 }, // boneMatrices[] { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->clothDescTemplate), CHILDREN(36), 6 }, // clothDescTemplate { TYPE_F32, false, (size_t)(&((ClothDescTemplate_Type*)0)->collisionResponseCoefficient), NULL, 0 }, // clothDescTemplate.collisionResponseCoefficient { TYPE_U16, false, (size_t)(&((ClothDescTemplate_Type*)0)->collisionGroup), NULL, 0 }, // clothDescTemplate.collisionGroup { TYPE_STRUCT, false, (size_t)(&((ClothDescTemplate_Type*)0)->groupsMask), CHILDREN(42), 4 }, // clothDescTemplate.groupsMask { TYPE_U32, false, (size_t)(&((GroupsMask_Type*)0)->bits0), NULL, 0 }, // clothDescTemplate.groupsMask.bits0 { TYPE_U32, false, (size_t)(&((GroupsMask_Type*)0)->bits1), NULL, 0 }, // clothDescTemplate.groupsMask.bits1 { TYPE_U32, false, (size_t)(&((GroupsMask_Type*)0)->bits2), NULL, 0 }, // clothDescTemplate.groupsMask.bits2 { TYPE_U32, false, (size_t)(&((GroupsMask_Type*)0)->bits3), NULL, 0 }, // clothDescTemplate.groupsMask.bits3 { TYPE_BOUNDS3, false, (size_t)(&((ClothDescTemplate_Type*)0)->validBounds), NULL, 0 }, // clothDescTemplate.validBounds { TYPE_U64, false, (size_t)(&((ClothDescTemplate_Type*)0)->compartment), NULL, 0 }, // clothDescTemplate.compartment { TYPE_U64, false, (size_t)(&((ClothDescTemplate_Type*)0)->userData), NULL, 0 }, // clothDescTemplate.userData { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->shapeDescTemplate), CHILDREN(46), 6 }, // shapeDescTemplate { TYPE_STRUCT, false, (size_t)(&((ShapeDescTemplate_Type*)0)->flags), CHILDREN(52), 5 }, // shapeDescTemplate.flags { TYPE_BOOL, false, (size_t)(&((ShapeDescFlags_Type*)0)->NX_SF_VISUALIZATION), NULL, 0 }, // shapeDescTemplate.flags.NX_SF_VISUALIZATION { TYPE_BOOL, false, (size_t)(&((ShapeDescFlags_Type*)0)->NX_SF_DISABLE_COLLISION), NULL, 0 }, // shapeDescTemplate.flags.NX_SF_DISABLE_COLLISION { TYPE_BOOL, false, (size_t)(&((ShapeDescFlags_Type*)0)->NX_SF_DISABLE_RAYCASTING), NULL, 0 }, // shapeDescTemplate.flags.NX_SF_DISABLE_RAYCASTING { TYPE_BOOL, false, (size_t)(&((ShapeDescFlags_Type*)0)->NX_SF_DYNAMIC_DYNAMIC_CCD), NULL, 0 }, // shapeDescTemplate.flags.NX_SF_DYNAMIC_DYNAMIC_CCD { TYPE_BOOL, false, (size_t)(&((ShapeDescFlags_Type*)0)->NX_SF_DISABLE_SCENE_QUERIES), NULL, 0 }, // shapeDescTemplate.flags.NX_SF_DISABLE_SCENE_QUERIES { TYPE_U16, false, (size_t)(&((ShapeDescTemplate_Type*)0)->collisionGroup), NULL, 0 }, // shapeDescTemplate.collisionGroup { TYPE_STRUCT, false, (size_t)(&((ShapeDescTemplate_Type*)0)->groupsMask), CHILDREN(57), 4 }, // shapeDescTemplate.groupsMask { TYPE_U32, false, (size_t)(&((GroupsMask_Type*)0)->bits0), NULL, 0 }, // shapeDescTemplate.groupsMask.bits0 { TYPE_U32, false, (size_t)(&((GroupsMask_Type*)0)->bits1), NULL, 0 }, // shapeDescTemplate.groupsMask.bits1 { TYPE_U32, false, (size_t)(&((GroupsMask_Type*)0)->bits2), NULL, 0 }, // shapeDescTemplate.groupsMask.bits2 { TYPE_U32, false, (size_t)(&((GroupsMask_Type*)0)->bits3), NULL, 0 }, // shapeDescTemplate.groupsMask.bits3 { TYPE_U16, false, (size_t)(&((ShapeDescTemplate_Type*)0)->materialIndex), NULL, 0 }, // shapeDescTemplate.materialIndex { TYPE_U64, false, (size_t)(&((ShapeDescTemplate_Type*)0)->userData), NULL, 0 }, // shapeDescTemplate.userData { TYPE_U64, false, (size_t)(&((ShapeDescTemplate_Type*)0)->name), NULL, 0 }, // shapeDescTemplate.name { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->actorDescTemplate), CHILDREN(61), 2 }, // actorDescTemplate { TYPE_U64, false, (size_t)(&((ActorDescTemplate_Type*)0)->userData), NULL, 0 }, // actorDescTemplate.userData { TYPE_U64, false, (size_t)(&((ActorDescTemplate_Type*)0)->name), NULL, 0 }, // actorDescTemplate.name { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->actorScale), NULL, 0 }, // actorScale { TYPE_REF, false, (size_t)(&((ParametersStruct*)0)->runtimeCooked), NULL, 0 }, // runtimeCooked { TYPE_ARRAY, true, (size_t)(&((ParametersStruct*)0)->morphDisplacements), CHILDREN(63), 1 }, // morphDisplacements { TYPE_VEC3, false, 1 * sizeof(physx::PxVec3), NULL, 0 }, // morphDisplacements[] { TYPE_ARRAY, true, (size_t)(&((ParametersStruct*)0)->morphPhysicalMeshNewPositions), CHILDREN(64), 1 }, // morphPhysicalMeshNewPositions { TYPE_VEC3, false, 1 * sizeof(physx::PxVec3), NULL, 0 }, // morphPhysicalMeshNewPositions[] }; bool ClothingActorParam_0p2::mBuiltFlag = false; NvParameterized::MutexType ClothingActorParam_0p2::mBuiltFlagMutex; ClothingActorParam_0p2::ClothingActorParam_0p2(NvParameterized::Traits* traits, void* buf, int32_t* refCount) : NvParameters(traits, buf, refCount) { //mParameterizedTraits->registerFactory(className(), &ClothingActorParam_0p2FactoryInst); if (!buf) //Do not init data if it is inplace-deserialized { initDynamicArrays(); initStrings(); initReferences(); initDefaults(); } } ClothingActorParam_0p2::~ClothingActorParam_0p2() { freeStrings(); freeReferences(); freeDynamicArrays(); } void ClothingActorParam_0p2::destroy() { // We cache these fields here to avoid overwrite in destructor bool doDeallocateSelf = mDoDeallocateSelf; NvParameterized::Traits* traits = mParameterizedTraits; int32_t* refCount = mRefCount; void* buf = mBuffer; this->~ClothingActorParam_0p2(); NvParameters::destroy(this, traits, doDeallocateSelf, refCount, buf); } const NvParameterized::DefinitionImpl* ClothingActorParam_0p2::getParameterDefinitionTree(void) { if (!mBuiltFlag) // Double-checked lock { NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); if (!mBuiltFlag) { buildTree(); } } return(&ParamDefTable[0]); } const NvParameterized::DefinitionImpl* ClothingActorParam_0p2::getParameterDefinitionTree(void) const { ClothingActorParam_0p2* tmpParam = const_cast(this); if (!mBuiltFlag) // Double-checked lock { NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); if (!mBuiltFlag) { tmpParam->buildTree(); } } return(&ParamDefTable[0]); } NvParameterized::ErrorType ClothingActorParam_0p2::getParameterHandle(const char* long_name, Handle& handle) const { ErrorType Ret = NvParameters::getParameterHandle(long_name, handle); if (Ret != ERROR_NONE) { return(Ret); } size_t offset; void* ptr; getVarPtr(handle, ptr, offset); if (ptr == NULL) { return(ERROR_INDEX_OUT_OF_RANGE); } return(ERROR_NONE); } NvParameterized::ErrorType ClothingActorParam_0p2::getParameterHandle(const char* long_name, Handle& handle) { ErrorType Ret = NvParameters::getParameterHandle(long_name, handle); if (Ret != ERROR_NONE) { return(Ret); } size_t offset; void* ptr; getVarPtr(handle, ptr, offset); if (ptr == NULL) { return(ERROR_INDEX_OUT_OF_RANGE); } return(ERROR_NONE); } void ClothingActorParam_0p2::getVarPtr(const Handle& handle, void*& ptr, size_t& offset) const { ptr = getVarPtrHelper(&ParamLookupTable[0], const_cast(¶meters()), handle, offset); } /* Dynamic Handle Indices */ void ClothingActorParam_0p2::freeParameterDefinitionTable(NvParameterized::Traits* traits) { if (!traits) { return; } if (!mBuiltFlag) // Double-checked lock { return; } NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); if (!mBuiltFlag) { return; } for (uint32_t i = 0; i < NumParamDefs; ++i) { ParamDefTable[i].~DefinitionImpl(); } traits->free(ParamDefTable); mBuiltFlag = false; } #define PDEF_PTR(index) (&ParamDefTable[index]) void ClothingActorParam_0p2::buildTree(void) { uint32_t allocSize = sizeof(NvParameterized::DefinitionImpl) * NumParamDefs; ParamDefTable = (NvParameterized::DefinitionImpl*)(mParameterizedTraits->alloc(allocSize)); memset(ParamDefTable, 0, allocSize); for (uint32_t i = 0; i < NumParamDefs; ++i) { NV_PARAM_PLACEMENT_NEW(ParamDefTable + i, NvParameterized::DefinitionImpl)(*mParameterizedTraits); } // Initialize DefinitionImpl node: nodeIndex=0, longName="" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[0]; ParamDef->init("", TYPE_STRUCT, "STRUCT", true); } // Initialize DefinitionImpl node: nodeIndex=1, longName="globalPose" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[1]; ParamDef->init("globalPose", TYPE_MAT44, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[1].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("shortDescription", "The pose where the clothing asset will be put into the scene", true); ParamDefTable[1].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=2, longName="useHardwareCloth" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[2]; ParamDef->init("useHardwareCloth", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Turns on hardware acceleration for the cloth simulation", true); ParamDefTable[2].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=3, longName="flags" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[3]; ParamDef->init("flags", TYPE_STRUCT, "ClothingActorFlags", true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "A selection of flags, can be updated at runtime.", true); ParamDefTable[3].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=4, longName="flags.ParallelPhysXMeshSkinning" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[4]; ParamDef->init("ParallelPhysXMeshSkinning", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "PhysX Mesh skinning is done during simulation instead of before.\nThis will cause the simulation to lag one frame behind.\n", true); HintTable[1].init("shortDescription", "Determines whether or not to perform PhysX Mesh skinning in parallel.", true); ParamDefTable[4].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=5, longName="flags.ParallelMeshMeshSkinning" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[5]; ParamDef->init("ParallelMeshMeshSkinning", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "Mesh-Mesh skinning from physical to graphical mesh is done during next\nsimulation step and not after the current one.\nThis will cause the simulation to lag one frame behind.\n", true); HintTable[1].init("shortDescription", "Determines whether or not to perform Mesh-Mesh skinning in parallel.", true); ParamDefTable[5].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=6, longName="flags.ParallelCpuSkinning" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[6]; ParamDef->init("ParallelCpuSkinning", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "All graphical vertices without correspondence to physical vertices or\ntriangles are skinned normally. This flag specifies whether this happens\nduring Physics scene simulation, or after.\nNote: If this flag is set, an inconsistency can arise when calling\nNxClothingActor::updateRenderResource in between NxApexScene::simulate\nand NxApexScene::fetchResults. As a workaround, you should only call\nNxClothingActor::updateRenderResources _after_ NxApexScene::fetchResults\nhas terminated.\n", true); HintTable[1].init("shortDescription", "Determines whether or not to perform CPU skinning in parallel", true); ParamDefTable[6].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=7, longName="flags.RecomputeNormals" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[7]; ParamDef->init("RecomputeNormals", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "This usually leads to better looking results, but is more expensive to\ncompute. Default is off.\n", true); HintTable[1].init("shortDescription", "Fully recomputes the normals on the final mesh.", true); ParamDefTable[7].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=8, longName="flags.Visualize" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[8]; ParamDef->init("Visualize", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Determines whether or not to display debug visualization for this clothing actor", true); ParamDefTable[8].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=9, longName="fallbackSkinning" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[9]; ParamDef->init("fallbackSkinning", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "Performs the regular boneweighted skinning on the CPU before giving the\ndata out through the rendering API.\n", true); HintTable[1].init("shortDescription", "Performs skinning in software", true); ParamDefTable[9].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=10, longName="slowStart" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[10]; ParamDef->init("slowStart", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "The first time a NxClothingActor starts to be simulated is with full max\ndistance. This prevents starting with full max distance and instead blending\nin as it will do the second time.\n", true); HintTable[1].init("shortDescription", "Prevents from having full max distance right from the start", true); ParamDefTable[10].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=11, longName="useInternalBoneOrder" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[11]; ParamDef->init("useInternalBoneOrder", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[11].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("longDescription", "If this is set to true the bone buffers in updateState and the actor\ndescriptor have to be given in the same order as the bones are stored\ninternally in the asset. This can be queried using\nNxClothingAsset::getNumUsedBones and NxClothingAsset::getBoneName or\nNxClothingAsset::getBoneMapping.\n\nIf this is set to false, the bone buffers can be provided in the order as\nthey are stored in the application. This is either the bone order at\nauthoring time, or NxClothingAsset::remapBoneIndex can be called for each\nbone to let APEX know about the current ordering in the game. Note that\nthis is only recommended if the application already uses physx::PxMat44\n(or something binary equivalent) and does not have to convert the matrices.\n", true); HintTable[2].init("shortDescription", "Expect internally ordered bone arrays in updateState call.", true); ParamDefTable[11].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=12, longName="updateStateWithGlobalMatrices" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[12]; ParamDef->init("updateStateWithGlobalMatrices", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "Depending on what matrices are present, the state can be updated using\nglobal world or object space bone matrices or composite matrices. The\ncomposite matrix can be generated by multiplying the world or object space\nmatrix by the inverse bone bine pose.\n\nNote: If there are problems which might be caused by bind poses being\ndifferent in the ClothingAsset and in the game's animation system, changing\nthis to true (and thus providing global pose matrices) might fix the problem.\n", true); HintTable[1].init("shortDescription", "Use world space matrices instead of composite (relative to bind pose) in NxClothingActor::updateState().", true); ParamDefTable[12].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=13, longName="uvChannelForTangentUpdate" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[13]; ParamDef->init("uvChannelForTangentUpdate", TYPE_U32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "Tangent update is done based on one UV channel. This allows selection of what\nUV channel is being used.\n", true); HintTable[1].init("shortDescription", "This UV channel is used for updating tangent space", true); ParamDefTable[13].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=14, longName="maxDistanceBlendTime" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[14]; ParamDef->init("maxDistanceBlendTime", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "Note: This also influences how quickly different physical LoDs can be switched", true); HintTable[1].init("shortDescription", "Time in seconds how long it takes to go from zero maxDistance to full maxDistance", true); ParamDefTable[14].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=15, longName="clothingMaterialIndex" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[15]; ParamDef->init("clothingMaterialIndex", TYPE_U32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Use this material from the assets material library", true); ParamDefTable[15].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=16, longName="lodWeights" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[16]; ParamDef->init("lodWeights", TYPE_STRUCT, "LODWeights", true); } // Initialize DefinitionImpl node: nodeIndex=17, longName="lodWeights.maxDistance" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[17]; ParamDef->init("maxDistance", TYPE_F32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=18, longName="lodWeights.distanceWeight" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[18]; ParamDef->init("distanceWeight", TYPE_F32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=19, longName="lodWeights.bias" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[19]; ParamDef->init("bias", TYPE_F32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=20, longName="lodWeights.benefitsBias" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[20]; ParamDef->init("benefitsBias", TYPE_F32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=21, longName="windParams" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[21]; ParamDef->init("windParams", TYPE_STRUCT, "WindParameters", true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "The per-actor wind parameters", true); ParamDefTable[21].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=22, longName="windParams.Velocity" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[22]; ParamDef->init("Velocity", TYPE_VEC3, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "The target velocity each vertex tries to achieve.", true); ParamDefTable[22].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=23, longName="windParams.Adaption" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[23]; ParamDef->init("Adaption", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "This is roughly the inverse of the time in seconds it takes to adapt to the wind velocity.", true); HintTable[1].init("shortDescription", "The rate of adaption. The higher this value, the faster the cloth reaches the wind velocity. Set to 0 to turn off wind.", true); ParamDefTable[23].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=24, longName="maxDistanceScale" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[24]; ParamDef->init("maxDistanceScale", TYPE_STRUCT, "MaxDistanceScale", true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "", true); ParamDefTable[24].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=25, longName="maxDistanceScale.Scale" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[25]; ParamDef->init("Scale", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "", true); ParamDefTable[25].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=26, longName="maxDistanceScale.Multipliable" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[26]; ParamDef->init("Multipliable", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "", true); ParamDefTable[26].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=27, longName="userData" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[27]; ParamDef->init("userData", TYPE_U64, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[27].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("shortDescription", "Optional user data pointer associated with the clothing actor", true); ParamDefTable[27].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=28, longName="boneMatrices" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[28]; ParamDef->init("boneMatrices", TYPE_ARRAY, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[28].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("longDescription", "These matrices are sometimes referred to as composite matrices. They are the\nmultiplication of the current world space bone pose with the inverse bind\npose in world space.\nNote: If \'updateStateWithGlobalMatrices\' is set to true, these must be\nglobal poses instead.\n", true); HintTable[2].init("shortDescription", "An Array of matrices with the full transform for each bone", true); ParamDefTable[28].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ ParamDef->setArraySize(-1); } // Initialize DefinitionImpl node: nodeIndex=29, longName="boneMatrices[]" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[29]; ParamDef->init("boneMatrices", TYPE_MAT44, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[29].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("longDescription", "These matrices are sometimes referred to as composite matrices. They are the\nmultiplication of the current world space bone pose with the inverse bind\npose in world space.\nNote: If \'updateStateWithGlobalMatrices\' is set to true, these must be\nglobal poses instead.\n", true); HintTable[2].init("shortDescription", "An Array of matrices with the full transform for each bone", true); ParamDefTable[29].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=30, longName="clothDescTemplate" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[30]; ParamDef->init("clothDescTemplate", TYPE_STRUCT, "ClothDescTemplate", true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Contains the parameters the application can override on the NxClothDesc when created", true); ParamDefTable[30].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=31, longName="clothDescTemplate.collisionResponseCoefficient" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[31]; ParamDef->init("collisionResponseCoefficient", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "This is only needed if the twoway interaction flag is set in the clothing asset.", true); HintTable[1].init("shortDescription", "Defines a factor for the impulse transfer from cloth to colliding rigid bodies.", true); ParamDefTable[31].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=32, longName="clothDescTemplate.collisionGroup" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[32]; ParamDef->init("collisionGroup", TYPE_U16, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Sets which collision group this cloth is part of.", true); ParamDefTable[32].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=33, longName="clothDescTemplate.groupsMask" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[33]; ParamDef->init("groupsMask", TYPE_STRUCT, "GroupsMask", true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Sets the 128-bit mask used for collision filtering.", true); ParamDefTable[33].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=34, longName="clothDescTemplate.groupsMask.bits0" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[34]; ParamDef->init("bits0", TYPE_U32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=35, longName="clothDescTemplate.groupsMask.bits1" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[35]; ParamDef->init("bits1", TYPE_U32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=36, longName="clothDescTemplate.groupsMask.bits2" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[36]; ParamDef->init("bits2", TYPE_U32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=37, longName="clothDescTemplate.groupsMask.bits3" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[37]; ParamDef->init("bits3", TYPE_U32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=38, longName="clothDescTemplate.validBounds" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[38]; ParamDef->init("validBounds", TYPE_BOUNDS3, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "Only works if the flag NX_CLF_VALIDBOUNDS is set.", true); HintTable[1].init("shortDescription", "Defines the volume outside of which cloth particle are automatically removed from the simulation. ", true); ParamDefTable[38].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=39, longName="clothDescTemplate.compartment" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[39]; ParamDef->init("compartment", TYPE_U64, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[39].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("longDescription", "Must be either a pointer to an NxCompartment of type NX_SCT_CLOTH or\nNX_SCT_SOFTBODY, or NULL. A NULL compartment means creating NX_CLF_HARDWARE\ncloth in the first available cloth compartment (a default cloth compartment\nis created if none exists). Software cloth with a NULL compartment is\ncreated in the scene proper.\n", true); HintTable[2].init("shortDescription", "The compartment to place the cloth in.", true); ParamDefTable[39].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=40, longName="clothDescTemplate.userData" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[40]; ParamDef->init("userData", TYPE_U64, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[40].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("shortDescription", "Optional user data pointer.", true); ParamDefTable[40].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=41, longName="shapeDescTemplate" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[41]; ParamDef->init("shapeDescTemplate", TYPE_STRUCT, "ShapeDescTemplate", true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Contains the parameters the application can override on any actor shapes created", true); ParamDefTable[41].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=42, longName="shapeDescTemplate.flags" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[42]; ParamDef->init("flags", TYPE_STRUCT, "ShapeDescFlags", true); } // Initialize DefinitionImpl node: nodeIndex=43, longName="shapeDescTemplate.flags.NX_SF_VISUALIZATION" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[43]; ParamDef->init("NX_SF_VISUALIZATION", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Enable debug renderer for this shape", true); ParamDefTable[43].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=44, longName="shapeDescTemplate.flags.NX_SF_DISABLE_COLLISION" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[44]; ParamDef->init("NX_SF_DISABLE_COLLISION", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Disable collision detection for this shape (counterpart of NX_AF_DISABLE_COLLISION)", true); ParamDefTable[44].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=45, longName="shapeDescTemplate.flags.NX_SF_DISABLE_RAYCASTING" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[45]; ParamDef->init("NX_SF_DISABLE_RAYCASTING", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Disable raycasting for this shape", true); ParamDefTable[45].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=46, longName="shapeDescTemplate.flags.NX_SF_DYNAMIC_DYNAMIC_CCD" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[46]; ParamDef->init("NX_SF_DYNAMIC_DYNAMIC_CCD", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Enable dynamic-dynamic CCD for this shape. Used only when CCD is globally enabled and shape have a CCD skeleton.", true); ParamDefTable[46].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=47, longName="shapeDescTemplate.flags.NX_SF_DISABLE_SCENE_QUERIES" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[47]; ParamDef->init("NX_SF_DISABLE_SCENE_QUERIES", TYPE_BOOL, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "Setting this to true will make the non-compartment CPU cloth not work.", true); HintTable[1].init("shortDescription", "Disable participation in ray casts, overlap tests and sweeps.", true); ParamDefTable[47].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=48, longName="shapeDescTemplate.collisionGroup" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[48]; ParamDef->init("collisionGroup", TYPE_U16, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "Default group is 0. Maximum possible group is 31. Collision groups are sets\nof shapes which may or may not be set to collision detect with each other;\nthis can be set using NxScene::setGroupCollisionFlag()\nSleeping: Does NOT wake the associated actor up automatically.\n", true); HintTable[1].init("shortDescription", "Sets which collision group this shape is part of.", true); ParamDefTable[48].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=49, longName="shapeDescTemplate.groupsMask" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[49]; ParamDef->init("groupsMask", TYPE_STRUCT, "GroupsMask", true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Sets the 128-bit mask used for collision filtering.", true); ParamDefTable[49].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=50, longName="shapeDescTemplate.groupsMask.bits0" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[50]; ParamDef->init("bits0", TYPE_U32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=51, longName="shapeDescTemplate.groupsMask.bits1" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[51]; ParamDef->init("bits1", TYPE_U32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=52, longName="shapeDescTemplate.groupsMask.bits2" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[52]; ParamDef->init("bits2", TYPE_U32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=53, longName="shapeDescTemplate.groupsMask.bits3" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[53]; ParamDef->init("bits3", TYPE_U32, NULL, true); } // Initialize DefinitionImpl node: nodeIndex=54, longName="shapeDescTemplate.materialIndex" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[54]; ParamDef->init("materialIndex", TYPE_U16, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "The material index of the shape.", true); ParamDefTable[54].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=55, longName="shapeDescTemplate.userData" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[55]; ParamDef->init("userData", TYPE_U64, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[55].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("shortDescription", "Optional user data pointer", true); ParamDefTable[55].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=56, longName="shapeDescTemplate.name" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[56]; ParamDef->init("name", TYPE_U64, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[56].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("shortDescription", "Name of the shapes; must be set by the application and must be a persistent pointer.", true); ParamDefTable[56].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=57, longName="actorDescTemplate" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[57]; ParamDef->init("actorDescTemplate", TYPE_STRUCT, "ActorDescTemplate", true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Contains the parameters the application can override on any actors created", true); ParamDefTable[57].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=58, longName="actorDescTemplate.userData" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[58]; ParamDef->init("userData", TYPE_U64, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[58].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("shortDescription", "Optional user data pointer", true); ParamDefTable[58].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=59, longName="actorDescTemplate.name" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[59]; ParamDef->init("name", TYPE_U64, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("editorDisplay", "false", true); ParamDefTable[59].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("editorDisplay", "false", true); HintTable[1].init("shortDescription", "Optional name string for the shape; must be set by the application and must be a persistent pointer.", true); ParamDefTable[59].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=60, longName="actorScale" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[60]; ParamDef->init("actorScale", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Scale the actor differently than the asset.", true); ParamDefTable[60].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=61, longName="runtimeCooked" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[61]; ParamDef->init("runtimeCooked", TYPE_REF, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("INCLUDED", uint64_t(1), true); ParamDefTable[61].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("INCLUDED", uint64_t(1), true); HintTable[1].init("shortDescription", "Data cooked at runtime", true); ParamDefTable[61].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ static const char* const RefVariantVals[] = { "ClothingCookedParam" }; ParamDefTable[61].setRefVariantVals((const char**)RefVariantVals, 1); } // Initialize DefinitionImpl node: nodeIndex=62, longName="morphDisplacements" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[62]; ParamDef->init("morphDisplacements", TYPE_ARRAY, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Displacements according to the current morph target.", true); ParamDefTable[62].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ ParamDef->setArraySize(-1); } // Initialize DefinitionImpl node: nodeIndex=63, longName="morphDisplacements[]" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[63]; ParamDef->init("morphDisplacements", TYPE_VEC3, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "Displacements according to the current morph target.", true); ParamDefTable[63].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=64, longName="morphPhysicalMeshNewPositions" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[64]; ParamDef->init("morphPhysicalMeshNewPositions", TYPE_ARRAY, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "New positions for the physical meshes and convex collision volumes.", true); ParamDefTable[64].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ ParamDef->setArraySize(-1); } // Initialize DefinitionImpl node: nodeIndex=65, longName="morphPhysicalMeshNewPositions[]" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[65]; ParamDef->init("morphPhysicalMeshNewPositions", TYPE_VEC3, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "New positions for the physical meshes and convex collision volumes.", true); ParamDefTable[65].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // SetChildren for: nodeIndex=0, longName="" { static Definition* Children[22]; Children[0] = PDEF_PTR(1); Children[1] = PDEF_PTR(2); Children[2] = PDEF_PTR(3); Children[3] = PDEF_PTR(9); Children[4] = PDEF_PTR(10); Children[5] = PDEF_PTR(11); Children[6] = PDEF_PTR(12); Children[7] = PDEF_PTR(13); Children[8] = PDEF_PTR(14); Children[9] = PDEF_PTR(15); Children[10] = PDEF_PTR(16); Children[11] = PDEF_PTR(21); Children[12] = PDEF_PTR(24); Children[13] = PDEF_PTR(27); Children[14] = PDEF_PTR(28); Children[15] = PDEF_PTR(30); Children[16] = PDEF_PTR(41); Children[17] = PDEF_PTR(57); Children[18] = PDEF_PTR(60); Children[19] = PDEF_PTR(61); Children[20] = PDEF_PTR(62); Children[21] = PDEF_PTR(64); ParamDefTable[0].setChildren(Children, 22); } // SetChildren for: nodeIndex=3, longName="flags" { static Definition* Children[5]; Children[0] = PDEF_PTR(4); Children[1] = PDEF_PTR(5); Children[2] = PDEF_PTR(6); Children[3] = PDEF_PTR(7); Children[4] = PDEF_PTR(8); ParamDefTable[3].setChildren(Children, 5); } // SetChildren for: nodeIndex=16, longName="lodWeights" { static Definition* Children[4]; Children[0] = PDEF_PTR(17); Children[1] = PDEF_PTR(18); Children[2] = PDEF_PTR(19); Children[3] = PDEF_PTR(20); ParamDefTable[16].setChildren(Children, 4); } // SetChildren for: nodeIndex=21, longName="windParams" { static Definition* Children[2]; Children[0] = PDEF_PTR(22); Children[1] = PDEF_PTR(23); ParamDefTable[21].setChildren(Children, 2); } // SetChildren for: nodeIndex=24, longName="maxDistanceScale" { static Definition* Children[2]; Children[0] = PDEF_PTR(25); Children[1] = PDEF_PTR(26); ParamDefTable[24].setChildren(Children, 2); } // SetChildren for: nodeIndex=28, longName="boneMatrices" { static Definition* Children[1]; Children[0] = PDEF_PTR(29); ParamDefTable[28].setChildren(Children, 1); } // SetChildren for: nodeIndex=30, longName="clothDescTemplate" { static Definition* Children[6]; Children[0] = PDEF_PTR(31); Children[1] = PDEF_PTR(32); Children[2] = PDEF_PTR(33); Children[3] = PDEF_PTR(38); Children[4] = PDEF_PTR(39); Children[5] = PDEF_PTR(40); ParamDefTable[30].setChildren(Children, 6); } // SetChildren for: nodeIndex=33, longName="clothDescTemplate.groupsMask" { static Definition* Children[4]; Children[0] = PDEF_PTR(34); Children[1] = PDEF_PTR(35); Children[2] = PDEF_PTR(36); Children[3] = PDEF_PTR(37); ParamDefTable[33].setChildren(Children, 4); } // SetChildren for: nodeIndex=41, longName="shapeDescTemplate" { static Definition* Children[6]; Children[0] = PDEF_PTR(42); Children[1] = PDEF_PTR(48); Children[2] = PDEF_PTR(49); Children[3] = PDEF_PTR(54); Children[4] = PDEF_PTR(55); Children[5] = PDEF_PTR(56); ParamDefTable[41].setChildren(Children, 6); } // SetChildren for: nodeIndex=42, longName="shapeDescTemplate.flags" { static Definition* Children[5]; Children[0] = PDEF_PTR(43); Children[1] = PDEF_PTR(44); Children[2] = PDEF_PTR(45); Children[3] = PDEF_PTR(46); Children[4] = PDEF_PTR(47); ParamDefTable[42].setChildren(Children, 5); } // SetChildren for: nodeIndex=49, longName="shapeDescTemplate.groupsMask" { static Definition* Children[4]; Children[0] = PDEF_PTR(50); Children[1] = PDEF_PTR(51); Children[2] = PDEF_PTR(52); Children[3] = PDEF_PTR(53); ParamDefTable[49].setChildren(Children, 4); } // SetChildren for: nodeIndex=57, longName="actorDescTemplate" { static Definition* Children[2]; Children[0] = PDEF_PTR(58); Children[1] = PDEF_PTR(59); ParamDefTable[57].setChildren(Children, 2); } // SetChildren for: nodeIndex=62, longName="morphDisplacements" { static Definition* Children[1]; Children[0] = PDEF_PTR(63); ParamDefTable[62].setChildren(Children, 1); } // SetChildren for: nodeIndex=64, longName="morphPhysicalMeshNewPositions" { static Definition* Children[1]; Children[0] = PDEF_PTR(65); ParamDefTable[64].setChildren(Children, 1); } mBuiltFlag = true; } void ClothingActorParam_0p2::initStrings(void) { } void ClothingActorParam_0p2::initDynamicArrays(void) { boneMatrices.buf = NULL; boneMatrices.isAllocated = true; boneMatrices.elementSize = sizeof(physx::PxMat44); boneMatrices.arraySizes[0] = 0; morphDisplacements.buf = NULL; morphDisplacements.isAllocated = true; morphDisplacements.elementSize = sizeof(physx::PxVec3); morphDisplacements.arraySizes[0] = 0; morphPhysicalMeshNewPositions.buf = NULL; morphPhysicalMeshNewPositions.isAllocated = true; morphPhysicalMeshNewPositions.elementSize = sizeof(physx::PxVec3); morphPhysicalMeshNewPositions.arraySizes[0] = 0; } void ClothingActorParam_0p2::initDefaults(void) { freeStrings(); freeReferences(); freeDynamicArrays(); globalPose = physx::PxMat44(physx::PxVec4(1.0f)); useHardwareCloth = bool(true); flags.ParallelPhysXMeshSkinning = bool(false); flags.ParallelMeshMeshSkinning = bool(false); flags.ParallelCpuSkinning = bool(true); flags.RecomputeNormals = bool(false); flags.Visualize = bool(true); fallbackSkinning = bool(false); slowStart = bool(true); useInternalBoneOrder = bool(false); updateStateWithGlobalMatrices = bool(false); uvChannelForTangentUpdate = uint32_t(0); maxDistanceBlendTime = float(1.0); clothingMaterialIndex = uint32_t(0); lodWeights.maxDistance = float(2000); lodWeights.distanceWeight = float(1); lodWeights.bias = float(0); lodWeights.benefitsBias = float(0); windParams.Velocity = physx::PxVec3(0.0f); windParams.Adaption = float(0.0f); maxDistanceScale.Scale = float(1.0f); maxDistanceScale.Multipliable = bool(false); userData = uint64_t(0); clothDescTemplate.collisionResponseCoefficient = float(0.2); clothDescTemplate.collisionGroup = uint16_t(0); clothDescTemplate.groupsMask.bits0 = uint32_t(0); clothDescTemplate.groupsMask.bits1 = uint32_t(0); clothDescTemplate.groupsMask.bits2 = uint32_t(0); clothDescTemplate.groupsMask.bits3 = uint32_t(0); clothDescTemplate.validBounds = physx::PxBounds3(physx::PxVec3(PX_MAX_F32), physx::PxVec3(-PX_MAX_F32)); clothDescTemplate.compartment = uint64_t(0); shapeDescTemplate.flags.NX_SF_VISUALIZATION = bool(true); shapeDescTemplate.flags.NX_SF_DISABLE_COLLISION = bool(false); shapeDescTemplate.flags.NX_SF_DISABLE_RAYCASTING = bool(true); shapeDescTemplate.flags.NX_SF_DYNAMIC_DYNAMIC_CCD = bool(false); shapeDescTemplate.flags.NX_SF_DISABLE_SCENE_QUERIES = bool(false); shapeDescTemplate.collisionGroup = uint16_t(0); shapeDescTemplate.groupsMask.bits0 = uint32_t(0); shapeDescTemplate.groupsMask.bits1 = uint32_t(0); shapeDescTemplate.groupsMask.bits2 = uint32_t(0); shapeDescTemplate.groupsMask.bits3 = uint32_t(0); shapeDescTemplate.materialIndex = uint16_t(0); shapeDescTemplate.userData = uint64_t(0); shapeDescTemplate.name = uint64_t(0); actorDescTemplate.userData = uint64_t(0); actorDescTemplate.name = uint64_t(0); actorScale = float(1.0); initDynamicArrays(); initStrings(); initReferences(); } void ClothingActorParam_0p2::initReferences(void) { runtimeCooked = NULL; } void ClothingActorParam_0p2::freeDynamicArrays(void) { if (boneMatrices.isAllocated && boneMatrices.buf) { mParameterizedTraits->free(boneMatrices.buf); } if (morphDisplacements.isAllocated && morphDisplacements.buf) { mParameterizedTraits->free(morphDisplacements.buf); } if (morphPhysicalMeshNewPositions.isAllocated && morphPhysicalMeshNewPositions.buf) { mParameterizedTraits->free(morphPhysicalMeshNewPositions.buf); } } void ClothingActorParam_0p2::freeStrings(void) { } void ClothingActorParam_0p2::freeReferences(void) { if (runtimeCooked) { runtimeCooked->destroy(); } } } // namespace parameterized } // namespace nvidia