diff --git a/ClassicalSharp/Entities/Model/ModelCache.cs b/ClassicalSharp/Entities/Model/ModelCache.cs index 425e938bb..b570f809f 100644 --- a/ClassicalSharp/Entities/Model/ModelCache.cs +++ b/ClassicalSharp/Entities/Model/ModelCache.cs @@ -79,6 +79,7 @@ namespace ClassicalSharp.Model { void InitModel(CachedModel m) { m.Instance.CreateParts(); + m.Instance.index = 0; m.Instance.initalised = true; } diff --git a/src/Client/ModelCache.c b/src/Client/ModelCache.c index 3737d4d68..9a76f4861 100644 --- a/src/Client/ModelCache.c +++ b/src/Client/ModelCache.c @@ -28,6 +28,12 @@ static void ModelCache_ContextRecreated(void* obj) { ModelCache_Vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, MODELCACHE_MAX_VERTICES); } +static void ModelCache_InitModel(struct IModel* model) { + model->CreateParts(); + model->initalised = true; + model->index = 0; +} + struct IModel* ModelCache_Get(STRING_PURE String* name) { UInt32 i; for (i = 0; i < ModelCache_modelCount; i++) { @@ -35,8 +41,7 @@ struct IModel* ModelCache_Get(STRING_PURE String* name) { if (!String_CaselessEquals(&m->Name, name)) continue; if (!m->Instance->initalised) { - m->Instance->CreateParts(); - m->Instance->initalised = true; + ModelCache_InitModel(m->Instance); } return m->Instance; } @@ -1282,8 +1287,7 @@ static void ModelCache_RegisterDefaultModels(void) { ModelCache_RegisterTexture("zombie.png"); ModelCache_Register("humanoid", "char.png", HumanoidModel_GetInstance()); - HumanoidModel_CreateParts(); - HumanoidModel.initalised = true; + ModelCache_InitModel(&HumanoidModel); ModelCache_Register("chicken", "chicken.png", ChickenModel_GetInstance()); ModelCache_Register("creeper", "creeper.png", CreeperModel_GetInstance());