~ubuntu-branches/debian/sid/ember/sid

« back to all changes in this revision

Viewing changes to src/components/ogre/model/ModelBackgroundLoader.cpp

  • Committer: Package Import Robot
  • Author(s): Olek Wojnar, Stephen M. Webb, Olek Wojnar
  • Date: 2016-08-06 18:39:19 UTC
  • mfrom: (1.1.3)
  • Revision ID: package-import@ubuntu.com-20160806183919-4g72j3flj7xe2stj
Tags: 0.7.2+dfsg-1
[ Stephen M. Webb ]
* debian/control: updated build-depends to newer minimum versions
  (closes: #704786)
* debian/control: updated Standards-Version to 3.9.4 (updated VCS-* fields)
* debian/patches/0001-ember.in-test-expr.patch: removed (fixed upstream)
* debian/patches/0002-add-update_lua_bindings.patch: removed (fixed upstream)
* debian/patches/0003-add-atlas-pkg.patch: removed (fixed upstream)
* debian/patches/0004-domain-bindings-lua-makefile.patch: refreshed
* debian/patches/0005-ember.in-prefix.patch: removed (fixed upstream)
* debian/patches/0006-spellcheck-similiar.patch: removed (fixed upstream)
* debian/patches/0007-revert-libwfut-version.patch: refreshed
* debian/patches/0008-replace-fastdeletegate-with-sigc++.patch: removed
 (fixed upstream)
* debian/patches/0009-spelling-bach.patch: removed (fixed upstream)
* debian/patches/0010-fix-ember-script-args.patch: removed (fixed upstream)
* debian/patches/0011-qualify-template-functions.patch: removed (fixed
  upstream)
* debian/patches/0012-fix-osdir-headers.patch: removed (fixed upstream)
* debian/patches/0013-remove-invalid-linker-flags.patch: removed (fixed
  upstream)
* debian/patches/0014-add-missing-ogrelodstrategy.patch: new
* debian/control: fixed Vcs-Browser URL
* debian/patches/0015-verbose-configure-errors.patch: new
* debian/patches/0016-boost-1.53.patch: new
* debian/control: bump boost build dependeny to 1.53

[ Olek Wojnar ]
* New upstream release (Closes: #799748)
* Add myself as new uploader
  - Remove Stephen Webb per his request
  - Thanks for all the contributions, Stephen!
* d/patches/0007-revert-libwfut-version.patch: removed (unnecessary)
* d/control
  - Remove pre-dependency on dpkg
  - Update standards to 3.9.8 (no changes)
  - Update Vcs lines for secure URIs
* Import patch from the wfmath package to replace MersenneTwister.h
  -- Avoids problems from ambiguous copyright of the original file
* Update dependencies for version 0.7.2
* Enable all hardening options
* Add three lintian overrides
  -- Ignore install into usr/bin (binary)
  -- Ignore .rc files needed for WIN32 build (source)
  -- Ignore false positive of spelling error (binary)
* d/copyright: Update contributors and dates
* d/rules
  -- Do not remove "sounddefinitions" directory
  -- Enable parallel build
  -- Do not install into games directories
  -- Remove dh_builddeb override since xz is now the default
* d/watch: update file extensions
* Remove three patches, add eight patches, update remaining patches
  -- 0004-domain-bindings-lua-makefile.patch (implemented upstream)
  -- 0014-add-missing-ogrelodstrategy.patch (implemented upstream)
  -- 0016-boost-1.53.patch (patch target file removed upstream)
  -- 0018-enable-subdir-objects.patch (Fix automake 1.14 warnings)
  -- 0019-update-boost-m4.patch (Fix invalid boost_major_version)
  -- 0020-remove-obsolete-includes.patch (Fix obsolete includes)
  -- 0021-GraphicalChangeAdapter-fix-for-newer-compilers.patch (Added)
  -- 0022-fix-typos.patch (Fix typos identified by lintian)
  -- 0023-add-keywords-to-desktop-file.patch (Add Keywords to .desktop file)
  -- 0024-fix-icon-location (Make icon location Icon Theme Spec-compliant)
  -- 0025-fix-duplicate-script-install.patch (Was causing build failures)

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
{
50
50
 
51
51
ModelBackgroundLoaderListener::ModelBackgroundLoaderListener(ModelBackgroundLoader& loader) :
52
 
        mLoader(&loader)
 
52
                mLoader(&loader)
53
53
{
54
54
 
55
55
}
67
67
}
68
68
 
69
69
ModelBackgroundLoader::ModelBackgroundLoader(Model& model) :
70
 
        mModel(model), mState(LS_UNINITIALIZED)
 
70
                mModel(model), mState(LS_UNINITIALIZED)
71
71
{
72
72
}
73
73
 
84
84
        if (mState == LS_UNINITIALIZED) {
85
85
                //Start to load the meshes
86
86
                for (SubModelDefinitionsStore::const_iterator I_subModels = mModel.getDefinition()->getSubModelDefinitions().begin(); I_subModels != mModel.getDefinition()->getSubModelDefinitions().end(); ++I_subModels) {
87
 
                        Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr> (Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName()));
88
 
                        if (meshPtr.isNull() || !meshPtr->isPrepared()) {
 
87
                        Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr>(Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName()));
 
88
                        if (meshPtr.isNull() || (!meshPtr->isPrepared() && !meshPtr->isLoading() && !meshPtr->isLoaded())) {
89
89
                                try {
90
90
                                        Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().prepare(Ogre::MeshManager::getSingleton().getResourceType(), (*I_subModels)->getMeshName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener());
91
91
                                        if (ticket) {
105
105
                        return poll(timeFrame);
106
106
                }
107
107
        } else if (mState == LS_MESH_PREPARED) {
108
 
                for (SubModelDefinitionsStore::const_iterator I_subModels = mModel.getDefinition()->getSubModelDefinitions().begin(); I_subModels != mModel.getDefinition()->getSubModelDefinitions().end(); ++I_subModels) {
109
 
                        Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr> (Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName()));
 
108
                for (auto submodelDef : mModel.getDefinition()->getSubModelDefinitions()) {
 
109
                        Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr>(Ogre::MeshManager::getSingleton().getByName(submodelDef->getMeshName()));
110
110
                        if (!meshPtr.isNull()) {
111
111
                                if (!meshPtr->isLoaded()) {
112
112
#if OGRE_THREAD_SUPPORT == 1
139
139
        } else if (mState == LS_MESH_LOADED) {
140
140
 
141
141
                for (SubModelDefinitionsStore::const_iterator I_subModels = mModel.getDefinition()->getSubModelDefinitions().begin(); I_subModels != mModel.getDefinition()->getSubModelDefinitions().end(); ++I_subModels) {
142
 
                        Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr> (Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName()));
 
142
                        Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr>(Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName()));
143
143
                        if (!meshPtr.isNull()) {
144
144
                                if (meshPtr->isLoaded()) {
145
 
                                        Ogre::Mesh::SubMeshIterator subMeshI = meshPtr->getSubMeshIterator();
146
 
                                        while (subMeshI.hasMoreElements()) {
147
 
                                                Ogre::SubMesh* submesh(subMeshI.getNext());
148
 
                                                Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr> (Ogre::MaterialManager::getSingleton().getByName(submesh->getMaterialName()));
149
 
                                                if (materialPtr.isNull() || !materialPtr->isPrepared()) {
 
145
                                        for (auto submesh : meshPtr->getSubMeshIterator()) {
 
146
                                                Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr>(Ogre::MaterialManager::getSingleton().getByName(submesh->getMaterialName()));
 
147
                                                if (materialPtr.isNull() || (!materialPtr->isPrepared() && !materialPtr->isLoading() && !materialPtr->isLoaded())) {
150
148
//                                                      S_LOG_VERBOSE("Preparing material " << materialPtr->getName());
151
 
                                                        Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().prepare(Ogre::MaterialManager::getSingleton().getResourceType(),submesh->getMaterialName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener());
 
149
                                                        Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().prepare(Ogre::MaterialManager::getSingleton().getResourceType(), submesh->getMaterialName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener());
152
150
                                                        if (ticket) {
153
151
                                                                addTicket(ticket);
154
152
                                                        }
161
159
                                        for (SubEntityDefinitionsStore::const_iterator I_subEntities = (*I_parts)->getSubEntityDefinitions().begin(); I_subEntities != (*I_parts)->getSubEntityDefinitions().end(); ++I_subEntities) {
162
160
                                                const std::string& materialName = (*I_subEntities)->getMaterialName();
163
161
                                                if (materialName != "") {
164
 
                                                        Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr> (Ogre::MaterialManager::getSingleton().getByName(materialName));
165
 
                                                        if (materialPtr.isNull() || !materialPtr->isPrepared()) {
 
162
                                                        Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr>(Ogre::MaterialManager::getSingleton().getByName(materialName));
 
163
                                                        if (materialPtr.isNull() || (!materialPtr->isPrepared() && !materialPtr->isLoading() && !materialPtr->isLoaded())) {
166
164
//                                                              S_LOG_VERBOSE("Preparing material " << materialName);
167
165
                                                                Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().prepare(Ogre::MaterialManager::getSingleton().getResourceType(), materialName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener());
168
166
                                                                if (ticket) {
183
181
                        return poll(timeFrame);
184
182
                }
185
183
        } else if (mState == LS_MATERIAL_PREPARED) {
186
 
                for (SubModelDefinitionsStore::const_iterator I_subModels = mModel.getDefinition()->getSubModelDefinitions().begin(); I_subModels != mModel.getDefinition()->getSubModelDefinitions().end(); ++I_subModels) {
187
 
                        Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr> (Ogre::MeshManager::getSingleton().getByName((*I_subModels)->getMeshName()));
188
 
                        Ogre::Mesh::SubMeshIterator subMeshI = meshPtr->getSubMeshIterator();
189
 
                        while (subMeshI.hasMoreElements()) {
190
 
                                Ogre::SubMesh* submesh(subMeshI.getNext());
191
 
                                Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr> (Ogre::MaterialManager::getSingleton().getByName(submesh->getMaterialName()));
 
184
                for (auto submodelDef : mModel.getDefinition()->getSubModelDefinitions()) {
 
185
                        Ogre::MeshPtr meshPtr = static_cast<Ogre::MeshPtr>(Ogre::MeshManager::getSingleton().getByName(submodelDef->getMeshName()));
 
186
                        for (auto submesh : meshPtr->getSubMeshIterator()) {
 
187
                                Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr>(Ogre::MaterialManager::getSingleton().getByName(submesh->getMaterialName()));
192
188
                                if (!materialPtr.isNull() && !materialPtr->isLoaded()) {
193
189
 
194
190
#if OGRE_THREAD_SUPPORT == 1
228
224
 
229
225
                                }
230
226
                        }
231
 
                        for (PartDefinitionsStore::const_iterator I_parts = (*I_subModels)->getPartDefinitions().begin(); I_parts != (*I_subModels)->getPartDefinitions().end(); ++I_parts) {
232
 
                                if ((*I_parts)->getSubEntityDefinitions().size() > 0) {
233
 
                                        for (SubEntityDefinitionsStore::const_iterator I_subEntities = (*I_parts)->getSubEntityDefinitions().begin(); I_subEntities != (*I_parts)->getSubEntityDefinitions().end(); ++I_subEntities) {
234
 
                                                const std::string& materialName = (*I_subEntities)->getMaterialName();
 
227
                        for (auto partDefinition : submodelDef->getPartDefinitions()) {
 
228
                                if (partDefinition->getSubEntityDefinitions().size() > 0) {
 
229
                                        for (auto subEntityDefinition : partDefinition->getSubEntityDefinitions()) {
 
230
                                                const std::string& materialName = subEntityDefinition->getMaterialName();
235
231
                                                if (materialName != "") {
236
 
                                                        Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr> (Ogre::MaterialManager::getSingleton().getByName(materialName));
 
232
                                                        Ogre::MaterialPtr materialPtr = static_cast<Ogre::MaterialPtr>(Ogre::MaterialManager::getSingleton().getByName(materialName));
237
233
                                                        if (!materialPtr.isNull() && !materialPtr->isLoaded()) {
238
234
#if OGRE_THREAD_SUPPORT == 1
239
235
                                                                Ogre::BackgroundProcessTicket ticket = Ogre::ResourceBackgroundQueue::getSingleton().load(Ogre::MaterialManager::getSingleton().getResourceType(), materialPtr->getName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, false, 0, 0, createListener());
311
307
        return mTickets.size() == 0;
312
308
}
313
309
 
314
 
const ModelBackgroundLoader::LoadingState ModelBackgroundLoader::getState() const
 
310
ModelBackgroundLoader::LoadingState ModelBackgroundLoader::getState() const
315
311
{
316
312
        return mState;
317
313
}