Lord-McSweeney
0dba2ac37c
core: Overwrite filters in GotoPlaceObject::merge
2023-06-25 18:27:54 +02:00
Lord-McSweeney
2d02886f5a
avm2+tests: Support CData in XML.toXMLString; add test
2023-06-25 00:25:47 -04:00
Nathan Adams
f24aabf74e
core: Don't hold a borrow on Avm1Button whilst adding children - fixes #11706
2023-06-24 22:33:42 +02:00
MrCheeze
1baccb483a
core: Apply filters when modifying an object, not just when instantiating
2023-06-24 17:22:32 +02:00
Nathan Adams
6d77ff1fc4
core: Store just abcd fields of Matrix inside BitmapCache, as we don't use tx/ty
2023-06-24 01:42:04 +02:00
Nathan Adams
4f9cc4e3c4
core: Clear this on scrollRect, not just ancestors
2023-06-24 01:42:04 +02:00
Nathan Adams
668cc31fa4
chore: Comment changes regarding cacheAsBitmap
2023-06-24 01:42:04 +02:00
Nathan Adams
a5b28b50bf
core: Don't invalidate things more than once per frame, to avoid repeat walking of the DO tree
2023-06-24 01:42:04 +02:00
Nathan Adams
cdb0774642
core: Hook up DisplayObject::opaque_background
2023-06-24 01:42:04 +02:00
Nathan Adams
ee444853b4
avm1: Implement MovieClip.cacheAsBitmap
2023-06-24 01:42:04 +02:00
Nathan Adams
d94c73cebe
core: Rename bitmap cache methods and make clear which one is preference and which one is actual
2023-06-24 01:42:04 +02:00
Nathan Adams
9795fc9311
core: Invalidate ancestors on scrollRect changes
2023-06-24 01:42:04 +02:00
Nathan Adams
f0b72ee89c
core: Add cacheAsBitmap debug buttons
2023-06-24 01:42:04 +02:00
Nathan Adams
f81b1f83b9
core: Fix panic in recursive set_maskee/set_masker
2023-06-24 01:42:04 +02:00
Nathan Adams
1a9bec3062
core: Don't use cacheAsBitmap when bitmapdata.draw() as it'll keep reinvalidating it
2023-06-24 01:42:04 +02:00
Nathan Adams
f43560ab88
render: Switch to providing cacheAsBitmap entries all at once on submit frame
2023-06-24 01:42:04 +02:00
Nathan Adams
2594453831
render: Add render_offscreen_for_cache for more optimised CacheAsBitmap
2023-06-24 01:42:04 +02:00
Nathan Adams
5a67b2dcb7
core: Don't rerender cacheAsBitmap if the color transform changes (unlike Flash - but it should be fine!)
2023-06-24 01:42:04 +02:00
Nathan Adams
d49a8ce0e6
core: Invalidate cacheAsBitmap when drawing api is used
2023-06-24 01:42:04 +02:00
Nathan Adams
cc8edb3bf1
core: Invalidate cacheAsBitmap when various more properties change
2023-06-24 01:42:04 +02:00
Nathan Adams
27db3e70b4
core: Invalidate cacheAsBitmap when transform changes
2023-06-24 01:42:04 +02:00
Nathan Adams
0f01efb322
core: Invalidate cacheAsBitmap when video change
2023-06-24 01:42:04 +02:00
Nathan Adams
41991da624
core: Invalidate cacheAsBitmap when texts change
2023-06-24 01:42:04 +02:00
Nathan Adams
932291bbad
core: Invalidate cacheAsBitmap when morphs change
2023-06-24 01:42:04 +02:00
Nathan Adams
8a3ccdd080
core: Invalidate cacheAsBitmap when graphics change
2023-06-24 01:42:04 +02:00
Nathan Adams
c39217e139
core: Invalidate cacheAsBitmap when children are added or removed
2023-06-24 01:42:04 +02:00
Nathan Adams
fe742194b1
core: Implement cacheAsBitmap behaviour
2023-06-24 01:42:04 +02:00
Niv.Kaminer
69b09ab1ef
avm2: Implement Serialization for ByteArrayObject
2023-06-23 08:29:53 -04:00
Crowdin Bot
b1149cd267
chore: Update translations from Crowdin
2023-06-23 11:49:47 +02:00
Fancy2209
9ab4c163c7
Fix TouchEvent.as ( #11685 )
...
* Update TouchEvent.as
* Oops
2023-06-23 08:14:23 +00:00
Lord-McSweeney
8127971dfd
avm2: Remove AIR-only FocusDirection class
2023-06-22 08:47:10 +03:00
Lord-McSweeney
f6360b343e
avm2: flash.sampler stubs
2023-06-21 21:03:29 +03:00
Nathan Adams
a078d91c31
core: Simplify open_character_button a bit
2023-06-21 18:27:12 +02:00
Nathan Adams
8dd3b50da6
core: Deemphasise invalid rects in debug ui
2023-06-21 18:27:12 +02:00
Nathan Adams
00e02d1511
core: Add debug window to list known movies
2023-06-21 18:27:12 +02:00
Nathan Adams
c0247c020a
swf: Add write_swf_raw_tags for reconstructing a swf from its parts
2023-06-21 18:27:12 +02:00
Nathan Adams
4e0628b730
core: Refactor out a show_avm2_value for debugger
2023-06-21 18:27:12 +02:00
Nathan Adams
e6b087dbc2
core: Remove swf saving for now, we need to reconstruct the swf from the data
2023-06-21 18:27:12 +02:00
Nathan Adams
d8e6bf7535
core: Show root DO's in debug view
2023-06-21 18:27:12 +02:00
Nathan Adams
0523a5b149
core: Remove UpdateContext param from DisplayObject::avm2_root()
2023-06-21 18:27:12 +02:00
Nathan Adams
647006b8d0
core: Add more avm2 debug info
2023-06-21 18:27:12 +02:00
Nathan Adams
5b429e3bf5
core: Add filtering to avm2 debug window
2023-06-21 18:27:12 +02:00
Nathan Adams
89962cf970
core: Add avm2 objects to debug menu
2023-06-21 18:27:12 +02:00
Nathan Adams
aaf9ecfa32
core: Add AVM1 values to debug UI
2023-06-21 18:27:12 +02:00
Nathan Adams
afdd617d29
avm1: Add include_hidden: bool to get_keys()
2023-06-21 18:27:12 +02:00
Nathan Adams
310b03b570
core: Add searching to DO debug children list
2023-06-21 18:27:12 +02:00
Nathan Adams
c5a1ca0e57
core: Show invalid bounds + selfbounds/scrollrect on DO debug info
2023-06-21 18:27:12 +02:00
Nathan Adams
c8a41e327a
core: Add character info to DO debug window
2023-06-21 18:27:12 +02:00
Nathan Adams
b24cc60a5d
core: Add swf info to debug menu
2023-06-21 18:27:12 +02:00
Nathan Adams
cb2349e33a
core: Store character name<->id map, not name<->character, so we can query id for name
2023-06-21 18:27:12 +02:00
Adrian Wielgosik
b3c40ecda1
avm2: Optimize coerce_to_primitive for boxed primitives
2023-06-21 00:20:03 +02:00
Crowdin Bot
67a5a2923f
chore: Update translations from Crowdin
2023-06-20 23:52:03 +02:00
Nathan Adams
6b76af2d40
core: Fix avm2button bounding box
2023-06-20 23:22:53 +02:00
Toad06
18fb5064d3
avm1: Correct `matrix::object_to_matrix_or_default`
2023-06-19 21:09:06 +03:00
relrelb
a8f9033091
avm1: Make `DisplayPropertyMap` immutable
2023-06-18 07:50:10 +03:00
Toad06
22ae6bfec3
avm1: Correct `WaitForFrame` and `WaitForFrame2` actions
2023-06-17 19:23:18 -05:00
Lord-McSweeney
b02d8900c5
avm2: Remove or validate some uses of coerce_to_object
2023-06-17 22:40:14 +02:00
Adrian Wielgosik
6ccb6e7fdd
Revert "avm2: Throw TypeError when 'astype' receives a null/undefined class"
...
This reverts commit ce0ba7795c
.
2023-06-17 22:40:14 +02:00
Crowdin Bot
ca549e482c
chore: Update translations from Crowdin
2023-06-17 19:25:33 +02:00
renovate[bot]
7a21756ddb
chore(deps): lock file maintenance rust dependencies
2023-06-17 11:00:52 -05:00
Nathan Adams
6208c50273
core: Simplify TDisplayObject::swf_version(), we don't need to iterate the heirarchy
2023-06-17 10:37:13 +02:00
Aaron Hill
69fce3f7f8
wpgu: Initial implementation of PixelBender shader execution ( #11441 )
...
* wpgu: Initial implementation of PixelBender shader execution
The implementation is split across four crates:
* `ruffle_render` now holds the main PixelBender bytecode parsing
implementation (previously, this was in `ruffle_core`).
* `ruffle_core` holds some helper functions for converting between
AVM2 `Value`s and the PixelBender vector types.
* `naga-pixelbender` (newly created) constructs a Naga `Module`
from parsed PixelBender bytecode
* `ruffle_render_wgpu` sets up the render pipeline for the shader
constructed by `naga-pixelbender`, and actually executes the shader.
The Actionscript-side shader parameters are passed in through uniforms.
This allows us to cache the compiled `naga::Module` and associated
wgpu types inside `ShaderData`, when it's first created. Each invocation
of a `ShaderJob` only needs to create a bind group and render pass.
Limitations:
* Only a few of the PixelBender opcodes are implemented - however, this is
enough to get Stemlands cannon rotation working, as well as a cool
"donut" shader that I found and included as a test.
* PixelBender matrix types are not supported.
* Only BitmapData is supported as an input/output type - Flash Player
also supports using Vector and ByteArray
* ShaderJob execution is always synchronous.
* Adjust comments
* Address review comments
2023-06-15 22:50:24 +00:00
Lord-McSweeney
b998fc0197
avm2: Minimal stub of ShaderFilter
2023-06-15 16:42:12 -05:00
renovate[bot]
fc933f485f
fix(deps): update wasm-bindgen
2023-06-15 20:50:04 +02:00
Aaron Hill
f257979b86
avm2: Use a separate domain for playerglobals
...
We create a separate child domain, which is accessible
from the Stage and the root movieclip.
This prevents ActionScript from loading classes into the
special playerglobals domain (Domain.parentDomain is modified
to return null instead of the playerglobals domain when applicable),
so the native method lookup logic will never run for user code.
2023-06-15 12:57:39 -05:00
Aaron Hill
ad97322807
avm2: Implement ErrorObject.display without using Activation
...
This lets us print the full error message and stack stacke
in contexts where an Activation is not available, including
the `Debug` impl.
The 'name' and 'error' fields are accessed using hardcodd slot
ids. This is pretty hacky, but will work until we have better
handling of slot properties.
2023-06-15 09:31:36 -05:00
Aaron Hill
87850abd19
avm2: Improve support for deleting XML attributes and children
...
We now support deleting named children, as well as attributes.
Additionally, I've fixed our handling of `XML.parent()` - we now
properly set the parent when a child is created, and clear the parent
when `delete` is used.
2023-06-15 09:02:09 -05:00
Lord-McSweeney
b4b726d7ab
avm2: nit: Add error number in error message for BitmapData.drawWithQuality
2023-06-14 20:32:06 -05:00
Aaron Hill
cd2c7f6f2f
tests: Enable tracing_subscriber in tests
...
Previously, we weren't displaying any Ruffle logs when running tests.
2023-06-14 17:15:31 -05:00
AllinolCP
e4d86ec9e7
core: implement screen resolution for capabilities ( #11156 )
2023-06-14 20:49:13 +00:00
Lord-McSweeney
f649344f64
avm2: nit: Fix warning message in Avm2::peek
2023-06-14 19:16:08 +02:00
Lord-McSweeney
6006aa82c2
avm2+tests: Support primitives besides null in MovieClip.addFrameScript; add test
2023-06-14 18:16:39 +02:00
nosamu
202fe2f1bb
core: Add options to set and force the stage alignment
2023-06-14 16:04:14 +02:00
Nathan Adams
0b86c02c5c
desktop: Fix interaction between egui and ruffle cursors
2023-06-14 13:43:17 +02:00
Lord-McSweeney
f5528aab75
avm2+tests: Implement Object.length and Object.init; add test for Object.length
2023-06-14 12:37:00 +02:00
Lord-McSweeney
10a8acb166
avm2: Stub NetConnection.addHeader
2023-06-13 20:51:08 -05:00
nosamu
60d3788466
avm2: Improve PerspectiveProjection stub
2023-06-13 19:31:18 -05:00
Adrian Wielgosik
128416cccd
avm2: Support Array(...) without new
2023-06-14 00:34:13 +02:00
Aaron Hill
40318f905e
avm2: Implement call handler for XMLList
...
This delegates to the XMLList constructor, just as
the XML call handler delegates to the XML constructor.
2023-06-13 17:20:11 -05:00
nosamu
61f1cf88a5
avm2: Throw AVM error in Array constructor
2023-06-13 23:54:13 +02:00
Mike Welsh
c4e4eba63f
avm2: Implement BitmapData.setVector
2023-06-12 18:34:51 -05:00
Aaron Hill
a006e96a44
avm2: Set named field in parent to null when child is removed
...
If a child named 'foo' is removed by the timeline (without
having been previous added/removed from the timeline by ActionScript),
then the 'foo' field in the parent will be set to null. This occurs
even if the 'foo' field in the parent is not currently set to
the child 'foo' (e.g. 'this.foo = someOtherObject' was executed by
ActionScript).
2023-06-12 17:33:02 -05:00
Moulins
d04fc61bb5
core: slightly simplify string interner by using new hashbrown APIs
...
- we can now get a `&RawTable` from a `&HashSet`, meaning we can store a
`HashSet` directly in the interner;
- `RawTable::iter_hash` now allows the removal of already-yielded
elements during iteration, which simplifies `WeakSet::entry`
2023-06-12 22:58:20 +02:00
relrelb
1dc28d898e
avm1: Migrate `Transform` to `NativeObject`
2023-06-12 20:16:45 +03:00
Aaron Hill
2dfc0bac5b
core: Log url when movie fetch fails
2023-06-12 10:55:13 -05:00
Crowdin Bot
834297f110
chore: Update translations from Crowdin
2023-06-12 12:28:05 +02:00
Aaron Hill
ce0ba7795c
avm2: Throw TypeError when 'astype' receives a null/undefined class
2023-06-12 02:31:03 -05:00
Aaron Hill
7e56c20973
avm2: Implement KeyboardEvent.updateAfterEvent
2023-06-12 01:44:46 -05:00
Aaron Hill
6b808a9a9d
avm2: Stub Matrix3D-related methods on Transform
...
This allows verification to succeed on classes that override these
methods.
2023-06-12 01:17:39 -05:00
Lord-McSweeney
b7088695fe
avm2: Stub undocumented TextField.insertXMLText
2023-06-11 11:17:21 -05:00
relrelb
226a2be2bd
core: Fix drag constraint with `lockCenter` set to `false`
...
Previously `last_mouse_position` was updated irrespectively of
whether the dragged object was inside or outside the constraint
box. Change it follow mouse deltas, after clamping is performed.
Fixes #11254 .
2023-06-11 07:34:14 +03:00
Lord-McSweeney
dced6445ee
avm2: Stub flash.net.getClassByAlias and improve flash.net.registerClassAlias stub
2023-06-10 16:09:57 -05:00
Lord-McSweeney
4d8feeab2e
avm2+tests: Fix String.substr with negative second value, add tests
2023-06-10 15:48:45 -05:00
Aaron Hill
cfb23d1f97
avm2: Implement AMF serialization of XML objects
2023-06-10 12:13:07 -05:00
relrelb
dcb6bbe50b
avm1: Migrate `GradientGlowFilter` to `NativeObject`
2023-06-10 12:46:22 +03:00
Nathan Adams
75979b561a
avm1: Rename try_resolve_level -> get_level, resolve_level -> get_or_create_level
2023-06-10 10:37:15 +02:00
Nathan Adams
38a3f67000
avm1: Don't create _levelN for unloadMovieNum(N)
2023-06-10 10:37:15 +02:00
AllinolCP
44ff49aa53
core: Fix status code implementation for AVM1 and implement HTTPStatusEvent.HTTP_STATUS for avm2 ( #11360 )
2023-06-10 03:06:26 +00:00
renovate[bot]
a621472336
chore(deps): lock file maintenance rust dependencies
2023-06-09 20:17:25 +03:00
Aaron Hill
a387476de7
core: Unify loader event handler and AVM2 data into MovieLoaderVMData
...
`AVM2Data` was always provided with
`MovieLoaderEventHandler::Avm2LoaderInfo`, so we can unify
them into a single enum.
2023-06-09 11:47:11 -05:00