summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/studio3d/simpleqml/main.qml8
-rw-r--r--examples/studio3d/simpleqml/presentation/barrel.uip67
-rw-r--r--res/DataModelMetadata/en-us/MetaData.xml2
-rw-r--r--src/runtime/Qt3DSActivationManager.cpp10
-rw-r--r--src/runtime/Qt3DSApplication.cpp7
-rw-r--r--src/runtime/Qt3DSApplication.h1
-rw-r--r--src/runtime/Qt3DSElementSystem.h4
-rw-r--r--src/runtime/Qt3DSInputEventTypes.h3
-rw-r--r--src/runtime/Qt3DSKernelTypes.h5
-rw-r--r--src/runtime/Qt3DSLogicSystem.cpp10
-rw-r--r--tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp36
-rw-r--r--tests/auto/studio3d/shared/presentation/activateactions.uip55
-rw-r--r--tests/auto/studio3d/shared/shared_presentations.h1
-rw-r--r--tests/auto/studio3d/shared/shared_presentations.qrc1
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>