🔧 Backport #405 to older branch

This commit is contained in:
Simon Schneegans
2023-11-21 18:23:26 +01:00
parent 3b9433395c
commit 4b67453be5
2 changed files with 17 additions and 18 deletions
+8 -8
View File
@@ -61,8 +61,8 @@ var Incinerate = class {
// position may change after the begin-animation signal is called, we set the
// uStartPos uniform during the update callback.
if (settings.get_boolean('incinerate-use-pointer')) {
this._startPointerPos = global.get_pointer();
this._actor = actor;
shader._startPointerPos = global.get_pointer();
shader._actor = actor;
} else {
// Else, a random position along the window boundary is used as start position
@@ -72,7 +72,7 @@ var Incinerate = class {
shader.set_uniform_float(shader._uStartPos, 2, startPos);
this._startPointerPos = null;
shader._startPointerPos = null;
}
const c = Clutter.Color.from_string(settings.get_string('incinerate-color'))[1];
@@ -89,14 +89,14 @@ var Incinerate = class {
// uniform during the update callback as the actor position may not be set up
// properly before the begin animation callback.
shader.connect('update-animation', (shader) => {
if (this._startPointerPos) {
const [x, y] = this._startPointerPos;
const [ok, localX, localY] = this._actor.transform_stage_point(x, y);
if (shader._startPointerPos) {
const [x, y] = shader._startPointerPos;
const [ok, localX, localY] = shader._actor.transform_stage_point(x, y);
if (ok) {
let startPos = [
Math.max(0.0, Math.min(1.0, localX / this._actor.width)),
Math.max(0.0, Math.min(1.0, localY / this._actor.height))
Math.max(0.0, Math.min(1.0, localX / shader._actor.width)),
Math.max(0.0, Math.min(1.0, localY / shader._actor.height))
];
shader.set_uniform_float(shader._uStartPos, 2, startPos);
}
+9 -10
View File
@@ -48,25 +48,24 @@ var PixelWipe = class {
'begin-animation', (shader, settings, forOpening, testMode, actor) => {
// Because the actor position may change after the begin-animation signal is
// called, we set the uStartPos uniform during the update callback.
this._startPointerPos = global.get_pointer();
this._actor = actor;
shader._startPointerPos = global.get_pointer();
shader._actor = actor;
// clang-format off
shader.set_uniform_float(shader._uPixelSize, 1, [settings.get_int('pixel-wipe-pixel-size')]);
// clang-format on
shader.set_uniform_float(shader._uPixelSize, 1,
[settings.get_int('pixel-wipe-pixel-size')]);
});
// We set the uStartPos uniform during the update callback as the actor position
// may not be set up properly before the begin animation callback.
shader.connect('update-animation', (shader) => {
if (this._startPointerPos) {
const [x, y] = this._startPointerPos;
const [ok, localX, localY] = this._actor.transform_stage_point(x, y);
if (shader._startPointerPos) {
const [x, y] = shader._startPointerPos;
const [ok, localX, localY] = shader._actor.transform_stage_point(x, y);
if (ok) {
let startPos = [
Math.max(0.0, Math.min(1.0, localX / this._actor.width)),
Math.max(0.0, Math.min(1.0, localY / this._actor.height))
Math.max(0.0, Math.min(1.0, localX / shader._actor.width)),
Math.max(0.0, Math.min(1.0, localY / shader._actor.height))
];
shader.set_uniform_float(shader._uStartPos, 2, startPos);
}