Commit graph

1532 commits

Author SHA1 Message Date
Eric Rosenbaum
a0525542fc Stub runtime to fix unit test 2018-02-27 15:38:34 -05:00
Eric Rosenbaum
db795abfbc Use tempo stored in stage 2018-02-27 11:48:49 -05:00
Eric Rosenbaum
7e5e43fbe1 Load tempo from sb2 2018-02-27 11:48:23 -05:00
Eric Rosenbaum
237616490f Add tempo property to rendered target 2018-02-27 11:48:14 -05:00
Paul Kaplan
1f3c6ac6ad
Merge pull request #939 from fsih/blockDrag
Block drag
2018-02-26 16:26:53 -05:00
Paul Kaplan
58702a78fd
Merge pull request #944 from fsih/duplicateCostume
Duplicate costume
2018-02-26 07:59:32 -05:00
DD
9a65df4c12 Make index optional 2018-02-23 16:24:18 -05:00
DD
10789cd779 Bring in Karishmas changes from save-load to ensure the sound gets updated in storage when edited 2018-02-23 16:21:07 -05:00
DD
bb0394a668 Fix lint 2018-02-23 16:09:38 -05:00
DD
0a5ccbf42f Use existing UID util 2018-02-23 12:07:07 -05:00
DD
8355dd662f Switch to sending end drag event to be handled by gui 2018-02-23 11:57:19 -05:00
DD
2239d1b92b Use promises 2018-02-23 11:09:19 -05:00
DD
75cf6407d4 Duplicate costume 2018-02-23 10:50:45 -05:00
DD
51fd97ee54 fix lint 2018-02-20 16:09:08 -05:00
DD
2545d1955d Repopulate blocks with ids 2018-02-20 16:09:08 -05:00
DD
31def7d03d Track hovered sprite. End drag may transfer blocks from one sprite to another. 2018-02-20 16:09:08 -05:00
DD
fe4b3d3c01 Pass through block drag event 2018-02-20 16:09:08 -05:00
Chris Willis-Ford
8e1719b716
Merge pull request #920 from towerofnix/scroll-detection
Scroll wheel detection for "when key (up/down) pressed" blocks
2018-02-16 12:21:27 -08:00
Eric Rosenbaum
ca08cd69e9
Merge pull request #936 from ericrosenbaum/feature/require-music-assets
Feature/require music assets
2018-02-16 10:25:31 -05:00
Eric Rosenbaum
e67743a4ba Require assets inside a try/catch 2018-02-16 10:05:54 -05:00
Eric Rosenbaum
5d5129d753 Don’t copy assets via webpack 2018-02-14 17:55:11 -05:00
Eric Rosenbaum
063ac39019 Load music extension assets with require 2018-02-14 17:53:05 -05:00
Eric Rosenbaum
a8e2972a7c
Merge pull request #933 from ericrosenbaum/bugfix/handle-sprites-named-stage
When getting sprite by name, skip the stage
2018-02-13 19:44:04 -05:00
Eric Rosenbaum
22038c947c When getting sprite by name, skip the stage 2018-02-12 15:33:27 -05:00
kchadha
9675a1b8cf
Merge pull request #931 from kchadha/bugfix-912
Renaming sprite/costume/sound/backdrop updates corresponding blocks.
2018-02-12 11:53:50 -05:00
Karishma Chadha
4cca426f96 Adding test coverage for new updateAssetName function. 2018-02-09 17:29:41 -05:00
Paul Kaplan
8d42db7df8
Merge pull request #925 from LukeSchlangen/fix/rounding-numbers
round numbers but break tests
2018-02-08 08:59:54 -05:00
Luke Schlangen
45cf1f685d add passing unit test 2018-02-07 17:49:18 -06:00
Karishma Chadha
3dbcf13c87 Fixing renameSprite tests. 2018-02-05 17:26:13 -05:00
Karishma Chadha
f5813b1845 Update sprite names, plus some code cleanup. 2018-02-05 16:54:58 -05:00
Karishma Chadha
7faeed7128 Update blocks after sound/costume rename. 2018-02-05 14:35:52 -05:00
kchadha
ef60b2a771
Merge pull request #928 from LLK/revert-917-push-reported
Revert "Push reported"
2018-02-02 13:49:36 -05:00
kchadha
107adad647
Revert "Push reported" 2018-02-02 12:42:09 -05:00
Eric Rosenbaum
0e4e6be9e7
Merge pull request #926 from ericrosenbaum/bugfix/reduce-pitch-effect-range
Clamp pitch effect range to -360 to 360
2018-02-01 14:27:32 -05:00
Eric Rosenbaum
f78ddb2072 Change pitch effect range to -360 to 360 2018-01-31 16:44:54 -05:00
Paul Kaplan
32e240f18a
Merge pull request #916 from LLK/greenkeeper/scratch-storage-0.4.0
Update scratch-storage to the latest version 🚀
2018-01-31 09:30:09 -05:00
Luke Schlangen
f8dced53dc round numbers but break tests 2018-01-31 08:23:08 -06:00
Chris Willis-Ford
372c50ef69
Merge pull request #921 from cwillisf/use-render-umd
Playground: load renderer as UMD
2018-01-30 12:20:17 -08:00
Christopher Willis-Ford
3717394f00 Playground: load renderer as UMD
The recent changes to the renderer's build output packaging broke this
repository's playground / benchmark suite. These changes aren't the only
way to fix the issue, but this is consistent with the way that the
storage module was already being loaded.
2018-01-29 14:04:19 -08:00
kchadha
490248f652
Merge pull request #914 from kchadha/bugfix-909
Keep block xml up-to-date after renaming a variable.
2018-01-29 09:30:10 -05:00
Chris Willis-Ford
188aa990f2
Merge pull request #917 from mzgoddard/push-reported
Push reported
2018-01-26 15:48:05 -08:00
Karishma Chadha
0b2eaa9e19 Moving block updating code into blocks instead of runtime. 2018-01-26 16:58:45 -05:00
Florrie
be83c0ee74 Mouse wheel IO system
Towards fixing #865. This adds an IO class for detecting the mouse wheel
being scrolled. Basic tests are included; they mock the runtime to see
what blocks are activated by scrolling.
2018-01-26 17:13:01 -04:00
Florrie
b201ce948d Merge branch 'develop' of https://github.com/LLK/scratch-vm into scroll-detection 2018-01-26 16:32:16 -04:00
Eric Rosenbaum
229cd7a50c
Merge pull request #911 from ericrosenbaum/bugfix/music-ext-safari-onended
Keep playing notes and drums forever on Safari
2018-01-26 13:00:56 -05:00
Michael "Z" Goddard
10acf3c4f5
Add BlocksExecuteCache
Add a Blocks cache available only to execute. This cache lets execute
get a blocks inputs, fields, opcode, and mutation in one request and an
object execute can further modify to store derivative values it use
this and every later execute iteration to perform its duties quicker.
2018-01-24 17:00:42 -05:00
Michael "Z" Goddard
41d6a8f925
Check if a thread's target is null in sequencer
Before calling execute, if a thread's target is null, retire that
thread.

