44 const PxU32 matCount = 128;
45 mMaterials =
reinterpret_cast<Material**
>(PX_ALLOC(
sizeof(Material*) * matCount,
"NpMaterialManager::initialise"));
46 mMaxMaterials = matCount;
47 PxMemZero(mMaterials,
sizeof(Material*)*mMaxMaterials);
52 void releaseMaterials()
54 for(PxU32 i=0; i<mMaxMaterials; ++i)
58 const PxU32 handle(mMaterials[i]->mMaterial.mMaterialIndex);
59 mHandleManager.freeID(handle);
60 mMaterials[i]->release();
67 bool setMaterial(Material& mat)
69 const PxU32 poolID = mHandleManager.getNewID();
70 if (poolID >= MATERIAL_INVALID_HANDLE)
73 const PxU16 materialIndex = PxTo16(poolID);
75 if(materialIndex >= mMaxMaterials)
78 mMaterials[materialIndex] = &mat;
79 mat.mMaterial.mMaterialIndex = materialIndex;
83 void updateMaterial(Material& mat)
85 mMaterials[mat.mMaterial.mMaterialIndex] = &mat;
90 return mHandleManager.getNumUsedID();
93 void removeMaterial(Material& mat)
95 const PxU16 handle = mat.mMaterial.mMaterialIndex;
96 if(handle != MATERIAL_INVALID_HANDLE)
98 mMaterials[handle] = NULL;
99 mHandleManager.freeID(PxU32(handle));
105 PX_ASSERT(index < mMaxMaterials);
106 return mMaterials[index];
111 return mMaxMaterials;
122 const PxU32 numMaterials = mMaxMaterials;
123 mMaxMaterials =
PxMin(mMaxMaterials*2, PxU32(MATERIAL_INVALID_HANDLE));
125 Material** mat =
reinterpret_cast<Material**
>(PX_ALLOC(
sizeof(Material*)*mMaxMaterials,
"NpMaterialManager::resize"));
126 PxMemZero(mat,
sizeof(Material*)*mMaxMaterials);
127 for(PxU32 i=0; i<numMaterials; ++i)
128 mat[i] = mMaterials[i];
136 Material** mMaterials;
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
PX_CUDA_CALLABLE PX_FORCE_INLINE T PxMin(T a, T b)
The return value is the lesser of the two specified values.
Definition PxMath.h:88