// // 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 "GroundEmitterAssetParameters_0p2.h" #include #include using namespace NvParameterized; namespace nvidia { namespace parameterized { using namespace GroundEmitterAssetParameters_0p2NS; const char* const GroundEmitterAssetParameters_0p2Factory::vptr = NvParameterized::getVptr(); const uint32_t NumParamDefs = 26; static NvParameterized::DefinitionImpl* ParamDefTable; // now allocated in buildTree [NumParamDefs]; static const size_t ParamLookupChildrenTable[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, }; #define TENUM(type) nvidia::##type #define CHILDREN(index) &ParamLookupChildrenTable[index] static const NvParameterized::ParamLookupNode ParamLookupTable[NumParamDefs] = { { TYPE_STRUCT, false, 0, CHILDREN(0), 11 }, { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->density), NULL, 0 }, // density { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->lifetimeLow), NULL, 0 }, // lifetimeLow { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->lifetimeHigh), NULL, 0 }, // lifetimeHigh { TYPE_VEC3, false, (size_t)(&((ParametersStruct*)0)->velocityLow), NULL, 0 }, // velocityLow { TYPE_VEC3, false, (size_t)(&((ParametersStruct*)0)->velocityHigh), NULL, 0 }, // velocityHigh { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->radius), NULL, 0 }, // radius { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->raycastHeight), NULL, 0 }, // raycastHeight { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->spawnHeight), NULL, 0 }, // spawnHeight { TYPE_U32, false, (size_t)(&((ParametersStruct*)0)->maxRaycastsPerFrame), NULL, 0 }, // maxRaycastsPerFrame { TYPE_STRING, false, (size_t)(&((ParametersStruct*)0)->raycastCollisionGroupMaskName), NULL, 0 }, // raycastCollisionGroupMaskName { TYPE_ARRAY, true, (size_t)(&((ParametersStruct*)0)->materialFactoryMapList), CHILDREN(11), 1 }, // materialFactoryMapList { TYPE_STRUCT, false, 1 * sizeof(materialFactoryMapping_Type), CHILDREN(12), 6 }, // materialFactoryMapList[] { TYPE_REF, false, (size_t)(&((materialFactoryMapping_Type*)0)->iofxAssetName), NULL, 0 }, // materialFactoryMapList[].iofxAssetName { TYPE_REF, false, (size_t)(&((materialFactoryMapping_Type*)0)->iosAssetName), NULL, 0 }, // materialFactoryMapList[].iosAssetName { TYPE_STRING, false, (size_t)(&((materialFactoryMapping_Type*)0)->physMatName), NULL, 0 }, // materialFactoryMapList[].physMatName { TYPE_F32, false, (size_t)(&((materialFactoryMapping_Type*)0)->weight), NULL, 0 }, // materialFactoryMapList[].weight { TYPE_F32, false, (size_t)(&((materialFactoryMapping_Type*)0)->maxSlopeAngle), NULL, 0 }, // materialFactoryMapList[].maxSlopeAngle { TYPE_STRUCT, false, (size_t)(&((materialFactoryMapping_Type*)0)->lodParamDesc), CHILDREN(18), 7 }, // materialFactoryMapList[].lodParamDesc { TYPE_U32, false, (size_t)(&((emitterLodParamDesc_Type*)0)->version), NULL, 0 }, // materialFactoryMapList[].lodParamDesc.version { TYPE_F32, false, (size_t)(&((emitterLodParamDesc_Type*)0)->maxDistance), NULL, 0 }, // materialFactoryMapList[].lodParamDesc.maxDistance { TYPE_F32, false, (size_t)(&((emitterLodParamDesc_Type*)0)->distanceWeight), NULL, 0 }, // materialFactoryMapList[].lodParamDesc.distanceWeight { TYPE_F32, false, (size_t)(&((emitterLodParamDesc_Type*)0)->speedWeight), NULL, 0 }, // materialFactoryMapList[].lodParamDesc.speedWeight { TYPE_F32, false, (size_t)(&((emitterLodParamDesc_Type*)0)->lifeWeight), NULL, 0 }, // materialFactoryMapList[].lodParamDesc.lifeWeight { TYPE_F32, false, (size_t)(&((emitterLodParamDesc_Type*)0)->separationWeight), NULL, 0 }, // materialFactoryMapList[].lodParamDesc.separationWeight { TYPE_F32, false, (size_t)(&((emitterLodParamDesc_Type*)0)->bias), NULL, 0 }, // materialFactoryMapList[].lodParamDesc.bias }; bool GroundEmitterAssetParameters_0p2::mBuiltFlag = false; NvParameterized::MutexType GroundEmitterAssetParameters_0p2::mBuiltFlagMutex; GroundEmitterAssetParameters_0p2::GroundEmitterAssetParameters_0p2(NvParameterized::Traits* traits, void* buf, int32_t* refCount) : NvParameters(traits, buf, refCount) { //mParameterizedTraits->registerFactory(className(), &GroundEmitterAssetParameters_0p2FactoryInst); if (!buf) //Do not init data if it is inplace-deserialized { initDynamicArrays(); initStrings(); initReferences(); initDefaults(); } } GroundEmitterAssetParameters_0p2::~GroundEmitterAssetParameters_0p2() { freeStrings(); freeReferences(); freeDynamicArrays(); } void GroundEmitterAssetParameters_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->~GroundEmitterAssetParameters_0p2(); NvParameters::destroy(this, traits, doDeallocateSelf, refCount, buf); } const NvParameterized::DefinitionImpl* GroundEmitterAssetParameters_0p2::getParameterDefinitionTree(void) { if (!mBuiltFlag) // Double-checked lock { NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); if (!mBuiltFlag) { buildTree(); } } return(&ParamDefTable[0]); } const NvParameterized::DefinitionImpl* GroundEmitterAssetParameters_0p2::getParameterDefinitionTree(void) const { GroundEmitterAssetParameters_0p2* tmpParam = const_cast(this); if (!mBuiltFlag) // Double-checked lock { NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); if (!mBuiltFlag) { tmpParam->buildTree(); } } return(&ParamDefTable[0]); } NvParameterized::ErrorType GroundEmitterAssetParameters_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 GroundEmitterAssetParameters_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 GroundEmitterAssetParameters_0p2::getVarPtr(const Handle& handle, void*& ptr, size_t& offset) const { ptr = getVarPtrHelper(&ParamLookupTable[0], const_cast(¶meters()), handle, offset); } /* Dynamic Handle Indices */ /* [1,0] - materialFactoryMapList.iofxAssetName */ /* [1,1] - materialFactoryMapList.iosAssetName */ /* [1,2] - materialFactoryMapList.physMatName */ void GroundEmitterAssetParameters_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 GroundEmitterAssetParameters_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); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "This class is parameter storage for the GroundEmitterAsset", true); ParamDefTable[0].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=1, longName="density" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[1]; ParamDef->init("density", 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", "The ground emitter actor will use the maximum density in the range, but it will back off to the minimum density if the actor is LOD resource limited.\n", true); HintTable[1].init("shortDescription", "Desired density of spawned particles per unit of volume.", true); ParamDefTable[1].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=2, longName="lifetimeLow" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[2]; ParamDef->init("lifetimeLow", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("tweakable", "true", true); ParamDefTable[2].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("longDescription", "The emitter actor will create particles with a random lifetime (in seconds) within the lifetime range.\n", true); HintTable[1].init("shortDescription", "Low value of particle lifetime", true); HintTable[2].init("tweakable", "true", true); ParamDefTable[2].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=3, longName="lifetimeHigh" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[3]; ParamDef->init("lifetimeHigh", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("tweakable", "true", true); ParamDefTable[3].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("longDescription", "The emitter actor will create particles with a random lifetime (in seconds) within the lifetime range.\n", true); HintTable[1].init("shortDescription", "High value of particle lifetime", true); HintTable[2].init("tweakable", "true", true); ParamDefTable[3].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=4, longName="velocityLow" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[4]; ParamDef->init("velocityLow", TYPE_VEC3, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("gameScale", "true", true); HintTable[1].init("tweakable", "true", true); ParamDefTable[4].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #else static HintImpl HintTable[4]; static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; HintTable[0].init("gameScale", "true", true); HintTable[1].init("longDescription", "The emitter actor will create particles with a random velocity within the velocity range.\n", true); HintTable[2].init("shortDescription", "Random velocity given within range", true); HintTable[3].init("tweakable", "true", true); ParamDefTable[4].setHints((const NvParameterized::Hint**)HintPtrTable, 4); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=5, longName="velocityHigh" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[5]; ParamDef->init("velocityHigh", TYPE_VEC3, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("gameScale", "true", true); HintTable[1].init("tweakable", "true", true); ParamDefTable[5].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #else static HintImpl HintTable[4]; static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; HintTable[0].init("gameScale", "true", true); HintTable[1].init("longDescription", "The emitter actor will create particles with a random velocity within the velocity range.\n", true); HintTable[2].init("shortDescription", "Random velocity given within range", true); HintTable[3].init("tweakable", "true", true); ParamDefTable[5].setHints((const NvParameterized::Hint**)HintPtrTable, 4); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=6, longName="radius" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[6]; ParamDef->init("radius", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("defaultValue", uint64_t(10), true); HintTable[1].init("min", uint64_t(0), true); ParamDefTable[6].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #else static HintImpl HintTable[4]; static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; HintTable[0].init("defaultValue", uint64_t(10), true); HintTable[1].init("longDescription", "The ground emitter actor will create objects within a circle of size 'radius'.\n", true); HintTable[2].init("min", uint64_t(0), true); HintTable[3].init("shortDescription", "Radius", true); ParamDefTable[6].setHints((const NvParameterized::Hint**)HintPtrTable, 4); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=7, longName="raycastHeight" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[7]; ParamDef->init("raycastHeight", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("min", uint64_t(0), true); ParamDefTable[7].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("longDescription", "The height from which the ground emitter will cast rays at terrain/objects opposite of the 'upDirection'.\n", true); HintTable[1].init("min", uint64_t(0), true); HintTable[2].init("shortDescription", "Raycast Height", true); ParamDefTable[7].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=8, longName="spawnHeight" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[8]; ParamDef->init("spawnHeight", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("min", uint64_t(0), true); ParamDefTable[8].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #else static HintImpl HintTable[4]; static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("longDescription", "The height above the ground to emit particles. If greater than 0, the ground emitter will refresh a disc above the player's position rather than refreshing a circle around the player's position.\n", true); HintTable[2].init("min", uint64_t(0), true); HintTable[3].init("shortDescription", "Spawn Height", true); ParamDefTable[8].setHints((const NvParameterized::Hint**)HintPtrTable, 4); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=9, longName="maxRaycastsPerFrame" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[9]; ParamDef->init("maxRaycastsPerFrame", 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", "The maximum raycasts per frame.\n", true); HintTable[1].init("shortDescription", "Maximum Raycasts per Frame", true); ParamDefTable[9].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=10, longName="raycastCollisionGroupMaskName" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[10]; ParamDef->init("raycastCollisionGroupMaskName", TYPE_STRING, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "Defines a bitmask of collision groups for the raycasts around the player. If none is provided, \nthe raycast will hit everything in the scene. This name will be resolved into a bitmask of \ncollision group IDs by a call to the named resource provider using both the 'NSCollisionGroupMask' \nand 'NSCollisionGroup128' namespaces. This avoids storing fragile enums in asset files. The collision \ngroups and collision group mask and 128 bit GroupsMask can be set directly on GroundEmitterActors.\n", true); HintTable[1].init("shortDescription", "Raycast Collision Group Mask Name", true); ParamDefTable[10].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=11, longName="materialFactoryMapList" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[11]; ParamDef->init("materialFactoryMapList", TYPE_ARRAY, 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 dynamic array contains a list of IOFX/IOS to PhysX Material mappings.\n", true); HintTable[1].init("shortDescription", "Material Factory Map List", true); ParamDefTable[11].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ ParamDef->setArraySize(-1); static const uint8_t dynHandleIndices[6] = { 1, 0, 1, 1, 1, 2, }; ParamDef->setDynamicHandleIndicesMap(dynHandleIndices, 6); } // Initialize DefinitionImpl node: nodeIndex=12, longName="materialFactoryMapList[]" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[12]; ParamDef->init("materialFactoryMapList", TYPE_STRUCT, "materialFactoryMapping", true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("longDescription", "This dynamic array contains a list of IOFX/IOS to PhysX Material mappings.\n", true); HintTable[1].init("shortDescription", "Material Factory Map List", true); ParamDefTable[12].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=13, longName="materialFactoryMapList[].iofxAssetName" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[13]; ParamDef->init("iofxAssetName", TYPE_REF, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "The name of the instanced object effects asset that will render your particles", true); ParamDefTable[13].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ static const char* const RefVariantVals[] = { "IOFX" }; ParamDefTable[13].setRefVariantVals((const char**)RefVariantVals, 1); } // Initialize DefinitionImpl node: nodeIndex=14, longName="materialFactoryMapList[].iosAssetName" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[14]; ParamDef->init("iosAssetName", TYPE_REF, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "The asset name of the particle system that will simulate your particles", true); ParamDefTable[14].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ static const char* const RefVariantVals[] = { "BasicIosAsset", "ParticleIosAsset" }; ParamDefTable[14].setRefVariantVals((const char**)RefVariantVals, 2); } // Initialize DefinitionImpl node: nodeIndex=15, longName="materialFactoryMapList[].physMatName" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[15]; ParamDef->init("physMatName", TYPE_STRING, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS #else static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("shortDescription", "User defined material name. The ground emitter will convert this name into an * MaterialID at runtime by a getResource() call to the named resource provider under the namespace \"NSPhysicalMaterial\" * Note this is the physical material, not rendering material.", true); ParamDefTable[15].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=16, longName="materialFactoryMapList[].weight" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[16]; ParamDef->init("weight", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("defaultValue", uint64_t(1), true); HintTable[1].init("min", uint64_t(0), true); ParamDefTable[16].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("defaultValue", uint64_t(1), true); HintTable[1].init("min", uint64_t(0), true); HintTable[2].init("shortDescription", "The weight of this factory relative to other factories on the same material", true); ParamDefTable[16].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=17, longName="materialFactoryMapList[].maxSlopeAngle" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[17]; ParamDef->init("maxSlopeAngle", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("defaultValue", uint64_t(90), true); HintTable[1].init("min", uint64_t(0), true); ParamDefTable[17].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("defaultValue", uint64_t(90), true); HintTable[1].init("min", uint64_t(0), true); HintTable[2].init("shortDescription", "The maximum slope at which particles will be added to the surface in degrees where 0 is horizontal and 90 is vertical.", true); ParamDefTable[17].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=18, longName="materialFactoryMapList[].lodParamDesc" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[18]; ParamDef->init("lodParamDesc", TYPE_STRUCT, "emitterLodParamDesc", true); } // Initialize DefinitionImpl node: nodeIndex=19, longName="materialFactoryMapList[].lodParamDesc.version" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[19]; ParamDef->init("version", TYPE_U32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[1]; static Hint* HintPtrTable[1] = { &HintTable[0], }; HintTable[0].init("defaultValue", uint64_t(0), true); ParamDefTable[19].setHints((const NvParameterized::Hint**)HintPtrTable, 1); #else static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("shortDescription", "Helpful documentation goes here", true); ParamDefTable[19].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=20, longName="materialFactoryMapList[].lodParamDesc.maxDistance" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[20]; ParamDef->init("maxDistance", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("min", uint64_t(0), true); ParamDefTable[20].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("min", uint64_t(0), true); HintTable[2].init("shortDescription", "Objects greater than this distance from the player will be culled more aggressively", true); ParamDefTable[20].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=21, longName="materialFactoryMapList[].lodParamDesc.distanceWeight" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[21]; ParamDef->init("distanceWeight", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("defaultValue", uint64_t(1), true); HintTable[1].init("max", uint64_t(1), true); HintTable[2].init("min", uint64_t(0), true); ParamDefTable[21].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #else static HintImpl HintTable[4]; static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; HintTable[0].init("defaultValue", uint64_t(1), true); HintTable[1].init("max", uint64_t(1), true); HintTable[2].init("min", uint64_t(0), true); HintTable[3].init("shortDescription", "Weight given to distance parameter in LOD function", true); ParamDefTable[21].setHints((const NvParameterized::Hint**)HintPtrTable, 4); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=22, longName="materialFactoryMapList[].lodParamDesc.speedWeight" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[22]; ParamDef->init("speedWeight", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("max", uint64_t(1), true); HintTable[2].init("min", uint64_t(0), true); ParamDefTable[22].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #else static HintImpl HintTable[4]; static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("max", uint64_t(1), true); HintTable[2].init("min", uint64_t(0), true); HintTable[3].init("shortDescription", "Weight given to velocity parameter in LOD function", true); ParamDefTable[22].setHints((const NvParameterized::Hint**)HintPtrTable, 4); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=23, longName="materialFactoryMapList[].lodParamDesc.lifeWeight" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[23]; ParamDef->init("lifeWeight", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("max", uint64_t(1), true); HintTable[2].init("min", uint64_t(0), true); ParamDefTable[23].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #else static HintImpl HintTable[4]; static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("max", uint64_t(1), true); HintTable[2].init("min", uint64_t(0), true); HintTable[3].init("shortDescription", "Weight given to life remain parameter in LOD function", true); ParamDefTable[23].setHints((const NvParameterized::Hint**)HintPtrTable, 4); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=24, longName="materialFactoryMapList[].lodParamDesc.separationWeight" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[24]; ParamDef->init("separationWeight", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("max", uint64_t(1), true); HintTable[2].init("min", uint64_t(0), true); ParamDefTable[24].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #else static HintImpl HintTable[4]; static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; HintTable[0].init("defaultValue", uint64_t(0), true); HintTable[1].init("max", uint64_t(1), true); HintTable[2].init("min", uint64_t(0), true); HintTable[3].init("shortDescription", "Weight given to separation parameter in LOD function", true); ParamDefTable[24].setHints((const NvParameterized::Hint**)HintPtrTable, 4); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // Initialize DefinitionImpl node: nodeIndex=25, longName="materialFactoryMapList[].lodParamDesc.bias" { NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[25]; ParamDef->init("bias", TYPE_F32, NULL, true); #ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS static HintImpl HintTable[2]; static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; HintTable[0].init("defaultValue", uint64_t(1), true); HintTable[1].init("min", uint64_t(0), true); ParamDefTable[25].setHints((const NvParameterized::Hint**)HintPtrTable, 2); #else static HintImpl HintTable[3]; static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; HintTable[0].init("defaultValue", uint64_t(1), true); HintTable[1].init("min", uint64_t(0), true); HintTable[2].init("shortDescription", "Bias given to objects spawned by this emitter, relative to other emitters in the same IOS", true); ParamDefTable[25].setHints((const NvParameterized::Hint**)HintPtrTable, 3); #endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ } // SetChildren for: nodeIndex=0, longName="" { static Definition* Children[11]; Children[0] = PDEF_PTR(1); Children[1] = PDEF_PTR(2); Children[2] = PDEF_PTR(3); Children[3] = PDEF_PTR(4); Children[4] = PDEF_PTR(5); Children[5] = PDEF_PTR(6); Children[6] = PDEF_PTR(7); Children[7] = PDEF_PTR(8); Children[8] = PDEF_PTR(9); Children[9] = PDEF_PTR(10); Children[10] = PDEF_PTR(11); ParamDefTable[0].setChildren(Children, 11); } // SetChildren for: nodeIndex=11, longName="materialFactoryMapList" { static Definition* Children[1]; Children[0] = PDEF_PTR(12); ParamDefTable[11].setChildren(Children, 1); } // SetChildren for: nodeIndex=12, longName="materialFactoryMapList[]" { static Definition* Children[6]; Children[0] = PDEF_PTR(13); Children[1] = PDEF_PTR(14); Children[2] = PDEF_PTR(15); Children[3] = PDEF_PTR(16); Children[4] = PDEF_PTR(17); Children[5] = PDEF_PTR(18); ParamDefTable[12].setChildren(Children, 6); } // SetChildren for: nodeIndex=18, longName="materialFactoryMapList[].lodParamDesc" { static Definition* Children[7]; Children[0] = PDEF_PTR(19); Children[1] = PDEF_PTR(20); Children[2] = PDEF_PTR(21); Children[3] = PDEF_PTR(22); Children[4] = PDEF_PTR(23); Children[5] = PDEF_PTR(24); Children[6] = PDEF_PTR(25); ParamDefTable[18].setChildren(Children, 7); } mBuiltFlag = true; } void GroundEmitterAssetParameters_0p2::initStrings(void) { raycastCollisionGroupMaskName.isAllocated = true; raycastCollisionGroupMaskName.buf = NULL; } void GroundEmitterAssetParameters_0p2::initDynamicArrays(void) { materialFactoryMapList.buf = NULL; materialFactoryMapList.isAllocated = true; materialFactoryMapList.elementSize = sizeof(materialFactoryMapping_Type); materialFactoryMapList.arraySizes[0] = 0; } void GroundEmitterAssetParameters_0p2::initDefaults(void) { freeStrings(); freeReferences(); freeDynamicArrays(); density = float(1); lifetimeLow = float(1); lifetimeHigh = float(1); velocityLow = physx::PxVec3(init(0, 0, 0)); velocityHigh = physx::PxVec3(init(0, 0, 0)); radius = float(10.0f); raycastHeight = float(10.0f); spawnHeight = float(0.0f); maxRaycastsPerFrame = uint32_t(0xffffffff); initDynamicArrays(); initStrings(); initReferences(); } void GroundEmitterAssetParameters_0p2::initReferences(void) { } void GroundEmitterAssetParameters_0p2::freeDynamicArrays(void) { if (materialFactoryMapList.isAllocated && materialFactoryMapList.buf) { mParameterizedTraits->free(materialFactoryMapList.buf); } } void GroundEmitterAssetParameters_0p2::freeStrings(void) { if (raycastCollisionGroupMaskName.isAllocated && raycastCollisionGroupMaskName.buf) { mParameterizedTraits->strfree((char*)raycastCollisionGroupMaskName.buf); } for (int i = 0; i < materialFactoryMapList.arraySizes[0]; ++i) { if (materialFactoryMapList.buf[i].physMatName.isAllocated && materialFactoryMapList.buf[i].physMatName.buf) { mParameterizedTraits->strfree((char*)materialFactoryMapList.buf[i].physMatName.buf); } } } void GroundEmitterAssetParameters_0p2::freeReferences(void) { for (int i = 0; i < materialFactoryMapList.arraySizes[0]; i++) { if (materialFactoryMapList.buf[i].iofxAssetName) { materialFactoryMapList.buf[i].iofxAssetName->destroy(); } if (materialFactoryMapList.buf[i].iosAssetName) { materialFactoryMapList.buf[i].iosAssetName->destroy(); } } } } // namespace parameterized } // namespace nvidia