diff options
author | Piotr Dziwinski <piotrdz@gmail.com> | 2013-03-31 13:06:38 +0200 |
---|---|---|
committer | Piotr Dziwinski <piotrdz@gmail.com> | 2013-03-31 13:06:38 +0200 |
commit | ff97de547799a60a2121008e9da5793d2ab1581f (patch) | |
tree | a4b2bd37da23c01d0b9c54c976e0c4079257951f /src/graphics/engine/engine.cpp | |
parent | 0d70b6e2f874d9adeb6528df355d3271c3943845 (diff) | |
download | colobot-ff97de547799a60a2121008e9da5793d2ab1581f.tar.gz colobot-ff97de547799a60a2121008e9da5793d2ab1581f.tar.bz2 colobot-ff97de547799a60a2121008e9da5793d2ab1581f.zip |
Fixed graphics objects after reset
Should fix #120 and perhaps some other bugs as well
Diffstat (limited to 'src/graphics/engine/engine.cpp')
-rw-r--r-- | src/graphics/engine/engine.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/graphics/engine/engine.cpp b/src/graphics/engine/engine.cpp index e2ef569..274e179 100644 --- a/src/graphics/engine/engine.cpp +++ b/src/graphics/engine/engine.cpp @@ -591,6 +591,27 @@ void CEngine::CopyBaseObject(int sourceBaseObjRank, int destBaseObjRank) assert(destBaseObjRank >= 0 && destBaseObjRank < static_cast<int>( m_baseObjects.size() )); m_baseObjects[destBaseObjRank] = m_baseObjects[sourceBaseObjRank]; + + EngineBaseObject& p1 = m_baseObjects[destBaseObjRank]; + + if (! p1.used) + return; + + for (int l2 = 0; l2 < static_cast<int>( p1.next.size() ); l2++) + { + EngineBaseObjTexTier& p2 = p1.next[l2]; + + for (int l3 = 0; l3 < static_cast<int>( p2.next.size() ); l3++) + { + EngineBaseObjLODTier& p3 = p2.next[l3]; + + for (int l4 = 0; l4 < static_cast<int>( p3.next.size() ); l4++) + { + EngineBaseObjDataTier& p4 = p3.next[l4]; + p4.staticBufferId = 0; + } + } + } } void CEngine::AddBaseObjTriangles(int baseObjRank, const std::vector<VertexTex2>& vertices, |