Lord-McSweeney
b848ab6860
Fix stub in DisplayObjectContainer
...
In mouse_children
2023-02-13 00:42:28 +01:00
Lord-McSweeney
eb7a96f55b
Fix stub types in security.rs
...
Change from avm2_stub_getter to avm2_stub_method
2023-02-13 00:42:28 +01:00
Adrian Wielgosik
561e118ffe
avm2: Export private traits normally, remove private_trait_scripts hack
2023-02-12 17:49:14 +01:00
Adrian Wielgosik
f717b99599
avm2: Compare private namespaces by pointer. Refactor rust-avm field sharing.
2023-02-12 17:49:14 +01:00
Adrian Wielgosik
e0e653e463
avm2: make Namespace a GC type
2023-02-12 17:49:14 +01:00
Aaron Hill
4e0dce2efa
core: Make SandboxType configurable, and set to 'remote' on web
...
The Newgrounds API checks `Security.sandboxType` to see if it should
run in debug mode or not (which determines whether or not medals
can actually be unlocked).
For now, desktop continues to use `localTrusted` as the default,
while web now uses `remote`. We might want to make this configurable
at some point, but this should be good enough for now (and better
match Flash's behavior).
2023-02-11 14:44:11 -06:00
Aaron Hill
9bce6b78d5
core: Queue up Sound and SoundChannel methods during loading
...
Flash supports calling `Sound.play`, `SoundChannel.stop`, and
`SoundChannel.soundTransform` while a sound load is in progress
(e.g. immediately after calling `Sound.load`).
To support this, we queue up information inside `SoundObject`
and `SoundChannelObject` when a load is in progress. When a load
completes, we trigger any queued `Sound.play` and `SoundChannel.stop`
calls, and apply the most recent `SoundChannel.soundTransform`
2023-02-11 11:53:56 -06:00
Aaron Hill
51fe1e9754
core: Handle `DirtyState::CpuModified` in `overwrite_cpu_pixels`
...
If we're going to overwrite the CPU pixels with the result of a
GPU operation, make sure the GPU texture is up to date with the
latest CPU pixels. I've also renamed the method to
`overwrite_cpu_pixels_from_gpu` to better reflect how it should
be used.
2023-02-11 11:37:00 -06:00
Bale
73e9fd55fb
avm2: Make sure scripts get initialized after all scripts have been loaded when lazy init is disabled ( #9478 )
...
* avm2: Initialize scripts **after** all scripts have been loaded
* tests: Add test for eager initialization
2023-02-11 00:38:38 +00:00
Aaron Hill
4b76d1b32a
core: Support using URLVariables as a POST request body ( #9489 )
...
This is needed by the Newgrounds API. We don't have the ability
to make fake requests to HTTP urls in our test frameworks,
so I haven't added any tests for this. However, I tested locally
that this allows the Newgrounds API to work (and got a medal
in Cloud Wars).
2023-02-11 00:18:10 +00:00
nosamu
c1fe3ded25
chore: remove unnecessary FromStr impl for LoadBehavior
2023-02-10 00:56:17 -08:00
nosamu
1a65a0942c
desktop: Add --letterbox option
2023-02-09 23:43:25 -08:00
EmperorBale
e7612f571d
avm2: Implement ScopeChain caching
2023-02-09 10:51:12 -08:00
golfinq
37ec94f95b
Avm2: Implement Stage.invalidate
2023-02-08 17:47:21 -07:00
Aaron Hill
a818dd0918
core: Use colorTransform in DisplayObject.setTransform
2023-02-08 20:56:46 +01:00
Adrian Wielgosik
61a5161a20
avm2: Convert most errors in get/set/initproperty to AVM errors
2023-02-07 18:50:15 -06:00
Adrian Wielgosik
c844d2ab6f
avm2: Only store actually-passed arguments to 'arguments'
2023-02-07 18:35:30 -06:00
Nathan Adams
ac9b6e3ecb
avm2: Mark Dictionary(true) and TimerEvent.updateAfterEvent() as stubs
2023-02-07 20:34:59 +01:00
Nathan Adams
e5f44b0f05
avm2: Replaced stubs in actionscript with new stub system
2023-02-07 20:34:59 +01:00
Nathan Adams
bdbf54ecd4
core: Added ability to mark stubs inside actionscript
2023-02-07 20:34:59 +01:00
Nathan Adams
dff558170e
avm2: Implement BitmapData.getPixels()
2023-02-07 19:10:25 +01:00
Nathan Adams
25cc6f3243
avm2: Change MovieClip::frame_scripts to Vec<Option<Avm2Object>>, where index is frame num
2023-02-07 18:26:27 +01:00
Nathan Adams
43d9c3deed
avm2: Make sure SoundChannel.soundTransform always returns a value
2023-02-07 18:26:27 +01:00
Nathan Adams
bc7773596b
avm2: addFrameScript allows null to unset the script, and only allows one script per frame
2023-02-07 18:26:27 +01:00
CUB3D
48f4df51a5
avm1: Correct depth calculation for AVM1 clips pending removal and add tests
2023-02-06 10:53:45 -07:00
CUB3D
2d11a250da
avm1: Retrieving the child of a container should prioritise lowest depth
2023-02-06 10:53:45 -07:00
CUB3D
a356be15fe
avm1: Only delay removals on AVM1, check for dynamic unload handlers
2023-02-06 10:53:45 -07:00
CUB3D
755425ebfa
avm1: Delay clip removals when a child has an unload listener
...
When removing a clip, first check if it has an unload event listener somewhere
it's hierarchy.
If it does, enqueue the removal to happen on the next frame, by moving it to a negative depth.
2023-02-06 10:53:45 -07:00
Nathan Adams
50fd7aeff5
core: Add quality options to the context menu
2023-02-06 16:08:04 +01:00
Nathan Adams
a220703618
core: Made PlayerBuilder take quality instead of setting it after the Player was made
2023-02-06 16:08:04 +01:00
Nathan Adams
d8e924affc
render: Add RenderBackend::set_quality method, and call it from core
2023-02-06 16:08:04 +01:00
Nathan Adams
12bd38b338
core: Changed Player::set_quality to take in a StageQuality directly
2023-02-06 16:08:04 +01:00
Nathan Adams
b270d1bbd7
render: Move StageQuality from core to render
2023-02-06 16:08:04 +01:00
Nathan Adams
00c7e8f634
avm2: Fixed bytearray compress/decompress methods setting position of resulting bytearray
2023-02-05 19:22:01 +01:00
Nathan Adams
e798d69299
avm2: Convert ByteArray EOF to avm error
2023-02-05 19:22:01 +01:00
Nathan Adams
c14f022837
core: Use overwrite_cpu_pixels in apply_filter
2023-02-05 18:41:43 +01:00
Nathan Adams
7476b3b0e0
avm2: Added a bunch of missing filter classes
2023-02-05 18:41:43 +01:00
Nathan Adams
42f3ee923f
avm2: Mark unsupported filters as stubs
2023-02-05 18:41:43 +01:00
Nathan Adams
3411a04cef
render: Made render specific Filter enum & structs, as swf ones don't map 1:1 to potential filters
2023-02-05 18:41:43 +01:00
Nathan Adams
b5a250e16f
render: Changed render_offscreen to return an Option instead of an Result
2023-02-05 18:41:43 +01:00
Nathan Adams
e73389aa71
wgpu: Implement blur filter
2023-02-05 18:41:43 +01:00
Nathan Adams
284a58c817
avm2: Implement BitmapData.apply_filter for ColorMatrixFilter
2023-02-05 18:41:43 +01:00
Lord-McSweeney
a369e71af6
Appease clippy again
2023-02-03 23:32:22 +01:00
Lord-McSweeney
83087f9f23
Change stubs to use new macro method
2023-02-03 23:32:22 +01:00
Lord-McSweeney
a6ea1ef4a7
Appease clippy
2023-02-03 23:32:22 +01:00
Lord-McSweeney
add115e97f
State "Stub" instead of "Implement"
...
...and fix a format issue.
2023-02-03 23:32:22 +01:00
Lord-McSweeney
963f3240f2
Stub DisplayObject.opaqueBackground
2023-02-03 23:32:22 +01:00
nosamu
12c67d5068
desktop: Improve --help messages
2023-02-03 21:17:56 +01:00
Nathan Adams
198e40fd2e
avm2: Changed return values of a bunch of stubs per PR feedbck
2023-02-01 21:45:12 +01:00
Nathan Adams
8e917c473e
avm2: Replaced stubs in Proxy with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
b28e921fb9
avm2: Replaced stubs in Keyboard with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
99e723a1cb
avm2: Replaced stubs in TextField with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
2a36f9b871
avm2: Replaced stubs in StaticText with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
ff768a1e73
avm2: Replaced stubs in Font with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
af73a1a292
avm2: Replaced stubs in Security with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
e48926799c
avm2: Replaced stubs in SharedObject with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
408482cd21
avm2: Replaced stubs in ObjectEncoding with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
69101af66b
avm2: Replaced stubs in SoundMixer with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
834ac93350
avm2: Replaced stubs in Sound with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
cb1fa72d6f
avm2: Replaced stubs in Transform with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
a576903f0c
avm2: Replaced stubs in IndexBuffer3D with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
24169a3577
avm2: Replaced stubs in Stage with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
6a6e81ad6a
avm2: Replaced stubs in LoaderInfo with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
33dbe82b4f
avm2: Replaced stubs in InteractiveObject with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
46ed595186
avm2: Replaced stubs in Graphics with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
0abfb79c62
avm2: Replaced stubs in DisplayObjectContainer with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
0e522fd58b
avm2: Replaced stubs in displayobject with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
fb0578ee26
avm2: Replaced stubs in bitmapdata with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
10ec9a1a74
avm2: Replaced stubs in namespace with new format (but still err as I don't know what to return otherwise)
2023-02-01 21:45:12 +01:00
Nathan Adams
8f53f5414c
avm2: Replaced stubs in bitmap with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
44981af409
avm1: Replaced all existing stub warnings with new stub system
2023-02-01 21:45:12 +01:00
Nathan Adams
366f8bef43
core: Add feature known_stubs to retrieve all known stubs
2023-02-01 21:45:12 +01:00
Nathan Adams
4a0529dedc
core: Add Stub and StubCollection for tracking stubs used during a movie
2023-02-01 21:45:12 +01:00
renovate[bot]
caaf6d5c87
fix(deps): update rust dependencies
2023-01-31 09:39:42 -06:00
nosamu
5ee3b821dd
core: Fix DO render tree display
2023-01-29 11:58:59 -06:00
Moulins
e36b03bce9
core::html: correctly encode text in FormatSpans::to_html
...
Fixes issue #9327
2023-01-29 11:19:16 -06:00
CUB3D
f829157deb
avm1: Defining a local that already exists on the target of a with scope, defines it on the target not the parent
2023-01-29 18:05:25 +01:00
Aaron Hill
c6eb25194e
core: Bump flash-lso to latest commit
...
This deduplicates some dependencies, and removes
a future-incompat warning from `nom`.
2023-01-29 17:31:10 +01:00
Nathan Adams
85dc100ee9
avm2: Implement Sprite.dropTarget - though it's wrong right now
2023-01-29 00:52:52 +01:00
Daniel Jacobs
6697848b92
avm1: Don't ignore mouse_pick on static text ( fix #9274 )
2023-01-29 00:39:06 +01:00
Daniel Jacobs
b00628f45d
avm2: Add warning to MouseEvent.updateAfterEvent
2023-01-28 14:31:52 -06:00
Daniel Jacobs
65a0aaeb7b
avm2: Stub MouseEvent.updateAfterEvent
...
Basically a direct copy of https://github.com/ruffle-rs/ruffle/pull/7653
2023-01-28 14:31:52 -06:00
Aaron Hill
7ba960987c
core: Display class name in ErrorObject debug impl
...
This lets us know something about the type of error
that was thrown, and doesn't require an Activation/UpdateContext.
2023-01-24 20:38:45 -06:00
TÖRÖK Attila
e77b1e379c
core/audio: mp3: Use MpaReader instead of the deprecated Mp3Reader from Symphonia
2023-01-24 20:10:40 -06:00
renovate[bot]
8b6eef1715
fix(deps): update rust dependencies
2023-01-24 20:10:40 -06:00
Daniel Jacobs
0a04b22a79
avm2: Stub simple flash.text.engine enums
2023-01-23 13:51:26 -06:00
MartySVK
ad688b45da
avm2: added Stage.fullScreenSourceRect stub ( #9265 )
...
* avm2: added Stage.fullScreenSourceRect
* fixing checks I hope
2023-01-22 16:29:12 -05:00
Aaron Hill
e2954821ea
core: Take two - delay reading image back from render backend using `SyncHandle` ( #9184 )
...
* Take two: Delay reading image back from render backend using `SyncHandle`
This allows us to avoid blocking immediately after a `BitmapData.draw` call.
Instead, we only attempt to use the `SyncHandle` when performing an operation
that requires the CPU-side pixels (e.g. BitmapData.getPixel or BitmapData.setPixel).
In the best case, the SWF will never explicitly access the pixels of
the target BitmapData, removing the need to ever copy back the render backend
image to our BitmapData. If the SWF doesn't require access to the pixels immediately,
we can delay copying the pixels until they're actually needed, hopefully allowing
the render backend to finish processing the BitmapData.draw operation in
the backenground before we need the result.
Now that the CPU and GPU pixels can be intentionally out of sync with
each other, we need to ensure that we don't accidentally expose 'stale'
CPU-side pixels to ActionScript (which needs to remain unaware of
our internal laziness). We now use a wrapper type `BitmapDataWrapper`
to enforce that the `SyncHandle` is consumed before accessing the
underlying `BitmapData.
* core: Skip GPU->CPU sync for source and target BitmapData during draw
* Introduce DirtyState enum
2023-01-21 21:08:04 +00:00
MartySVK
6d5f6385a5
avm2: added TextField.restrict stub ( #9218 )
...
* added TextField.restrict stub
Co-authored-by: Martin Mravec <marty.devil@gmail.com>
2023-01-19 22:23:33 -05:00
Adrian Wielgosik
fb4d2d3f04
avm2: Implement TextField.maxChars
2023-01-19 01:24:47 +01:00
Nathan Adams
5f72ebaef9
core: Don't call avm2 callstack method if there's no callstack
2023-01-19 00:50:56 +01:00
Nathan Adams
f5d69f5ad8
avm2: Corrected panic messages in date code
2023-01-16 21:48:00 +01:00
EmperorBale
3287173da3
avm2: Fix edge case when setting fullYear of date
2023-01-16 21:48:00 +01:00
EmperorBale
6bb079cc60
avm2: Remove some useless else statements in date
2023-01-16 21:48:00 +01:00
MrCheeze
ebe5eed143
avm2: Fix corner case when goto same frame multiple times ( close #9018 )
...
This change makes it so that if there is a goto to a specific frame,
then a frame script is registered for that frame, and then a goto to the
same frame again, the frame script will not be skipped. At least one movie
appears to depend on this behaviour.
2023-01-16 18:37:19 +01:00
nosamu
952aa2d5f9
avm2: Correct name of rollover event
2023-01-14 20:04:33 +01:00
Aaron Hill
3a6c8d9796
core: Use BitmapData instead of separate `initial_data` field
...
Now that a `Bitmap` always stores a `BitmapData`, we can read the pixels
directly from the `BitmapData`, instead of duplicating them in an
`initial_data` field
2023-01-14 01:28:22 -05:00
Aaron Hill
b5796f9016
core: Derive Default for FramePhase
2023-01-13 20:37:52 +01:00
Calvin304
6c71f5b2a6
avm2: Naive DefineButtonSound impl for Avm2Button
2023-01-11 17:45:39 -05:00
Nathan Adams
9cd850d30e
render: Make render_offscreen return a sync handle which can be used to get the texture at a later time
2023-01-11 16:53:33 -05:00
Nathan Adams
133044b06b
avm2: Fix start_drag with negative width or height
2023-01-11 00:09:01 +01:00
MrCheeze
0597ae56e6
core: Make AVM2 frame labels case sensitive
2023-01-10 11:28:56 -05:00
renovate[bot]
630558a936
fix(deps): update rust dependencies
2023-01-10 16:37:40 +01:00
Moulins
3b1c981d25
Clears the AVM1 stack after executing bytecode
...
AVM1 bytecode may leave the operand stack unbalanced, and this will
cause a slow memory leak if the stack is never cleared.
2023-01-10 14:14:17 +01:00
CUB3D
c6bd431864
avm1: Deduplicate threshold operations
2023-01-10 13:59:06 +01:00
CUB3D
ea6ea8074a
tests: Add tests for BitmapData.threshold, fix issues found as a result
2023-01-10 13:59:06 +01:00
CUB3D
70f071b347
avm1: Implement Bitmapdata.threshold
2023-01-10 13:59:06 +01:00
CUB3D
8db909a7d4
desktop: Allow specifying player version
2023-01-10 13:13:30 +01:00
MrCheeze
bf6342bd4b
avm2: Fix hitTestPoint not transforming coordinates to world space
...
This behaviour is essentially copied from avm1 movie_clip.rs's hit_test.
Seems to fix several flashes that had broken collision until now.
2023-01-10 12:53:20 +01:00
Nathan Adams
724609e323
audio: Don't panic when reading an invalid mp3, bubble the error up
2023-01-10 11:10:46 +01:00
Nathan Adams
3b24d849e7
audio: Removed unwraps in mixer.rs and replaced with reasoned expects
2023-01-10 11:10:46 +01:00
Nathan Adams
7a9e8b4771
core: Made NullNavigatorBackend no longer use unwraps
2023-01-10 11:10:46 +01:00
CUB3D
84d0111a14
avm1: Add test for with scope nesting
2023-01-10 10:34:10 +01:00
CUB3D
ca82ff65de
avm1: Defining a local in a with scope should actually define it on the parent scope
2023-01-10 10:34:10 +01:00
Nathan Adams
a37e070724
core: Use Color::WHITE for draw_rect when we don't care, as it's just identity color transform and thus cheaper
2023-01-10 09:39:28 +01:00
Nathan Adams
53d6fa4d8b
render: Make render commands take in an actual value, not ref for immediate cloning
2023-01-10 09:39:28 +01:00
Adrian Wielgosik
14ee9b43fb
avm2: Replace ok_or by ok_or_else
2023-01-09 21:01:39 +01:00
Aaron Hill
40d8751d67
avm2: Implement clipRect parameter for BitmapData.draw
2023-01-08 16:11:55 -05:00
Aaron Hill
1b71e288fd
Remove 'gc_context lifetime
...
The latest `gc-arena` makes this unnecessary - we can just
use our `'a` lifetime for `MutationContext`
2023-01-06 19:20:39 -05:00
Moulins
d332a174c3
Bump `gc-arena` to current master revision
...
This required small changes to some Debug impls that were missed in #8964
2023-01-06 18:22:43 -05:00
Nathan Adams
a7738bec69
core: Added a few simple tracing::instruments
2023-01-06 04:25:22 +01:00
Nathan Adams
13fd830e7c
core: Switch from log to tracing
2023-01-06 04:25:22 +01:00
MrCheeze
71fcd383a3
avm2: Add ctrlKey, altKey, shiftKey, controlKey properties to KeyboardEvent
2023-01-04 16:27:09 -05:00
Nathan Adams
4d948616db
avm1: Implement BitmapData.draw with blend mode, fixes #8920
2023-01-04 12:09:08 -05:00
Nathan Adams
cd550457e1
core: Made TDisplayObject::movie() no longer an Option<>
2023-01-04 08:20:08 +01:00
Nathan Adams
40a7bb04d6
core: Removed default impl of TDisplayObject::movie(), implement it everywhere
2023-01-04 08:20:08 +01:00
Aaron Hill
10491a1be9
core: Store data in `BitmapData` instead of `Bitmap`
...
This makes `Bitmap` delegate to `BitmapData` for
all of the bitmap-related information (handle, width, and height).
As a result, we now unconditionally store a `BitmapData` in `Bitmap`.
As a result, swapping the underling `BitmapData` instance will
automatically change the properties (and rendered image) of a `Bitmap`.
This required some refactoring in the render backends in order to
get access to a `BitmapHandle` through `BitmapData`.
2023-01-03 18:01:41 -07:00
MrCheeze
41df7fdc59
avm2: For old swf versions, invalid goto labels jump to frame 1 ( fix #8954 )
...
The regression test for this was edited directly in JPEXS, so there is
no corresponding fla to compile into the swf.
2023-01-03 17:10:06 -07:00
MrCheeze
77104ca473
avm2: Improve accuracy of gotoAndPlay / gotoAndStop (partially fix #8954 )
...
Partially based on AVM1 implementation, partially based on the new
regression tests added in this commit.
2023-01-03 17:10:06 -07:00
nosamu
664a86161a
avm2: Fix `for each..in` loops over Dictionary values
2023-01-03 16:52:15 -07:00
Moulins
27307d847a
core: Replace some derived Debug impls with manual ones
...
In future versions of `gc-arena`, the `Debug` impl. of `Gc`
and `GcCell` will print the pointed-to value, which will cause
derived `Debug` impls. to enter an infinite recursion.
As such, this manually implements `Debug` on types wrapping a
`Gc/GcCell` to maintain the current behavior.
2023-01-03 18:03:23 -05:00
Nathan Adams
5a7ec70254
core: Remove blend mode unsupported message
2023-01-03 03:39:13 +01:00
Nathan Adams
ded46e20e7
render: Replace PushBlendMode/PopBlendMode with Blend
2023-01-03 03:39:13 +01:00
EmperorBale
a51ffd0e9f
avm2: Strings passed to date constructor should be parsed
2023-01-02 11:43:03 -08:00
EmperorBale
ab3a1e6148
avm2: Move date parsing into a separate function
2023-01-02 11:43:03 -08:00
MrCheeze
bf18334294
avm2: Fix calling setTextFormat without providing a beginIndex and EndIndex
...
Previous behaviour defaulted to undefined and applied the format to the
range [0,0) instead of defaulting to -1 and applying the format to the
full length of the TextField.
2023-01-01 21:03:12 -08:00
Aaron Hill
9d6763510b
core: Remove redundant 'clone' calls
2022-12-31 17:13:55 -05:00
nosamu
89e01b5598
avm2: Throw error in Loader.unload stub
2022-12-29 10:50:35 +01:00
EmperorBale
ac4d74b9ed
core: Use applicationDomain specified in context if available
2022-12-28 17:25:11 -05:00
EmperorBale
7e5018331d
core: Add new `context` parameter to loader
2022-12-28 17:25:11 -05:00
dependabot[bot]
6f430bb40d
build(deps): bump serde from 1.0.151 to 1.0.152
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.151 to 1.0.152.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.151...v1.0.152 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-28 10:55:35 +02:00
David Wendt
08fed6aeaa
core: Don't attempt to set properties on parents after construction unless the child has an explicit name.
...
This already was implemented, but the prior commits broke it.
2022-12-27 20:15:49 -07:00
David Wendt
7eb0ca8ecc
core: Unconstructed display objects should be `null`, not `undefined`.
2022-12-27 20:15:49 -07:00
David Wendt
cbf2e94aba
core: Fix AVM2 buttons getting constructed with the wrong initial state.
...
This code was always wrong; and only saved from breaking by other wrong code elsewhere. Specifically:
* `SimpleButton.construct_frame` sets the wrong initial state
* but `MovieClip.instantiate_child` fires frame events before `post_instantiation`
* and `SimpleButton.post_instantiation` sets the correct state
2022-12-27 20:15:49 -07:00
David Wendt
eb0eede07d
chore: Remove unused/superceded event issue code
2022-12-27 20:15:49 -07:00
David Wendt
b6aa035663
core: Instantiating display objects on the timeline should no longer construct them.
...
This works now because all object placement and removal happens in `enter_frame`. Constructing those objects right away causes them to drop added events.
We cannot remove other instances of `construct_frame`, however - those are in places where we actually do expect constructors to run, not just see things get placed.
2022-12-27 20:15:49 -07:00
David Wendt
4b71fff745
core: Children added to AVM2 buttons should not emit added events
2022-12-27 20:15:49 -07:00
David Wendt
0d7e9cd30e
core: All display objects that can be placed by timeline need to add themselves to their parent object.
...
This also centralizes all the code we added in the prior commit into `on_construction_complete`, which should be called whenever an AVM2 object finishes construction.
2022-12-27 20:15:49 -07:00
David Wendt
1c5e97ccc6
core: Move AVM2 `PlaceObject` processing to `enter_frame`.
...
This has a few other knock-on effects:
* AVM2 added-to-timeline events are fired by each object after it constructs its AVM2 side. This is opposed to before when we fired them after object instantiation and placement. This also gets rid of a prior hack we had for the AVM2 root movie getting added to the stage - or, more accurately, adopts it for everything.
* The supercall constructor for `DisplayObject` runs `construct_frame` on all children. This matches Flash Player behavior.
NOTE: This currently breaks the `placed_with_name` check, so there's going to be a lot of spurious can't set warnings
2022-12-27 20:15:49 -07:00
dependabot[bot]
664c67ea27
build(deps): bump clap from 4.0.29 to 4.0.32
...
Bumps [clap](https://github.com/clap-rs/clap ) from 4.0.29 to 4.0.32.
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.29...v4.0.32 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 22:04:33 +01:00
Aaron Hill
6dc628e49f
core: Remove some manual `Collect` impls
...
Some were completely unused, while others could be replaced
with a `#[derive(Collect)]`
2022-12-24 00:33:25 -06:00
Adrian Wielgosik
7a09dd5639
avm2: Convert FrameLabel to AS3, remove define_indirect_properties
2022-12-22 00:45:02 +01:00
Adrian Wielgosik
e6e9c9edc2
avm2: Convert Dictionary to AS3
2022-12-21 23:56:48 +01:00
Adrian Wielgosik
e90d595cb3
avm2: Convert SharedObject to AS3
2022-12-21 22:21:23 +01:00
Adrian Wielgosik
f3ebb0c297
avm2: Convert JSON class to AS3
2022-12-21 22:21:23 +01:00
Lord-McSweeney
5cf5c8d5e5
Update Loader.as
...
Stub `flash.display.Loader.unload`
2022-12-20 16:58:55 -06:00
dependabot[bot]
d12e1ebd6e
build(deps): bump syn from 1.0.105 to 1.0.107
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.105 to 1.0.107.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.105...1.0.107 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 07:52:42 +02:00
dependabot[bot]
5383ae296d
build(deps): bump quote from 1.0.21 to 1.0.23
...
Bumps [quote](https://github.com/dtolnay/quote ) from 1.0.21 to 1.0.23.
- [Release notes](https://github.com/dtolnay/quote/releases )
- [Commits](https://github.com/dtolnay/quote/compare/1.0.21...1.0.23 )
---
updated-dependencies:
- dependency-name: quote
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 07:29:38 +02:00
dependabot[bot]
9db6ace65f
build(deps): bump serde from 1.0.150 to 1.0.151
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.150 to 1.0.151.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.150...v1.0.151 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 00:48:45 +01:00
dependabot[bot]
08566ed4ba
build(deps): bump proc-macro2 from 1.0.47 to 1.0.49
...
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2 ) from 1.0.47 to 1.0.49.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.47...1.0.49 )
---
updated-dependencies:
- dependency-name: proc-macro2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 00:20:20 +01:00
dependabot[bot]
502b03a882
build(deps): bump rustversion from 1.0.9 to 1.0.11
...
Bumps [rustversion](https://github.com/dtolnay/rustversion ) from 1.0.9 to 1.0.11.
- [Release notes](https://github.com/dtolnay/rustversion/releases )
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.9...1.0.11 )
---
updated-dependencies:
- dependency-name: rustversion
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-19 21:37:54 +01:00
CUB3D
7b564ccd97
avm2: Stub registerClassAlias
2022-12-19 11:06:52 -08:00
Adrian Wielgosik
24a6f74b3c
avm2: Convert Proxy to AS3
2022-12-19 18:25:25 +01:00
Adrian Wielgosik
96950f424e
avm2: Stub InteractiveObject.focusRect
2022-12-18 14:36:08 -07:00
CUB3D
80cf98f501
avm2: Check for state parent in hit_test_shape as well as mouse_pick
2022-12-18 13:32:24 -07:00
CUB3D
2edbe3092b
avm2: Ignore mouse_pick on static text
2022-12-18 13:32:24 -07:00
CUB3D
b46a4186ab
chore: Fmt
2022-12-18 13:32:24 -07:00
CUB3D
6f214c2165
chore: Fix clippy lint
2022-12-18 13:32:24 -07:00
CUB3D
ef9483d961
avm2: hitTestPoint requires do to be on stage, only if shape_flag=true
2022-12-18 13:32:24 -07:00
CUB3D
d7156e9a58
avm2: Dont transform mouse_pick point in button if hit_area has a parent
2022-12-18 13:32:24 -07:00
CUB3D
55926932e0
avm2: MouseUpInside clip events should be handled by avm2 buttons
2022-12-18 13:32:24 -07:00
CUB3D
8ddba5432c
avm2: hitTestPoint requires the object to be on the stage
2022-12-18 13:32:24 -07:00
CUB3D
1013a6a162
avm2: Button bounds_with_transform should include bounds of current state child
2022-12-18 13:32:24 -07:00
CUB3D
391b3a9dfb
avm2: Selecting the child of a SimpleButton should select the button, not the child
...
This fixes ingame menu buttons in BLOCnog
2022-12-18 13:32:24 -07:00
CUB3D
fa44d61bc5
avm2: MouseEnabled shouldn't affect abillity to select children
...
Fixes #8694
2022-12-18 13:32:24 -07:00
CUB3D
690191dbdf
avm2: Fix SimpleButton bounds
2022-12-18 13:32:24 -07:00
CUB3D
f1401d6837
avm2: Fix hittests on depth=0 children
2022-12-18 13:32:24 -07:00
Mike Welsh
c30eb38741
audio: Rename symphonia feature to mp3
2022-12-17 22:48:42 -08:00
Mike Welsh
d162363c2f
audio: Remove minimp3 feature
2022-12-17 22:48:42 -08:00
Moulins
625f09a91a
avm1: remove unused GcCell in ArrayObject and SuperObject
2022-12-17 21:12:43 -08:00
Moulins
62e64c714e
avm1: remove most of the contents of impl_custom_object! macro
...
The delegating methods are moved to default implementations on the
TObject trait, delegating to self.raw_script_object()
2022-12-17 21:12:43 -08:00
Moulins
eadbf92454
avm1: rename TObject::{as => raw}_script_object & remove Option in ret. type
...
Usage of TObject::as_script_object was always followed by an unwrap, and
only SuperObject returned None.
The name change is intended to make clearer the fact that using the
returned object may bypass special behavior.
2022-12-17 21:12:43 -08:00
David Wendt
1255bf1c59
core: Don't fire init events on AVM2 until the first frame has been constructed.
2022-12-17 20:47:49 -08:00
Mike Welsh
696c9062d3
chore: Inherit cargo metadata from workspace
...
Use workspace inheritance added in Rust 1.64 to de-duplicate
various settings across all packages.
2022-12-16 15:53:59 -08:00
Adrian Wielgosik
870745e0ef
avm2: Make pop_stack #[must_use]
2022-12-16 14:40:22 -08:00
Adrian Wielgosik
7df920b255
avm2: Support indexing with QNames
2022-12-16 14:40:22 -08:00
Adrian Wielgosik
d2dfdb9a0b
avm2: Collapse PackageNamespace to Namespace
2022-12-16 12:51:01 -08:00
relrelb
14747f26fd
chore: Fix `clippy::uninlined_format_args` for `avm_debug!`
...
Though this is not currently enforced by Clippy.
2022-12-15 08:59:38 +02:00
relrelb
bd9078addf
chore: Fix `clippy::uninlined_format_args` lints
2022-12-15 08:59:38 +02:00
nosamu
f904f20796
avm2: Stub SharedObject.clear and SharedObject.size
2022-12-15 08:41:28 +02:00
Adrian Wielgosik
92998e2c91
avm2: Translate ExternalInterface to AS
2022-12-14 17:57:45 +01:00
Adrian Wielgosik
5e115ed038
avm2: Stub more parts of LocalConnection and UrlRequest
2022-12-13 10:22:20 +01:00
Adrian Wielgosik
c8314da8d3
avm2: Fix aliasing in BitmapData.copyChannel
2022-12-13 01:24:49 +01:00
Callum Thomson
20c9a3d765
AVM2: Implement System.setClipboard ( #8751 )
...
* avm2: Implement System.setClipboard
* web: Add comment to set_clipboard_content
2022-12-13 01:05:23 +01:00
CUB3D
02360b28dc
avm2: Implement basic flash.net.navigateToURL
2022-12-13 00:34:10 +01:00
dependabot[bot]
b1c4e6f143
build(deps): bump serde from 1.0.149 to 1.0.150
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.149 to 1.0.150.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.149...v1.0.150 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 21:21:45 +01:00
nosamu
1aaaf6d421
avm2: Stub SharedObject.close
2022-12-10 21:38:19 -06:00
Adrian Wielgosik
2bb4e2e549
core: Fix failing builds without avm_debug feature
2022-12-07 00:34:01 +01:00
David Wendt
8678325686
core: `Loader` must pass enter/construct frame lifecycle events to children or loaded SWFs won't work
2022-12-06 20:10:30 +01:00
Adrian Wielgosik
e351f9f19b
core: use ctrl+alt+f to dump DO render tree
2022-12-05 19:49:41 -07:00
Adrian Wielgosik
7b64fcf5fa
avm2: Fix indirect event dispatching
2022-12-06 00:44:17 +01:00
dependabot[bot]
061f261c50
build(deps): bump syn from 1.0.104 to 1.0.105
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.104 to 1.0.105.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.104...1.0.105 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 23:15:10 +01:00
dependabot[bot]
3b285f8cf2
build(deps): bump serde from 1.0.148 to 1.0.149
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.148 to 1.0.149.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.148...v1.0.149 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 22:35:48 +01:00
kmeisthax
f79208c75f
avm2: Fix no-op gotos ( #8667 )
...
* tests: Add a test for issue #8630
* core: No-op gotos in AS3 do not actually do anything, even though they emit events
Fixes issue #8630
* tests: Add more tests for various #8630-adjacent cases
* tests: Ignore the tests with script removal as they expect MovieClip children to be nulled upon removal
* chore: Case sensitive filesystem fix
Co-authored-by: Adrian Wielgosik <adrian.wielgosik@gmail.com>
2022-12-05 18:19:29 +01:00
wsxarcher
c8e39da1e0
avm2: Implement filefilter filereference
2022-12-04 15:10:48 +01:00
Toad06
dcf1fb4ffd
avm1: Various minor fixes in filters
2022-12-04 14:19:41 +01:00
Aaron Hill
1b3070ab85
core: Make `BitmapHandle` hold a trait object instead of an id
...
`BitmapHandle` now holds `Arc<dyn BitmapHandleImpl>`.
This allows us to move all of the per-bitmap backend data into
`BitmapHandle`, instead of holding an id to a backend-specific
hashmap.
This fixes the memory leak issue with bitmaps. Once the AVM side of a
bitmap (`Bitmap`/`BitmapData`) gets garbage-collected, the
`BitmapHandle` will get dropped, freeing all of the GPU resources
assoicated with the bitmap.
2022-12-03 19:44:44 -06:00
Adrian Wielgosik
0861153626
swf: make Clippy happy
2022-12-03 22:18:22 +01:00
David Wendt
ce35313094
Revert "Revert "avm2: Implement `TextField` scrolling parameters""
...
This reverts commit f08aa19cb7
.
2022-12-02 21:41:20 -05:00
Adrian Wielgosik
f08aa19cb7
Revert "avm2: Implement `TextField` scrolling parameters"
...
This reverts commit 230ef315a2
.
2022-12-02 18:22:19 -07:00
David Wendt
230ef315a2
avm2: Implement `TextField` scrolling parameters
2022-12-02 22:40:22 +01:00
Marco Bartoli
f2080e6d57
avm2: implement get and set of displayobject filters ( #8623 )
2022-12-01 02:31:35 +01:00
dependabot[bot]
83487ae5d1
build(deps): bump serde from 1.0.147 to 1.0.148
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.147 to 1.0.148.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.147...v1.0.148 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-11-30 10:04:26 +01:00
dependabot[bot]
e3923e0d3d
build(deps): bump syn from 1.0.103 to 1.0.104
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.103 to 1.0.104.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.103...1.0.104 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-11-29 20:47:36 -07:00
Calvin304
5d5a56a7a3
avm2: Address feedback to DropShadowFilter stub
2022-11-27 09:46:18 -05:00
Calvin304
e46fc4fe8a
avm2: stub DropShadowFilter
2022-11-27 09:46:18 -05:00
Marco Grassi
0c851ecfde
don't include all the features in chrono to avoid including the vulnerable time dependency
2022-11-26 14:04:59 -05:00
Marco Grassi
ad81b3bf14
upgrade lock and toml dependencies
2022-11-26 14:04:59 -05:00
Aaron Hill
b8745f0ff1
avm2: Partially implement Stage3D for wgpu backend
...
This PR implements core 'stage3D' APIs. We are now able
to render at least two demos from the Context3D docs - a simple
triangle render, and a rotating cube.
Implemented in this PR:
* Stage3D access and Context3D creation
* IndexBuffer3D and VertexBuffer3D creation, uploading, and usage
* Program3D uploading and usage (via `naga-agal`)
* Context3D: configureBackBuffer, clear, drawTriangles, and present
Not yet implemented:
* Any 'dispose()' methods
* Depth and stencil buffers
* Context3D texture apis
* Scissor rectangle
General implementation strategy:
A new `Object` variant is added for each of the Stage3D objects
(VertexBuffer3D, Program3D, etc). This stores a handle to the
parent `Context3D`, and (depending on the object) a handle
to the underlying native resource, via `Rc<dyn
SomeRenderBackendTrait>`).
Calling methods on Context3D does not usually result in an immediate
call to a `wgpu` method. Instead, we queue up commands in our
`Context3D` instance, and execute them all on a call to `present`.
This avoids some nasty wgpu lifetime issues, and is very similar
to the approah we use for normal rendering.
The actual rendering happens on a `Texture`, with dimensions
determined by `createBackBuffer`. During 'Stage' rendering,
we render all of these Stage3D textures *behind* the normal
stage (but in front of the overall stage background color).
2022-11-25 21:43:00 -07:00
Toad06
460458812b
avm1: Correct some properties in SWFv4
2022-11-25 20:35:59 -07:00
Aaron Hill
3bef8c4fd6
render: Remove `get_bitmap_pixels` and store data in `Character::Bitmap`
...
We only called `get_bitmap_pixels` when creating a `BitmapData`
for an SWF-provided `Bitmap`. We now store the initial pixels
in `Character::Bitmap`, and use them to initialize a `BitmapData`
when needed.
This lets us simplify the wgpu backend, which no longer needs
to store a `Bitmap` object. In addition to saving space for
`BitmapData` objects that lack an SWF `Bitmap`, this will make
it easier to move data from `bitmap_registry` into `BitmapHandle`
itself.
2022-11-25 16:08:42 -07:00
Mark Richins
d345523d02
Fix conflicts
2022-11-23 20:45:37 -07:00
Mark Richins
9941701b3a
Fix: change twips_2d to use x and y and fix bug
2022-11-23 20:45:37 -07:00
Mark Richins
63a291ac4b
Fix promblems caused by moving Twips
2022-11-23 20:45:37 -07:00
EmperorBale
7a0f3d5d32
chore: Formatting
2022-11-23 17:28:28 -07:00
EmperorBale
e922a118d8
avm2: Improve inlining of stack related functions
2022-11-23 17:28:28 -07:00
EmperorBale
c919890a1e
chore: Use if/else instead of matching cmp
2022-11-23 17:28:28 -07:00
EmperorBale
657f54b2f1
chore: Cleanup clippy lint
2022-11-23 17:28:28 -07:00
EmperorBale
35219cf592
avm2: `op_get_scope_object` should start at the scope depth.
2022-11-23 17:28:28 -07:00
EmperorBale
eb9ce4073e
avm2: Clear stack & scope when execution is complete.
2022-11-23 17:28:28 -07:00
EmperorBale
4d151931f8
chore: Improve doc comments
2022-11-23 17:28:28 -07:00
EmperorBale
601f36df33
avm2: Introduce `clear_stack` & `clear_scope`.
2022-11-23 17:28:28 -07:00
EmperorBale
98d3b8f3c1
avm2: Enforce max scope depth & minimum scope depth
...
when pushing/popping from scope stack.
2022-11-23 17:28:28 -07:00
EmperorBale
7a48014d36
avm2: Enforce max stack & stack depth when pushing/popping from stack
2022-11-23 17:28:28 -07:00
EmperorBale
d46b2c39ca
avm2: Share scope stack across AVM2
2022-11-23 17:28:28 -07:00
EmperorBale
16805a350b
avm2: Store stack information in activations
2022-11-23 17:28:28 -07:00
Moulins
c10244b0a4
core: Only unload D.O.s when they are removed from the render list
...
D.O.s removed by the timeline may only be removed from the depth list
(if they were manipulated by AS3 scripts), but their unload method
would still be called, which is wrong.
2022-11-23 16:44:38 -07:00
Moulins
53010544db
core: Simplify core::do::container::Lists bitflags into boolean enum
...
Callsites only ever used two values, as children in the display list are
always in the render list.
2022-11-23 16:44:38 -07:00
Moulins
58e39623a5
core: Make all ChildContainer's methods private
...
And also, remove some dead code
2022-11-23 16:44:38 -07:00
Aaron Hill
4b8cd45f4b
avm2: Partially implement StaticText ( #8343 )
...
This is linked to the legacy DisplayObject::Text, which can
only be created by Flash CS6 (but is allowed in AVM2 swfs).
The 'StaticText' class cannot be constructed from ActionScript.
To support this, I've added support for native initializers to
playerglobal. This allows us to throw an exception in the
ActionScript constructor in Test.as, and do nothing in the native
intiializer (so that we can construct it from a DisplayObject).
I've left StaticText.text unimplemented for now, since it will require
dealing with Glyphs
Co-authored-by: kmeisthax <dcrkid@yahoo.com>
2022-11-23 18:30:47 -05:00
Moulins
9529a1cbdb
avm1: address Scope nitpicks
2022-11-23 15:50:45 -07:00
Moulins
05e3e6434b
avm1: Remove all allocations in `Activation::from_nothing`
...
This is done by:
- using the global constant pool instead of a fresh empty one:
- OK, as no call-site is directly executing arbitrary bytecode that
could care about the contents of the constant pool.
- pre-allocating the global scope object in the `Avm1` context
- using the global scope directly instead of allocating a local scope:
- OK, because no call-site is directly defining locals on the
returned Activation's scope.
2022-11-23 15:50:45 -07:00
Moulins
5faba34eb2
avm1: remove 'globals' parameter from Activation::from_nothing
...
Across all invocations, this is always set to the global object so it
can be hard-coded inside the call.
2022-11-23 15:50:45 -07:00
Moulins
ea03aa04b8
avm1: make scope references immutable; they were never actually modified
...
Rewrite Scope::new_target_scope, as the previous approach is unusable
now that Scope doesn't have interior mutability anymore.
2022-11-23 15:50:45 -07:00
Moulins
8cb0b47d1f
avm1: make constant pool reference immutable; it was never actually modified
2022-11-23 15:50:45 -07:00
TÖRÖK Attila
a9c94513a0
avm2,audio: Implement leftPeak and rightPeak in SoundChannel
2022-11-23 15:38:41 -07:00
michiel2005
50724448c8
Update array.rs
2022-11-23 15:19:07 -07:00
michiel2005
7c5f2805ef
Avoid code duplication
...
Avoided code duplication in avm1 array.rs as asked
2022-11-23 15:19:07 -07:00
Moulins
2fa3d31732
Appease Clippy on nightly
2022-11-23 22:39:45 +01:00
Toad06
eb2ee06588
avm1: Fix `ExternalInterface.call` with blank strings in SWFv8
2022-11-22 16:51:59 -07:00