Skip to content

Commit

Permalink
Pause ParticleEmitter when not in use (#1284)
Browse files Browse the repository at this point in the history
* Pause ParticleEmitter when not in use

* Use timer instead to pause particle system
  • Loading branch information
redsky17 authored Jan 14, 2023
1 parent e25fd5f commit 8835040
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 21 deletions.
64 changes: 43 additions & 21 deletions resources/qml/TimelineView.qml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Item {
property var room: null
property var roomPreview: null
property bool showBackButton: false
property bool shouldEffectsRun: false
clip: true

onRoomChanged: if (room != null) room.triggerSpecialEffects()
Expand Down Expand Up @@ -344,7 +345,10 @@ Item {
onClicked: Rooms.resetCurrentRoom()
}

ParticleSystem { id: confettiParticleSystem }
ParticleSystem { id: confettiParticleSystem
Component.onCompleted: pause();
paused: !shouldEffectsRun
}

Emitter {
id: confettiEmitter
Expand All @@ -356,6 +360,7 @@ Item {
emitRate: Math.min(400 * Math.sqrt(parent.width * parent.height) / 870, 1000)
lifeSpan: 15000
system: confettiParticleSystem
maximumEmitted: 500
velocityFromMovement: 8
size: 16
sizeVariation: 4
Expand All @@ -365,27 +370,27 @@ Item {
xVariation: Math.min(4 * parent.width / 7, 450)
yVariation: 250
}
}

ImageParticle {
system: confettiParticleSystem
source: "qrc:/confettiparticle.svg"
rotationVelocity: 0
rotationVelocityVariation: 360
colorVariation: 1
color: "white"
entryEffect: ImageParticle.None
xVector: PointDirection {
x: 1
y: 0
xVariation: 0.2
yVariation: 0.2
}
yVector: PointDirection {
x: 0
y: 0.5
xVariation: 0.2
yVariation: 0.2
}
ImageParticle {
system: confettiParticleSystem
source: "qrc:/confettiparticle.svg"
rotationVelocity: 0
rotationVelocityVariation: 360
colorVariation: 1
color: "white"
entryEffect: ImageParticle.None
xVector: PointDirection {
x: 1
y: 0
xVariation: 0.2
yVariation: 0.2
}
yVector: PointDirection {
x: 0
y: 0.5
xVariation: 0.2
yVariation: 0.2
}
}

Expand All @@ -401,6 +406,14 @@ Item {
roomid: room ? room.roomId : ""
}

Timer {
id: effectsTimer
onTriggered: shouldEffectsRun = false;
interval: confettiEmitter.lifeSpan
repeat: false
running: false
}

Connections {
function onOpenReadReceiptsDialog(rr) {
var dialog = readReceiptsDialog.createObject(timelineRoot, {
Expand All @@ -424,10 +437,19 @@ Item {
if (!Settings.fancyEffects)
return

shouldEffectsRun = true;
confettiEmitter.pulse(parent.height * 2)
room.markSpecialEffectsDone()
}

function onConfettiDone()
{
if (!Settings.fancyEffects)
return

effectsTimer.start();
}

target: room
}

Expand Down
1 change: 1 addition & 0 deletions src/timeline/TimelineModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1998,6 +1998,7 @@ void
TimelineModel::markSpecialEffectsDone()
{
needsSpecialEffects_ = false;
emit confettiDone();
}

QString
Expand Down
1 change: 1 addition & 0 deletions src/timeline/TimelineModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,7 @@ private slots:
void newCallEvent(const mtx::events::collections::TimelineEvents &event);
void scrollToIndex(int index);
void confetti();
void confettiDone();

void lastMessageChanged();
void notificationsChanged();
Expand Down

0 comments on commit 8835040

Please sign in to comment.