This saves repeatedly checking if the thread's target is null in
recursive calls where even if scratch-gui or blocks, or some other
related library set the target to null, that will not happen during
block execution. It will happen at some time outside of the sequencer
letting the sequencer check once instead of execute checking at every
recursive level.
2018-01-24 17:00:37 -05:00
Michael "Z" Goddard
4286e3e982
Add Thread.blockContainer
Store the thread's blocks at blockContainer letting execute quickly
determine the block source. Monitor threads are a monitor thread. They
do not become a target thread suddenly.
2018-01-24 17:00:35 -05:00
Michael "Z" Goddard
ab8d8e5f34
Add optional recursiveCall argument to execute
When execute calls itself to step into the next stack level, pass
RECURSIVE to the recursiveCall level. This argument provides
opportunity to recursed calls in execute to reduce the time needed for
some checks.

- Reduce time for checking around setting
  thread.requestScriptGlowInFrame
- Call thread.pushReportedValue at end of execute when in a recursive
  call

A boolean check is faster than a type lookup, command blocks will only
be executed in non-recursive calls. This saves a minor amount of time
for any result reporting blocks like blocks that get variables or add
two inputs together.

If the block is not returning a promise and execute is a recursed call,
that implies that the block is neither a hat or that the thread is not
at the top. That reduces handleReport to pushReportedValue. Using the
recursiveCall argument the final block calling handleReport can
shortcut the extra work in handleReport and reduce it to immediately
calling pushReportedValue.
2018-01-24 17:00:24 -05:00
Michael "Z" Goddard
6b7582f1c7
Report block result to stackFrame.justReported
- Add stackFrame.justReported

Report the block result to a known key `justReported` instead of a
dynamic key on `reported`. Assuming blocks with a promised value are
relatively infrequent the most common recursive input flow immediately
reads the value "just" reported. In the assumed uncommon case of a
promised thread status, empty the already argValues assigned values
onto the currentStackFrame's reported member. In the next execute call
on this stackFrame, values assigned to reported are read back off onto
argValues, and execute will returned to the assumed common case. This
is a safe assumption since a thread in the promise state will not exit
that state until the next frame when javascript has a chance to call
the resolve handle, setting the thread's state back to another
executable state.

Using direct assignment to `justReported` saves building an object
dynamically. Instead of always building `reported` and `argValues` only
`argValues` is built until a promised state is reached. This also gives
a known time when `reported` is used, allowing cleanup of a
stackFrame's reported to only happen when it was used to persist
already reported values.
2018-01-24 17:00:12 -05:00