Mike Welsh
9901738249
chore: Appease rustfmt
2020-12-07 10:35:40 -08:00
relrelb
989bfb8f3e
avm1: Improve loops treatment in Sound.start
...
The second argument of Sound.start, loops, can be greater than
std::u16::MAX, but previously greater values were treated as 1.
Ideally, the solution is to respect those values, but since SoundInfo
holds a u16, a short-term solution is to treat them as std::u16::MAX
instead.
2020-12-06 14:22:38 -08:00
Mike Welsh
16b9c77d02
core: Remove panic in morph shape lerp
2020-12-05 00:19:30 -08:00
dependabot-preview[bot]
f45fa80e29
build(deps): bump smallvec from 1.5.0 to 1.5.1
...
Bumps [smallvec](https://github.com/servo/rust-smallvec ) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/servo/rust-smallvec/releases )
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.5.0...v1.5.1 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-04 17:54:47 -08:00
bbb651
92bd0874e1
Fixed "Swap" only working for i32
2020-12-03 15:51:37 -08:00
bbb651
8baf35e7af
Added AVM2 op "Swap"
2020-12-03 15:51:37 -08:00
Mike Welsh
758a32f5f0
core: Remove unimplemented! in decode_define_bits_lossless
2020-12-02 23:58:03 -08:00
Zeh Fernando
c018ac065c
tests: Add test for MovieClip._lockroot in avm1
2020-12-02 11:59:01 -08:00
Mike Welsh
a0d56aad44
core: Don't panic on DefineFont4
2020-12-01 23:01:35 -08:00
Mike Welsh
25e7ec99a0
core: Handle serializing arrays in SharedObjects
2020-11-30 22:15:34 -08:00
Mike Welsh
ad5028817a
core: Remove unnecssary parameter from Button::set_state
2020-11-30 01:15:43 -08:00
Mike Welsh
0d79d85d83
avm1: Fix MovieClip properties being attached to Object.prototype
2020-11-30 01:15:43 -08:00
Mike Welsh
aedddd29ab
avm1: Implement Button.enabled and MovieClip.enabled
2020-11-30 01:15:43 -08:00
dependabot-preview[bot]
827a8ee18d
build(deps): bump syn from 1.0.52 to 1.0.53
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.52 to 1.0.53.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.52...1.0.53 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-29 22:46:08 -08:00
Mike Welsh
ab200b6dc0
avm1: Don't fire button events when invisible ( fix #1521 )
2020-11-29 12:47:36 -08:00
Mike Welsh
dafe7e5027
avm1: Implement Key.getAscii
2020-11-29 02:31:10 -08:00
Mike Welsh
18addef831
core: Don't run stream sounds when stopped ( fix #1719 )
2020-11-27 21:11:15 -08:00
dependabot-preview[bot]
3d9ebbde9c
build(deps): bump syn from 1.0.51 to 1.0.52
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.51 to 1.0.52.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.51...1.0.52 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-27 15:46:54 -08:00
David Wendt
a978b649b9
core: Also gate the `set_parent` change on `remove_range` just in case
2020-11-27 13:23:34 -08:00
David Wendt
0f1d4d5248
core: Always remove children from their old render list positions regardless of what depth list position they had
2020-11-27 13:23:34 -08:00
David Wendt
e69e6fcc5e
core: Fix regression on Super Mario 63
2020-11-27 13:23:34 -08:00
David Wendt
6e565d4da2
core: Fix compliation error caused by the `TDisplayObjectContainer` refactor
2020-11-27 13:23:34 -08:00
David Wendt
5a2f17a642
core: Consistently refer to render list positions as an `index` for consistency with Rust naming conventions
2020-11-27 13:23:34 -08:00
David Wendt
c011c028de
avm2: Correctly coerce render list indicies as `i32`, not `u32`.
2020-11-27 13:23:34 -08:00
David Wendt
01539baf5d
core: Move `render_children` into `TDisplayObjectContainer`.
2020-11-27 13:23:34 -08:00
David Wendt
ba311dd5b4
core: Remove previous changes to make certain `DisplayObject` methods take `&mut self`, which noises up the PR
2020-11-27 13:23:34 -08:00
David Wendt
6d992e239a
core: Re-fix #1580 as it's fix didn't make it into the `DisplayObjectContainer` refactor the first time
2020-11-27 13:23:34 -08:00
David Wendt
8764831533
chore: cargo 1.47 changed the formatting algorithm
2020-11-27 13:23:34 -08:00
David Wendt
365601f2d9
core: New-depth children should always be placed before higher children, not after lower ones.
...
We will call this the "before-above" rule, to contrast with the previous "after-below" behavior. The main difference is how off-depth-list children are handled, which more closely matches AVM2.
The previous implementation of after-below wouldn't work unless we made the fallback case of not having a below child put it to the *end* of the list. This gave us test pass but broke animations. The first one I tried, Cirno's Perfect Math Class, prepends the entire depth list, which with the half-broken after-below behavior wound up appending to the render list.
There isn't an inverse problem with before-below and the end of the list, since we cover that case and we don't have to put weird exceptions.
2020-11-27 13:23:34 -08:00
David Wendt
74b50f2586
core: AVM2-locked children should still be removable from the depth list.
2020-11-27 13:23:34 -08:00
David Wendt
3769d24715
core: Fix incorrect placement of clips where depth placements intended to place objects at the bottom of the list instead placed them at the top.
2020-11-27 13:23:34 -08:00
David Wendt
35bc43cce2
avm2: Swapping children should lock them from depth manipulation.
2020-11-27 13:23:34 -08:00
David Wendt
c8cd4a9192
avm2: Remove outdated documentation on some internal functions.
2020-11-27 13:23:34 -08:00
David Wendt
6cb3ff9632
avm2: Stub `getObjectsUnderPoint` and `areInaccessibleObjectsUnderPoint` as we do not yet support the `Point` class
2020-11-27 13:23:34 -08:00
David Wendt
fec4e3c0a9
core: Replace direct container manipulation with `TDisplayObjectContainer` methods wherever possible.
...
The purpose of this refactor is twofold:
1. Ensure `TDisplayObjectContainer` holds all the container methods we need
2. Ensure that future adjustments to trait methods automatically apply to the display object's own use of the container, in case we want to do things in those methods that can't be done in a borrowed container
There are two places where we cannot use the new trait methods:
1. `Button.set_state` as it holds a borrow at the point we want to clear the container
2. `MovieClipData.goto_remove_object`, since it's a method on the data and thus cannot access trait methods
This particular commit generates a lot of noise as several `DisplayObject` methods were incorrectly marked as non-mutating.
2020-11-27 13:23:34 -08:00
David Wendt
9dde91e0fd
core: Store named children on AVM2 movieclips as object properties
2020-11-27 13:23:34 -08:00
David Wendt
86e1037940
avm2: Implement `stopAllMovieClips`
2020-11-27 13:23:34 -08:00
David Wendt
3cac03857c
chore: Clippy beta compliance
2020-11-27 13:23:34 -08:00
David Wendt
cad2c4ecee
tests: Add a button child execution order test.
2020-11-27 13:23:34 -08:00
David Wendt
e2e598edde
avm2: Implement `swapChildren` and `swapChildrenAt`.
2020-11-27 13:23:34 -08:00
David Wendt
71cdbd7194
avm2: Implement `setChildIndex`
2020-11-27 13:23:34 -08:00
David Wendt
cf0ab2d82f
avm2: Implement `removeChildren`.
...
This also changes the underlying `DisplayObjectContainer` method to accept any type of range. Turns out enum trait objects aren't actually trait objects and don't need to worry about object safety!
2020-11-27 13:23:34 -08:00
David Wendt
38fd29ae5f
avm2: Implement `removeChildAt`
2020-11-27 13:23:34 -08:00
David Wendt
c97ff2b024
core: Implement remove-by-range functionality
2020-11-27 13:23:34 -08:00
David Wendt
495dcf9d05
core: Remove direct execution list head manipulation and the `replace_at_depth` flag that indicates that it has occured.
...
Depending on how I'm reading the old code I replaced, it appeared to be constructing execution lists backwards. I have no idea if this was intended behavior or not. If so, then I'll need to add reverse-add capability to `replace_at_depth`.
2020-11-27 13:23:34 -08:00
David Wendt
80d7409fc5
core: Separate off container management into a separate `DisplayObjectContainer` trait
2020-11-27 13:23:34 -08:00
David Wendt
fed28a7b46
chore: Add `Default` for `ChildContainer` as per clippy
2020-11-27 13:23:34 -08:00
David Wendt
759a590d76
avm2: Implement `getChildIndex`
2020-11-27 13:23:34 -08:00
David Wendt
2454287342
tests: Enable the `removeChild` test that tests timeline manipulation.
2020-11-27 13:23:34 -08:00
David Wendt
85fa8f327d
avm2: Impl `contains` w/ test
2020-11-27 13:23:34 -08:00