forked from 4ian/GDevelop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
displacement-pixi-filter.ts
31 lines (31 loc) · 1.25 KB
/
displacement-pixi-filter.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
namespace gdjs {
import PIXI = GlobalPIXIModule.PIXI;
gdjs.PixiFiltersTools.registerFilterCreator('Displacement', {
makePIXIFilter: function (target, effectData) {
const displacementMapTexture = target
.getRuntimeScene()
.getGame()
.getImageManager()
.getPIXITexture(effectData.stringParameters.displacementMapTexture);
displacementMapTexture.baseTexture.wrapMode = PIXI.WRAP_MODES.REPEAT;
const displacementSprite = new PIXI.Sprite(displacementMapTexture);
const displacementFilter = new PIXI.filters.DisplacementFilter(
displacementSprite
);
return displacementFilter;
},
updatePreRender: function (filter, target) {},
updateDoubleParameter: function (filter, parameterName, value) {
// @ts-ignore - unsure why PIXI.filters is not recognised.
const displacementFilter = (filter as unknown) as PIXI.filters.DisplacementFilter;
if (parameterName === 'scaleX') {
displacementFilter.scale.x = value;
}
if (parameterName === 'scaleY') {
displacementFilter.scale.y = value;
}
},
updateStringParameter: function (filter, parameterName, value) {},
updateBooleanParameter: function (filter, parameterName, value) {},
});
}