From a6d678632bef032ef1fbbf4d30568dc21f9a8238 Mon Sep 17 00:00:00 2001 From: Ludovic D Date: Sat, 8 Aug 2020 01:03:04 +0200 Subject: [PATCH] Update v0.2.2b-alpha --- .vs/Tokenmagic/v16/.suo | Bin 154624 -> 158720 bytes .vs/VSWorkspaceState.json | 2 +- .vs/slnx.sqlite | Bin 90112 -> 90112 bytes README.md | 5 ++ Tokenmagic.zip | Bin 22117177 -> 22117711 bytes tokenmagic/fx/Anime.js | 13 +++-- tokenmagic/fx/filters/proto/FilterProto.js | 6 ++- .../fx/glsl/fragmentshaders/forcefield.js | 35 ++++-------- tokenmagic/module.json | 2 +- .../module/proto/PlaceableObjectProto.js | 6 ++- tokenmagic/module/tokenmagic.js | 50 +++++++++++++++--- tokenmagic/updates/UPDATE-0.2.2b.md | 4 ++ 12 files changed, 81 insertions(+), 42 deletions(-) create mode 100644 tokenmagic/updates/UPDATE-0.2.2b.md diff --git a/.vs/Tokenmagic/v16/.suo b/.vs/Tokenmagic/v16/.suo index 8102d4cfa6d2a7b2ac9a8d851dc61ee3fe94e7b7..c4049f7ef89943c2e0d0f4b896b539050e358252 100644 GIT binary patch delta 8336 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 delta 7996 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 Z?*AnABwl~zP6k%>l={w|{N3p2{{aFd$WZ_Q delta 4127 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 diff --git a/README.md b/README.md index 66b439d..902d857 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ +# Token Magic FX - Update v0.2.2b-alpha + +*Fixed issues :* +- Compatibility problem with furnace module drawings tools. + # Token Magic FX - Update v0.2.2-alpha *Added :* diff --git a/Tokenmagic.zip b/Tokenmagic.zip index 00aa98fa32d028d8eeac3be1cfe9ba0f745ae6d7..057ad40b738fba2034a64086c65ac529644ecab0 100644 GIT binary patch delta 21623 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 OyR(Tv@P{!3!v6s`KgBix diff --git a/tokenmagic/fx/Anime.js b/tokenmagic/fx/Anime.js index 3fb8c2d..2d9f85c 100644 --- a/tokenmagic/fx/Anime.js +++ b/tokenmagic/fx/Anime.js @@ -387,11 +387,14 @@ export class Anime { if (Anime._frameTime >= canvas.app.ticker.deltaMS) { // enough time passed : call animate for each animation Anime._animeMap.forEach((anime, id) => { - if (anime.puppet.hasOwnProperty("preComputation")) { - anime.puppet.preComputation(); - } - if (anime.puppet.hasOwnProperty("animated") && !(anime.puppet.animated == null)) { - anime.animate(Anime._frameTime); + if (anime.puppet.enabled) { + if (anime.puppet.hasOwnProperty("preComputation") + && anime.puppet.placeableImg != null) { + anime.puppet.preComputation(); + } + if (anime.puppet.hasOwnProperty("animated") && !(anime.puppet.animated == null)) { + anime.animate(Anime._frameTime); + } } }); Anime._prevTime = Anime._lastTime; diff --git a/tokenmagic/fx/filters/proto/FilterProto.js b/tokenmagic/fx/filters/proto/FilterProto.js index 266ae26..5f79985 100644 --- a/tokenmagic/fx/filters/proto/FilterProto.js +++ b/tokenmagic/fx/filters/proto/FilterProto.js @@ -1,4 +1,4 @@ -import { objectAssign, getPlaceableById, getMinPadding, PlaceableType } from "../../../module/tokenmagic.js"; +import { objectAssign, getPlaceableById, getMinPadding, PlaceableType, Magic } from "../../../module/tokenmagic.js"; import "../../../module/proto/PlaceableObjectProto.js"; PIXI.Filter.prototype.setTMParams = function (params) { @@ -52,6 +52,10 @@ PIXI.Filter.prototype.assignPlaceable = function () { : this.placeableImg = null; } +PIXI.Filter.prototype.assignPlaceable = function () { + this.placeableImg = this.getPlaceable(); +} + PIXI.Filter.prototype.activateTransform = function () { this.preComputation = this.filterTransform; this.filterTransform(); diff --git a/tokenmagic/fx/glsl/fragmentshaders/forcefield.js b/tokenmagic/fx/glsl/fragmentshaders/forcefield.js index 9d96e68..2c9c878 100644 --- a/tokenmagic/fx/glsl/fragmentshaders/forcefield.js +++ b/tokenmagic/fx/glsl/fragmentshaders/forcefield.js @@ -20,6 +20,7 @@ varying vec2 vFilterCoord; #define SQRT5B20 0.30901699 #define PI 3.14159265 +#define TWOPI 6.28318531 #define SPEED 0.01 #define MU_TWOPI 0.15915494309 #define MU_289 0.00346020761 @@ -394,33 +395,19 @@ vec4 surface4d(vec2 suv) { float s = suv.x + 0.61; float t = suv.y + 0.5; - - float multiplier = 1.0 * MU_TWOPI; - float nx = cos( s * 2.0 * PI ) * multiplier; - float ny = cos( t * 2.0 * PI ) * multiplier; - float nz = sin( s * 2.0 * PI ) * multiplier; - float nw = sin( t * 2.0 * PI ) * multiplier; + float nx = cos( s * TWOPI ) * MU_TWOPI; + float ny = cos( t * TWOPI ) * MU_TWOPI; + float nz = sin( s * TWOPI ) * MU_TWOPI; + float nw = sin( t * TWOPI ) * MU_TWOPI; - float surf = surface( vec4( nx, ny, nz, nw ) + time * SPEED * 3. ); + float surf = surface( vec4( nx, ny, nz, nw ) + time * 0.03 ); return vec4( color * vec3( surf ), 1.0 ); } -vec4 fbmy(vec2 suv) -{ - vec4 noiseColor; - noiseColor.r = (color.r * fbm(suv + time*0.5)); - noiseColor.g = (color.g * fbm(suv + time*0.5)); - noiseColor.b = (color.b * fbm(suv + time*0.5)); - noiseColor.a = 1.; - return clamp(noiseColor,0.,1.); -} - vec4 noisy(vec2 suv) { vec4 noiseColor; - noiseColor.r = (color.r * noise(suv + fbm(suv) + time*0.5)); - noiseColor.g = (color.g * noise(suv + fbm(suv) + time*0.5)); - noiseColor.b = (color.b * noise(suv + fbm(suv) + time*0.5)); + noiseColor.rgb = (color.rgb * noise(suv + fbm(suv) + time*0.5)); noiseColor.a = 1.; return clamp(noiseColor,0.,1.); } @@ -455,9 +442,7 @@ vec4 denseSmoke(vec2 suv) vec2 uv; uv.x = (fbm(suv*2.)-suv.x); uv.y = (suv.y+fbm(suv*2.)); - noiseColor.r = (color.r * min(fbm(uv - time*0.5),fbm(uv)*1.5)); - noiseColor.g = (color.g * min(fbm(uv - time*0.5),fbm(uv)*1.5)); - noiseColor.b = (color.b * min(fbm(uv - time*0.5),fbm(uv)*1.5)); + noiseColor.rgb = (color.rgb * min(fbm(uv - time*0.5),fbm(uv)*1.5)); noiseColor.a = 1.0; return clamp(noiseColor,0.,1.); } @@ -469,9 +454,7 @@ vec4 dancingFume(vec2 suv) uv.x += noise(suv)+fbm(suv); uv.y += noise(suv)+fbm(suv); uv *= 0.5; - noiseColor.r = (color.r * fbm((uv + suv*0.15) - time)); - noiseColor.g = (color.g * fbm((uv + suv*0.15) - time)); - noiseColor.b = (color.b * fbm((uv + suv*0.15) - time)); + noiseColor.rgb = (color.rgb * fbm((uv + suv*0.15) - time)); noiseColor.a = 1.0; return clamp(noiseColor,0.,1.); } diff --git a/tokenmagic/module.json b/tokenmagic/module.json index 529c5e1..9108c2f 100644 --- a/tokenmagic/module.json +++ b/tokenmagic/module.json @@ -2,7 +2,7 @@ "name": "tokenmagic", "title": "Token Magic FX", "description": "

Add graphic filters and animations on your tokens and tiles.

", - "version": "0.2.2", + "version": "0.2.2b", "compatibleCoreVersion": "0.6.5", "minimumCoreVersion": "0.6.0", "author": "SecretFire", diff --git a/tokenmagic/module/proto/PlaceableObjectProto.js b/tokenmagic/module/proto/PlaceableObjectProto.js index 7d80b27..401c064 100644 --- a/tokenmagic/module/proto/PlaceableObjectProto.js +++ b/tokenmagic/module/proto/PlaceableObjectProto.js @@ -47,7 +47,7 @@ PlaceableObject.prototype._TMFXgetSprite = function () { return this.template; break; case PlaceableType.DRAWING: - return this.drawing; + return this.drawing || this.img; break; default: return null; @@ -72,7 +72,9 @@ PlaceableObject.prototype._TMFXcheckSprite = function () { break; case PlaceableType.DRAWING: return (this.hasOwnProperty("drawing") - && !(this.drawing == null)); + && !(this.drawing == null)) + || (this.hasOwnProperty("img") + && !(this.img == null)); break; default: return null; diff --git a/tokenmagic/module/tokenmagic.js b/tokenmagic/module/tokenmagic.js index 4f15d69..671d510 100644 --- a/tokenmagic/module/tokenmagic.js +++ b/tokenmagic/module/tokenmagic.js @@ -97,7 +97,7 @@ export const PlaceableType = { TOKEN: Token.embeddedName, TILE: Tile.embeddedName, TEMPLATE: MeasuredTemplate.embeddedName, - DRAWING: Drawing.embeddedName, + DRAWING: Drawing.embeddedName, NOT_SUPPORTED: null }; @@ -107,7 +107,7 @@ function i18n(key) { async function exportObjectAsJson(exportObj, exportName) { let jsonStr = JSON.stringify(exportObj, null, 4); - + const a = document.createElement('a'); const file = new Blob([jsonStr], { type: 'plain/text' }); @@ -195,6 +195,15 @@ export function isAdditivePaddingConfig() { return game.settings.get("tokenmagic", "useAdditivePadding"); } +export var isFurnaceDrawingsActive = () => { + // module exeption for the Furnace by KaKaRoTo + if (isActiveModule("furnace") + && game.settings.get("furnace", "enableDrawingTools")) { + return true; + } + return false; +}; + export function isTheOne() { const theOne = game.users.find((user) => user.isGM && user.active); if (theOne && game.user !== theOne) { @@ -868,7 +877,7 @@ export function TokenMagic() { } catch (e) { error(e.message); } - } + } } async function importPresetLibraryFromURL(url) { @@ -1081,6 +1090,35 @@ function initSocketListener() { }); }; +function initFurnaceDrawingsException() { + if (isFurnaceDrawingsActive) { + DrawingConfig.prototype.refresh = (function () { + const cachedDCR = DrawingConfig.prototype.refresh; + return async function (html) { + + // Clear animations and filters + let tmfxUpdate = false; + if (this.object.data.hasOwnProperty("flags") + && this.object.data.flags.hasOwnProperty("tokenmagic") + && this.object.data.flags.tokenmagic.hasOwnProperty("filters")) { + tmfxUpdate = true; + Anime.removeAnimation(this.object.id); + Magic._clearImgFiltersByPlaceable(this.object); + } + + // Furnace function apply (updating data and full redraw : destruction/reconstruction) + cachedDCR.apply(this, arguments); + + // Reapply the filters if needed + if (tmfxUpdate) { + Magic._singleLoadFilters(this.object); + } + + }; + })(); + } +} + async function requestLoadFilters(placeable, startTimeout = 0) { var reqTimer; @@ -1113,6 +1151,7 @@ Hooks.once("init", () => { Hooks.on("ready", () => { log("Hook -> ready"); initSocketListener(); + initFurnaceDrawingsException(); window.TokenMagic = Magic; }); @@ -1242,10 +1281,9 @@ Hooks.on("updateDrawing", (scene, data, options, action) => { if (scene.id !== game.user.viewedScene) return; - // hum.. let's explain. Position change do not trigger a diff:true if ((action.hasOwnProperty("diff") && action.diff && !(options.hasOwnProperty("flags") && options.flags.hasOwnProperty("tokenmagic"))) - || (options.hasOwnProperty("x") || options.hasOwnProperty("y")) ) { + || (options.hasOwnProperty("x") || options.hasOwnProperty("y"))) { var placeable = getPlaceableById(data._id, PlaceableType.DRAWING); @@ -1256,7 +1294,7 @@ Hooks.on("updateDrawing", (scene, data, options, action) => { Magic._clearImgFiltersByPlaceable(placeable); // querying filters reload (when pixi containers are ready) - requestLoadFilters(placeable, 50); + requestLoadFilters(placeable, 250); } else { Magic._updateFilters(data, options, PlaceableType.DRAWING); diff --git a/tokenmagic/updates/UPDATE-0.2.2b.md b/tokenmagic/updates/UPDATE-0.2.2b.md new file mode 100644 index 0000000..38798b5 --- /dev/null +++ b/tokenmagic/updates/UPDATE-0.2.2b.md @@ -0,0 +1,4 @@ +# Token Magic FX - Update v0.2.2b-alpha + +*Fixed issues :* +- Compatibility problem with furnace module drawings tools. \ No newline at end of file