From e84b8bd0176ca3ec73b12e881efd5bcc230cf908 Mon Sep 17 00:00:00 2001 From: Ykkrosh Date: Sun, 3 Jul 2005 01:37:49 +0000 Subject: [PATCH] Fixed regression caused by not understanding my code This was SVN commit r2457. --- source/graphics/ObjectEntry.cpp | 8 ++++++-- source/graphics/ObjectEntry.h | 2 +- source/graphics/ObjectManager.cpp | 4 ++-- source/graphics/ObjectManager.h | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/source/graphics/ObjectEntry.cpp b/source/graphics/ObjectEntry.cpp index b22cb14324..892a928260 100755 --- a/source/graphics/ObjectEntry.cpp +++ b/source/graphics/ObjectEntry.cpp @@ -36,8 +36,12 @@ CObjectEntry::~CObjectEntry() delete m_Model; } -bool CObjectEntry::BuildRandomVariant(const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator vars_it) +bool CObjectEntry::BuildRandomVariant(const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator& vars_it) { + // vars_it is passed by reference so that the caller's iterator + // can be incremented by the appropriate amount, to point to the + // next object's set of variant choices (for propped models). + CStr chosenTexture; CStr chosenModel; CStr chosenColor; @@ -62,7 +66,7 @@ bool CObjectEntry::BuildRandomVariant(const CObjectBase::variation_key& vars, CO u8 var_id = *vars_it++; if (var_id < 0 || var_id >= grp->size()) { - LOG(ERROR, LOG_CATEGORY, "Internal error (BuildRandomVariant: %d not in 0..%d", var_id, grp->size()-1); + LOG(ERROR, LOG_CATEGORY, "Internal error (BuildRandomVariant: %d not in 0..%d)", var_id, grp->size()-1); continue; } CObjectBase::Variant& var ((*grp)[var_id]); diff --git a/source/graphics/ObjectEntry.h b/source/graphics/ObjectEntry.h index 8d030e79f7..a344184b0b 100755 --- a/source/graphics/ObjectEntry.h +++ b/source/graphics/ObjectEntry.h @@ -18,7 +18,7 @@ public: CObjectEntry(int type, CObjectBase* base); ~CObjectEntry(); - bool BuildRandomVariant(const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator vars_it); + bool BuildRandomVariant(const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator& vars_it); // Base actor. Contains all the things that don't change between // different variations of the actor. diff --git a/source/graphics/ObjectManager.cpp b/source/graphics/ObjectManager.cpp index cad0841e91..6aff3bdd07 100755 --- a/source/graphics/ObjectManager.cpp +++ b/source/graphics/ObjectManager.cpp @@ -105,7 +105,7 @@ CObjectEntry* CObjectManager::FindObject(const char* objname) return FindObjectVariation(base, var, vars_it); } -CObjectEntry* CObjectManager::FindObjectVariation(const char* objname, const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator vars_it) +CObjectEntry* CObjectManager::FindObjectVariation(const char* objname, const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator& vars_it) { CObjectBase* base = FindObjectBase(objname); @@ -115,7 +115,7 @@ CObjectEntry* CObjectManager::FindObjectVariation(const char* objname, const COb return FindObjectVariation(base, vars, vars_it); } -CObjectEntry* CObjectManager::FindObjectVariation(CObjectBase* base, const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator vars_it) +CObjectEntry* CObjectManager::FindObjectVariation(CObjectBase* base, const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator& vars_it) { // Look to see whether this particular variation has already been loaded diff --git a/source/graphics/ObjectManager.h b/source/graphics/ObjectManager.h index 0720910c60..618a2b2a3d 100755 --- a/source/graphics/ObjectManager.h +++ b/source/graphics/ObjectManager.h @@ -67,8 +67,8 @@ public: CObjectBase* FindObjectBase(const char* objname); - CObjectEntry* FindObjectVariation(const char* objname, const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator vars_it); - CObjectEntry* FindObjectVariation(CObjectBase* base, const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator vars_it); + CObjectEntry* FindObjectVariation(const char* objname, const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator& vars_it); + CObjectEntry* FindObjectVariation(CObjectBase* base, const CObjectBase::variation_key& vars, CObjectBase::variation_key::const_iterator& vars_it); // Get all names, quite slowly. (Intended only for ScEd.) void GetAllObjectNames(std::vector& names);