David Wendt
02e05e3d7f
Add separate scope object for each script.
2020-10-17 03:32:09 -07:00
Mike Welsh
4558be948e
render: Fix masking issues on wgpu/webgl backends
...
Change the usage of the stencil buffer to avoid running out of
stencil bits when too many nested masks are active.
This also cleans things up on wgpu which requires us to make
pipeline states in advice; now we only need a few stencil states
for masking as opposed to hundreds.
2020-10-17 02:42:56 -07:00
Mike Welsh
97a3ef73a3
tests: Add tests for issue #893
2020-10-15 00:10:55 -07:00
Mike Welsh
e66b71817b
avm1: Stop execution if base clip is removed ( fix #893 )
...
Stop execution of the current stack frame if the base clip was
removed (for example, due to a goto).
2020-10-15 00:10:55 -07:00
Nathan Adams
6d9155477c
core: Add flashvars support - #312
2020-10-12 15:28:16 -07:00
Mike Welsh
a6b952e44e
core: Switch from libflate to flate2
2020-10-12 13:47:35 -07:00
Mike Welsh
2c2aa82730
chore: Remove debug message
2020-10-12 13:30:03 -07:00
Nathan Adams
fd6431f724
core: Don't use std Instant as it doesn't work for web, use a wrapper
2020-10-11 13:34:15 -07:00
Nathan Adams
4abd02e2f7
core: Implement a timeout for script execution, defaulting to 15 seconds. Fixes #554
2020-10-11 13:34:15 -07:00
Mike Welsh
137ac2887e
core: Don't mouse pick children when invisible ( fix #1242 )
2020-10-11 04:10:25 -07:00
Mike Welsh
2c9cf6802d
core: Squelch false AS3 error before initial SWF loads
2020-10-10 19:28:01 -07:00
Mike Welsh
5c3dd25638
avm1: Avoid unwrap in Sound constructor
...
At least avoid the panic in this case, but it can possibly fail
(see #701 ).
2020-10-10 18:13:08 -07:00
dependabot-preview[bot]
2c2a70e714
build(deps): bump syn from 1.0.43 to 1.0.44
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.43 to 1.0.44.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.43...1.0.44 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-10 16:35:50 -07:00
Mike Welsh
23660e49c9
core: Avoid panic due to invalid style IDs
...
If the shape converter encountered a fill/line style with an
ID > the number of styles, Ruffle would panic as it tried to grab
the non-existent style. This could occur if we mis-parsed some
shape data, or the SWF contained incorrect data. Now we the invalid
style is gracefully ignored.
2020-10-10 16:35:37 -07:00
Mike Welsh
10aaae9247
chore: Appease nightly clippy
2020-10-10 00:03:25 -07:00
dependabot-preview[bot]
4af9632761
build(deps): bump syn from 1.0.42 to 1.0.43
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.42 to 1.0.43.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.42...1.0.43 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-09 12:22:43 -07:00
David Wendt
5abebd5433
avm2: Yield an error if the caller specifies a label/scene pair and the label is not present within the scene.
2020-10-06 06:03:22 -07:00
David Wendt
1a10f1e004
avm2: Lock old movies (SWFv8 and earlier) to always use AVM1
2020-10-06 06:03:22 -07:00
David Wendt
693e56dc67
core: Always instantiate a new movie's library before creating it's root movieclip.
2020-10-06 06:03:22 -07:00
David Wendt
7c719bfb0c
Only the first tag in a SWF file should be trusted to deliver file attributes.
2020-10-06 06:03:22 -07:00
David Wendt
ddccede9d3
avm2: Make VM type non-optional.
...
This has the side effect of forcing the AVM check to happen at the time of library construction, which is already very early on in movie loading.
2020-10-06 06:03:22 -07:00
David Wendt
ef665acaec
avm2: Movie clips not explicitly granted a `symbol_class` should be constructed using the `MovieClip` class directly
2020-10-06 06:03:22 -07:00
David Wendt
12cf8022cd
core: Remove useless uses of `matches!`.
2020-10-06 06:03:22 -07:00
David Wendt
007d54b389
avm2: Remove redundant implementations of `prev_frame` and `next_frame`
2020-10-06 06:03:22 -07:00
David Wendt
4c44ca8e77
avm2: Non-integer numbers should be handled as strings and integer-parsible strings should be handled as numbers.
2020-10-06 06:03:22 -07:00
David Wendt
e2f21d0a7d
avm2: Retire old references to the "VM tendency" nomenclature
2020-10-06 06:03:22 -07:00
David Wendt
896a5b37a5
avm2: Implement `new MovieClip()`.
2020-10-06 06:03:22 -07:00
David Wendt
d399811eb8
avm2: Allow `MovieClip` to be constructed by users.
2020-10-06 06:03:22 -07:00
David Wendt
50dd9a6733
avm2: Implement the programmatically-playing flag that governs `isPlaying` behavior.
2020-10-06 06:03:22 -07:00
David Wendt
035c841eb5
tests: Add tests for `gotoAndStop` and rename the `gotoAndPlay` one
2020-10-06 06:03:22 -07:00
David Wendt
1f29497b8c
tests: Add test for AS3 movieclip play
2020-10-06 06:03:22 -07:00
David Wendt
8152400a39
avm2: Implement `MovieClip.scenes`.
2020-10-06 06:03:22 -07:00
David Wendt
c682868205
avm2: Implement `MovieClip.currentScene`
2020-10-06 06:03:22 -07:00
David Wendt
2483201bcd
avm2: Store the lengths of each scene in a movie.
2020-10-06 06:03:22 -07:00
David Wendt
8a13d5fe10
avm2: Implement `Scene` object.
2020-10-06 06:03:22 -07:00
David Wendt
5e31c44b81
All objects should default to `toString`ing with their own classname.
2020-10-06 06:03:22 -07:00
David Wendt
de186ed5f3
avm2: Implement `MovieClip.currentLabels`
2020-10-06 06:03:22 -07:00
David Wendt
77a86aef9b
avm2: Implement `FrameLabel`.
2020-10-06 06:03:22 -07:00
David Wendt
86b07c0007
tests: Add tests for `prevScene` and `nextScene`.
2020-10-06 06:03:22 -07:00
David Wendt
542147d657
avm2: Run all AVM2 frame scripts on the action queue.
...
This is the same way that AVM1 actions run and it appears that frame scripts work exactly the same way. It fixes all outstanding bugs with movie clip navigation in AVM2 and allows me to remove a lot of weird workarounds I was writing for the old, incorrect behavior.
I'm also removing the "last run script frame" rule as `run_frame_internal` already had rules to prevent stopped clips from rerunning actions.
2020-10-06 06:03:22 -07:00
David Wendt
996d7528d5
avm2: Implement `prevScene` and `nextScene`.
2020-10-06 06:03:22 -07:00
David Wendt
864c6a37f9
avm2: Dynamic properties should be retrievable before they are actually set.
2020-10-06 06:03:22 -07:00
David Wendt
6d0befad97
avm2: Implement `prevFrame` and `nextFrame`, with tests.
2020-10-06 06:03:22 -07:00
David Wendt
bcf08b5bf7
avm2: Frame scripts should run when the frame number has changed, regardless of playhead state.
2020-10-06 06:03:22 -07:00
David Wendt
97048fb8bd
avm2: Implement `stop` and `play`, with tests for the former.
2020-10-06 06:03:22 -07:00
David Wendt
c8cd4d09cd
core: Don't run frame scripts on stopped movie clips.
2020-10-06 06:03:22 -07:00
David Wendt
556c951b1c
avm2: Implement `gotoAndPlay`/`gotoAndStop`, with test.
2020-10-06 06:03:22 -07:00
David Wendt
3513918149
avm2: Allow typechecking by prototype, rather than just by constructor.
2020-10-06 06:03:22 -07:00
David Wendt
e837840bba
core: Always skip frames after the current frame when getting the current scene or label.
2020-10-06 06:03:22 -07:00
David Wendt
5b83f6b4cc
avm2: Add test for movieclip-specific properties.
2020-10-06 06:03:22 -07:00