Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Stokes <mogurijin@gmail.com>2013-06-18 08:15:27 +0400
committerMitchell Stokes <mogurijin@gmail.com>2013-06-18 08:15:27 +0400
commit1f785cc196632d0c1fea48507d44fb1b5843ae5d (patch)
tree0761293213f393493704ab69553486cf62f22813 /source/gameengine
parent5bd5e69e9819f22dc69a1a3aaf577e1ba8c32754 (diff)
BGE: Fix for [#32218] "logic.addScene() Not Adding Scenes in Order" reported by Josiah Lane (solarlune).
Adding scenes now uses a vector instead of a set to maintain order. This fix is partly based off of patch #32297 by Pavel Sadikov (sigmat).
Diffstat (limited to 'source/gameengine')
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.cpp14
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.h9
2 files changed, 11 insertions, 12 deletions
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index 01b726a8e3f..f02e842ad2e 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -1649,10 +1649,10 @@ void KX_KetsjiEngine::ConvertAndAddScene(const STR_String& scenename,bool overla
}
else {
if (overlay) {
- m_addingOverlayScenes.insert(scenename);
+ m_addingOverlayScenes.push_back(scenename);
}
else {
- m_addingBackgroundScenes.insert(scenename);
+ m_addingBackgroundScenes.push_back(scenename);
}
}
}
@@ -1664,7 +1664,7 @@ void KX_KetsjiEngine::RemoveScene(const STR_String& scenename)
{
if (FindScene(scenename))
{
- m_removingScenes.insert(scenename);
+ m_removingScenes.push_back(scenename);
}
else
{
@@ -1679,7 +1679,7 @@ void KX_KetsjiEngine::RemoveScheduledScenes()
{
if (m_removingScenes.size())
{
- set<STR_String>::iterator scenenameit;
+ vector<STR_String>::iterator scenenameit;
for (scenenameit=m_removingScenes.begin();scenenameit != m_removingScenes.end();scenenameit++)
{
STR_String scenename = *scenenameit;
@@ -1725,7 +1725,7 @@ KX_Scene* KX_KetsjiEngine::CreateScene(const STR_String& scenename)
void KX_KetsjiEngine::AddScheduledScenes()
{
- set<STR_String>::iterator scenenameit;
+ vector<STR_String>::iterator scenenameit;
if (m_addingOverlayScenes.size())
{
@@ -1761,7 +1761,7 @@ void KX_KetsjiEngine::AddScheduledScenes()
void KX_KetsjiEngine::ReplaceScene(const STR_String& oldscene,const STR_String& newscene)
{
- m_replace_scenes.insert(std::make_pair(oldscene,newscene));
+ m_replace_scenes.push_back(std::make_pair(oldscene,newscene));
}
// replace scene is not the same as removing and adding because the
@@ -1772,7 +1772,7 @@ void KX_KetsjiEngine::ReplaceScheduledScenes()
{
if (m_replace_scenes.size())
{
- set<pair<STR_String,STR_String> >::iterator scenenameit;
+ vector<pair<STR_String,STR_String> >::iterator scenenameit;
for (scenenameit = m_replace_scenes.begin();
scenenameit != m_replace_scenes.end();
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.h b/source/gameengine/Ketsji/KX_KetsjiEngine.h
index 0d7e41d7568..3cba3558db3 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.h
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.h
@@ -41,7 +41,6 @@
#include "KX_Python.h"
#include "KX_WorldInfo.h"
#include <vector>
-#include <set>
class KX_TimeCategoryLogger;
@@ -88,13 +87,13 @@ private:
class KX_Dome* m_dome; // dome stereo mode
/** Lists of scenes scheduled to be removed at the end of the frame. */
- std::set<STR_String> m_removingScenes;
+ std::vector<STR_String> m_removingScenes;
/** Lists of overley scenes scheduled to be added at the end of the frame. */
- std::set<STR_String> m_addingOverlayScenes;
+ std::vector<STR_String> m_addingOverlayScenes;
/** Lists of background scenes scheduled to be added at the end of the frame. */
- std::set<STR_String> m_addingBackgroundScenes;
+ std::vector<STR_String> m_addingBackgroundScenes;
/** Lists of scenes scheduled to be replaced at the end of the frame. */
- std::set<std::pair<STR_String,STR_String> > m_replace_scenes;
+ std::vector<std::pair<STR_String,STR_String> > m_replace_scenes;
/* The current list of scenes. */
KX_SceneList m_scenes;