David Wendt
b2544618ab
core: `VideoStream` should not hold the last decoded frame as this data structure is shared across multiple instances of the same character
2023-07-01 23:38:09 +02:00
Adrian Wielgosik
7eb7f2ee2c
avm2: Correctly set and use Video class from Rust
2023-07-01 22:45:20 +02:00
Lord-McSweeney
7ad864ca02
avm2+tests: Implement Matrix3D.copyColumnFrom; add a test
2023-07-01 15:23:29 -04:00
Aaron Hill
6e1f00edf2
render: Implement more PixelBender features ( #11800 )
2023-07-01 13:50:43 -04:00
Aaron Hill
710be15f78
core: Bail out of operations::color_transform if [xy]_min==[xy]_max
...
In the special case where y_min==y_max==(height-1),
we would create a bad 'encompassing' region - subtracing
one from the max would make it smaller than the min,
causing `PixelRegion::encompassing_pixels` to treat it
as the minimum, and add one to `height - 1`
There's no work to do when x_min==x_max or y_min==y_max,
so we can also skip the sync and GC write in this case.
2023-07-01 09:55:59 -04:00
Nathan Adams
5e608764ec
core: Add debug feature to find display objects by mouse
2023-07-01 12:58:32 +02:00
Aaron Hill
c2fcdf6fd6
avm2: Implement Stage3D.requestContext3DMatchingProfiles
...
For now, we just ignore the parameters and call requestContext3D
2023-06-30 23:22:56 -04:00
Crowdin Bot
29a5c6a4cd
chore: Update translations from Crowdin
2023-07-01 00:47:31 +02:00
David Wendt
32524d3abd
core: AVM2 display object allocators always ensure both halves of the display object are connected correctly
2023-06-30 16:14:28 -06:00
David Wendt
8ac8b926ac
core: If a video does not have an `onMetaData` block, register a compatible-ish datastream so that we can still play the video
2023-06-30 16:14:28 -06:00
David Wendt
b9aaaf5259
flv: ScreenVideo v2 also wants the FLV video data byte
2023-06-30 16:14:28 -06:00
David Wendt
3ff1db014f
flv: Screen Video wants the FLV `VideoData` header byte
2023-06-30 16:14:28 -06:00
David Wendt
ff1ed66729
flv: VP6 video packets have a horizontal and vertical adjustment before the actual video data.
2023-06-30 16:14:28 -06:00
David Wendt
98ee78be1a
avm2: Make netstream event initialization more concise
2023-06-30 16:14:28 -06:00
David Wendt
04ee039d3c
avm2: Use `ParametersExt` to grab parameters in `Video.init()`
2023-06-30 16:14:28 -06:00
David Wendt
faf8fb5d3f
avm2: Move as much `Video` initialization as possible into an instance allocator function
2023-06-30 16:14:28 -06:00
David Wendt
45e6f07009
core: Pause the stream if we hit a tag parsing error.
2023-06-30 16:14:28 -06:00
David Wendt
af0149c476
core: Log netstream signature verification errors
2023-06-30 16:14:28 -06:00
David Wendt
b639af1ada
avm2: `Video.init` doesn't need to call `super_init`
2023-06-30 16:14:28 -06:00
David Wendt
d2f806a901
core: The AVM2 version of this test wants a spurious status event
2023-06-30 16:14:28 -06:00
David Wendt
ab21b5b106
core: The stop event is `NetStream.Play.Stop`
2023-06-30 16:14:28 -06:00
David Wendt
fc50a688fb
core: Update stream time after processing tags
2023-06-30 16:14:28 -06:00
David Wendt
4dd9508471
avm1: Implement onStatus events for NetStream
2023-06-30 16:14:28 -06:00
David Wendt
63b27a4a20
avm2: Pass status events through to AVM2.
2023-06-30 16:14:28 -06:00
David Wendt
757ae40abc
core: Add stubs for stream event triggers
2023-06-30 16:14:28 -06:00
David Wendt
da2ef5392e
core: Make the `NetStream`/AVM link bidirectional
2023-06-30 16:14:28 -06:00
David Wendt
067474dea5
chore: Remove unused variables from stream.rs
2023-06-30 16:14:28 -06:00
David Wendt
d498a412e5
core: Retain original SWF dimensions for self bounds
2023-06-30 16:14:28 -06:00
David Wendt
b164319e32
core: FLV metadata is stored as an array, not an object.
2023-06-30 16:14:28 -06:00
David Wendt
643b053e8d
core: Don't mark the video stream as corrupt if we haven't gotten the full header yet
2023-06-30 16:14:28 -06:00
David Wendt
587a99fae7
core: Netstream loaders are... well, netstream loaders.
2023-06-30 16:14:28 -06:00
David Wendt
0e207cce8d
core: Actually spawn the loader future for the netstream
2023-06-30 16:14:28 -06:00
David Wendt
7e986bd90d
avm1: `NetStream` constructor must return itself
2023-06-30 16:14:28 -06:00
David Wendt
766ee5302d
core: Properly expose AVM1/2 objects for videos.
2023-06-30 16:14:28 -06:00
David Wendt
a52f738009
core: Silence various errors triggered by loading an empty video stream
2023-06-30 16:14:28 -06:00
David Wendt
257403d04e
core: Errors in tag parsing should include the explanation of the underlying error
2023-06-30 16:14:28 -06:00
David Wendt
f690162a4f
avm2: Actually create an unconnected `Video` when one is constructed via `new Video`
2023-06-30 16:14:28 -06:00
David Wendt
c86360a10b
core: `Video`s attached to a `NetStream` get their bitmap size and data from the attached `NetStream`.
2023-06-30 16:14:28 -06:00
David Wendt
9e318fc8e8
core: Process basic FLV video data tags and funnel them to the video backend.
...
This works a bit differently from SWF videos, we do not retain decoded video frames or valid seek points indefinitely. This assumes code interacting with `NetStream` is at least mildly aware of how a video codec is supposed to work and what the performance implications of that are.
2023-06-30 16:14:28 -06:00
David Wendt
3d5156b90d
core: Update the stream offset after each tag is processed.
...
The `preload_offset` is only ever moved forward, of course.
2023-06-30 16:14:28 -06:00
David Wendt
3410d9fcf8
core: Process `onMetaData` to get our stream definition with.
...
We use `preload_offset` to avoid processing the same metadata multiple times.
2023-06-30 16:14:28 -06:00
David Wendt
286acddfea
core: Introduce the notion of a separate preload step.
...
We don't actually process tags out of order, we're just tracking what tags have already been processed. FLV embeds critical video metadata in a ScriptData tag that we need to pull data out of and process.
2023-06-30 16:14:28 -06:00
David Wendt
bc9fd3613e
core: Add stub FLV processing
2023-06-30 16:14:28 -06:00
Fancy2209
8f0a43f9d9
Add prependRotation, copyRowTo and copyRowFrom ( #11698 )
...
Co-authored-by: Aaron Hill <aa1ronham@gmail.com>
2023-06-30 14:31:08 -04:00
Aaron Hill
1c151a86d6
avm2: Stub isXMLName
2023-06-29 15:51:39 -04:00
Nathan Adams
a5915a9bdb
swf: Make Color Copy
2023-06-29 20:32:36 +02:00
Lord-McSweeney
04747f86b6
avm2: Stub AVM1Movie
2023-06-29 12:05:01 -04:00
EmperorBale
e846d035e5
avm2: Use `method_name` as last resort if available in stack trace
2023-06-29 11:49:48 -04:00
Aaron Hill
9b8a8c9974
avm2: Correctly re-use objects in XML/XMLList call handlers and ctors
...
`XML(someXMLObj)` and `XMLList(someXMLList)` perform the
normal cast behavior (returning the same object), instead
of creating a new object like other arguments do.
This also applies to `new XMLList(someXMLObj)`
and `XML(singleElemXMLList)`
2023-06-28 21:16:05 -04:00
Crowdin Bot
1430e98851
chore: Update translations from Crowdin
2023-06-28 23:19:47 +02:00
Niv.Kaminer
053bcf9376
core: Update sounds in rootless SWF ( close #11666 )
2023-06-26 16:59:01 -04:00
renovate[bot]
3057aa59dd
chore(deps): lock file maintenance rust dependencies
2023-06-25 21:53:00 -04:00
renovate[bot]
f62dd17284
fix(deps): update rust crate indexmap to v2
2023-06-25 20:27:33 -04:00
Nathan Adams
0ca206ce4f
core: Add dumb filter list inside debug ui
2023-06-25 21:58:46 +02:00
Nathan Adams
628d8f66ad
render: Add filters to BitmapCacheEntry
2023-06-25 21:58:46 +02:00
Lord-McSweeney
a38dec3f9c
core: Erase filters in GotoPlaceObject::new if initial PlaceObject has none
2023-06-25 18:27:54 +02:00
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