diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2020-09-16 17:30:39 +0300 |
---|---|---|
committer | Kaj Grönholm <kaj.gronholm@qt.io> | 2020-09-21 07:47:10 +0300 |
commit | 7761f86cec898a0a38ed2e3adddc5ef0fdbdea89 (patch) | |
tree | fc08bf2827a5fa797e380408e60459e7d3fc2cd3 | |
parent | 05eb20d0b7e46101dd79d3f5788681f5a2a9446e (diff) |
Add support for onActivate and onDeactivate Actions
Add new Action types onActivate and onDeactivate. When assigned, these
will get triggered at object timeline start and end times. Using these
it is possible to trigger events at specific times during animation.
Example and autotest case included.
Task-number: QT3DS-4128
Change-Id: Ib973b479a1de47745089d41c5764c2a1747ec95e
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
-rw-r--r-- | examples/studio3d/simpleqml/main.qml | 8 | ||||
-rw-r--r-- | examples/studio3d/simpleqml/presentation/barrel.uip | 67 | ||||
-rw-r--r-- | res/DataModelMetadata/en-us/MetaData.xml | 2 | ||||
-rw-r--r-- | src/runtime/Qt3DSActivationManager.cpp | 10 | ||||
-rw-r--r-- | src/runtime/Qt3DSApplication.cpp | 7 | ||||
-rw-r--r-- | src/runtime/Qt3DSApplication.h | 1 | ||||
-rw-r--r-- | src/runtime/Qt3DSElementSystem.h | 4 | ||||
-rw-r--r-- | src/runtime/Qt3DSInputEventTypes.h | 3 | ||||
-rw-r--r-- | src/runtime/Qt3DSKernelTypes.h | 5 | ||||
-rw-r--r-- | src/runtime/Qt3DSLogicSystem.cpp | 10 | ||||
-rw-r--r-- | tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp | 36 | ||||
-rw-r--r-- | tests/auto/studio3d/shared/presentation/activateactions.uip | 55 | ||||
-rw-r--r-- | tests/auto/studio3d/shared/shared_presentations.h | 1 | ||||
-rw-r--r-- | tests/auto/studio3d/shared/shared_presentations.qrc | 1 |
14 files changed, 178 insertions, 32 deletions
diff --git a/examples/studio3d/simpleqml/main.qml b/examples/studio3d/simpleqml/main.qml index abdcb79..4cbea83 100644 --- a/examples/studio3d/simpleqml/main.qml +++ b/examples/studio3d/simpleqml/main.qml @@ -77,7 +77,7 @@ Rectangle { Presentation { id: s3dpres source: "qrc:/presentation/barrel.uia" - onCustomSignalEmitted: customSignalName.text = Date.now() + ": " + name + onCustomSignalEmitted: customSignalName.text = Date.now() + ": customSignal:" + name onSlideEntered: slideEnter.text = "Entered slide " + name + "(index " + index + ") on " + elementPath onSlideExited: slideExit.text = "Exited slide " + name + "(index " + index + ") on " + elementPath @@ -218,19 +218,19 @@ Rectangle { id: customSignalName anchors.bottom: parent.bottom anchors.left: fpsCount.right - anchors.leftMargin: 8 + anchors.leftMargin: 30 } Text { id: slideEnter anchors.bottom: parent.bottom anchors.left: customSignalName.right - anchors.leftMargin: 8 + anchors.leftMargin: 30 } Text { id: slideExit anchors.bottom: parent.bottom anchors.left: slideEnter.right - anchors.leftMargin: 8 + anchors.leftMargin: 30 } Button { id: nextSlideByIndex diff --git a/examples/studio3d/simpleqml/presentation/barrel.uip b/examples/studio3d/simpleqml/presentation/barrel.uip index 7b9b2fb..c36f0e5 100644 --- a/examples/studio3d/simpleqml/presentation/barrel.uip +++ b/examples/studio3d/simpleqml/presentation/barrel.uip @@ -1,47 +1,54 @@ <?xml version="1.0" encoding="UTF-8" ?> <UIP version="6" > <Project > - <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" preferKtx="False" > + <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" preferKtx="False" flipCompressedTextures="False" > <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors> </ProjectSettings> + <BufferData > + <ImageBuffer sourcepath="maps/barrel_barrel_Diffuse.png" hasTransparency="False" hasOpaquePixels="True" /> + <ImageBuffer sourcepath="maps/barrel_barrel_Emissive.png" hasTransparency="False" hasOpaquePixels="True" /> + <ImageBuffer sourcepath="maps/barrel_barrel_Normal.png" hasTransparency="False" hasOpaquePixels="True" /> + <ImageBuffer sourcepath="maps/barrel_barrel_Specular.png" hasTransparency="False" hasOpaquePixels="True" /> + </BufferData> <Graph > - <Scene id="Scene" > - <Layer id="Layer" variants="" > - <Camera id="Camera" /> - <Light id="Light" /> - <Model id="Barrel" variants="" > - <Material id="Material" > - <Image id="Material_diffusemap" /> - <Image id="Material_normalmap" /> - <Image id="Material_emissivemap" /> - <Image id="Material_specularmap" /> + <Scene id="Scene_u51457" > + <Layer id="Layer_u16894" variants="" > + <Camera id="Camera_u20801" /> + <Light id="Light_u60375" /> + <Model id="Barrel_u17933" variants="" > + <Material id="Material_u43207" > + <Image id="Material_diffusemap_u25218" /> + <Image id="Material_normalmap_u31730" /> + <Image id="Material_emissivemap_u20392" /> + <Image id="Material_specularmap_u63189" /> </Material> </Model> - <Text id="Text" variants="" /> - <Text id="Text2" variants="" /> + <Text id="Text_u12278" variants="" /> + <Text id="Text2_u28451" variants="" /> + <Group id="Group_u19473" variants="" /> </Layer> </Scene> </Graph> <Logic > - <State name="Master Slide" component="#Scene" > - <Add ref="#Layer" /> - <Add ref="#Camera" /> - <Add ref="#Light" /> - <State id="Scene-Slide1" name="Slide1" playmode="Looping" > - <Add ref="#Barrel" name="Barrel" position="0 -42 -483" rotation="90 0 0" scale="100 100 100" sourcepath=".\barrel\meshes\Barrel.mesh#1" > + <State name="Master Slide" component="#Scene_u51457" > + <Add ref="#Layer_u16894" /> + <Add ref="#Camera_u20801" /> + <Add ref="#Light_u60375" /> + <State id="Scene-Slide1_u1119" name="Slide1" playmode="Looping" > + <Add ref="#Barrel_u17933" name="Barrel" position="0 -42 -483" rotation="90 0 0" scale="100 100 100" sourcepath=".\barrel\meshes\Barrel.mesh#1" > <AnimationTrack property="opacity" type="EaseInOut" /> <AnimationTrack property="rotation.x" type="EaseInOut" >0 90 100 100 5 64 100 100 10 90 100 100</AnimationTrack> <AnimationTrack property="rotation.y" type="EaseInOut" >0 0 100 100 5 -302 100 100 10 0 100 100</AnimationTrack> <AnimationTrack property="rotation.z" type="EaseInOut" >0 0 100 100 5 0 100 100 10 0 100 100</AnimationTrack> </Add> - <Add ref="#Material" bumpamount="0" diffuse="1 1 1 1" diffusemap="#Material_diffusemap" emissivemap="#Material_emissivemap" fresnelPower="25" normalmap="#Material_normalmap" specularamount="4" specularmap="#Material_specularmap" specularmodel="Default" specularroughness="0.001" > + <Add ref="#Material_u43207" bumpamount="0" diffuse="1 1 1 1" diffusemap="#Material_diffusemap_u25218" emissivemap="#Material_emissivemap_u20392" fresnelPower="25" normalmap="#Material_normalmap_u31730" specularamount="4" specularmap="#Material_specularmap_u63189" specularmodel="Default" specularroughness="0.001" > <AnimationTrack property="bumpamount" type="EaseInOut" >0 0 100 100 5 1 100 100</AnimationTrack> </Add> - <Add ref="#Material_diffusemap" sourcepath=".\maps\barrel_barrel_Diffuse.png" /> - <Add ref="#Material_normalmap" sourcepath=".\maps\barrel_barrel_Normal.png" /> - <Add ref="#Material_emissivemap" sourcepath=".\maps\barrel_barrel_Emissive.png" /> - <Add ref="#Material_specularmap" sourcepath=".\maps\barrel_barrel_Specular.png" /> - <Add ref="#Text" name="Text" font="Arimo-Regular" position="-486.418 297.128 50.5569" textcolor="0 1 0 1" textstring="Barrel!" tracking="0" > + <Add ref="#Material_diffusemap_u25218" sourcepath=".\maps\barrel_barrel_Diffuse.png" /> + <Add ref="#Material_normalmap_u31730" sourcepath=".\maps\barrel_barrel_Normal.png" /> + <Add ref="#Material_emissivemap_u20392" sourcepath=".\maps\barrel_barrel_Emissive.png" /> + <Add ref="#Material_specularmap_u63189" sourcepath=".\maps\barrel_barrel_Specular.png" /> + <Add ref="#Text_u12278" name="Text" font="Arimo-Regular" position="-486.418 297.128 50.5569" textcolor="0 1 0 1" textstring="Barrel!" tracking="0" > <AnimationTrack property="opacity" type="EaseInOut" >0 100 100 100 5.009 43.75 100 100 10 100 100 100</AnimationTrack> <AnimationTrack property="rotation.x" type="EaseInOut" >0 0 100 100 4.997 0 100 100 5.009 0 100 100 10 0 100 100</AnimationTrack> <AnimationTrack property="rotation.y" type="EaseInOut" >0 0 100 100 4.997 0 100 100 5.009 0 100 100 10 360 100 100</AnimationTrack> @@ -50,7 +57,15 @@ <AnimationTrack property="textcolor.y" type="EaseInOut" >0 1 100 100 5.009 0.235294 100 100 10 1 100 100</AnimationTrack> <AnimationTrack property="textcolor.z" type="EaseInOut" >0 0 100 100 5.009 0.333333 100 100 10 0 100 100</AnimationTrack> </Add> - <Add ref="#Text2" name="Text2" controlledproperty="$di_text textstring" font="Arimo-Regular" position="437.342 256.921 0" /> + <Add ref="#Text2_u28451" name="Text2" controlledproperty="$di_text textstring" font="Arimo-Regular" position="437.342 256.921 0" /> + <Add ref="#Group_u19473" name="Group" endtime="3083" starttime="1433" > + <Action id="Group-Action_u35574" eyeball="True" triggerObject="#Group_u19473" event="onActivate" targetObject="#Group_u19473" handler="Emit Signal" > + <HandlerArgument name="Signal Name" type="String" argtype="Signal" value="CustomTestSignal1" /> + </Action> + <Action id="Group-Action_u20930" eyeball="True" triggerObject="#Group_u19473" event="onDeactivate" targetObject="#Group_u19473" handler="Emit Signal" > + <HandlerArgument name="Signal Name" type="String" argtype="Signal" /> + </Action> + </Add> </State> </State> </Logic> diff --git a/res/DataModelMetadata/en-us/MetaData.xml b/res/DataModelMetadata/en-us/MetaData.xml index c5d2458..b793df7 100644 --- a/res/DataModelMetadata/en-us/MetaData.xml +++ b/res/DataModelMetadata/en-us/MetaData.xml @@ -49,6 +49,8 @@ <Event name="onPressureDown" category="Gesture" /> <Event name="onPressureUp" category="Gesture" /> <Event name="onTap" category="Gesture" /> + <Event name="onActivate" category="Time" /> + <Event name="onDeactivate" category="Time" /> <!-- <Event name="onDoubleTap" category="Gesture" /> <Event name="onSingleTap" category="Gesture" /> diff --git a/src/runtime/Qt3DSActivationManager.cpp b/src/runtime/Qt3DSActivationManager.cpp index 664e3a2..b1965fa 100644 --- a/src/runtime/Qt3DSActivationManager.cpp +++ b/src/runtime/Qt3DSActivationManager.cpp @@ -46,6 +46,7 @@ #include "foundation/Qt3DSSync.h" #include "Qt3DSRenderThreadPool.h" #include "foundation/Qt3DSSimpleTypes.h" +#include "Qt3DSInputEventTypes.h" using namespace qt3ds::runtime; using namespace qt3ds::runtime::element; @@ -517,6 +518,15 @@ struct STimeContext Mutex &inElementAccessMutex, bool &scriptBufferRequiresSort, bool inIsActive) { + + if (inNode.Flags().HasActivityAction() && inNode.GetBelongedPresentation()) { + // If node has activity changing actions enabled, fire them + if (inIsActive) + inNode.GetBelongedPresentation()->FireEvent(Q3DStudio::ON_ACTIVATE, &inNode); + else + inNode.GetBelongedPresentation()->FireEvent(Q3DStudio::ON_DEACTIVATE, &inNode); + } + Mutex::ScopedLock __locker(inElementAccessMutex); TElementAndSortKey theKey(&inNode, inNode.Depth()); if (inIsActive) { diff --git a/src/runtime/Qt3DSApplication.cpp b/src/runtime/Qt3DSApplication.cpp index 7b4d625..6bc7b1b 100644 --- a/src/runtime/Qt3DSApplication.cpp +++ b/src/runtime/Qt3DSApplication.cpp @@ -2326,6 +2326,13 @@ bool IApplication::isPickingEvent(TEventCommandHash event) || event == ON_GROUPEDMOUSEOUT); } +// Checks if the event comes from timeline becoming (de)active +bool IApplication::isActivityEvent(TEventCommandHash event) +{ + return (event == ON_ACTIVATE + || event == ON_DEACTIVATE); +} + QDebug operator<<(QDebug debug, const DataInOutAttribute &value) { QDebugStateSaver saver(debug); diff --git a/src/runtime/Qt3DSApplication.h b/src/runtime/Qt3DSApplication.h index fd9c871..fd7f027 100644 --- a/src/runtime/Qt3DSApplication.h +++ b/src/runtime/Qt3DSApplication.h @@ -254,6 +254,7 @@ public: static IApplication &CreateApplicationCore(Q3DStudio::IRuntimeFactoryCore &inFactory, const char8_t *inApplicationDirectory); static bool isPickingEvent(Q3DStudio::TEventCommandHash event); + static bool isActivityEvent(Q3DStudio::TEventCommandHash event); // This will print out and reset the startup perf logs virtual void OutputPerfLoggingData() = 0; diff --git a/src/runtime/Qt3DSElementSystem.h b/src/runtime/Qt3DSElementSystem.h index a633ea8..eeafb5d 100644 --- a/src/runtime/Qt3DSElementSystem.h +++ b/src/runtime/Qt3DSElementSystem.h @@ -246,6 +246,10 @@ namespace runtime { { return this->operator&(Q3DStudio::ELEMENTFLAG_TIMELINE); } + bool HasActivityAction() const + { + return this->operator&(Q3DStudio::ELEMENTFLAG_ACTIVITYACTIONENABLED); + } }; typedef eastl::pair<SPropertyDesc, Q3DStudio::UVariant *> TPropertyDescAndValuePtr; diff --git a/src/runtime/Qt3DSInputEventTypes.h b/src/runtime/Qt3DSInputEventTypes.h index 0b3c398..fcf1d23 100644 --- a/src/runtime/Qt3DSInputEventTypes.h +++ b/src/runtime/Qt3DSInputEventTypes.h @@ -46,6 +46,9 @@ const TEventCommandHash ON_MOUSEOUT = CHash::HashEventCommand("onMouseOut"); const TEventCommandHash ON_GROUPEDMOUSEOVER = CHash::HashEventCommand("onGroupedMouseOver"); const TEventCommandHash ON_GROUPEDMOUSEOUT = CHash::HashEventCommand("onGroupedMouseOut"); +const TEventCommandHash ON_ACTIVATE = CHash::HashEventCommand("onActivate"); +const TEventCommandHash ON_DEACTIVATE = CHash::HashEventCommand("onDeactivate"); + // Crude hack to pretend mouse events are gesture events, since gesture events are all you // can specify in studio. // TODO: Fix properly, preferably by bringing back gesture support diff --git a/src/runtime/Qt3DSKernelTypes.h b/src/runtime/Qt3DSKernelTypes.h index 866196d..2e6d769 100644 --- a/src/runtime/Qt3DSKernelTypes.h +++ b/src/runtime/Qt3DSKernelTypes.h @@ -143,7 +143,10 @@ enum EElementFlag { // Flags used by the activation manager ELEMENTFLAG_AMGR_TIMEACTIVE = 1 << 13, ///< Is the element alive according to time information - ELEMENTFLAG_CONTROLLED_ACTIVE = 1 << 14 ///< Is the element alive based on datainput control + ELEMENTFLAG_CONTROLLED_ACTIVE = 1 << 14, ///< Is the element alive based on datainput control + + ELEMENTFLAG_ACTIVITYACTIONENABLED = 1 << 15, ///< Activity changing action has been registered on this element + }; // Four byte aligned time unit structure. diff --git a/src/runtime/Qt3DSLogicSystem.cpp b/src/runtime/Qt3DSLogicSystem.cpp index 4a8341b..742764c 100644 --- a/src/runtime/Qt3DSLogicSystem.cpp +++ b/src/runtime/Qt3DSLogicSystem.cpp @@ -218,7 +218,7 @@ struct SLogicSystem : public ILogicSystem if (logicIter != m_LogicKeys.end()) { for (TLogicDataList::iterator listIter = logicIter->second.begin(), listEnd = logicIter->second.end(); - listIter != listEnd; ++listIter) + listIter != listEnd; ++listIter) { if (listIter->m_Id == inActionIndex) { listIter->m_Active = inActive; if (IApplication::isPickingEvent(logicIter->first.m_CommandHash)) { @@ -226,8 +226,16 @@ struct SLogicSystem : public ILogicSystem logicIter->first.m_ElementHandle); if (theElement && inActive) theElement->SetFlag(Q3DStudio::ELEMENTFLAG_PICKENABLED, true); + } else if (IApplication::isActivityEvent(logicIter->first.m_CommandHash)) { + SElement *theElement = inElemAllocator.FindElementByHandle( + logicIter->first.m_ElementHandle); + if (theElement && inActive) { + theElement->SetFlag(Q3DStudio::ELEMENTFLAG_ACTIVITYACTIONENABLED, + true); + } } } + } } } } diff --git a/tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp b/tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp index 7197b49..6133577 100644 --- a/tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp +++ b/tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp @@ -61,6 +61,8 @@ private slots: void testBasics(); void testSourceChange_data(); void testSourceChange(); + void testActivateActions_data(); + void testActivateActions(); void testSizeChange_data(); void testSizeChange(); void testUpdateInterval_data(); @@ -368,6 +370,40 @@ void tst_Q3DSSurfaceViewer::testSourceChange() checkPixel(m_viewer, Qt::red); } +void tst_Q3DSSurfaceViewer::testActivateActions_data() +{ + testBasics_data(); +} + +void tst_Q3DSSurfaceViewer::testActivateActions() +{ + QFETCH(bool, isWindow); + + if (isWindow) + createWindowAndViewer(m_viewer, ACTIVATEACTIONS); + else + createOffscreenAndViewer(m_viewer, ACTIVATEACTIONS); + + QSignalSpy spy(m_viewer->presentation(), &Q3DSPresentation::customSignalEmitted); + + QVERIFY(spy.isValid()); + + // This presentations sends custom signals at 1000ms and at 3000ms. + // At same times it also changes scene color using activate actions. + QCOMPARE(spy.count(), 0); + QImage image1 = m_viewer->grab(); + + QTest::qWait(2000); + QCOMPARE(spy.count(), 1); + QImage image2 = m_viewer->grab(); + QVERIFY(image1 != image2); + + QTest::qWait(2000); + QCOMPARE(spy.count(), 2); + QImage image3 = m_viewer->grab(); + QVERIFY(image1 == image3); +} + void tst_Q3DSSurfaceViewer::testSizeChange_data() { testBasics_data(); diff --git a/tests/auto/studio3d/shared/presentation/activateactions.uip b/tests/auto/studio3d/shared/presentation/activateactions.uip new file mode 100644 index 0000000..52ca81a --- /dev/null +++ b/tests/auto/studio3d/shared/presentation/activateactions.uip @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<UIP version="6" > + <Project > + <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" preferKtx="False" flipCompressedTextures="False" > + <CustomColors count="16" >#969696 #780000 #ff0055 #ffffff #0a0a0a #ffffff #a0a8b2 #ffffff #ff643a #ffffff #4694ff #ffffff #ff0800 #ffffff #280000 #ffffff</CustomColors> + </ProjectSettings> + <Graph > + <Scene id="Scene_u31923" backgroundcolor="1 0 0 1" bgcolorenable="False" > + <Layer id="Layer_u40191" variants="" > + <Camera id="Camera_u60961" /> + <Light id="Light_u46987" /> + <Model id="Cube_u48840" variants="" > + <ReferencedMaterial id="Default_u50569" name="Default" /> + </Model> + <Group id="Events1_u28102" variants="" /> + <Group id="Events2_u17296" variants="" /> + </Layer> + <Material id="__Container_u55481" > + <Material id="materials//Default_u19189" /> + </Material> + </Scene> + </Graph> + <Logic > + <State name="Master Slide" component="#Scene_u31923" > + <Add ref="#Layer_u40191" /> + <Add ref="#Camera_u60961" /> + <Add ref="#Light_u46987" /> + <Add ref="#__Container_u55481" name="__Container" /> + <Add ref="#materials//Default_u19189" name="materials//Default" /> + <State id="Scene-Slide1_u54514" name="Slide1" > + <Add ref="#Cube_u48840" name="Cube" rotation="20 360 20" sourcepath="#Cube" /> + <Add ref="#Default_u50569" name="Default" referencedmaterial="#materials//Default_u19189" sourcepath="/Default" /> + <Add ref="#Events1_u28102" name="Events1" endtime="3000" starttime="1000" > + <Action id="Events1-Action_u22921" eyeball="True" triggerObject="#Events1_u28102" event="onActivate" targetObject="#Scene_u31923" handler="Set Property" > + <HandlerArgument name="Property Name" type="String" argtype="Property" value="bgcolorenable" /> + <HandlerArgument name="Property Value" type="Bool" argtype="Dependent" value="True" /> + </Action> + <Action id="Events1-Action_u62890" eyeball="True" triggerObject="#Events1_u28102" event="onDeactivate" targetObject="#Scene_u31923" handler="Set Property" > + <HandlerArgument name="Property Name" type="String" argtype="Property" value="bgcolorenable" /> + <HandlerArgument name="Property Value" type="Bool" argtype="Dependent" /> + </Action> + </Add> + <Add ref="#Events2_u17296" name="Events2" endtime="3000" starttime="1000" > + <Action id="Events2-Action_u55956" eyeball="True" triggerObject="#Events2_u17296" event="onActivate" targetObject="#Events2_u17296" handler="Emit Signal" > + <HandlerArgument name="Signal Name" type="String" argtype="Signal" value="mySignal1" /> + </Action> + <Action id="Events2-Action_u17879" eyeball="True" triggerObject="#Events2_u17296" event="onDeactivate" targetObject="#Events2_u17296" handler="Emit Signal" > + <HandlerArgument name="Signal Name" type="String" argtype="Signal" value="mySignal2" /> + </Action> + </Add> + </State> + </State> + </Logic> + </Project> +</UIP> diff --git a/tests/auto/studio3d/shared/shared_presentations.h b/tests/auto/studio3d/shared/shared_presentations.h index 6d38273..af9bd87 100644 --- a/tests/auto/studio3d/shared/shared_presentations.h +++ b/tests/auto/studio3d/shared/shared_presentations.h @@ -37,3 +37,4 @@ const QUrl SETTINGS = QUrl(QStringLiteral("qrc:/settings.uip")); const QUrl MULTISLIDE = QUrl(QStringLiteral("qrc:/multislide.uip")); const QUrl MOUSE = QUrl(QStringLiteral("qrc:/mouse.uip")); const QUrl DATAINPUT = QUrl(QStringLiteral("qrc:/datainput.uia")); +const QUrl ACTIVATEACTIONS = QUrl(QStringLiteral("qrc:/activateactions.uip")); diff --git a/tests/auto/studio3d/shared/shared_presentations.qrc b/tests/auto/studio3d/shared/shared_presentations.qrc index 25dd40e..c55f2bc 100644 --- a/tests/auto/studio3d/shared/shared_presentations.qrc +++ b/tests/auto/studio3d/shared/shared_presentations.qrc @@ -12,5 +12,6 @@ <file alias="datainput.uia">presentation/datainput.uia</file> <file alias="datainput_sub.uip">presentation/datainput_sub.uip</file> <file>maps/OpenfootageNET_garage-512.hdr</file> + <file alias="activateactions.uip">presentation/activateactions.uip</file> </qresource> </RCC> |