diff options
Diffstat (limited to 'src/runtimerender/Qt3DSRenderUIPLoader.cpp')
-rw-r--r-- | src/runtimerender/Qt3DSRenderUIPLoader.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/runtimerender/Qt3DSRenderUIPLoader.cpp b/src/runtimerender/Qt3DSRenderUIPLoader.cpp index 8d26350..68ee30f 100644 --- a/src/runtimerender/Qt3DSRenderUIPLoader.cpp +++ b/src/runtimerender/Qt3DSRenderUIPLoader.cpp @@ -518,6 +518,7 @@ struct SRenderUIPLoader : public IDOMReferenceResolver MemoryBuffer<RawAllocator> m_ValueBuffer; TIdPathAnchorIndexMap m_AnchorIdToPathAndAnchorIndexMap; const Q3DSVariantConfig &m_variantConfig; + int m_uipVersion; SRenderUIPLoader(qt3dsdm::IDOMReader &inReader, const char8_t *inFullPathToPresentationFile, Q3DStudio::IRuntimeMetaData &inMetaData, IStringTable &inStrTable @@ -535,7 +536,8 @@ struct SRenderUIPLoader : public IDOMReferenceResolver qt3ds::render::ICustomMaterialSystem &inCMS, qt3ds::render::IDynamicObjectSystem &inDynamicSystem, qt3ds::render::IPathManager &inPathManager, IUIPReferenceResolver *inResolver, - const Q3DSVariantConfig &variantConfig) + const Q3DSVariantConfig &variantConfig, + int uipVersion) : m_Reader(inReader) , m_MetaData(inMetaData) , m_StrTable(inStrTable) @@ -553,6 +555,7 @@ struct SRenderUIPLoader : public IDOMReferenceResolver , m_PathManager(inPathManager) , m_ReferenceResolver(inResolver) , m_variantConfig(variantConfig) + , m_uipVersion(uipVersion) { std::string presentationFile = inFullPathToPresentationFile; std::string::size_type pos = presentationFile.find_last_of("\\/"); @@ -1088,12 +1091,21 @@ struct SRenderUIPLoader : public IDOMReferenceResolver if (image) inDynamicObject.setImage(theDefinition.m_Name, image); SetDynamicObjectProperty(dynObj, theDefinition, ref); - } else { + } else if (this->m_uipVersion < 7) { SImage *img = inDynamicObject.getImageByPropertyName(theDefinition.m_Name); - if (img) { - img->m_ImagePath = theStr; - img->m_Flags.SetDirty(true); + if (!img) { + img = QT3DS_NEW(m_PresentationAllocator, SImage); + img->m_Id = m_StrTable.RegisterStr( + QString::fromLatin1(inDynamicObject.m_Id) + QLatin1Char('_') + + QString::fromLatin1(theDefinition.m_Name)); + img->m_HorizontalTilingMode = theDefinition.m_CoordOp; + img->m_VerticalTilingMode = theDefinition.m_CoordOp; + img->m_MagFilter = theDefinition.m_MagFilterOp; + img->m_MinFilter = theDefinition.m_MinFilterOp; + SetDynamicObjectProperty(dynObj, theDefinition, img->m_Id); } + img->m_ImagePath = theStr; + inDynamicObject.setImage(theDefinition.m_Name, img); } } } break; @@ -1932,12 +1944,12 @@ SPresentation *qt3ds::render::IUIPLoader::LoadUIPFile( const char8_t *inPresentationDir, IRenderPluginManager &inPluginManager, ICustomMaterialSystem &inCMS, IDynamicObjectSystem &inDynamicSystem, qt3ds::render::IPathManager &inPathManager, IUIPReferenceResolver *inResolver, - const Q3DSVariantConfig &variantConfig, bool inSetValuesFromSlides) + const Q3DSVariantConfig &variantConfig, bool inSetValuesFromSlides, int uipVersion) { SRenderUIPLoader theLoader(inReader, inFullPathToPresentationFile, inMetaData, inStrTable, inFoundation, inPresentationAllocator, ioObjectMap, inBufferManager, inEffectSystem, inPresentationDir, inPluginManager, inCMS, - inDynamicSystem, inPathManager, inResolver, variantConfig); + inDynamicSystem, inPathManager, inResolver, variantConfig, uipVersion); return theLoader.Load(inSetValuesFromSlides); } using namespace qt3dsdm; |