Mike Welsh
7b63dc05c4
core: Initial implementation of SetTarget2
...
Implement the SetTarget2 action, which pops the target off of the
stack, and GetProperty 11, which pushes _target.
However, our implementation of _target is not accurate yet,
because it requires dynamically building the target path. Currently
we fake it by caching the last path to tellTarget.
2019-09-17 12:51:44 -05:00
Mike Welsh
856a4c6130
core: Improve TellTarget support
...
The AVM1 contains an explicit "target clip" that is used for older
Flash 4-era actions. This target clip can be set to an invalid
value, at which point Play, Stop, etc. will fail silently.
For GetVariable and SetVariable, if the target is invalid,
the variables will be modified on root ("/").
2019-09-17 12:51:44 -05:00
Mike Welsh
82c1116c42
chore: cargo fmt
2019-09-16 20:37:11 -07:00
David Wendt
359d3e4780
Propagate the RNG to the action context. This lets random work.
2019-09-16 20:04:30 -07:00
David Wendt
0f9db1744b
Add a backend for controlling the enclosing web browser.
2019-09-16 20:04:30 -07:00
Mike Welsh
28f0ce3c83
Mask work
2019-09-09 20:42:08 -05:00
Mike Welsh
545af9379a
chore: cargo fmt pass
2019-09-06 15:19:59 -07:00
Mike Welsh
0849826c48
core: Add static data for morph shape and text
2019-09-06 15:15:34 -07:00
Nathan Adams
a74d1734af
Initial work on avm1 method calling, local and global variables.
...
This contains just enough AS1 support for early trivial loading screens to not crash (ie badgers badgers badgers)
2019-08-28 21:43:20 -05:00
Mike Welsh
6a5c5ab1df
chore: Add rustfmt.toml and rustfmt pass
2019-08-26 16:38:48 -07:00
Mike Welsh
c1b8978555
core: Add max frames-per-tick as sanity
...
Avoid running too many frames at once.
2019-08-22 13:31:24 -07:00
Mike Welsh
b0eff353a9
tests: Add initial SWF tests
2019-08-22 09:54:40 -07:00
Mike Welsh
dd3748a520
core: GC collect_debt each frame
2019-08-19 22:34:49 -07:00
Mike Welsh
9cbeacd7b2
core: Transform mouse coordinates from viewport to stage
2019-08-19 22:27:38 -07:00
Mike Welsh
637588fae5
core: Store view matrix in player
...
Player is now in charge of scaling/cropping/translating the content
to fit the viewport size supplied by the frontend.
Added backend::render::Letterbox, which stores the margin sizes
for letter/pillarboxing.
2019-08-19 22:27:38 -07:00
Mike Welsh
8be9b9089b
avm1: Stub out StartDrag/EndDrag
2019-08-19 22:27:38 -07:00
Mike Welsh
ff74409d20
core: Tick audio backend each frame
2019-08-19 22:27:38 -07:00
Mike Welsh
59c9385cb7
core: Collect GC debt at the end of each frame
2019-08-19 22:27:38 -07:00
Mike Welsh
0143d9716e
core: Button work
2019-08-19 22:27:38 -07:00
Mike Welsh
9d962fd634
core: Improve button support
2019-08-19 22:27:38 -07:00
Mike Welsh
fe086c11ff
core: Store clip frame labels
...
Bump swf-rs revision to allow for read_frame_label calls.
Also fix read_place_object to take an explicit length.
2019-08-19 22:27:38 -07:00
Mike Welsh
49cc48d2d1
core: Run actions after a goto
2019-08-19 22:27:37 -07:00
Mike Welsh
ce606cece8
core: Re-enable AVM1
2019-08-19 22:27:37 -07:00
Mike Welsh
5bba546a53
core: Add BoundingBox calculations
...
TODO: Add dirty flag and cache matrices.
2019-08-19 17:29:55 -07:00
Mike Welsh
2c7e3c835f
core: Add parent to DisplayObjectBase
2019-08-19 17:29:55 -07:00
Mike Welsh
4666d211a7
core: Add dyn to fix Rust 1.37 warnings
...
Omitting dyn on trait objects now emits a warning, so add missing
dyn where necessary.
2019-08-15 13:54:20 -07:00
Mike Welsh
af2287a658
desktop: Add letterbox to viewport
...
Add getters to Player to allow access to the type Renderer.
Letter/pillarboxes added as window resized.
2019-08-10 10:18:32 -07:00
Mike Welsh
24fc403e06
core: Make player generic over backend
2019-08-09 22:34:15 -07:00
Mike Welsh
2accd5bdd4
core: Remove audio struct
2019-08-09 16:03:13 -07:00
Mike Welsh
3edc3c3d3e
web: Disable auto-play, add click-to-play
2019-08-09 14:50:20 -07:00
Mike Welsh
e64e306137
Rework audio to allow for streaming decoding
2019-08-08 15:59:32 -07:00
Mike Welsh
725cdae6c5
Begin AVM1 cleanup
2019-08-08 15:58:45 -07:00
Mike Welsh
ce5faefe1f
Work
2019-08-08 15:57:10 -07:00
Mike Welsh
2a365288e8
Update to latest swf-rs
2019-06-17 02:59:32 -07:00
Mike Welsh
3cefeeba6a
Use twips for internal calculations
...
Switch from pixels to twips for internal calculations. swf crate
was updated to add a Twips wrapper-type. Ruffle will use this type
internally for transforms and shapes. This fixes some precision
errors in rendering (see heroes_of_cybertron.swf) and will match
what the Flash Player does internally more closely. (e.g.
DisplayObject x and y will be quantized to 1/20 pixel units). It
is up to the renderer to convert units from twip space to pixels
when rendering.
2019-05-17 13:40:56 -07:00
Mike Welsh
efe3270ce0
web: Decode streams completely on preload (for now)
2019-05-09 12:43:26 -07:00
Mike Welsh
12d6d3342b
core: Switch to rust-gc
2019-05-08 18:10:43 -07:00
Mike Welsh
20844185d7
core: Set preload flag
2019-05-07 12:11:32 -07:00
Mike Welsh
e6e8536672
Clean up DisplayObject traits
2019-05-07 03:34:17 -07:00
Mike Welsh
60b673986b
Work
2019-05-06 23:31:34 -07:00
Mike Welsh
a0c478379d
Preload assets for web
...
Run through all definition tags to preload assets on web.
TODO: Keep track of which assets are done loading.
2019-05-05 17:35:00 -07:00
Mike Welsh
2480469c2c
First pass of static text
2019-05-04 11:45:11 -07:00
Mike Welsh
1dfedae485
Add some button functionality
2019-05-03 11:44:12 -07:00
Mike Welsh
6e8082f01b
Reorganized backend structure
2019-05-02 19:56:17 -07:00
Mike Welsh
d6e68dd43e
Add initial AVM1 implementation
2019-05-01 17:46:49 -07:00
Mike Welsh
5e88f43280
Color transforms
2019-05-01 09:55:54 -07:00
Mike Welsh
ded41dffb0
work
2019-04-30 17:46:32 -07:00
Mike Welsh
eb6c23d967
Work
2019-04-30 01:53:21 -07:00
Mike Welsh
663ad9f663
Work
2019-04-29 13:24:29 -07:00
Mike Welsh
ed3797f28c
work
2019-04-28 22:55:44 -07:00
Mike Welsh
ee64cc77bc
Reforactor
2019-04-27 23:08:59 -07:00