summaryrefslogtreecommitdiffstats
path: root/src/runtimerender/Qt3DSRenderUIPLoader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtimerender/Qt3DSRenderUIPLoader.cpp')
-rw-r--r--src/runtimerender/Qt3DSRenderUIPLoader.cpp26
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;