diff --git a/src/modelinfo/ModelInfo.cpp b/src/modelinfo/ModelInfo.cpp index 02df1be66..6c4051423 100644 --- a/src/modelinfo/ModelInfo.cpp +++ b/src/modelinfo/ModelInfo.cpp @@ -18,6 +18,8 @@ CStore CModelInfo::ms_pedModelStore; CStore CModelInfo::ms_vehicleModelStore; CStore CModelInfo::ms_2dEffectStore; +int32 CModelInfo::msNumModelInfos; + void CModelInfo::Initialise(void) { @@ -32,6 +34,7 @@ CModelInfo::Initialise(void) debug("sizeof PedModelStore %d\n", sizeof(ms_pedModelStore)); debug("sizeof 2deffectsModelStore %d\n", sizeof(ms_2dEffectStore)); + msNumModelInfos = 4900; for(i = 0; i < MODELINFOSIZE; i++) ms_modelInfoPtrs[i] = nil; ms_2dEffectStore.Clear(); @@ -188,8 +191,12 @@ CBaseModelInfo* CModelInfo::GetModelInfo(const char *name, int *id) { uint32 hashKey = CKeyGen::GetUppercaseKey(name); + + if (CModelInfo::msNumModelInfos <= 0) + return nil; + CBaseModelInfo *modelinfo; - for(int i = 0; i < MODELINFOSIZE; i++){ + for(int i = 0; i < msNumModelInfos; i++){ modelinfo = CModelInfo::ms_modelInfoPtrs[i]; if(modelinfo && hashKey == modelinfo->GetNameHashKey()){ if(id) @@ -216,6 +223,23 @@ CModelInfo::GetModelInfo(const char *name, int minIndex, int maxIndex) return nil; } +CBaseModelInfo* +CModelInfo::GetModelInfoFromHashKey(uint32 hashKey, int *id) { + if (CModelInfo::msNumModelInfos <= 0) + return nil; + + CBaseModelInfo *modelinfo; + for (int i = 0; i < CModelInfo::msNumModelInfos; i++) { + modelinfo = CModelInfo::ms_modelInfoPtrs[i]; + if (modelinfo && hashKey == modelinfo->GetNameHashKey()) { + if (id) + *id = i; + return modelinfo; + } + } + return nil; +} + bool CModelInfo::IsBoatModel(int32 id) { diff --git a/src/modelinfo/ModelInfo.h b/src/modelinfo/ModelInfo.h index 1ac7b0bb5..ce652f81b 100644 --- a/src/modelinfo/ModelInfo.h +++ b/src/modelinfo/ModelInfo.h @@ -21,6 +21,8 @@ class CModelInfo static CStore ms_vehicleModelStore; static CStore ms_2dEffectStore; + static int32 msNumModelInfos; + public: static void Initialise(void); static void ShutDown(void); @@ -39,6 +41,7 @@ class CModelInfo return ms_modelInfoPtrs[id]; } static CBaseModelInfo *GetModelInfo(const char *name, int minIndex, int maxIndex); + static CBaseModelInfo *GetModelInfoFromHashKey(uint32 hashKey, int *id); static bool IsBoatModel(int32 id); static bool IsBikeModel(int32 id);