- Effects - Fixed
.stretchTo(target, { attachTo: true })
with range-finding effects not properly preloading its different files - Effects - Fixed
.playbackRate()
not working well with.fadeOut()
and similarout
animations - Effects - Fixed
.stretchTo
'stiling
option not working on scenes with non-100px grid sizes (thanks Codas!) - Sequencer - Updated Polish localization (thanks Lioheart!)
- Effects - Added
effect
as a valid.animateProperty()
and.loopProperty()
target - Effects - Added
sourceOffset
andtargetOffset
to.animateProperty()
and.loopProperty()
property target- This is used as such:
.animateProperty("effect", "targetOffset.x", { from: 0, to: 200, duration: 5000 })
- This is used as such:
- Effects - Deprecated
.from()
in favor for.copySprite()
which is a more descriptive method name - Effects - Fixed
anchor
not being optional for.shape()
(Thanks Codas!) - Effects - Fixed
scale()
for tiling textures usingstretchTo()
overly stretching the effect (Thanks Codas!) - Effects - Fixed some issues with caching of generated spritesheets (Thanks Codas!)
- Effects - Disabled spriteshet generation for animated tiling textures - too many visual defects at the moment (Thanks Codas!)
- Sequencer - Fixed audio controls in the Sequencer Database viewer (Thanks Vauxs!)
- Sequencer - Added audio filtering in the Sequencer Database viewer (Thanks Vauxs!)
- Crosshairs - Fixed issue with
updateCrosshair
causing label text to break the canvas
- Effects - Added
anchor
as an optional argument to.shape()
(see docs) - Effects - Fixed
.shape()
not working if no.file()
was used with.screenSpace()
and.screenSpaceScale({ fitX: true, fitY: true })
- Effects - Fixed calculation of dimensions for canvas tiles (thanks Codas!)
- Effects - Fixed spritesheets generated by just-in-time conversion not having the correct framerate (thanks Codas!)
- Effects - Fixed
.stretchTo()
not having the correct scale after using.scale()
- Crosshairs - Fixed
Sequencer.Crosshair.collect()
being broken due to missing import
- Canvas Pan - Added support for named locations with in-sequence crosshairs
- Scrolling Text - Added support for named locations with in-sequence crosshairs
- Effects - Fixed effects that should have been invisible to users being visible when utilizing
.attachTo()
withbindVisibility
set totrue
(Thanks Codas!) - Effects - Fixed
.file()
with specific range-based effects not correctly using the default grid template data (Thanks Codas!) - Effects - Fixed
.aboveLighting()
being above lighting but not over certain elements - Effects - Fixed some effects sticking around on tokens even after being deleted
- Effects - Added missing
anchor
documentation to the.text()
method
- Sequencer - Fixed slight performance issue with the Sequencer layer querying mouse position even when not active (thanks Codas!)
- Effects - Fixed
.shape()
and.text()
not working on effects without an underlying sprite (thanks Codas!) - Effects - Fixed
.xray()
not working (thanks Codas!) - Effects - Fixed
.screenSpace()
not working due to upgrades to.animateProperty()
messing with sprite width and such - Crosshairs - Fixed
displayRangePoly
not working due to missing import
- Effects - Fixed canvas breaking after playing some types of effects
- Effects - Fixed effects with internal loops not playing & looping correctly (thanks Codas!)
- Effects - Tweaked just-in-time spritesheet generation to not scale resulting spritesheets as much (thanks Codas!)
- Sequencer - Added support for custom FPS for flipbooks through an
_fps
database tag - Sequencer - Added support for spritesheet type effects through linking the spritesheet
.json
manifest in the database - Sequencer - Added a just-in-time compiler to transform webm video-based effects to gpu-optimized spritesheets
- This greatly improves performance when many instances of the same persisted effects are playing at once
- Persisted effects are automatically transformed to spritesheets in background threads. Once the compiled spritesheets are available, video effects are seamlessly replaced with spritesheets, greatly reducing the overhead for video decoding for those effects. Depending on size of the effect, spritesheet generation is expected to take anywhere from 5 seconds to 90 seconds. The size of generated Spritesheet textures is limited to 8192x8192px to maximize compatibility and limit memory usage
- Generated spritesheets are cached client-side in a semi-persistent, file-based browser cache
- Spritesheet generation for video files is only supported in trusted contexts (meaning https or hosted and connected locally on the same machine). This is a hard limitation by the browser vendors and not expected to be lifted in the future
- Sequencer - Tweaked
Sequencer.Presets.get()
to support fall-backs to lower-complexity named entries- If you have added a preset named
spell.ranged
and attempt to get a non-existentspell.ranged.fire
, it will return thespell.ranged
entry as a fallback - You can enable the previous behavior by passing
true
as a secondary argument, which causes the method to require an exact match
- If you have added a preset named
- Crosshairs - Added
displayRangePoly
to.location()
and theSequencer.Crosshair.show()
API - Crosshairs - Fixed some minor crosshair issues surrounding utilizing them for effects
- Crosshairs - Fixed
Sequencer.Crosshair.collect()
not working correctly with some crosshair shapes - Effects - Fixed flipbook animations framerate being tied to canvas FPS
- Effects - Fixed offset from
.rotateTowards()
applying to the source location instead of the target - Effects - Fixed effects with added text and
.rotateTowards()
having their anchor point moved to an unexpected location - Effects - Fixed persisted
.stretchTo()
effects not correctly looping the effect in certain cases - Effects - Fixed
.loopOptions()
not working correctly for persisted effects when combined with.timeRange()
- Effects - Fixed
.scaleOut()
end value being multiplied by a potentially set.scaleIn()
value.scaleIn(0.25).scaleOut(2)
now scales the effect in from 0.25 to 1. Plays the animation at 1x size and then scales the animation out to 2x default animation size. Previously, the animation would scale out to 0.5x the default effect size.
- Effects - Fixed
attachTo()
not working on in-flight crosshairs
Big thanks to Codas for his incredible work on the just-in-time compiler, general optimizations, and many fixes! Please support him at the following link: https://ko-fi.com/Codas
- Effects - Fixed
screenSpace
being a required property instead of optional for.animateProperty()
and.loopProperty()
- Sequencer - Fully removed custom PIXI filters in favor of dedicated Sequencer implementation
- Crosshairs - Added
.width()
for ray-type crosshairs - Effects - Added
screenspace
(boolean) parameter to.animateProperty()
and.loopProperty()
- This makes the values used in these methods for position, width, or height to take the screen-size into account, meaning an
.animateProperty()
with the x position going from 0.0 to 1.0 will have the effect move from the left side of the screen to the right
- This makes the values used in these methods for position, width, or height to take the screen-size into account, meaning an
- Effects - Fixed
.screenSpace()
effects not supporting animating their width when.screenSpaceScale({ fitX: true, fitY: true })
was set - Effects - Fixed
.screenSpaceAboveUI()
not correctly setting its renderable status when effects were played on its layer (thank you Codas!) - Effects - Fixed
.shape()
not being affected by.fadeIn()
,.fadeOut()
, or.opacity()
(thank you Codas!)
- Sequencer - Reverted PIXI filters plugin to more compatible version
- Sounds - Fixed
.startTime()
and.endTime()
not working
- Effects - Fixed
.screenSpaceAboveUI()
not correctly falling back to the below UI screenspace layer if the above UI layer is disabled - Animations - Fixed named sequence-crosshairs not working as a target position
- Sequencer - Fixed minor Foundry v12 deprecation warnings
- Sequencer - Updated PIXI filters
- Crosshairs - Fixed
.crosshair()
's.persist()
option not working with subsequent.effect()
sections - Crosshairs - Fixed typos on
.gridHighlight()
(thanks Vauxs!) - Crosshairs - Fixed crosshair documentation and typing (thanks Vauxs and Spappz on github!)
- Crosshairs - Fixed
.crosshair()
's default size being smaller than the grid - Effects - Removed
.attachTo()
warning when using.attachTo()
with a named location (specifically.persist()
ing crosshairs) - Effects - Fixed
.name()
not passing mirrorX/Y, rotation, and random rotation to the subsequent effects - Sounds - Added
.audioChannel()
to sounds, which controls which output they are played through (thank you Oxy949 on github!)
- Crosshairs - Added
Sequencer.Crosshair.CALLBACKS.STOP_COLLIDING
callback - Crosshairs - Added
updateCrosshair
method to crosshairs - Crosshairs - Fixed invalid placement positions being cached and then used even if the crosshair was placed somewhere else
- Effects - Fixed
.attachTo()
'salign
not playing well with.stretchTo()
- Effects - Fixed
.persist(true, { persistTokenPrototype: true })
not storing more than one persistent effect on the token
- Sequencer - Fixed
.thenDo()
typing (thank you Vauxs!) - Sequencer - Tweaked
.addNamedLocation()
to better handle nonconforming inputs - Effects - Fixed
.screenSpaceAboveUI()
not working with recent optimizations (thanks you Codas!) - Effects - Fixed
.text()
not utilizing thePreciseText
Foundry class
- Sequencer - Added
.addNamedLocation()
which allows you to store and cache locations as a string for later use in the sequence - Effects - Fixed
.tint()
and.fadeIn()
/.fadeOut()
not working properly (thank you Codas!) - Effects - Fixed
.from()
breaking antialiasing on token textures - Animations - Fixed using named locations and named crosshairs not working in animations
- Crosshairs - Added crosshairs! It can be used with
Sequencer.Crosshair.show()
(like warpgate) or with.crosshair()
on a sequence. See the documentation (here and here) for more info. - Sequencer - Fixed issues with preloading arrays of files
- Sequencer - Added polish localization (thank you Lioheart!)
- Effects - Greatly improved effect efficiency by improving batching capabilities (thank you Codas, you're a legend)
Unfortunately, Sequencer is now a V12 only module.
- Sequencer - Updated types (Thanks Vauxs on github!)
- Effects - Fixed some issues with the vision masking shader relating to the batch batching optimizations (Thanks Codas on github!)
- Effects - Fixed above UI layer not working with recent render batching optimizations (Thanks Codas on github!)
- Effects - Major improvements to the way that effects are rendered to better support render batching (thank you Codas, you damn legend!)
- Effects - Tweaked flag manager to better handle effects with broken IDs
- Animations - Fixed
.teleportTo()
triggering regions that react upon movement (thanks Michael on github!) - Sounds - Fixed sounds not playing on the right channel in v12
- Sounds - Fixed sounds not working with
.fadeInAudio()
and.fadeOutAudio()
- Sounds - Fixed sounds with
.atLocation()
andrandomOffset
in v12 not synchronizing the exact location between clients
- Effects - Fixed non-
.xray()
effects showing in the fog of war - Sounds - Removed stray debugger
- Sounds - Fixed sounds again (thank you, Vauxs!)
- Sequencer - Tweaks and fixes to documentation (thank you, Vauxs!)
- Effects - Fixed templates getting deleted shortly after being used for an effect would cause a Foundry crash
- Effects - Fixed effects sticking around after documents that they were attached to had been deleted
- Sounds - Fixed sounds not working properly in certain macros
- Sequencer - Further updates to typing information (thank you, Vauxs!)
- Sequencer - Tweaked
preload
optional argument onSequence#play
to batch preload files (thank you, Codas!) - Sequencer - Fixed
local
optional argument onSequence#play
to actually only play effects and sounds locally - Sequencer - Tweaked Sequencer Manager to be more robust and less error prone when invalid effects are active
- Effects - Added
absolute
optional argument to.animateProperty()
and.loopProperty()
- Effects - Fixed some effects not playing in the correct location, which fixes effect position issues with the Isometric module
- Sounds - Fixed sounds not playing in v11 (thank you, Vauxs!)
- Canvas Pan - Fixed initiating a shake with a frequency or duration of 0 would cause the canvas to freeze
- Sequencer - Updated
Sequence#play
to have two additional secondary parameters:preload: boolean
- causes any section with.file()
entries to preload all files that would be playedlocal: boolean
- causes sections to be played only locally to the user executing the sequence
- Sequencer - Improved typing information (thank you, Vauxs!)
- Effects - Fixed non-ASCII text breaking some effects played with Automated Animations due to its usage with the Effect Manager
- Effects - Fixed the alpha of tokens and tiles not being respected with
attachTo()
- Effects - Fixed
.template()
on effects not overwriting database templates - Effects - Fixed
CanvasEffect#addAnimatedProperties
causing errors when used twice in a row as it would try to incorrectly serialize entire PIXI sprites
- Sequencer - Fixed
{ name }
filters onSequencer.EffectManager
andSequencer.SoundManager
methods not working with regex-like strings - Effects - Tweaked and improved the animation engine to better handle stacked animations on the same property
- Effects - Fixed
.persist()
ing effects with internal loop assets not finishing the ending portion when the effect was ended - Effects - Fixed one shot effects replaying the first frame before disappearing
- Effects - Fixed
.aboveInterface()
effects blocking mouse interactions - Effects - Fixed some looping inconsistencies with
.loopOptions()
- Effects - Fixed being unable to snap effects to the grid when moved with the Sequencer Player
- Effects - Fixed effects with
.attachTo()
sometimes throwing errors and causing the scene to freeze - Effects - Fixed
.mask()
ed effects not following measured templates correctly
- Sequencer - Fixed Sequencer Manager throwing A DIFFERENT error when trying to see active
- Effects - Fixed
.persist()
effects not looping when first created (but would loop if enough time had passed & user had refreshed - very odd)
- Effects - Fixed
.persist()
effects not looping
- Sequencer - Fixed Sequencer Manager throwing an error when trying to see active Sequences
- Effects - Added
.sortLayer()
to be able to more directly control which layer the effect lands on (only in Foundry v12)- This also fixes
.belowTokens()
being below tiles - Thank you Codas on GitHub!
- This also fixes
- Effects - Added
.loopOptions()
to allow users to control how an effect loops - Effects - Deprecated
.noLoop()
in favor of the above, will be elevated to loud deprecation in a future major version
- Effects - Updated documentation to include
.volume()
,.fadeInAudio()
, and.fadeOutAudio()
- Effects - Fixed some issues with effect scaling when using
.loopProperty()
and.animateProperty()
- Sounds - Fixed
Sequencer.SoundManager.endAllSounds()
not ending all sounds - Sounds - Fixed
Sequencer.SoundManager.endSounds()
sometimes not correctly ending the right sounds - Sounds - Fixed calling
.sound()
would break sequences in both Foundry v11 and v12
- Sequencer - Fixed
.preset()
not working when called directly on a sequence (thanks MrVauxs!) - Effects - Added deprecation warning to
.file()
instead of an error when giving it a second boolean parameter - Effects - Fixes to the isometric module - may still not be 100%, but it shouldn't error anymore
- Sounds - Fixed sounds not playing on v11 (again!)
- Effects - Fixed issue with effects not playing their full duration
- Sequencer - ACTUALLY fixed welcome message being posted multiple times in bigger worlds (will also get rid of duplicates)
- Effects - Fixed
.animateProperty()
and.loopProperty()
not working when used onalphaFilter
- Effects - Fixed effects that were attached to temporary templates (like warpgate's crosshairs) not disappearing after the crosshair had been placed
- Effects - Fixed issue with
complete
-loop type effects not playing correctly
- Sequencer - Fixed welcome message being posted multiple times on The Forge - my apologies for this
- Sequencer - Fixed
Sequencer.Preloader
not being properly set up (thanks Codas on github!) - Effects - Added
antialiasing
optional argument to.file()
- expectsPIXI.SCALEMODES.LINEAR
orPIXI.SCALEMODES.NEAREST
- Effects - Fixed
.moveTowards()
not working - Effects - Fixed
.animateProperty()
and.loopProperty()
not properly animating effects - Effects - Fixed
.timeRange()
and.endTime()
not working properly - Sounds - Fixed
.atLocation()
incorrectly throwing errors when on Foundry v12 (thanks Codas on github!) - Sounds - Fixed sounds not working on Foundry v11
- Sequencer - Added support for FoundryVTT v12 while remaining backwards compatible with v11
- Sequencer - Added startup chat message with links to relevant external resources
- Sequencer - Added support for the Isometric module (thanks grape_juice for their assistance with this integration!)
- Sequencer - Added
Sequencer.SoundManager
which is a sound interface that mirrorsSequencer.EffectManager
- Effects - Greatly improved responsiveness of attached effects actually following their targets more accurately
- Effects - Removed deprecated methods
.offset()
and.randomOffset()
as those should now be done with the relevant location-based secondary parameters - Effects - Added
.syncGroup()
which allows you to synchronize the playback of multiple effects in the same scene - Effects - Tweaked
.scaleToObject()
to cache its target's scale when first created, unless paired with.attachTo()
andbindScale
(see below) - Effects - Added
bindScale
(defaults totrue
) to.attachTo()
, that if combined with.scaleToObject()
it will always scale with the object - Effects - Fixed
.tint()
not being applied when used with.attachTo()
and.stretchTo()
with{ attachTo: true }
- Effects - Tweaked
.attachTo()
'sfollowRotation
to be namedbindRotation
(will remain backwards compatible until 3.3.0 before becoming deprecated) - Sounds - Added support for the following methods (see the
.sound()
documentation for more info):.name()
.origin()
- Below only in Foundry v12:
.atLocation()
.radius()
.constrainedByWalls()
.distanceEasing()
.alwaysForGMs()
.baseEffect()
.muffledEffect()
- Effects - Added better support for the Walled Templates module
- Effects - Fixed effects becoming invisible when using both
offset
andlocal
with just a source location and no target - Effects - Fixed
.shape()
sisMask
property not working when the shape type was set topolygon
- Sounds - Fixed "End All Sounds" button not working in the Sequencer Manager
- Sequencer - Removed stray debugger, whoops
- Animations - Fixed
.rotateTowards()
being off by a few degrees - Effects - Added
.temporary()
, which causes an effect to not set any flags on any objects, which means a refresh will make the effect disappear - Effects - Fixed
.zIndex()
not working with.screenSpace()
- Effects - Fixed
offset
'slocal
modifier not applying correctly when using.stretchTo()
and the like
- Sequencer - Fixed Sequencer's ready hooks sometimes not firing when canvas was fully ready
- Effects - Improved persistent effects behavior when pasted across scenes
- Effects - Fixed
.shape()
withmask: true
not masking its parent - Effects - Hopefully fixed issues surrounding effects sometimes not being cleared properly
- Effects - Fixed effects in v11 sometimes ending up in the top left corner after switching scenes
- Sequencer - Fixed a bug in the database when copying some file paths would not work properly
- Effects - Added
.aboveInterface()
- Sequencer - Improved Database-to-Database binding when considering custom metadata
- Animations - Fixed cases where if a newly created token had
.animation()
s applied to them would sometimes fail due toToken#mesh
not being initialized (Thanks LukeAbby & TMinz) - Effects - Vastly improved
.mask()
performance and behavior all thanks to dev7355608! - Effects - Fixed a rare case where range-finding effects would fail to determine the right video file to play
- Effects - Added
.randomSpriteRotation()
- Effects - Fixed a bug with cached locations and
.mask()
- Effects - Fixed database-to-database mappings
- Sequencer - Fixed console error caused by the clean-up of old expired effects (Thanks LukeAbby on Github!)
- Sequencer - Added
fullyQualified
secondary parameter toSequencer.Database.getPathsUnder()
(Thanks LukeAbby on Github!) - Animations - Added support for elevation in
.teleportTo()
- Canvas Pan - Fixed
.canvasPan()
not working other clients than the executing client - Effects - Slightly adjusted how
.missed()
interacts with.stretchTo()
when two tokens are right next to each other - Effects - Fixed
.playbackRate()
causing effects to have the incorrect amount of playback time - Effects - Fixed
.rotateTowards()
not working with.text()
- Sequencer - Made PIXI fix settings default to being turned off
- Sequencer - Fixed strange interaction with
.preset()
not working when certain functions were called in the preset - Sequencer - In Foundry v11,
.macro()
now requires the secondary parameter to be an object, as the behavior of Advanced Macros have been partially integrated in v11 - Effects - Fixed some persistent effects not being deleted from scenes after their attached sources were deleted
- Effects - Fixed effects targeting drawings not properly using the drawing position and dimensions
- Effects - Fixed
.playbackRate()
not working well with internal loops and.persist()
- Sequencer - Fixed Effect Player not working in Foundry v11
- Sequencer - Fixed private modules showing up in the Database Viewer
- Canvas Pan - Added
.shake()
which can be used to add camera shake to the canvas - Effects - Fixed glow filter not working in v11
- Effects - Fixed
.belowTokens()
being below tiles as well
- Effects - Fixed
stretchTo()
effects sometimes not being visible
- Effects - Added
requiresLineOfSight
andhideLineOfSight
to the secondary arguments of.stretchTo()
- This requires
attachTo
to be true instretchTo()
requiresLineOfSight
causes the effect to immediately end if the line of sight between the source and target is brokenhideLineOfSight
modifies the above behavior to temporarily hide the effect until the line of sight is unbroken
- This requires
- Effects - Fixed the "External Effect Opacity" setting, which causes effects playing for other players to show up as faint for GMs to let them know that players has effects playing for them, but would not work if the opacity was set to 0
- Effects - Improved dual-attached effects performance
- Sequencer - Fixed issue with Sequencer trying to make users migrate tokens and effects they do not own
- Effects - Fixed effects not updating reliably when the target's opacity and/or hidden status changes
- Effects - Fixed support for google bucket files (it meant to be
video/x-webm
instead ofvideo/webm-x
) - Effects - Fixed dual attached effects disappearing once going beyond the range of the initial effect
- Effects - Added support for file buckets that contain
video/webm-x
files (mostly Google Buckets) - Effects - Fixed
.scaleToObject()
taking into account token scale when it should not (unlessconsiderTokenScale
is set totrue
)
- Sequencer - Fixed edge case with
.addSequence()
that would cause a sequence to ignoresoftFail
- Effects & Sounds - Removed secondary boolean argument for
.file()
as it is covered by the Sequence-wide soft fail
- Sequencer - Added backwards compatibility to the old format of
new Sequence(moduleName, softFail)
- Sequencer - Added
remote
support for.wait()
- Sequencer - Added
moduleName
andsoftFail
support forremote
- Animations - Fixed
.snapToGrid()
sometimes not working well on hex scenes - Effects - Fixed
.xray()
causing effects to disappear - Sounds - Fixed
softFail
not working properly
- Effects - Fixed
cacheLocation
not working on effect locations - Effects - Fixed dual attached effects not working
- Sequencer - Updated Sequencer Database Viewer:
- Improved UI and added nested tree view
- Added ctrl modifier to buttons that copy paths, which adds quotes around the copied paths
- Sequencer - Updated Sequencer Effect Player:
- Improved UI based on the design of MatthijsKok on github - thanks a lot for the inspiration!
- Sequencer - Reworked the Sequencer Effect Manager to the Sequencer Manager:
- Added the ability to stop running sounds
- Added a Sequence view where you can see the sequences as they are running, and stop the entire execution or their individual sections
- Sequencer - Added
.scrollingText()
which allows playing scrolling text on the canvas for users - Sequencer - Added
.canvasPan()
which allows panning the canvas for connected users - Sequencer - Added
.toJSON()
and.fromJSON()
to Sequences to be able to be serialized and deserialized; only sequences with effects, sounds, and scrolling texts can be serialized - Sequencer - Added options to
.play()
, which may contain an object; currently supports{ remote: true/false }
which will serialize the sequence (see above), and send it to each client for local playback, instead of the person running the sequence sending data to clients as it is being executed - Sequencer - Added database support for
_timestamps
metadata on effect files, which will trigger thesequencerEffectTimestamp
hook when effects reach the point of the timestamps for that file - Sequencer - Added support for flipbook-type effects through a
_flipbook
database tag - Animations - Improved playback of movement, fade in/out, and rotation animations on tokens
- Effects - Added
CanvasEffect#addAnimatedProperties
, which will allow you to easily add animations to properties of existing effects - Effects - Improved screenspace above UI effect performance by not rendering the extra canvas when not in use
- Effects - Fixed screenspace effects being affected by the vision mask
- Effects - Fixed
.stretchTo()
effects would be visible when not in vision - Effects - Fixed
.fadeOut()
and.scaleOut()
not working at all - Effects - Reworked how effects are replicated on linked tokens when
.persist()
'spersistPrototypeToken
is enabled, improving performance
- Sequencer - Included missing CSS file
- Sequencer - Added support for database paths that resolve to other database paths
- Sequencer - Isolated Sequencer's styling so that it doesn't leak out into other modules or systems
- Effects - Fixed
.loopProperty()
not respectingloops: 0
- Effects - Fixed
.animateProperty()
not keeping track of relative values when animating the same property multiple times - Effects - Fixed named screenspace effects without a specific location not playing and throwing errors
- Sounds - Fixed
softFail
not allowing sounds to softly fail
- Sequencer - Added setting to hide/show the Sequencer buttons in the left sidebar when in the token controls
- Animation - Fixed
.moveTowards()
going into infinite loop if the source and targets are on top of each other - Effects - Fixed
.shape()
taking grid size into account multiple times - Effects - Fixed
.volume()
,.fadeInAudio()
, and.fadeOutAudio()
not working on webms with embedded audio
- Sequencer - Fixed infinite recursion when using
.waitUntilFinished()
in the middle of a sequence - Sequencer - Undid some minor issues in the database viewer
- Sequencer - Added support for playing sounds in the Sequencer Database (thank you ZotyDev for the pull request!)
- Sequencer - Calling methods on the sequence that it does not have will be attempted to be cast to the last section
- Sequencer - You can now provide
false
as an argument to.waitUntilFinished()
, which will negate its call - Effects - Fixed animations on
alphaFilter
'salpha
not working
- We don't talk about this version
- Effects - Fixed rectangle measurable templates would be off by 45 degrees
- Effects - Fixed tokens with locked rotation would cause attached effects to be rotated anyway
- Effects - Fixed
.tint()
not applying to.stretchTo()
effects
- Effects - Actually fixed shapes
- Effects - Fixed effects with only shapes would not play properly
- Effects - Fixed error when users tried to play effects even when
softFail
was set totrue
- Effects - Fixed effects playing on the same scene as the user's current scene, even if the target of the effect was on another scene
- Effects - Fixed
.from()
not working with the newsoftFail
sequence parameter - Effects - Fixed being able to pass non-valid parameters to
.atLocation()
and similar functions without errors
- Sequencer - Tweaked the arguments to
new Sequence("moduleName")
tonew Sequence(inOptions)
- it now takes a single object that can contain:moduleName
- The name of the module that is creating this sequence - this is for other users to know which module used SequencersoftFail
- Setting this totrue
causes any failures to find files for effects, sounds, or macros to softly fail, rather than halt the entire sequence
- Effects - Tweaked
.shape()
s parent to be thespriteContainer
rather than thesprite
, so that animations to the sprite doesn't affect the shapes - Effects - Fixed
.shape()
not considering their offset withisMask
enabled
- Sequencer - Switched
Disable Pixi Fix
toEnable Pixi Fix
to make it more consistent with other settings - Sequencer - Added
Enable Global Pixi Fix
which fixes the alpha on animated tiles if enabled (use with caution) - Effects - Fixed
.atLocation()
and.persist()
throwing errors and thus failing to persist the effect on the scene - Effects - Slight tweaks to visibility logic of effects to be more consistent
- Effects - Tweaked
.attachTo()
'salign
andedge
to not consider token scale when determining the edge of the token
- Sequencer - Added
Sequencer.Presets
which allows you to create and save reusable bits of sequences - Sequencer - Added
.preset()
which allows you to use the aforementioned presets - Sequencer - Added optional
considerTokenScale
to the optionaloptions
parameter to.scaleToObject()
, you can set it totrue
in order for the visual effect to also consider the token scale - Sequencer - Added support for persistent visual effects on "fake" tokens created by Multilevel Tokens (only supports effects that are applied to the prototype token)
- Sequencer - Slightly improved the speed of document updates when visual effects are first applied
- Sequencer - Added a throttled console warning when the Photosensitive Mode is enabled and a client is trying to play effects (only warns once every 10 seconds when effects are played)
- Effects - Fixed
.scaleToObject()
always taking token scale into account, which it shouldn't do by default
- Effects - Fixed minor typo in
.mask()
- Sequencer - Added
Seqencer.EffectManager
to the autocomplete types - Sequencer - Fixed minor issue with the Effect Manager sometimes trying to load non-existent effect data
- Effects - Added
.shape()
, which allows you to create simple shapes on the canvas - Effects - Fixed
.attachTo()
would attempt to apply flags on temporary templates such as warpgate crosshairs
- Sequencer - Fixed interaction with the
Advanced Macros
module past version 1.19.2 (Thanks MrVaux!) - Sequencer - Fixed issue with
Sequencer.Helpers.shuffle_array
not handling complex arrays very well - Effects - Fixed
.from()
not taking token scale into account
- Sounds - Fixed sounds not working
- Sequencer - Created a new wiki for Sequencer:
- Sequencer - Added full support for Sequencer typings in the Monaco Macro Editor (thanks to laquasicinque for your initial work!)
- Sequencer - Changed all settings to use Foundry v10's
requiresReload
instead of reloading the app - Sequencer - Removed compendium of sample macros, in favor of the new wiki
- Effects - Added further support for webm's loaded through S3 buckets (files with type
application/octet-stream
now supported) - Sounds - Sounds'
.file()
now has a secondary parameter to allow a false-y primary input to soft fail, instead of halting the entire Sequence
- Sequencer - Added support for Foundry's photosensitive setting, which disables all effects without impacting other functionality
- Sequencer - Fixed incompatibility with the Foundry team's A House Divided adventure, the scenes should no longer appear to have a dark overlay
- Sequencer - Updated
.macro()
to work with the latest version of the Advanced Macros module
- Effects - Fixed
.tieToDocuments()
not working for embedded documents on unlinked tokens
- Effects - Adjusted approach when ending effects when using
.tieToDocuments()
- Sequencer - Fixed registering similar named modules in the database would cause the second to not register properly
- Effects - ACTUALLY fixed
.tieToDocuments()
(send help)
- Effects - Fixed deeper issue with
.tieToDocuments()
as it was not recognizing actors or items as parents in respect to UUIDs
- Effects - Fixed
.missed()
and.stretchTo()
'srandomOffset
having weird interactions when.name()
was used to play effects at target locations - Effects - Fixed
.tieToDocuments()
throwing errors and not removing effects when the tied documents were deleted
- Sequencer - Added
Sequencer.Database.inverseFlattenedEntries
which is a map object with the key being the file path and the value being the database path for that file - Effects - Added
bindElevation
(defaulttrue
) as a secondary argument to.attachTo()
which can be used to make effects not follow the target's elevation - Effects - Made
.elevation()
be relative to the target of the effect by default, you can pass a secondary object withabsolute: true
to make it absolutely elevated on the scene - Effects - Improved internal logic when trying to play effects on clients who have disabled them - previously it had a chance to throw an error when clients with effects disabled would run sequences that included effects (as they would not know the duration of the effect)
- Effects - Fixed race condition when deleting multiple attached effects in a row would leave some lingering effects
- Effects - Fixed effects sticking around after deleting the document they were attached to
- Effects - Fixed error when deleting documents relating to named effects
- Effects - Fixed setting the position of screenspace effects would not work
- Sequencer - Removed double declaration of socketlib hook
- Effects - Fixed error if no scenes has been created yet
- Effects - Fixed screenspace effects not working without setting its location
- Effects - Fixed
.animateProperty()
not working very well withwidth
andheight
- Effects - Improved the way effects interacts with Foundry hooks (it is more efficient)
- Effects - Fixed
.rotateTowards()
'srotationOffset
parameter not working properly
- Effects - Fixed multiple
.attachTo()
and.strechTo()
withattach: true
sometimes causing crashes due to overloading Foundry's tick function - Effects - Fixed ColorMatrix
hue
and.animateProperty()
not working well together - Effects - Fixed
.atLocation()
withrandomOffset: true
would cause weird effects with.stretchTo()
- Sequencer - Removed Ouija Board example macros, this is now a separate module made by md-mention2reply, check it out!
- Sequencer - Updated module manifest to be more V10 compatible
- Effects - Fixed ColorMatrix
hue
property to be able to be animated withanimateProperty()
and.loopProperty()
- Effects - Fixed
.mask()
not working with tiles or measurable templates - Effects - Fixed mirror and random mirror X/Y not actually flipping the effect
- Animations - Fixed
.rotateTowards()
throwing update error
- Effects - Fixed code to remove deprecation warning when both
.mask()
and.persist()
was used - Effects - Fixed rare issue where the temporary template layer would not be initialized and would cause Sequencer to error and stop working
- Effects - Fixed Sequencer Effects Player deprecation warnings
- Effects - Added warning to console for players trying to play effects when they do not have permission to do so
- I realize warnings is not desired in most cases, but this has been an ongoing point of support, so to preserve my own sanity, this is just how it is now.
- Animation - Fixed
.rotateTowards()
throwing errors - Effects - Fixed
.loopProperty()
with propertyscale
would incorrectly scale effect
- Effects - Fixed
.from()
and.mask()
throwing errors about missing files
- Sequencer - Added Spanish localization (thanks to Git-GoR!)
- Effects - Re-enabled
scale.x
andscale.y
on.animateProperty()
and.loopProperty()
- Effects - Deprecated
.belowTokens()
and.belowTiles()
in favor of.elevation()
due to fundamental changes in Foundry's V10 update. These methods will be removed in a future update - Effects - Fully removed deprecated methods:
.addPostOverride()
,.reachTowards()
,.gridSize()
,.startPoint()
,.endPoint()
- Effects - Fixed
.rotateTowards()
'srotationOffset
parameter not working properly
- Re-released 2.2.2, git pulled a fast one and the changes in that version never got out
- Animation - Fixed
.rotateTowards()
throwing errors (again) - Effects - Fixed
.atLocation()
withrandomOffset: true
would cause weird effects with.stretchTo()
- Effects - Fixed error that would sometimes pop up during startup if the template layer has not been initialized
- Animation - Fixed
.rotateTowards()
throwing errors - Effects - Fixed
.loopProperty()
with propertyscale
would incorrectly scale effect
Additions:
- Effects - Added
.tieToDocuments()
which allows you to tie an effect to Foundry documents - such as Active Effects or Tokens. When these are deleted, the effect is automatically ended. - Effects - Added secondary
offset
parameter to.atLocation()
,.attachTo()
,.rotateTowards()
,.from()
, and.stretchTo()
which can be used to offset the location of the source or target- Note: This means that
.offset()
is becoming deprecated - it will remain for a few versions with a silent warning
- Note: This means that
- Effects - Added
.spriteScale()
which can be used to scale the sprite of the effect separately from.scale()
Tweaks:
- Animations - Renamed
.rotateTowards()
's secondary parameter'soffset
property to be more accurately namedrotationOffset
- Effects - Upgraded
.animateProperty()
and.loopProperty()
to be additive, which means two animations can now target the same property on the same effect - Effects - Renamed
.rotateTowards()
's secondary parameter'soffset
property to be more accurately namedrotationOffset
Fixes:
- Sequencer - Fixed issue where copying the file path of a Database entry that has multiple ranges would always copy the file path for the middle-most range
- Sequencer - Rewrote the database traversal method to be more robust and carry metadata down to lower children
- Effects - Fixed long-running issue with lag and performance impact from Sequencer on some computers - the cause was the
.screenSpace()
layers, which have now been reworked. A setting to disable the Above UI Screenspace effects layer has been added to further support impacted individuals. - Effects - Fixed
randomOffset
secondary option on.attachTo()
not working - Effects - Fixed
.scaleToObject()
and.scale()
not playing nicely together - Effects - Fixed loop markers not properly working
- Sequencer - Removed PIXI fix for Foundry .webm tiles to apply premultiplied alpha, native Foundry behavior is now active
- Effects - Fixed fatal canvas errors when
persistTokenPrototype
was active and masked to the target of the effect - Effects - Added warning when using
persistTokenPrototype
with masks other than masks applied to the source target - Effects - Added support for
.file()
to override.from()
's file while keeping the other settings intact - Effects - Improved robustness of placeable object document retrieval
- Sequencer - Removed stray
console.log
- Sequencer - Fixed Ouija board macro error, slightly improved effect positioning
- Effects - Added
.spriteRotation()
which allows you set the rotation of the effect in place - this differs from.rotate()
in the sense that this is applied only locally to the sprite, after any other offsets or transformations
- Effects - Fixed
.strechTo()
with parameterattachTo: true
resulting in no stretching
- Effects - Fixed effects attached to temporary templates causing errors in core Foundry code
- Effects - Effects attached to temporary objects (like warpgate cursors) are now propagated to other clients (call
.locally()
to make it only appear for the creator)
- Sequencer - Fixed Sequencer Effect Manager not accepting Foundry documents as object references when filtering for effects
- Sequencer - Fixed Sequencer Effect Player showing private database entries
- Effects - Fixed attached effects not showing up for non-GMs
- Sequencer - Unlocked keybinds so that users may configure their own keybinds for Sequencer's layers
- Sequencer - Added support for
minDelay
andmaxDelay
on.waitUntilFinished()
, so you can now have a random wait delay between sections - Effects - Added
fromEnd
to.animateProperty()
which causes the animation to play at the end of the effect's duration - Effects - Added
gridUnits
support to.animateProperty()
and.loopProperty()
when usingposition.x
orposition.y
as the animated target - Effects - Added
gridUnits
as a secondary option to both.offset()
and.spriteOffset()
- Effects - Fixed persistent prototype token effects not applying on every instance of its token
- Effects - Fixed
.playbackRate()
only adjusting effect duration, and not the actual playback rate
- Sequencer - Added setting to allow clients to disable Sequencer's PIXI alpha fix for base textures
- Effects - Fixed string normalization
- Sequencer - Updated compendium of Sequencer macro samples
- Effects - Fixed finding effects by name with accents in them silently failing
- Effects - Fixed
.attachTo()
not following the target's rotation
- Effects - Fixed switching scenes would sometimes break effects
- Effects - Fixed issue with hovering over persistent effects attached to objects sometimes causing Foundry's layers to crash
- Effects - Fixed
.animateProperty()
and.loopProperty()
applying grid-size ratio on animated scales
- Effects - Fixed attached effects disappearing
- Effects - Fixed
.randomOffset()
not randomly offsetting effects (still deprecated, see 2.1.0 release notes)
- Effects - Fixed effects sometimes not becoming visible
- Sequencer - Fixed canvas layer bug that caused performance issues for some users
- Sequencer - Fixed missing default template causing some effects to not play properly
- Added
.aboveLighting()
, which causes the effect to always be visible, regardless of sight, fog of war, or walls.- Note that if an effect is attached to an object via
.attachTo()
, you may need to disablebindVisibilty
if the object is hidden
- Note that if an effect is attached to an object via
- Effects - Fixed
.from()
, it now uses the object's image when the effect plays, rather than when the Sequence was first created - Effects - Fixed highlight box when hovering over effects in the Effect Manager UI not taking effect rotation into account
- Effects - Fixed effects sometimes not fully following its attached object
Additions:
- Sequencer - Added support for the Effect Manager to be able to manipulate effects on other scenes, which means you can now end effects on other scenes than the one you're on via the API
- Sequencer - Added secondary options parameter to
Sequencer.Database.getEntry
, wheresoftFail: true
will cause the method to not throw errors when an entry was not found. - Sequencer - Added
Sequencer.EffectManager.getEffectPositionByName
which will allow you retrieve an effect's position by name, in real time - Effects - Added
.mask()
, which can now clip-mask effects to only show them within tokens, templates, tiles, or drawings - this supports the Walled Templates module! - Effects - Added a secondary options parameter to
.persist()
, which can acceptpersistTokenPrototype: true
to persist the effect on the token's prototype data, useful for active effect-based VFX - Effects - Added vision masking - now token vision affects how much of an effect they can see
- Effects - Added
.xray()
which can be used to turn off vision masking on individual effects - Effects - Added support in the Sequencer Database for internal effect loops, see the documentation for more information
- Effects - Added
edge
option to.attachTo()
, which can be set toinner
,on
, orouter
to align the effect on the attached object's edge when used withalign
- Effects - Added
.screenSpaceAboveUI()
, which causes.screenSpace()
effects to play above all UI elements in Foundry (use with caution) - Effects - Added options parameter to
.scaleToObject()
, which can be passeduniform: true
to cause the scaling to always be uniform (it picks the largest dimension of the object) - Macros - Added the ability to reference compendiums when creating
.macro()
s in sequences
Fixes:
- Sequencer - As
SequencerDatabase
was deprecated in 2.0.0 in favor ofSequencer.Database
, the former has now been removed - Sequencer - Adjusted Database methods with more validation so that searching with empty strings won't throw hard to read errors
- Sequencer - Removed bogus Effect Player warning about permissions that no longer reflects what Sequencer does
- Sequencer - Fixed some issues when copying and playing effects through the Database Viewer
- Effects - Fixed effects being invisible to players if the effect was created out of sight (thanks @dev7355608!)
- Effects - Fixed
align
on.attachTo()
not working as expected when an effect's scale or size was set - Effects - Fixed blur filter not taking given properties into account
- Effects - The following functions now have loud deprecation warnings:
.addPostOverride()
.reachTowards()
.gridSize()
.startPoint()
.endPoint()
- Effects - Deprecated
.randomOffset()
in favor of addingrandomOffset
as a secondary argument on.atLocation()
,.stretchTo()
,.rotateTowards()
, and.attachTo()
- Sequencer - Added japanese localization (thanks to the illustrious Brother Sharp#6921!)
- Effects - Fixed errors relating to tiling textures
- Effects - Fixed drifting effect animations when FPS dropped
- Effects - Improved performance relating to always updating the position of the sprites, even when attached objects weren't moving
- Effects - Hopefully fixed some memory leaks relating to assets not being deleted properly
- Effects - Fixed attached effects' rotations being funky
- Effects - Fixed effects attached to temporary objects (such as the warpgate crosshair) would not be properly removed from the effect manager
- Database - Fixed the database sometimes getting confused by paths that have
ft
in them without being range-finding - Effects - Fixed double-attached effects sometimes resulting in the sprite freezing (or in rare cases, browser crashes), though this type of effect is still expensive!
- Effects - Fixed
rotateTowards
withattachTo
enabled not respecting actual target position end position - Effects - Fixed
.rotation()
with.loopProperty()
on thespriteContainer
'srotation
causing rotational strangeness - Effects - Fixed
.repeat()
with partial database path not picking random images for each repetition - Sounds - Fixed error when playing sounds
- Effects - Fixed flipped tiles and measurable templates (with negative width or height) causing effects to not play on the correct location
- Effects - Fixed
.rotateTowards()
not following the rotation of attached objects - Sounds - Fixed
.fadeInAudio()
and.fadeOutAudio()
being broken
- Effects - Fixed effects with only
.text()
and no.file()
not working properly - Effects - Fixed
.text()
combined with.screenSpace()
would not be scaled properly
- Effects - Fixed
.extraEndDuration()
not working properly when.waitUntilFinished()
was provided a negative number - Effects - Fixed
.noLoop()
effects sometimes not reaching their proper end time when.endTime()
,.endTimePerc()
or.timeRange()
was used
- Sequencer - Fixed error in
Database.validateEntries()
- Sequencer - Updated
pre
hooks to cancel the action if any function returnfalse
- Sequencer - Updated Rope and Chain macros in compendium
- Effects - Added
.tilingTexture()
- this will replace thetiling
parameter on.stretchTo()
in the long term - Effects - Deleting the object an effect is attached to will now actually trigger the effect's
.fadeOut()
,.scaleOut()
etc
- Effects - Fixed nasty issue with rotation on effects
- Effects - Made all effects have an assumed internal grid size of 100
- Sequencer - Added rope and chain sample macros to the Sequencer macro compendium
- Sequencer - Removed non-functional Chain Lightning macro from macro collection
- Sequencer - Added warnings to Preloader when it is given invalid parameters
- Effects - Added
tiling
as an option to.stretchTo()
- Effects - Fixed
.randomRotation()
not working with.attachTo()
- Effects - Fixed issue with effects with a defined width and height were still being scaled by the scene-effect grid size difference
- Sequencer - Fixed broken macro in the Ouija example
- Animations - Fixed various animation methods not resulting accurate movement or teleportation
- Effects - Fixed
.randomRotation()
not working
- Sequencer - Improved intelligence of webm cache
- Effects - Added
.private()
method to hide effects in the effect manager - DO NOT USE IF YOU DO NOT KNOW WHAT YOU ARE DOING - Effects - Fixed issue where ending effects by name would cause other effects without a name to get _ended
- Effects - Fixed issue where filtering for effects with the Effect Manager would cause it to split the given name on each whitespace
- Effects - Hotfix for the hotfix. It's just hotfixes all the way down, man.
- Effects - Fixed some modules causing Sequencer to complain
- Effects - Actually fixed copying objects would not copy the effects on it
- Effects - Fixed some issues regarding file paths on ForgeVTT, though they did most of the legwork on their side
- Effects - Fixed issue where
.scaleToObject()
would fail to scale to the object properly - Effects - Fixed Effect Manager not finding effects to end when it was only provided an object
- Effects - Fixed copying tokens and other objects with ongoing effects would not properly play it for everyone
- Effects - Fixed screenspace effects would sometimes not play properly
- Sequencer - Fixed the preloader throwing error about recursion
- Effects - Fixed rotational animations not working properly
- Effects - Fixed the update interface not allowing attribute paths like core Foundry does
- Effects - Fixed effects lingering for other users after their attached objects were deleted
- Effects - Fixed issues with using
.from()
on tiles
- Sequencer - Fixed preloader throwing error about missing functions
- Sequencer - Fixed Effect Manager complaining if trying to filter effects by name while some effects didn't have a valid name
- Effects - Added the ability to use Effects as elements to play other Effects on
- Effects - Added cache-busting for when the Sequencer .webm cache would get larger than 1GB
- Effects - Fixed persistent effects attached to WarpGate crosshairs throwing errors
- Effects - Fixed
cacheLocation
throwing errors regarding missing function - Effects - Fixed
endedSequencerEffect
being called too late for users to be able to use its parameters - Effects - Fixed error when deleting the object an effect was attached to through both
.attachTo()
and.stretchTo()
Breaking changes:
- Sequencer - Sequencer now requires the
socketlib
module - Sequencer - All existing persistent effects created using 1.X.X Sequencer will be updated to the 2.0.0 system, but it's nigh impossible to catch all the edge cases, so please report any strangeness!
- Effects - Removed support for audio methods on effects (hardly used and caused a whole host of problems)
- Effects - Deprecated
.reachTowards()
and renamed it to.stretchTo()
. The deprecated method will be removed in 2.1.0. - Effects - Deprecated
.addPostOverride()
, please use.addOverride()
instead. The deprecated method will be removed in 2.1.0. - Effects - Deprecated
.gridSize()
,.startPoint()
, and.endPoint()
in favor for.template({ gridSize, startPoint, endPoint })
. The deprecated methods will be removed in 2.1.0. - Effects - Removed deprecated method
.JB2A()
Tweaks:
- Sounds & Effects - Tweaked
.forUsers()
to also accept player names (case-sensitive) instead of just IDs - Effects - Tweaked attached effects' layer handling - effects can now be attached but exist below all Tokens, for example
- Effects - Tweaked
.filter()
to allow being called multiple times, which now layers the filters in the order they were created
Additions:
- Sequencer - Added selection tool to the Effect Layer - select, move, reattach, and delete effects on the canvas!
- Sequencer - Added
updateEffects
to the Effect Manager's API - Sequencer - Added
updateSequencerEffect
hook - Sequencer - Added support to
.macro()
s to be able to supply additional arguments (requires the Advanced Macros module) - Sequencer - Added wildcard support when filtering for named effects in the Effect Manager's API (such as
getEffects
,endEffects
, etc) - Sequencer - Added support to filter for
source
andtarget
in the Effect Manager's API (such asgetEffects
,endEffects
, etc) - Sequencer - Added "private" boolean flag to
Sequencer.Database.registerEntries()
which causes the entries to not be visible in the Database Viewer and Effect Player - Sequencer - Added Setting to be able to hide Sequencer's tools on the toolbar
- Sequencer - Added checkbox to Database Viewer to show all ranges of a single effect, which is by default set to false
- Sequencer - Added
Sequencer.Helpers
, a library of useful methods - check them out on the wiki: https://github.com/fantasycalendar/FoundryVTT-Sequencer/wiki/Sequencer-Helper-Functions - Animations - Added
.hide()
and.show()
to hide or show the animated object - Effects - Added more secondary options parameters to
.stretchTo()
, which accepts:- At long last, this can now
attachTo
(boolean) to the given target. Combine with.attachTo()
to link an effect between two tokens! onlyX
(boolean), if set to true, this will cause stretchTo to only stretch the X axis of the sprite towards the target (keeping Y at 1.0, or your given scale)
- At long last, this can now
- Effects - Added support to
.file()
for an object map containing the feet range and filepath key-value pair. Check out the file wiki entry to understand what this means: https://github.com/fantasycalendar/FoundryVTT-Sequencer/wiki/Effects#file - Effects - Added secondary options parameter to
.attachTo()
, which accepts:align
(string, default "center"), acceptstop-left
,center
,left
,bottom-right
, etc. Read the wiki: https://github.com/fantasycalendar/FoundryVTT-Sequencer/wiki/Effects#attach-tobindVisibility
(boolean, default true), if set to false, the effect will not be hidden if the attached object is hiddenbindAlpha
(boolean, default true), if set to false, the effect's alpha will be independent of the attached objectfollowRotation
(boolean, default true), if set to false, the effect will not follow the rotation of the attached object
- Effects - Added options to
.size()
which allows for{ gridUnits: true }
- this makes the size given to the method scale to the scene's grid, instead of setting the exact width and height - Effects - Added the same option as above to
.animateProperty()
and.loopProperty()
, which only works if you animate thewidth
orheight
Fixes:
- Sequencer - Fixed module permissions settings being slightly wonky
- Sequencer - Fixed number inputs not throwing errors on
NaN
values - Animations - Fixed users not being able to teleport or move tokens they do not own
- Animations - Fixed
.moveSpeed()
not affecting the duration of the animation - Animations - Fixed
.delay()
not being respected - Effects - Fixed memory leak where effect textures were not properly destroyed
- Effects - Adjusted
.origin()
to be able to accept aDocument
object to infer the UUID from - Effects - Fixed
.from()
not taking mirror x/y into account on tokens - Effects - Tokens with effects attached to them can now be _ended by anyone who can update the token (owners of the token, GMs, etc)
- Effects - Increased default resolution of
.text()
to 10 (should increase quality) - Effects - Fixed
.screenSpace()
effects still being affected by grid size normalization
- Sequencer - Fixed Permissions being broken in the latest Foundry update, and moved Sequencer specific permissions into module settings instead
- Effects - Breaking change - Fixed issue where setting the
.size()
of an effect and then scaling it would result in unexpected behavior. As a result,.scaleIn()
and.scaleOut()
now function as multipliers to the existing scale on the effect
- Sequencer - Added popup warning the first time a GM opens the Effect Player to tell them about the custom Permissions
- Sequencer - Added button to open Foundry's Permissions directly from the Effect Player how-to page
- Sounds - Fixed
.fadeInAudio()
and.fadeOutAudio()
being broken
- Sequencer - Minor backend updates to flag handling
- Effects - Fixed static images failing to load in v9
- Effects - Fixed effects attached to tokens that were copied to another scene would not play
- Effects - Suppressed recent deprecation warnings until the next release
- Effects - Reverted some code that would break persisting effects
- Sequencer - Fixed minor spelling issue
- Sequencer - Sequencer is now v9 ready!
- Sequencer - Improved search accuracy functionality on the Effect Player
- Animations - Added
relativeToCenter
option to.teleportTo()
and.moveTowards()
, which will offset the location relative to the object's center, effectively centering the animated object on the location - use with.snapToGrid()
for reliable snapping! - Animations - Fixed
.fadeOut()
,.fadeOutAudio()
, and.rotateOut()
not correctly setting the duration of the animation, causing.waitUntilFinished()
to not actually wait for the animation to finish - Effects - Deprecated
.JB2A()
as the recommended workflow is now to use Database paths
- Effects - Fixed
.animateProperty()
and.loopProperty()
applying animations that were already complete
- Sequencer - Added French localization (thanks to Elfenduil)
- Sequencer - Fixed error with
Sequencer.Database.validateEntries()
throwing an error - Effects - Improved handling of the
Glow
filter when used with.fadeIn()
and.fadeOut()
- Due to this change, it is now recommended that if you use
.animateProperty()
or.loopProperty()
on thesprite
'salpha
property to instead use it on thealphaFilter
'salpha
property
- Due to this change, it is now recommended that if you use
- Macros - Updated the Misty Step macro to be more generic and not specifically require MidiQOL
- Sequencer - Fixed misspelled permission which caused players to not be able to see the toolbar buttons
- Sequencer - Added
End All Effects
button to the Effect Manager
- Sequencer - Removed error from the Effect Manager when no effects were removed
- Effects - Fixed
.randomOffset()
on tiles would result in pretty crazy behavior
- Sequencer - Added sidebar tool permissions, you can now hide them from players
- Effects - Added
.origin()
which provides a way to tag an effect with a string you can then search for with the Effect Manager - Effects - Added support for using both
.reachTowards()
and.scale()
and will now scale the effect whilst keeping the range finding correct
- Sounds - ACTUALLY Fixed sounds being broken
- Sounds - Fixed sounds being broken
- Sequencer - Made hooks
createSequencerEffect
andendedSequencerEffect
instead supply the CanvasEffect itself, rather than its data - Effects - Fixed bug that caused effects to linger for other clients after having been _ended
- Sequencer - Fixed error caused by preload option on Sequencer Effect Player
- Sequencer - Fixed error when pressing ESC in the Sequencer Layer
- Sequencer - Fixed permissions not being loaded properly
- Effects & Animations - Added
.tint()
which allows you to tint effects, tokens, and tiles
- Sequencer - Added granular permissions - check it out in Configure Settings -> Open Permissions Configuration
- Sequencer - Added localization support
- Sequencer - Fixed the Sequencer Player throwing an error if the layer was active while switching scene
- Sequencer - Added Stretch or Move checkbox to Sequencer Player
- Sequencer - Added Move Speed input to Sequencer Player
- Sequencer - Fixed file picker being broken
- Sequencer - Added the Sequencer Effect Player!
- Sequencer - Refactored the Sequencer Animation Engine, which fixes some animation funkiness
- Sequencer - Fixed the Sequencer Preloader sometimes not succeeding and getting stuck
- Animations - Removed the
.snapToSquare()
method, use.snapToGrid()
instead - Effects - Added
.spriteOffset()
which allows you to add an offset to the effect's sprite's location - Effects - Added optional boolean parameters to
.randomizeMirrorX()
and.randomizeMirrorY()
- Effects - Fixed bug that caused all effects to stay transparent after playing an effect for specific user
- Effects - Fixed bug with
.missed()
and.reachTowards()
failing to play any effect - Effects - Fixed all effects sharing users
- Sequencer - Fixed error in the Sequencer Preloader when pre-loading files from Database paths
- Effects - Fixed bug that caused persistent effects to end when a client connected after it was created
- Sequencer - Added
sequencerEffectManagerReady
hook which is called when every effect has been set up on the scene that's currently loaded - Sequencer - Added
validateEntries
method to the Sequencer Database, which is helpful for module creators to validate their asset collections to the database - Sequencer - Added
getPathsUnder
method to the Sequencer Database, which retrieves valid collections under a certain database path - Sequencer - Minor speed improvements to how the database retrieves files
- Sequencer - Removed the requirement for a user to be trusted to use the Database Viewer
- Sequencer - Fixed
Sequencer.EffectManager.endEffects
not throwing error when incorrect or incomplete parameters were given, and instead _ended all effects (whoops) - Effects - Made user-created effects that were made to be displayed only for other users also show up for GMs, though saturated and with 50% opacity. This is to ensure no player-to-player abuse would occur
- Effects - Fixed scaled tokens causing effects to not play on the correct location
- Effects - Fixed temporary effects attached to warpgate cursors no longer stays around for longer than they should
- Sequencer - Removed compatibility warning regarding Perfect Vision as the module was updated to support Sequencer
- Sequencer - Added warning when trying to register database collections under a module name containing dots (as it uses dot-notated paths)
- Sequencer - Removed Hyperspace sample from compendiums, as it was getting too big
- Sequencer - Added compatibility warning if user has Perfect Vision installed
- Sequencer - Added warning for Hyperspace assets that are going to be removed in a future update, and instead put into a separate module:
- https://foundryvtt.com/packages/nrsap by Nachtrose#9287 on Discord
- Sequencer - Prepared Sequencer for v9, it should be compatible to test
- Effects - Added
.text()
which allows you to create text snippets on the canvas - Effects - Added
.from()
which creates an effect based on the given object, effectively copying the object as an effect - Effects - Added support for
.attachTo()
for temporary measured templates before they have been created, for use with WarpGate - Effects - Removed warning when
.attachTo()
and.atLocation()
are used on the same effect -.attachTo()
always wins out
- Sequencer - Added hooks:
createSequencerSequence
endedSequencerSequence
- Effects:
preCreateSequencerEffect
- Provides the effect's datacreateSequencerEffect
- Provides the effect's dataendedSequencerEffect
- Provides the effect's data
- Sounds:
preCreateSequencerSound
- Provides the sound's datacreateSequencerSound
- Provides the sound's dataendedSequencerSound
- Provides the sound's data
- Sequencer - Hook for
sequencer.ready
is becoming deprecated in favor forsequencerReady
- Sequencer - Vastly improved the speed of the Database Viewer (thanks to Naito#1235 on discord!)
- Effects - Added screen space layer for UI effects!
- Added
.screenSpace()
which causes the effect to be played on the screen rather than in the game canvas - Added
.screenSpaceAnchor()
which causes the effect to anchor itself to a side on the screen space layer - Added
.screenSpacePosition()
, pretty straightforward what this does, sets the position of the effect in screen space - Added
.screenSpaceScale()
which can help you stretch and fit the effect to the screen, even on different screen sizes
- Added
- Effects - Added
.spriteAnchor()
which controls the effect's core anchor point within its container (defaults to 0.5 on X and Y) - Effects - Added support on
.atLocation()
for a secondary options object, which currently accepts:cacheLocation: boolean
- causes the given object's location to be cached immediately rather than retrieved during the Sequence's runtime
- Effects - Added
.snapToGrid()
which snaps the effect to the given location's closest grid section - Effects - Added
.scaleToObject()
which scales the effect to the bounds of the object, with an optional scalar on top of that - Effects - Added
.zeroSpriteRotation()
which causes an effect's sprite to remain un-rotated when its container rotates in animations - Effects - Tweaked
.size()
to also accept only one of height or width, the other will be automatically resized to keep the effect's ratio - Effects - Fixed
.persist()
ing effects with an end duration that doesn't loop would not properly stop at its end duration - Effects - Improved look of transparent .webm files
- Animations - Renamed
.snapToSquare()
method to.snapToGrid()
- the old method will be fully removed in 1.2.0 - Foundry - Added libwrapper patch for .webm transparency not playing correctly in Foundry
- Sequencer - Updated some sample macros
- Sequencer - The
SequencerDatabase
accessor has been removed, and is now accessible withSequencer.Database
- Sequencer - The
SequencerDatabaseViewer
accessor has been removed, and is now accessible withSequencer.DatabaseViewer
- Sequencer - The
SequencerPreloader
accessor is deprecated, and is now accessible withSequencer.Preloader
- Sequencer - Added animated space backgrounds (thanks to Keirsti on the Foundry VTT discord server)
- Sequencer - Fixed Hyperspace macro placing the hyperspace intro and out incorrectly
- Sequencer - Changed Effect Viewer icon to something less controversial
- Sequencer - Renamed
.sequence()
method on Sequences to.addSequence()
due to internal code conflicts - Effects - Added
.filter()
- was technically added in 1.0.0, but was left undocumented - Effects - Fixed
.size()
being scaled to account for grid size differences - it should now set the exact width/height in pixels
- Sequencer - Added recent Sequencer tools to the menu in the top left - you can disable these in the module settings
- Sequencer - Added
Sequencer.EffectManager
to manage persistent effects - read more here - Sequencer - Added the ability for you to implement your own Sequencer functions - read more here
- Sequencer -
SequencerDatabase
is deprecated, and is now accessible withSequencer.Database
- 1.1.0 will remove the old path entirely - Sequencer -
SequencerDatabaseViewer
is deprecated, and is now accessible withSequencer.DatabaseViewer
- 1.1.0 will remove the old path entirely - Sequencer -
SequencerPreloader
is deprecated, and is now accessible withSequencer.Preloader
- 1.1.0 will remove the old path entirely - Sequencer - Fixed Documents sometimes not properly resolving to their PlaceableObject
- Sequencer - Fixed settings not being client side - whoops
- Effects - Added
.attachTo()
which causes the effect to be attached to a given object - Effects - Added
.persist()
which causes the effect to become permanent on the canvas until removed - Effects - Added
.extraEndDuration()
which allows.persist()
-ed effects to stick around for a bit longer instead of end immediately - Effects - Tweaked
.missed()
to hit an area only facing the origin of the effect, if it had an origin and target - Effects & Sounds - Added support for wildcard paths, like
modules/jb2a_patreon/Library/1st_Level/Bardic_Inspiration/BardicInspiration_01_*_400x400.webm
- Sequencer - Fixed an issue where the preloader would sometimes fail to preload
- Effects - Fixed effects not playing on hex grids
- Effects - Fixed range-finding effects sometimes not picking the right distance
- Sequencer - Improved the search speed of the Database Viewer
- Sequencer - Fixed previewing static images through the Database Viewer
- Sequencer - Fixed bugs that caused the Database to sometimes fail registering new files
- Effects - Fixed issue where
.delay()
would incorrectly contribute towards the effect's.waitUntilFinished()
duration
- Sequencer - Fixed the database sometimes failing to get the correct file
- Sequencer - Fixed database not correctly finding range-based effects
- Effects & Sounds - Fixed
.locally()
and.forUsers()
sometimes erroneously remembering users between different effects & sounds - Effects - Fixed
.scaleIn()
would not take a custom.size()
into account - Effects - Fixed static images sometimes not playing due to duration being set to 0ms
- Sequencer - Added support for preloading files based on database paths
- Effects & Sounds - Added
.locally()
and.forUsers()
, which allow you to control which users will have the effect and sounds played for them - Effects - Improved positional handling of Tiles and TileDocuments
- Sequencer - Updated Sequencer Database Viewer layout to be more user friendly
- Effects - Fixed bug with templates and raw positions not being respected
- Sequencer - Added Sequencer Database Viewer to the module settings, it allows you to preview effects and copy any files registered with Sequencer by other modules
- Sequencer - Added client-side settings for users to be able to turn off effects and sounds being played locally
- Effects & Sounds - Fixed effects and sounds playing on scenes they did not originate from
- Effects - Added
.size()
, which sets the width and height of the effect in pixels - Effects - Added
rotate
option to.moveTowards()
, which defaults to true. If set to false, the effect will not rotate towards the end location. - Effects - Fixed duration of effects using
.moveTowards()
not being calculated correctly - Effects - Fixed static image effects' durations also not being calculated correctly
- Effects - Fixed effects failing to play static images
- Sequencer - Further small fixes to how the database registers files
- Sequencer - Removed the need for
.playIf()
to have to be given a function or a boolean - Sequencer - Fixed issues with the database when files were listed in arrays
Breaking:
- Effects -
.JB2A()
has been altered to set the gridsize to 200, as it was previously set to 100 - this will halve the size all JB2A on-the-spot effects, sorry!
Additions:
- Sequencer - Added
SequencerPreloader
- you can now preload images, effects, and sounds for your players, read more on the docs - Sequencer - Added support for templates and time ranges in database structure, more info on the docs
- Effects - Added support for static images such as webp, pngs, jpgs, etc
- Effects & Sounds - Added
.startTime()
,.startTimePerc()
,.endTime()
,.endTimePerc()
, and.timeRange()
, more info on the docs - Sounds - Added
.addOverride()
,.baseFolder()
, and.setMustache()
support to sounds
Updates & Fixes:
- Sequencer -
.play()
now reliably resolves its promise at the end of the entire sequence - Effects - Vastly improved effect caching and loading speed of effects and sounds
- Effects - Improved object position handling slightly when providing non-foundry class objects to
.atLocation()
and alike - Effects - Generally improved compatibility with
TokenDocument
and Foundry D&D 5E documents when getting their positions
- Effects - Added
.addPostOverride()
as an alternative to.addOverride()
, which executes at the end of the effect data sanitation - Effects - Fixed
.gridSize()
,.startPoint()
, and.endPoint()
not being respected and being overridden by internal logic
- Macros - Fixed macros throwing error when playing sequence
- Effects - Fixed templates sometimes not being found
- Effects - Re-added backwards compatibility with old macros that still use
data.distance
in overrides
- Sequencer - Added alpha version of the Sequencer Database Viewer
- Effects - Added
.randomOffset()
which can add a random offset similar to.missed()
, but within the bounds of the target token / tile / other. Check out the docs! - Effects - Fixed
.waitUntilFinished()
not being respected - Effects - Fixed
.offset()
throwing an error about a missing function - Effects - Fixed
.repeats()
throwing an error, because the entire function went missing in the last update >.>
- Effects - Fixed effects sometimes not playing
- Effects - Fixed melee attacks not picking the right JB2A template
- Sequencer - Added sound to the Hyperspeed Sample thanks to the wonderful AurelTristen over at HellScape Tabletop Assets (even though they're not specifically focused on sound effects)
- Effects - Fixed major issue with JB2A templates, causing effects to pick the wrong ranged attacks & other shenanigans
- Effects - Fixed effect scale inconsistencies across scenes with different grid sizes
- Sequencer - Removed support for Foundry Version 0.7.x
- Sequencer - Refactored animations into a dedicated animation engine
- Effects - Added support for static image effects (.jpeg, .png, etc)
- Effects - Fixed grid size sometimes not being taken into account when playing effects with
.reachTowards()
- Sounds - Vastly improved and fixed sound implementation, big thanks to ghost#2000!
- Sounds - Removed support for
.fadeIn()
and.fadeOut()
in Sounds
- Sequencer - Added two sample scenes with macros and accompanying art:
- An animated Oujia board made by md-mention2reply
- A Star Wars inspired hyperspeed scene-switching scene, effects, and macro
- Sequencer - Removed Token Ease as dependency until we can solve its conflicts with other modules
- Effects - Fixed effects not auto-centering on tokens
- Effects - Fixed effects not finding the proper location when a previous effect's
.name()
was given - Animations - Fixed
.rotate()
,.opacity()
, and.volume()
, now they work even without having to use their respective in/out functions
- Sequencer - Module now depends on Token Ease
- Sequencer - Added the Sequencer Database to help content creators! Read more on the database documentation how to use it!
- Effects & Sounds - Added support for database collections to the
.file()
method - more info can be found in the docs - Animations, Effects & Sounds - Added the following functions:
.audioVolume()
.fadeInAudio()
.fadeOutAudio()
- Effects - Added support for delays on these methods (e.g. a delay of -500 means it will finish 500ms before the end of the duration):
.rotateOut()
.fadeOut()
.scaleOut()
.fadeOutAudio()
- Animations - Fixed
.rotateTowards()
to properly rotate towards the target without having to add an offset to properly line them up - Effects - Made effects more intelligent when determining locations when given partial object data with
id
collections - Effects - Fixed issues surrounding delays and fades
- Sounds -
.fadeIn()
and.fadeOut()
will become deprecated in a future version, please switch to.fadeInAudio()
and.fadeOutAudio()
- Effects - Fixed effects not playing on tokens on 0.7.10 and below
- Effects - Added
.offset()
so that you can offset the effect - an optional parameter allows you to offset in local or canvas space - Animations - Added
.snapToSquare()
, which causes the given object to be snapped to the square it is moving or teleported towards - Animations - Fixed
.rotateIn()
and.rotateOut()
not properly calculating rotation - Animations - Adjusted
.rotateTowards()
to instead consider the target position as the rotation origin, rather than the object's current position
- Animations - Added
.animation()
section - animate tokens and tiles! Check out the documentation how to use it! - Effects - Added official support for tiles in
.atLocation()
,.moveTowards()
, etc - Effects - Tweaked how effects get locations when dealing with raw template data
- Sequencer - Added
.sequence()
so you can combine multiple sequences into one - Sequencer - Updated all sample macros to 0.8.x conventions
- Effects - Removed error catch in
.file()
when providing it with something else than string or array - Effects - Fixed
.belowTokens()
and.belowTiles()
throwing errors if no boolean was provided
- Effects - Added
.rotate()
which adds an offset to the effect's rotation - Effects - Fixed
.moveTowards()
not respecting given easing
- Sequencer - Breaking Changes: Removed deprecated
.then()
method - Sequencer - Tweaked
.play()
to now return a promise - Sequencer - Reworked module class structure
- Sequencer - Added debug setting
- Sequencer - Renamed
.then()
to.thenDo()
due to JavaScript reasons —.then()
will be removed in 0.4.1 - Sequencer - Removed the requirement to pass
true
as a second argument to.then()
(now.thenDo()
) if the function was async, it will now wait for it to finish if it is anasync function
- Effects - Added
.mirrorX()
and.mirrorY()
to mirror the effect on that axis - Effects - Improved
.JB2A()
to better handle melee weapon attacks - Effects - Tweaked
.belowTiles()
and.belowTokens()
to accept an optional boolean parameter whether the effect should play behind the respective element - Effects - Tweaked effects to assume that .webms have a base 100px internal grid for size consistency
- Effects - Fixed ANOTHER bug with
.belowTiles()
sometimes not playing below tiles
- Effects - Added
.opacity()
which controls the alpha of the effect being played - Effects - Fixed bug with
.belowTiles()
sometimes not playing below tiles
- Effects - Added
.belowTiles()
to play effects below tiles - Effects - Implemented better order handling - the effects created first will always be on top, each subsequent effect will be played below the previous
- Effects - Added
.zIndex()
for you to have direct control over the order of effects - Effects & Sounds - Added
.duration()
which can override the duration of an effect or sound - Effects & Sounds - Tweaked
.waitUntilFinished()
to accept a single number parameter as a delay or to end the effect or sound earlier - read more in the documentation - Sounds - Added support for
.fadeIn()
and.fadeOut()
- easing sadly doesn't work for sounds yet
- Sequencer - Added macro pack containing examples of Sequencer usages
- Effects - Added the following animated functions:
.scaleIn()
.scaleOut()
.rotateIn()
.rotateOut()
- All of these can utilize any of the easings listed here: https://easings.net/
- Read the documentation how to use these
- Effects - Added better error reporting when something goes wrong in the sequence
- Effects - Fixed bug with scale sometimes overriding
.reachTowards()
- Effects - Added
.belowTokens()
so you can now play effects, well, below tokens - Effects - Fixed effects not replicating properly (AGAIN)
- Effects - Fixed effects not being able to use
.name()
d effects if they didn't miss - now any effect can be named and be used in future effects
- Effects - Fixed effects that were supposed to be once-off instead looping
- Effects - Added
.moveTowards()
and.moveSpeed()
for missile-like behavior - Effects - Tweaked the way the effects layer is applied to the canvas' layers
- Effects - Fixed major issue with the way effects that were using
.missed()
and.name()
were cached - Sequencer - Removed stray debug code
- Effects - Added
.fadeIn()
and.fadeOut()
- you can now make your effects look slightly nicer! - Effects - Added support for cone and line templates with
.reachTowards()
and.rotateTowards()
- it now reaches towards the end point of the template - Effects - Added
.name()
to effects - this will cause the effect's position to be stored and can then be used with.atLocation()
,.reachTowards()
, and.rotateTowards()
to refer to previous effects' locations- Example: naming an impact effect with
.name("hit_location")
and making it miss with.missed()
, and then have a subsequent effect use.rotateTowards("hit_location")
to rotate towards the previous effect's calculated location
- Example: naming an impact effect with
- Effects - Fixed
.scale()
bug that caused it to not properly set the scale and then cause an error upon calling.play()
- Effects - Removed
.moves()
for future implementation - Sequencer - Tweaked
.async()
and.waitUntilFinished()
handling- They now act the same on effect and sounds that only play once, but if it
.repeats()
,.async()
causes the effect or sound to wait between each repetition,.waitUntilFinished()
causes the sequencer to wait until the effect or sound has finished executing all of its repetitions, which may or may not wait for each effect or sound to play with.async()
- They now act the same on effect and sounds that only play once, but if it
- Sequencer - Calling
.play()
now returns the sequence - Sequencer - Removed
FXMaster
dependency and implemented a custom canvas layer and effects class
- Sequencer - Fixed
.wait()
breaking due to the.async()
and.waitUntilFinished()
swap
- Effects - Fixed issue that caused the wrong scale to be applied when using
.reachTowards()
- Effects - Added
.playIf()
(docs); this allows you to completely ignore playing an effect or sound, depending on a boolean or a function - Sounds - Added support for
.async()
and.waitUntilFinished()
for sounds - requires both to betrue
due to code weirdness, I'll be refactoring this in the future - Effects - Refactored
.scale()
when it was provided with a minimum and maximum value, it now randomizes the scale of the effect when executed instead of when the method was called - Effects & Sounds - Refactored
.file()
for both effects and sounds so that providing an array of files no longer immediately picks one from the array, but randomly picks a file each time the section is executed - Effects & Sounds - Refactored how
.delay()
interacted with.repeats()
, which should result in more consistent behavior - Sequencer - Swapped the functionality of
.async()
and.waitUntilFinished()
, and clarified in the docs - Sequencer - Added support for random range within a
.wait()
block (like,.wait(500, 1000)
etc)
- Effects - Added
.playbackRate()
to effects, you can now speed up the play rate of your effects - Sequencer - Tweaked internal handling of
.async()
together with.waitUntilFinished()
improved - Sequencer - Tweaked to use
ready
instead ofinit
to load module
- Effects - Refactored
.randomizeMirror()
into.randomizeMirrorX()
and.randomizeMirrorY()
- Effects - Refactored scaling algorithm for
.reachTowards()
- Sequencer - Added support for random
.wait()
interval
- Effects - Refactored
.aimTowards()
into.rotateTowards()
and.reachTowards()
- Effects - Refactored how
.missed()
chooses the location to hit and now takes token size into account - Effects - Added
.JB2A()
to automatically set the effect to handle their sprites in the best way possible - Effects - Added
.randomizeMirror()
to randomly mirror sprites on the Y axis - Effects - Added Mustache support in file names
- Sequencer - Added support for executing macros
- Sequencer - Added support for playing sounds
- Sequencer - Wrapped classes in proxies to simplify fluid interface (gets rid of
.done()
on effects and sounds)
- First implementation