Commit graph

2253 commits

Author SHA1 Message Date
Karishma Chadha
99c1ce9286 Fix variable conflict that arises during sprite upload where the sprite may reference a global variable that conflicts with the name of a local variable on a different sprite in the project. 2018-07-17 15:37:28 -04:00
kchadha
0776845a94
Merge pull request #1347 from kchadha/fix-var-rename-delete
Fix local var rename/delete
2018-07-17 11:07:13 -04:00
Eric Rosenbaum
b8ea846eed
Use 2x png for microbit icon (#1346)
* Use file-loader for png

* Use 2x png for microbit block icon

* Load png via data URI

* JSDOC
2018-07-17 09:21:44 -04:00
Karishma Chadha
ee9a99b928 Fix variable deletion bug. 2018-07-15 19:00:55 -04:00
Karishma Chadha
a8fc399746 Fix var rename bug where variable would go back to old name after switching sprites. 2018-07-15 18:58:56 -04:00
picklesrus
bf22cdbf13 Make the end listening sound only play one time even if multiple bloc… (#1232)
* Make the end listening sound only play one time even if multiple blocks stop listening at the same time.

* Update for new sound API
2018-07-15 15:04:27 -04:00
picklesrus
ed78231fe9 Turn speech block text into i18n messages. (#1224)
* Turn speech block text into i18n messages.

* Update message descriptions and other code review comments.

* fix typo

* Add bit about not translating Google to message description.

* Change default when I hear text
2018-07-15 14:34:24 -04:00
picklesrus
bd83d66bff Update speech extension to use new audio engine api since the old version no longer exists. (#1272) 2018-07-15 14:23:14 -04:00
Paul Kaplan
3fa28cac35
Merge pull request #1326 from kchadha/share-local-var-fix
Fix variable conflicts that arise when sharing the love with the stage.
2018-07-13 13:24:49 -04:00
Evelyn Eastmond
133ade7f48 EV3 port and sensor polling updates (#1342)
* Add motor rotate, without coasting yet.  Fixed some todos.

* Removing logging.

* Implemented motor set position, motor set power, and beep note for time blocks.  Changed labels on motor blocks.  Tracking motor speeds for all ports.

* Fixing motor ports to 0-3 and then output bit field when sending commands.

* Added stop all motors with stop button.  Added port masking function.  Some cleanup.  Moved beeping up an octave.

* Combine device list polling and sensor polling into a single timeout call, device list requested every 20 times.

* Don't reset sensors on device update.  Don't store undefined sensor/motor values.  Some comments.

* Fixing some linting.
2018-07-13 13:14:53 -04:00
Karishma Chadha
2b2fc2e561 Code cleanup, refactor, abstraction 2018-07-13 12:58:45 -04:00
Michael "Z" Goddard
fee3c4cc04
fix unnecessary stackClick report from nested promise reporters
Check that a reporting block is the last operation as part of some
parent block. The last operation is the block itself which may report
values for stack clicks and monitor updates if it meets other
requirements.
2018-07-13 10:23:42 -04:00
Karishma Chadha
13df3e7bd6 Add unit tests and fix object shallow vs. deep copying bug. 2018-07-13 09:36:43 -04:00
Karishma Chadha
406e59fc18 Fix variable conflicts that arise when sharing the love of a sprite-local variable with the stage. 2018-07-13 09:36:43 -04:00
Andrew Sliwinski
c69a59575d
Merge pull request #1316 from ericrosenbaum/feature/language-reporter
Change translate extension reporter block text to 'language'
2018-07-13 08:41:33 -04:00
Paul Kaplan
ec0ac19772
Merge pull request #1332 from ericrosenbaum/bugfix/microbit-bail-out
Microbit write bails out if not connected
2018-07-13 08:32:58 -04:00
Paul Kaplan
b9203ac5d6
Merge pull request #1333 from ericrosenbaum/bugfix/fix-microbit-extension-name
Change extension name to micro:bit
2018-07-13 08:32:45 -04:00
Paul Kaplan
b33d9ba4e0
Merge pull request #1335 from mzgoddard/fix-execute
fix asynchronous block execution
2018-07-13 08:32:20 -04:00
Paul Kaplan
e463781bc1
Merge pull request #1330 from paulkaplan/glow-on-stack-click
Always glow threads that come from stack clicks
2018-07-13 07:53:05 -04:00
Michael "Z" Goddard
d2c637a621
fix asynchronous block execution
Freeze promise waiting blocks into an array of reported values. Thaw
those reported values into parent values of matching blocks by id. If
the reporting block was waiting on a promise and reported a value
assign it to its parent value at that future time.
2018-07-13 00:04:49 -04:00
DD Liu
c7e9c833c0
Merge pull request #1315 from fsih/loadCostume
Don't depend on this until https://github.com/LLK/scratch-gui/pull/2575 is in

Break out loadVector and loadBitmap from loadCostumeAsset, and handle bitmap resolution 1 assets in loadBitmap
2018-07-12 18:50:14 -04:00
DD Liu
46918f266e Add bitmap resolution so that required proptype warning stops 2018-07-12 17:25:53 -04:00
DD Liu
1c74c9028c Better error handling 2018-07-12 17:18:38 -04:00
Eric Rosenbaum
eaeefdcfe7 Change extension name to micro:bit 2018-07-12 15:26:32 -04:00
Eric Rosenbaum
ea1bb602f9
Microbit display commands yield for a tick (#1331)
* Microbit display commands yield for a tick

* JSDOC fixes
2018-07-12 15:19:28 -04:00
DD Liu
004f38190a Merge branch 'develop' into loadCostume 2018-07-12 15:16:17 -04:00
Eric Rosenbaum
a7f4fc2212 Microbit write bails out if not connected 2018-07-12 14:41:28 -04:00
Paul Kaplan
9dbb362b36 Remove log line 2018-07-12 14:40:13 -04:00
DD Liu
0258a7390f Convert to node style callback and convert to bitmap resolution 2 always 2018-07-12 14:33:38 -04:00
Paul Kaplan
bcd76c995e Always glow threads that come from stack clicks 2018-07-12 11:24:06 -04:00
Andrew Sliwinski
0c21f739ec
Merge pull request #1327 from thisandagain/feature/deleteall
Add opcode implementation for `data_deletealloflist`
2018-07-12 11:02:14 -04:00
Kreg Hanning
06c4e5516f Add micro:bit matrix field block (#1314)
* Add micro:bit matrix field block

* Remove debug logs

* Remove rowcol menu

* Fix lint errors
2018-07-11 16:13:49 -04:00
chrisgarrity
0810c455c2
Merge pull request #1321 from chrisgarrity/issue/1299-switch-language
Issue/1299 switch language
2018-07-11 16:03:10 -04:00
Paul Kaplan
760fcd8231
Merge pull request #1318 from paulkaplan/fix-bt-connection
Set internal connected flag before emitting event
2018-07-11 14:20:22 -04:00
Andrew Sliwinski
f7aafe4d9c Add opcode implementation for data_deletealloflist 2018-07-11 13:14:01 -04:00
Paul Kaplan
31cd204117 Add semicolons... 2018-07-11 11:47:29 -04:00
Paul Kaplan
eecca39a97 Update microbit block and menu icons using the new ones 2018-07-11 11:20:19 -04:00
chrisgarrity
849412ba82 Switch setLocale to return a promise
Convert refreshBlocks to a function returning a promise, and return that from setLocale. Now GUI can ensure that refreshing the toolbox and workspace only happens after all the blocks have refreshed.
2018-07-11 08:35:22 -04:00
Paul Kaplan
82a33691d3 Set internal connected flag before emitting event 2018-07-10 15:57:25 -04:00
Eric Rosenbaum
0cc219fa0a Change ‘viewer language’ reporter to ‘language’ 2018-07-10 15:10:27 -04:00
DD Liu
747b4d1aed Add bitmap resolution 2018-07-10 11:59:10 -04:00
DD Liu
704be2d83f fix comment 2018-07-10 10:39:47 -04:00
DD Liu
6aefd13af6 Break load costume into more functions, and update how bitmaps are loaded 2018-07-10 10:30:38 -04:00
picklesrus
e156b0536c Fix name of translate extension and add the logo back. Basically fixes #1029 (#1313) 2018-07-10 10:25:49 -04:00
Andrew Sliwinski
c9d71488c3
Merge pull request #1311 from thisandagain/feature/polly
Update text-to-speech extension to use new audio engine
2018-07-10 08:30:52 -04:00
Andrew Sliwinski
ace5ae40d0 Update text-to-speech extension to use new audio engine 2018-07-09 14:40:13 -04:00
Evelyn Eastmond
394b57ebb6 Removing some logging. 2018-07-09 14:31:09 -04:00
Evelyn Eastmond
f511730602 Fix motor turn for ports C/D. Zero out sensors and motor values on disconnect. 2018-07-09 14:31:09 -04:00
Evelyn Eastmond
a220829007 Changes to EV3 extension: motor reporter 0-360, distance reporter rounded to tenths, motors coasting after turn for time commands, buttons distinguishable by port, and motor reporters for ports C/D fixed. 2018-07-09 14:31:09 -04:00
Ray Schamp
55944bc4b6
Merge pull request #1285 from LLK/feature/device-connection
Device connection update for micro:bit and EV3 extensions
2018-07-09 14:26:06 -04:00
Eric Rosenbaum
e02dd35dbf remove logging 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
b30092e890 Motor for time opcodes return promise to wait 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
a78866f99a Add EV3 block icon 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
2cfc6d601a Fix required module name to lowercase 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
190f4b5796 Fixing linting errors. 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
2ec894b5a7 Get motor positions for reporter block 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
1cc013ea1b Stringify errors 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
b9ea6005f8 Clearing ports on disconnect. 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
cf98e35564 EV3 blocks progress: distance, brightness, button, motor position. Only single button for now, distance needs threshold at 0. 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
d79efbece8 Some logging cleanup. 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
387f03b08c Add disconnect and getPeripheralIsConnected to EV3 extension 2018-07-09 13:49:41 -04:00
Eric Rosenbaum
6f5ff31eb3 Add disconnectExtensionSession and getPeripheralIsConnected 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
613a9f96c3 Adding initial test polling for EV3 distance sensor data. 2018-07-09 13:49:41 -04:00
Evelyn Eastmond
0280966a61 Connected Ev3 extension to device connection modals. 2018-07-09 13:49:40 -04:00
Evelyn Eastmond
d1d9b38bf9 Added all EV3 block commands/reporters/booleans to Ev3 device class as stubbed functions. 2018-07-09 13:49:40 -04:00
Evelyn Eastmond
42e0576549 All EV3 blocks stubbed out with console logs for now. 2018-07-09 13:49:40 -04:00
Evelyn Eastmond
2d8ad05a78 Adding Ev3 extension with three test blocks to latest device-connection work, auto-connecting to device for now. 2018-07-09 13:49:40 -04:00
Evelyn Eastmond
4332725d33 Adding more errors based on web socket onerror and onclose. Moved extension runtime mapping of devices back to MicroBit class. 2018-07-09 13:41:57 -04:00
Evelyn Eastmond
9d66c54f8a Adding error reporting to runtime from BLESession. 2018-07-09 13:41:57 -04:00
Evelyn Eastmond
73cc149783 Adding promises to return on BLE write. Some refactoring. 2018-07-09 13:41:57 -04:00
Evelyn Eastmond
701f430e56 Remove pinging in BLE connection. 2018-07-09 13:41:57 -04:00
Evelyn Eastmond
730b798686 Extension/runtime protocol refactoring. 2018-07-09 13:41:57 -04:00
Eric Rosenbaum
d778ddf00e wip 2018-07-09 13:41:57 -04:00
Paul Kaplan
665bf9a322
Merge pull request #1305 from paulkaplan/fix-broadcast-wait
Fix tick yielding threads
2018-07-09 13:41:55 -04:00
kchadha
6c118cf8e0
Merge pull request #1301 from kchadha/variable-scope
Variable scope
2018-07-06 14:39:56 -04:00
Karishma Chadha
a0a11f2f19 Add 'islocal' flag to XML serialization for variables. 2018-07-06 13:02:23 -04:00
Paul Kaplan
24355c6e6d Fix tick yielding threads 2018-07-05 14:56:00 -04:00
Paul Kaplan
2c7de6380e Add implementation for "When loudness >" block 2018-07-05 09:42:00 -04:00
Paul Kaplan
06573f4624
Merge pull request #1280 from paulkaplan/fix-bubble-state
Fix a few say bubble issues
2018-07-05 08:55:39 -04:00
Karishma Chadha
ed608ffe6f Refactor to fix issue with global var not checking for name conflicts on all sprites. 2018-07-03 23:20:49 -04:00
Ray Schamp
4525139d59
Merge pull request #1212 from mzgoddard/unwrapped
execute optimization by unwrapping recursion
2018-07-02 11:20:01 -04:00
Paul Kaplan
63e96634bf Use bounds of the renderer instead of stage target for positioning.
Fixes the regression where bubbles almost always point left instead of right.
2018-06-28 16:45:07 -04:00
Paul Kaplan
a6a29a5437 Fix hidden bubbles not resetting on stop 2018-06-28 16:44:33 -04:00
Andrew Sliwinski
840510c733 Update colors for extensions. Resolves GH-1275 2018-06-27 18:10:51 -04:00
Paul Kaplan
c3386ad84d
Merge pull request #1254 from paulkaplan/fix-undefined-block-parsing
Skip unknown opcode blocks while parsing
2018-06-27 17:01:00 -04:00
Karishma Chadha
92dfebdae6 Add variables from var_create events to appropriate target based on isLocal flag. 2018-06-27 16:32:10 -04:00
Eric Rosenbaum
aa400ea15b
Show extension status button via XML attr not button (#1270) 2018-06-27 15:53:18 -04:00
Paul Kaplan
0e3413e6bd Fix comment 2018-06-27 14:17:33 -04:00
Paul Kaplan
4967155285 Fix nits 2018-06-27 10:44:28 -04:00
Paul Kaplan
9f517bd483 Deal with comments attached to undefined blocks
Also fix an issue where you couldn't save/load projects that had multiple comments linked to a single block.
2018-06-26 16:41:10 -04:00
Paul Kaplan
e7e300caeb Skip unknown opcode blocks while parsing 2018-06-26 15:58:43 -04:00
Connor Hudson
0bed25e01b Merge develop into feature/extension-serialization 2018-06-26 08:56:42 -04:00
Mx Corey Frang
236f914f55 delete clone should not stop sound (#1269) 2018-06-25 15:44:39 -04:00
Michael "Z" Goddard
0dffc65ce9 stop drum immediately if it is still starting (#1266) 2018-06-25 15:31:35 -04:00
kchadha
d187517d85
Merge pull request #1256 from kchadha/sprite-save-load
Sprite save load
2018-06-25 11:21:01 -04:00
Karishma Chadha
55a5592ab6 Add optional type param to export sprite API. 2018-06-25 09:23:04 -04:00
Karishma Chadha
f06b8a3943 Clean up calls to fixUpVariableReferences 2018-06-25 09:11:48 -04:00
Corey Frang
4431b43e45 A few leftover loadSound that werent updated 2018-06-22 09:45:23 -04:00
Michael "Z" Goddard
c268bbae47 add decoded SoundPlayer's to a Sprite's SoundBank (#1260) 2018-06-21 17:23:33 -04:00
Corey Frang
14f8c44ad9 Stop all sounds by clones when disposed 2018-06-21 17:00:03 -04:00
Corey Frang
c087cf326a soundbank tests 2018-06-21 17:00:03 -04:00
Michael "Z" Goddard
61dacfc915
Merge pull request #1258 from mzgoddard/green-music-extension
Use new scratch-audio APIs in music extension
2018-06-21 16:59:42 -04:00
Michael "Z" Goddard
7e48bed0ab
use scratch-audio EffectChain and SoundPlayer in music extension
- Use AudioEngine to decode sounds
- Store players instead of buffers
- Use SoundPlayer stop event to track concurrency
2018-06-21 16:53:45 -04:00
Connor Hudson
befcbec393 Create extensions list in serialize function
Removed runtime argument from serializeTarget call because it wasn't used
2018-06-21 15:01:00 -04:00
Connor Hudson
026dd96491 Modify serializeTarget function to take an extension set as an argument
This allows the serialize function to build a list of all extensions used
2018-06-21 15:00:17 -04:00
Connor Hudson
17679340f9 Return extension ids from serializeBlocks instead of modifying Set passed to it 2018-06-20 15:42:56 -04:00
kchadha
39c27d82ef
Merge pull request #1248 from towerofnix/sprite-quad-fix
Fix new sprites only showing up in the top-right quadrant
2018-06-20 14:40:11 -04:00
Connor Hudson
15de2eaa68 Remove extension deserialization 2018-06-20 14:33:01 -04:00
Karishma Chadha
b40ac54fdd Remove stray newline. 2018-06-20 13:37:31 -04:00
Karishma Chadha
b75a779540 Call fixUpVariableReferences in installTargets, before emitting the workspace update. 2018-06-20 12:12:33 -04:00
Karishma Chadha
889443fcef fixUpVariableReferences should handle conflicting local variables that don't have blocks referencing them. Add unit tests for the function. 2018-06-20 12:07:42 -04:00
chrisgarrity
f0951d16fa
Merge pull request #1246 from chrisgarrity/feature/translate-labels
Localize category labels
2018-06-20 08:33:44 -04:00
Connor Hudson
68215664ec Merge branch 'develop' into feature/extension-serialization 2018-06-19 17:01:13 -04:00
Karishma Chadha
9646e3d11e Refactor and move variable reference fixup function into target. 2018-06-19 15:31:08 -04:00
Karishma Chadha
f2aacbc79c Fix up variable references after deserializing a .sprite2 or .sprite3 to avoid conflicts with pre-existing variables. 2018-06-19 14:02:54 -04:00
Paul Kaplan
6e2af4f3cc
Merge pull request #1244 from paulkaplan/sharing-apis
Add shareSound and shareCostume APIs with unit tests to the VM
2018-06-19 11:31:00 -04:00
Karishma Chadha
5cc48b6ef3 Provide global vars to sb2 import when deserializing a single sprite. 2018-06-19 08:52:22 -04:00
Karishma Chadha
86a8d93eb6 Sprite3 Export/Import. 2018-06-19 08:51:16 -04:00
Florrie
0527fcde64 Fix new sprites only showing up in the top-right quadrant 2018-06-18 17:20:59 -03:00
Connor Hudson
aa16930e34 Add initial implementation of extension serialization/deserialization 2018-06-18 15:00:33 -04:00
Evelyn Eastmond
d09c3f0418 MicroBit extension, Scratch Link first draft. (#1230)
* First microbit gui tests

* Fixed JSONRPC inheritance.  Renamed ScratchBLE/ScratchBT files.  Removed ScratchBT test code from Microbit extension.  Renamed addLine to log.

* Fixed log comments.  Removed addLine from Microbit.

* Adding auto-connect to Microbit at extension loading.  Adding hack for displayText block to Scratch-Link.

* Resolved merge conflicts and brought in latest microbit extension example code.

* Updated microbit write tests for displayText and displaySymbol blocks.  Some linting.

* Some linting and adding of BLE Characteristic consts.

* Linting fixes.

* Moving micro:bit device connection code all to the MicroBit class, decoupling Scratch3MicroBitBlocks from connection code.

* Removing old disconenct handlers from MicroBit class.  Moved service into new BLEUUID data structure.

* Renamed _write to _send.  Moved all BLE encoding concerns to the _send method.

* Using the util log.  Some linting.

* Added _read method to MicroBit class.  Renamed _send to _write.

* Some linting and formatting comments.

* First pass at peripheral chooser pattern for ScratchBLE.

* Testing characteristicDidChange events, and some changes to ScratchBLE on ready events.

* Refactoring work on PeripheralChooser and ScratchBLE.

* Some variable renaming and method signature stubs.

* Peripheral chooser method signatures.

* Moved base64 encoding/decoding to util.  Some method signature formatting.

* Adding test stubs for new util and io classes.

* Adding test stub for MicroBit extension.

* Clean up for PR.

* Clean up for PR.

* Final cleanup for PR.

* Removed logging to console.

* Adding 'btoa' and 'atob' node modules and using them in Base64Util.
2018-06-18 14:56:51 -04:00
chrisgarrity
1e3907e922 Localize category labels
Added formatMessage to the name attribute for:
* music
* pen
* translate
* video motion

Skipped speak extension - trademarked name
Skipped extensions that are not yet localized at all.
2018-06-18 11:37:10 -04:00
Paul Kaplan
1dcd174dea Add shareSound and shareCostume APIs with unit tests to the VM 2018-06-18 10:39:22 -04:00
kchadha
da30abbfb5
Merge pull request #1240 from kchadha/block-comment-disappearing-bugfix
Add comment id to block when converting from XML to vm representation.
2018-06-15 17:36:48 -04:00
Karishma Chadha
f3d49f75c8 Clean up comment serialization, add tests for new and old serialization (old is still valid, just more verbose). 2018-06-15 14:57:49 -04:00
Karishma Chadha
76b423e481 Make sure to set comment property of block when creating a new block via XML using the adapter. Update unit tests. 2018-06-15 13:58:03 -04:00
kchadha
29b79878bc
Merge pull request #1236 from kchadha/comment-save-load
Comment Save & Load
2018-06-14 18:42:19 -04:00
kchadha
529d271186
Merge pull request #1235 from kchadha/xml-escape-comments
XML escape comment text.
2018-06-14 14:46:02 -04:00
Karishma Chadha
e2eadbf603 Comment save and load. 2018-06-14 14:11:20 -04:00
Eric Rosenbaum
8c748cebb4
Merge pull request #1233 from ericrosenbaum/feature/extension-status-button
Add extension status button
2018-06-14 11:51:32 -04:00
Karishma Chadha
0d403d8e83 XML escape comment text. 2018-06-14 11:39:03 -04:00
Ray Schamp
f5234c777a
Merge pull request #1211 from mzgoddard/broadcast-and-wait-promise
yield a tick if broadcastandwait is waiting on threads waiting for a future tick
2018-06-13 15:58:37 -04:00
Eric Rosenbaum
c2b262ba97 Add status button to microbit extension 2018-06-13 15:53:05 -04:00
Eric Rosenbaum
7d0c45546c Add extension status button XML 2018-06-13 15:52:51 -04:00
Paul Kaplan
bd80e4262d
Merge pull request #1231 from paulkaplan/reorder-tarrgets
Add top-level `reorderTarget` API to VM
2018-06-13 11:07:52 -04:00
Paul Kaplan
4b64df222a Hoist target list assignment to simplify code. 2018-06-13 10:09:22 -04:00
kchadha
3308a7c6a2
Merge pull request #1229 from kchadha/imported-comment-positioning-fix
Update position for comments imported from 2.0 projects after auto-positioning.
2018-06-13 09:51:45 -04:00
Paul Kaplan
0ec0ea6ef7 Add reorderTarget API to VM 2018-06-13 09:20:22 -04:00
kchadha
b4891bb0d5
Merge pull request #1226 from towerofnix/costumename-vm
Implement "costume name" block
2018-06-12 18:50:46 -04:00
Florrie
c24e34d4e3 Remove unused getCostumeName function 2018-06-12 19:32:29 -03:00
Florrie
24c6338302 Map costumeName -> costumenumbername [name]
...instead of mapping to a new obsolete/hidden block 'costumename'.
Thanks to @kchadha for helping with this!
2018-06-12 19:27:36 -03:00
Karishma Chadha
5086eced15 Position for block comments imported from 2.0 should be updated when receiving a create event from scratch-blocks. 2018-06-12 17:10:16 -04:00
Michael "Z" Goddard
728769ea24
do not enumerate Blocks._cache
Do not stringify or enumerate Blocks._cache items.
2018-06-12 14:21:40 -04:00
Michael "Z" Goddard
05291aa254
turn reporter tree into instruction sequence
Turn the reporter tree execute walks into a sequence of block
functions. After calling a block function store the reported value in
the arguments object its depending block will use.

- Set the reported value on the thread. There is only ever one "just"
  reported value, which is read and stored elsewhere after being
  reported.
2018-06-12 14:21:40 -04:00
Michael "Z" Goddard
e0ec1ad08f
add id to block execute cache data 2018-06-12 10:05:54 -04:00
Michael "Z" Goddard
d161251a9b
yield a thread loop or tick in event_broadcastandwait
- yield a thread loop or tick in looks_switchbackdroptoandwait

If all threads broadcastAndWait is watching are "waiting" for a future
frame, yield until the next tick so event_broadcastandwait also defers
to a future frame.
2018-06-12 10:02:28 -04:00
Paul Kaplan
418c3837c6
Merge pull request #1209 from technoboy10/bugfix/gh-1135-bubble-edge
Check that bubble bounds do not extend past stage boundaries
2018-06-11 12:14:53 -04:00
Connor Hudson
244ffb38c4
Merge pull request #1218 from technoboy10/bugfix/gh-1165-monitor-import
Fix importing hidden monitors from Scratch 2 projects
2018-06-11 10:27:45 -04:00
Eric Rosenbaum
78074ec575
Merge pull request #1222 from picklesrus/speech-extension-icons
Speech extension icons
2018-06-11 09:50:42 -04:00
Connor Hudson
38756e1022 Update code comments to address PR feedback 2018-06-11 08:37:25 -04:00
Florrie
404834018b Implement costume name block 2018-06-09 21:34:21 -03:00
picklesrus
97b8ec83bd Ignore lint for the icons 2018-06-08 14:45:13 -07:00
picklesrus
6184c3ba12 Replace icons with version downloaded from https://material.io/tools/icons/?style=baseline 2018-06-08 14:42:46 -07:00
Connor Hudson
78da15c09c Remove blocks.mode reference 2018-06-08 17:04:52 -04:00
Connor Hudson
a6629628cd Use monitor show/hide monitor functions, remove incorrect block property references 2018-06-08 16:00:12 -04:00
Connor Hudson
0e394fc873 Add monitor show/hide functions, changed remove monitor to delete state 2018-06-08 15:59:35 -04:00
Eric Rosenbaum
173fb6127c
Merge pull request #1214 from ericrosenbaum/feature/when-touching
Add when touching hat
2018-06-07 15:26:09 -04:00
Connor Hudson
2cb276c476 Consolidate some logic in requestAddMonitor and requestUpdateMonitor 2018-06-07 15:18:45 -04:00
kchadha
3a61cac384
Merge pull request #1217 from kchadha/comment-state-fixes
Comment state fixes
2018-06-07 14:31:43 -04:00
Eric Rosenbaum
db7c56e08b Change function name and comment for clarity 2018-06-07 14:12:23 -04:00
Connor Hudson
99dc46ba80 Add x, y to changeBlock function again after change to merge logic 2018-06-07 11:27:10 -04:00
Connor Hudson
833c27ef21 Remove debug comments, tweak logic for monitor data merging 2018-06-07 11:24:55 -04:00
Karishma Chadha
6bc04c4bef Let comment change event handler multitask. 2018-06-07 11:04:03 -04:00
Paul Kaplan
db3fca17bc
Merge pull request #1204 from paulkaplan/reorder-apis
Add methods for reordering costumes and sounds
2018-06-07 10:54:15 -04:00
Ray Schamp
7de83bea07
Merge pull request #1215 from picklesrus/speech-extension-audiocontext
Add webkitAudioContext if AudioContext does not exist. This might fix…
2018-06-07 10:53:45 -04:00
Karishma Chadha
7b55d8e7ab Undo change that moves block comment relative to block move. 2018-06-07 10:18:34 -04:00
Connor Hudson
13bf932fbb Remove unnecessary arguments to requestAddMonitor 2018-06-07 10:11:15 -04:00
Karishma Chadha
d99a082952 CommentChange events now store text changes in an object with property text, instead of just a string. 2018-06-07 10:09:38 -04:00
picklesrus
391f47d100 Add webkitAudioContext if AudioContext does not exist. This might fix the speech extension in safari, but it is tricky to tell since I am running into problems with permissions and localhost. 2018-06-06 16:49:46 -07:00
Paul Kaplan
28f425d53e Set costume directly, no updates are needed 2018-06-06 17:29:48 -04:00
Connor Hudson
77dda04228 Set visible: false instead of deleting state in requestRemoveMonitor
This potentially has performance implications, to be investigated later.
2018-06-06 17:14:09 -04:00
Eric Rosenbaum
1a72512a62 Moving touchingObject into rendered target 2018-06-06 16:34:58 -04:00
Connor Hudson
0d0543810f Properly capture all variable monitor values on add 2018-06-06 16:00:59 -04:00
Connor Hudson
18640d7ddc use mergeWith in requestAddMonitor, requestUpdateMonitor
So undefined values don't overwrite defined ones
2018-06-06 15:54:12 -04:00
Paul Kaplan
bf2879ee0b Fix incorrect clamping 2018-06-06 15:01:02 -04:00
Eric Rosenbaum
431d4bd66b Add when touching hat 2018-06-06 13:39:23 -04:00
Paul Kaplan
0cd50fbb2c Propagate the return value of reorder functions, update comments 2018-06-06 11:13:30 -04:00
Eric Rosenbaum
332e90e408
Merge pull request #1208 from ericrosenbaum/feature/increase-pen-size
Increase maximum pen size to 1200
2018-06-06 10:16:15 -04:00
Michael "Z" Goddard
0a006dc981
add Runtime.isWaitingThread
Add a Runtime Thread helper to check if a thread is in a state where it
will not change at least until next frame. This includes any state
where the thread is done, as that will not change either.
2018-06-06 10:16:05 -04:00
Michael "Z" Goddard
9311a274d5
add BlockUtility.yieldTick 2018-06-06 10:16:05 -04:00
Michael "Z" Goddard
84705fc463
replace new Promise(r => r()) with Promise.resolve
Promise.resolve is a Promise convenience method that creates a promise
resolved to a given argument like creating a promise with a function
that immediately calls the resolve function with the given value.
2018-06-06 09:53:45 -04:00
Paul Kaplan
d6d72f6fa7 Use utility function for clamping 2018-06-06 09:43:54 -04:00
Paul Kaplan
1ebb736a2a Check specifically for number in optional property 2018-06-06 09:43:54 -04:00
Paul Kaplan
837703d4ac Make reorder functions return if a change occurred.
Gotta get that testing coverage percent up :)
2018-06-06 09:43:54 -04:00
Paul Kaplan
e6ebc33e9e Add sound and costume reordering methods and tests to top-level API 2018-06-06 09:43:54 -04:00
Paul Kaplan
d3fd3ff806 Add reorderSound and unit test to rendered-target 2018-06-06 09:43:54 -04:00
Paul Kaplan
5fd5b30ccf Add reorderCostume method and unit test to rendered target 2018-06-06 09:43:54 -04:00
Paul Kaplan
9fce4d40d0 Fix bug with zero adding a costume/sound at index 0 2018-06-06 09:43:54 -04:00
Andrew Sliwinski
c2645f3da5
Merge pull request #1210 from thisandagain/feature/polly
Add initial working version of the Amazon Polly extension
2018-06-05 18:35:38 -04:00
Andrew Sliwinski
bccdef0674 Future-proof opcode and fix issues with copied comments 2018-06-05 18:32:02 -04:00
Andrew Sliwinski
55b1a794ce Add initial working version of the Amazon Polly extension 2018-06-05 17:51:55 -04:00
kchadha
1f209ad4e0
Merge pull request #1191 from kchadha/comment-events
Persist comment state.
2018-06-05 16:53:57 -04:00
Paul Kaplan
a11d1be3fc Fix comments 2018-06-05 16:08:14 -04:00
Eric Rosenbaum
23c7df5751 Max pen size 1200 2018-06-05 15:59:14 -04:00
Connor Hudson
25290e7f6a Check that bubble bounds do not extend past stage boundaries
For when you can't flip the bubble, but need it to remain on-stage
2018-06-05 15:58:03 -04:00
Karishma Chadha
644fab0135 Track block comment movement when block moves. 2018-06-05 15:40:19 -04:00
Karishma Chadha
7c5a2ae8e0 Add check that block associated with comment actually exists. 2018-06-05 15:17:28 -04:00
Karishma Chadha
d58bb8bcfb Clean up optRuntime checks in blocklyListen 2018-06-05 15:13:03 -04:00
Karishma Chadha
2171cb69d0 No need to floor workspace coordinates in vm runtime. 2018-06-05 15:12:25 -04:00
Paul Kaplan
3a697ae0ac Add top-level API for getting and setting variable values 2018-06-05 10:46:06 -04:00
Paul Kaplan
7b2f606316 Fix an issue where variable lookup would error if stage did not exist. 2018-06-05 10:45:51 -04:00
Eric Rosenbaum
ca6a7f9311
Merge pull request #1199 from picklesrus/speech-extension-loginfo
Add some log info with more information about the speech match so we …
2018-06-04 16:35:58 -04:00
picklesrus
e668a210a0 Add some log info with more information about the speech match so we can debug better. 2018-06-04 13:17:34 -07:00
Kreg Hanning
9055706333 Add check for invalid symbol 2018-06-04 15:22:12 -04:00
Kreg Hanning
94464f0a52 Update microbit extension for latest firmware 2018-06-04 14:52:52 -04:00
Karishma Chadha
522706ccf8 Persist comment state. 2018-06-01 18:10:25 -04:00
Eric Rosenbaum
294801c1f3
Merge pull request #1184 from ericrosenbaum/bugfix/sound-blocks-yield
Set/change sound effect and volume blocks yield until the next tick
2018-06-01 13:19:50 -04:00
Eric Rosenbaum
2348d55f14 Use promises to yield 2018-05-31 17:09:47 -04:00
Paul Kaplan
ac91d8af65
Merge pull request #1180 from kchadha/parse-sb2-comments
Import Comments from 2.0 Projects
2018-05-31 16:51:22 -04:00
Eric Rosenbaum
46f885fc03 Sound effect and volume blocks request redraw 2018-05-31 16:47:40 -04:00
Karishma Chadha
537dc9bcd5 Addressing PR comments. 2018-05-31 16:33:42 -04:00
Michael "Z" Goddard
4ceeebb257 Use src/index as browser entry point
Use src/index.js as the entry by default in tools building scratch-vm
into a larger package. This saves file space by excluding extra webpack
boilerplate and may allow for deeper optimizations.

Depend on script dependencies for downstream webpack. For another
package to build in scratch-vm's dependencies without them already
being built into a consumed webpack build they need to be listed as
dependencies. This can benefit large projects that reuse the same
dependencies multiple times. Node will still use the main entry point
and its webpack build leaves the dependencies as external references so
it may reuse common modules in Node as well as in a build a browser
environment.
2018-05-31 16:32:46 -04:00
Eric Rosenbaum
c9842ec3dc
Merge pull request #1121 from picklesrus/speech-extension-checkin
Initial version of the speech extension.  There is certainly still so…
2018-05-31 15:35:09 -04:00
picklesrus
968eeaf936 Fix missing comma from bad merge. 2018-05-31 12:14:55 -07:00
Eric Rosenbaum
3e43786ef6 Default to a random language 2018-05-31 11:48:37 -04:00
Karishma Chadha
acd728dc2b No more xml differentiation for 'scratch' type of comments. 2018-05-30 21:18:45 -04:00
Karishma Chadha
f079eb4bbd Don't serialize x and y for sb2 comments so that they can be auto positioned. 2018-05-30 21:18:45 -04:00
Karishma Chadha
b0aa288916 Add info about minimized state to comment xml. 2018-05-30 21:18:45 -04:00
Karishma Chadha
1639444a4d Fix lint and tests. 2018-05-30 21:18:45 -04:00
Karishma Chadha
1401d54add Parse SB2 comments and attach block comments to the blocks they belong to. Send comment xml on workspace update so they can be rendered. 2018-05-30 21:15:14 -04:00
picklesrus
3a5051646f Now fuzzymatchResult is unused so remove it too. 2018-05-30 13:22:07 -07:00
picklesrus
bb408b8673 Remove some code that set the utterance to the fuzzy match result 2018-05-30 13:22:07 -07:00
picklesrus
e72ea04c10 Move the add event listener code to be in the same place where we call connect so there is only one place to do it. 2018-05-30 13:22:07 -07:00
picklesrus
ef142107a6 Remove the event listener for processing audio at the same time that we disconnect the script node. At this point we are closing the web socket and do not want to process more of the microphone data even if it is already in flight. Also add it back when we resume listening instead of just at init time. 2018-05-30 13:22:07 -07:00
picklesrus
ffced16b95 Fix a copy/paste comment error and initialize current_utterance differently 2018-05-30 13:22:07 -07:00
picklesrus
a2eee6a1dd Change name of opcode to speech_ from speech.Plus, remove old comment. 2018-05-30 13:22:07 -07:00
picklesrus
adf5d0acfd Add speech extension to the extension manager. 2018-05-30 13:22:07 -07:00
picklesrus
250570e0ed Use arraybuffer-loader instead of buffer-loader to load the start and end sounds. The music extension switched to this a few days ago. 2018-05-30 13:20:38 -07:00
picklesrus
e7987a6a4c Initial version of the speech extension. There is certainly still some stuff to figure out but the core of it is here. 2018-05-30 13:20:38 -07:00
Eric Rosenbaum
057e89b1e0
Merge pull request #1178 from picklesrus/translate-language-reporter-block
Add language reporter block to translate extension
2018-05-30 10:25:22 -04:00
picklesrus
123edcb913 remove stray space 2018-05-29 15:14:38 -07:00
picklesrus
e2f6dfd29f - Update the reporter to return the human readable language.
- Remove the non-final icons and replace with a TODO.
- Add messages for the text in the blocks.
2018-05-29 15:06:38 -07:00
picklesrus
f615e9191a Add language reporter block to translate extension 2018-05-28 11:58:17 -07:00
DD
7874ea9b1a Allow rotation centers with zeros 2018-05-25 16:54:54 -04:00
kchadha
a85f641d25
Merge pull request #1148 from kchadha/stage-layering
Layer group ordering.
2018-05-25 09:10:05 -04:00
Chris Willis-Ford
b3db00fab7
Merge pull request #1154 from vincentbriglia/issue1552
Allow override of icons per block
2018-05-25 01:10:57 -07:00
Chris Willis-Ford
eae258cce6
Merge pull request #1153 from vincentbriglia/issue1551
Add option for Extensions to have different colour
2018-05-25 01:07:20 -07:00
DD Liu
13d277e7c8
Merge pull request #1164 from fsih/bgOffset
Always give backdrops a certain rotation center
2018-05-24 16:54:01 -04:00
Ray Schamp
3b49f45b9a
Merge pull request #1160 from Kenny2github/patch-1
Round (x position) and (y position) to 8 places
2018-05-24 13:58:16 -04:00
Paul Kaplan
02041c8218
Merge pull request #1163 from paulkaplan/username-stub
Add logged out version of username block
2018-05-24 13:29:47 -04:00
Eric Rosenbaum
b052205457
Merge pull request #1162 from ericrosenbaum/feature/emit-keyboard-events
Runtime emits key pressed event
2018-05-23 17:04:05 -04:00
Eric Rosenbaum
3cdc9765a8
Translation extension imports translated language names (#1159)
* wip

* wip

* Get viewer language code, and cleanup

* Revert "wip"

This reverts commit 6598738ed2.

# Conflicts:
#	src/extensions/scratch3_translate/index.js
2018-05-23 17:00:59 -04:00
DD Liu
10aa6979ed Multiply by bitmap resolution 2018-05-23 14:18:22 -04:00
DD Liu
85689201ed Always give backdrops a certain rotation center 2018-05-23 14:06:23 -04:00
Paul Kaplan
c5cc129821 Add logged out version of username block 2018-05-23 11:30:12 -04:00
Eric Rosenbaum
508ac91b82 Runtime emits key pressed event 2018-05-22 17:24:22 -04:00
Paul Kaplan
b7e40c9735
Merge pull request #1147 from paulkaplan/fix-say-hide
Fix say bug with show/hide
2018-05-22 14:49:50 -04:00
Ken
5af6887cfe Round (x position) and (y position) to 8 places 2018-05-22 12:46:22 +08:00
DD Liu
8c0f5a71f0
Merge pull request #1149 from fsih/compatMode
Pass in argument to indicate compat mode
2018-05-21 15:03:27 -04:00
Karishma Chadha
5e40bfb7ee No more explicit layer groups, and separate extension into video and pen. 2018-05-20 22:30:20 -04:00
Karishma Chadha
38875bc65c Bubbles should be in the same layer as sprites. Other cleanup. 2018-05-20 19:49:42 -04:00
Karishma Chadha
64c8484066 Refactor so that layer group is optionally passed into createClone (and initDrawable) instead of isStage property getting stored on a sprite. 2018-05-18 10:11:59 -04:00
Vincent Briglia
0c8662bc23 Allow override of icons per block 2018-05-17 15:27:24 +02:00
Vincent Briglia
76ce7d6fe6 add option to override colours 2018-05-17 15:25:20 +02:00
Karishma Chadha
e2ce047fa1 Test and lint fixes. 2018-05-16 16:00:50 -04:00
Karishma Chadha
67b114b9c9 Layer group ordering. 2018-05-15 22:22:44 -04:00
Paul Kaplan
c18d5faafb Make sure to set the bubble to blank when hiding 2018-05-15 14:38:42 -04:00
Kreg Hanning
82fd6f0d2f Add micro:bit Scratch 3.0 extension (#1113)
* Add micro:bit Scratch 3.0 extension

* Fix lint errors in micro:bit extension

* Fix doc. Incorrect return type

* Check for valid pin in when pin connected block

* Drop mapping function

* Drop question mark from tilt hat block

* Generate list of symbols from object keys

* Trim display text block to max 20 characters
2018-05-14 13:52:49 -04:00
Eric Rosenbaum
846f212110
Merge pull request #1138 from picklesrus/develop-translate-changes
Update the format of the language menu to match the changes made to d…
2018-05-11 17:14:13 -04:00
Eric Rosenbaum
b5395fbc3e
Merge pull request #1140 from picklesrus/extension-manager-translate
Add translate extension to the extension manager.
2018-05-11 17:11:57 -04:00
DD
78e17b4842 Pass in argument to indicate compat mode 2018-05-11 14:24:07 -04:00
Ray Schamp
1934fd427a
Revert "Dynamically load music extension manifest" 2018-05-11 11:04:43 -04:00
picklesrus
37e5c638c1 Add translate extension to the extension manager. 2018-05-10 13:42:23 -07:00
picklesrus
720cc820cd Update the format of the language menu to match the changes made to deal with translations. This allows the menu to pass through the maybeFormatMessage code correctly. 2018-05-10 13:20:24 -07:00
Eric Rosenbaum
bdda3bc2c9 Add extension id to toolbox category XML 2018-05-10 15:41:44 -04:00
Paul Kaplan
b7f3a06fa0
Merge pull request #1133 from paulkaplan/show-hide-vars
Add implementations for hiding and showing variables and lists.
2018-05-10 15:34:21 -04:00
Andrew Sliwinski
0b7aa6ddf6
Merge pull request #1136 from thisandagain/feature/localize
Add localization support to music and video sensing extensions
2018-05-10 15:27:37 -04:00
Andrew Sliwinski
3eefddcde2 Fix typo and add clarification to translation note 2018-05-10 15:25:55 -04:00
Andrew Sliwinski
d5705f6eae Fix typo 2018-05-10 13:58:09 -04:00
DD Liu
5c003641f9
Merge pull request #1126 from fsih/fixQuirksOnLoadCostume
Run quirks mode fixes on costumes loaded from sb2s
2018-05-10 13:42:48 -04:00
Andrew Sliwinski
1995753e94 Add localization support to music and video sensing extensions 2018-05-10 13:41:41 -04:00
DD
589dd7d5e0 Attach the svg renderer instead of providing it in order to fix VM tests 2018-05-10 12:03:38 -04:00
DD
aae1e083bc Switched textEncoder to costumeAsset.encodeTextData, and pass in version as an argument instead of in costume 2018-05-09 15:48:49 -04:00
Paul Kaplan
47e2264eba Add opcodes for hiding and showing variables and lists.
Note: to get them back into the toolbox, we need to change that in blocks.
2018-05-09 14:25:15 -04:00
Paul Kaplan
f3404f4275
Merge pull request #1128 from paulkaplan/sb2-monitors
Import monitors from sb2 files.
2018-05-09 13:52:29 -04:00
Paul Kaplan
6c9ecd9065 Return a new copy of the list for monitors when changes occur 2018-05-09 13:42:53 -04:00
Paul Kaplan
7d0121bc44 Return lists as arrays if running for monitors.
This is a strange quirk of the way the list blocks work, they get joined into a string for interoperability within other other scratch blocks. But for monitors, we need it to stay an array.
2018-05-09 12:24:01 -04:00
Paul Kaplan
36a01cf0cb Fix clearing monitor state 2018-05-09 12:06:24 -04:00
Paul Kaplan
6793349898 Do not stringify reported monitor values.
Consulted @fsih, should be fine since formatting is being handled in the GUI anyway.
2018-05-09 11:39:14 -04:00
Paul Kaplan
cc1314d289 Clear out monitor state on vm.clear
Fixes https://github.com/LLK/scratch-gui/issues/1848
2018-05-09 11:34:01 -04:00
Paul Kaplan
f01558b74e Address comments from @kchada review 2018-05-09 11:08:49 -04:00
Paul Kaplan
9e372916a8 Add comment about sensing block id oddness 2018-05-09 10:52:00 -04:00
kchadha
cf8ad388de
Merge pull request #1122 from Kenny2github/develop
Handle random backdrop menu option
2018-05-09 10:12:05 -04:00
Kenny2github
8e9f9e0a30 Add one to index if random costume is current costume 2018-05-09 08:13:04 +08:00
DD
b9ce26918d Fix review comments 2018-05-08 18:30:52 -04:00
Paul Kaplan
13dfef553e Fix default value for monitor record 2018-05-08 17:30:39 -04:00
Paul Kaplan
26cfbfe588 Fix stage checking 2018-05-08 17:15:54 -04:00
Paul Kaplan
4713f47fb7 Import monitors from sb2 files.
Paired with @kchadha on all of this.
2018-05-08 17:06:19 -04:00
DD
928245d5c9 Fix Edge 2018-05-08 14:25:32 -04:00
DD
296af1a079 Run quirks mode fixes on costumes loaded from sb2s 2018-05-08 12:03:34 -04:00
Ray Schamp
22852aeab4
Merge pull request #1119 from mzgoddard/recycle-args
Recycle block args
2018-05-08 12:00:29 -04:00
Ray Schamp
b657d6a50f
Merge pull request #1118 from mzgoddard/recycle-stack-frame
Add Thread.StackFrame class
2018-05-08 09:04:16 -04:00
Kenny2github
3f1c4aa2d8 thought I was being smart by using inline assignment, but noooooo 2018-05-08 08:27:51 +08:00
Kenny2github
e3b7f53319 Make sure switched costume is not current costume 2018-05-08 08:21:27 +08:00
Michael "Z" Goddard
8107349bec
Comment BlockCached 2018-05-07 15:32:31 -04:00
Michael "Z" Goddard
2db2287d12
BlockCached instances are always initialized 2018-05-07 15:32:30 -04:00
Michael "Z" Goddard
5fd749918f
Reuse argValues
Block args set by fields are static and never change. Inputs that do
change are always set onto args. With these two assumptions we can
reuse the same objects for each execution of the same block instead of
constantly creating them and letting them be garbage collected.
2018-05-07 15:32:30 -04:00
Michael "Z" Goddard
9b82530f51
Use a constructor to create the execute cache objects 2018-05-07 15:32:30 -04:00
Michael "Z" Goddard
0634e962a8
Add Thread.StackFrame class
Use a private StackFrame class to help internally manage use of Stack
Frame values and memory. Create params, reported, and executionContext
on demand.
2018-05-07 11:20:26 -04:00
Kenny2github
4419014421 Handle random backdrop 2018-05-05 18:25:18 +08:00
Michael "Z" Goddard
ff7b575114
Dynamically load music extension manifest 2018-05-04 15:47:48 -04:00
kchadha
16c6868779
Merge pull request #1110 from kchadha/sprite-upload
Support for Sprite Upload
2018-05-04 14:56:31 -04:00
Karishma Chadha
3db2083294 Address PR comment. 2018-05-04 14:48:29 -04:00
Karishma Chadha
8cdc9dc2cd Updating vector should make bitmap resolution 1. 2018-05-04 14:39:20 -04:00
Karishma Chadha
0156dd139d Do not delete bitmap resolution property when vector is edited because there are other things that still rely on it. 2018-05-04 13:37:07 -04:00
Karishma Chadha
9b1aa7d7c7 Move comments 2018-05-04 11:00:45 -04:00
Karishma Chadha
55352e88b1 Tests and cleanup of addSprite3 so that .sprite3 format does not need to be nested inside an extra {targets: ...} 2018-05-04 11:00:45 -04:00
Karishma Chadha
9cc34d7406 Fix attribute of block so that it doesn't have errors if referenced target doesn't exist. 2018-05-04 11:00:45 -04:00
Karishma Chadha
adf7571851 Add API to generically validate and add sprite based on validation results. 2018-05-04 11:00:45 -04:00
Michael "Z" Goddard
8e252f2d7d
Use arraybuffer-loader in place of buffer-loader 2018-05-03 18:58:59 -04:00
Eric Rosenbaum
4cee734cde
Merge pull request #1008 from towerofnix/itemnum-vm
Implement "item # of (thing) in (list)" block
2018-05-03 18:08:31 -04:00
Eric Rosenbaum
9979391200
Merge pull request #1085 from ericrosenbaum/feature/key-droppability
Re-write keyboard IO for droppability support
2018-05-03 11:10:24 -04:00
Eric Rosenbaum
49802688dd Move key name strings to top 2018-05-02 15:34:17 -04:00
Eric Rosenbaum
23dd898daf Use obj.map (can’t use obj.values) 2018-05-02 09:52:04 -04:00
DD Liu
5e6873628e
Merge pull request #1082 from fsih/updateBitmap
Add updateBitmap function. getCostume can now serve bitmaps as well as svgs
2018-05-01 17:05:34 -04:00
kchadha
54ee628b27
Merge pull request #1099 from towerofnix/scrollcompat-vm
"Implement" scroll blocks
2018-05-01 15:52:42 -04:00
kchadha
2b6f96ae0a
Merge pull request #1096 from towerofnix/warpspeed-vm
Implement "all at once" block
2018-05-01 15:43:37 -04:00
kchadha
3161831890
Merge pull request #1102 from towerofnix/misc-noop-vm
"Implement" miscellaneous no-op obsolete blocks
2018-05-01 15:42:53 -04:00
Florrie
25bb4bc82c Remove doNothing method 2018-05-01 14:00:34 -03:00
Florrie
97a9b37843 Remove doNothing methods 2018-05-01 13:58:09 -03:00
Florrie
8d13bf3662 Add comment explaining all-at-once 2018-05-01 13:43:32 -03:00
kchadha
ae8c1e0ebf
Merge pull request #1101 from towerofnix/loud-vm
Implement "loud?" block
2018-05-01 10:19:26 -04:00
Eric Rosenbaum
85ac307261 Access key name strings from a getter 2018-05-01 09:01:36 -04:00
Mx Corey Frang
08a992f28d
Add a project to benchmark sensing_touchingobject vs other sprites (#1094) 2018-05-01 08:57:16 -04:00
Mx Corey Frang
dbdee0ca8b
Fix downloadProjectId method (#1093)
* Fix downloadProjectId method

* use .data not .data.buffer
2018-05-01 08:56:22 -04:00
Andrew Sliwinski
326d1c491a
Merge pull request #1086 from mortendybdal/feature/add-sprite-3
Included a function to add sprite 3  to vm
2018-05-01 08:38:08 -04:00
Morten Dybdal
41be65ba4d Fixing js linting issues 2018-05-01 13:23:21 +02:00
Florrie
8c2d023925 Implement set/change stretch blocks 2018-04-30 21:29:34 -03:00
Florrie
fe13f30037 Lint 2018-04-30 21:04:50 -03:00
Florrie
231402fc53 Implement 'hide all sprites' and 'user id' blocks 2018-04-30 21:03:35 -03:00
DD
bd772e5f77 Remove bitmap resolution from svgs 2018-04-30 19:58:48 -04:00
Florrie
8e271c70d0 Implementation + tests for loud? block 2018-04-30 19:50:13 -03:00
Eric Rosenbaum
fbeaec600c Detect arrow keys on Windows Edge 2018-04-30 17:06:23 -04:00
Eric Rosenbaum
64869e5a87 Check for “ “ (the space char) 2018-04-30 17:05:33 -04:00
Florrie
62b8dd93af Spec maps for scroll blocks + "implementations" 2018-04-30 17:45:35 -03:00
DD
78cd327237 Move the place where we divide rotation center by resolution into the VM. Also revert the method of putting data into storage to the one that was convoluted but working 2018-04-30 16:35:24 -04:00
Paul Kaplan
8a9818d0d4
Merge pull request #1098 from paulkaplan/fix-say-bounds
Use renderer bounds instead of stage bounds for positioning bubbles.
2018-04-30 15:14:08 -04:00
Paul Kaplan
6c59ccbe1b Use renderer bounds instead of stage bounds for positioning bubbles.
Instead of using the rendered bounds of the stage (which can be larger than the actual rendering area of the stage due to large costumes), use the `nativeSize` which is the size in scratch coords of the rendering area. Note that `nativeSize` is not the size of the canvas element or anything like that, it is the "logical size", i.e. the [width, height] in scratch coords.
2018-04-30 14:26:25 -04:00
Paul Kaplan
3f97ccc8ce Remove the "optimization" for 2018-04-30 13:40:36 -04:00
Paul Kaplan
e4c109c0c8 Merge branch 'develop' into fix-say-flickering 2018-04-30 13:25:35 -04:00
Florrie
b6cb198144 Implement all-at-once block 2018-04-30 12:18:38 -03:00
Ray Schamp
23e72525bf
Merge pull request #1065 from mzgoddard/push-reported-again
Push reported again. Now with empty boolean support!
2018-04-30 09:36:32 -04:00
kchadha
8e65b3d80f
Merge pull request #1092 from kchadha/refactor-video-io
Refactor Video IO
2018-04-30 09:27:10 -04:00
Karishma Chadha
857f77c511 Addressing PR comments. 2018-04-29 19:52:21 -04:00
DD
9f0f2fcd27 Pass a data uri 2018-04-27 17:23:30 -04:00
Eric Rosenbaum
743135beb4 Merge branch 'develop' of https://github.com/LLK/scratch-vm into feature/key-droppability 2018-04-27 14:59:35 -04:00
Paul Kaplan
ad4f5652e4
Merge pull request #1088 from paulkaplan/fix-say-timing
Track say/thinks per target so they can maintain correct timing.
2018-04-27 11:10:12 -04:00
Paul Kaplan
c2bb1e3123 Add comment to jsdoc typedef where it belongs. 2018-04-27 09:21:38 -04:00
Karishma Chadha
271a19c05d Add runtime/render related functionality back to VM. 2018-04-26 19:17:41 -04:00
DD
b2aa87da77 fix lint 2018-04-26 18:43:49 -04:00
DD
009253a8d1 Code review 2018-04-26 18:34:35 -04:00
DD
3a3d807cba switch polyfill to one that doesn't break tests 2018-04-26 15:14:51 -04:00
DD
c73b06a254 add polyfill 2018-04-26 15:14:51 -04:00
DD
f1e70c430f updateBitmap 2018-04-26 15:14:51 -04:00
Andrew Sliwinski
1ed5d57c98
Merge pull request #1087 from thisandagain/bugfix/974
Cast 'create clone' argument to string
2018-04-26 14:57:32 -04:00
DD
fc36ea5208 Rename getCostumeSvg to getCostume 2018-04-26 13:36:51 -04:00
Karishma Chadha
5f4139cbe4 Use video provider instead of making call to getUserMedia directly. 2018-04-26 13:24:31 -04:00
Paul Kaplan
3019d05181 Fix issue where say bubble flickers during conversation.
The fix for this involves something of hack where we decide whether to use the optimization that prevents "typewriter" style projects (say for 0.05s in a loop) based on the amount of time the block is going to run for. A full fix of this can only be achieved if the text bubble renders synchronously.
2018-04-26 13:03:57 -04:00
Paul Kaplan
50708c15e4 Track say/thinks per target so they can maintain correct timing. 2018-04-26 11:29:24 -04:00
Andrew Sliwinski
218725d771 Cast 'create clone' argument to string. Resolves GH-974 2018-04-26 10:29:29 -04:00
Morten Dybdal
d033271a1f Included a function to add sprite 3 to vm 2018-04-26 10:59:53 +02:00
Eric Rosenbaum
999fb10d15 Re-write keyboard IO for droppability support 2018-04-25 11:58:50 -04:00
Michael "Z" Goddard
1c68b543df
Comment execute's BlocksExecuteCache usage
Explain how BlocksExecuteCache helps speed up execute by storing values from
Blocks and one-time derived values on an object that is released when Blocks is
edited in the editor. The one time created cache object for a block then
simplifies the complexity of later javascript operations to use these stored
values.
2018-04-24 19:05:44 -04:00
Michael "Z" Goddard
02dd9a8c22
Unset justReported after reading its value
Avoid justReported values leaking to other argValues by setting back to the
default null value.
2018-04-24 19:05:20 -04:00
kchadha
cde801bc17
Merge pull request #1075 from kchadha/load-costume-no-metadata
Load costume without metadata
2018-04-23 17:52:04 -04:00
Eric Rosenbaum
2590cf53e7 wip 2018-04-23 17:49:01 -04:00
Andrew Sliwinski
eeab0695d6
Merge pull request #1079 from thisandagain/bugfix/1072
Various refinements to Video Motion extension
2018-04-23 17:04:17 -04:00
Paul Kaplan
f118e912bf
Merge pull request #1081 from paulkaplan/fix-stage-clicks
Activate stage click hats if no other sprites are clicked
2018-04-23 14:47:26 -04:00
Paul Kaplan
978906d926 Activate stage click hats if no other clicks are hit.
Also check the bounds before to make sure clicks are inside the stage bounds.
2018-04-23 14:25:58 -04:00
Andrew Sliwinski
add879ab0a Enable video layer when loading extension. Resolves GH-1072 2018-04-23 13:03:56 -04:00
Andrew Sliwinski
ced4de8995 Flip sort order of sensing object menu in video motion extension. Resolves GH-1074 2018-04-23 13:00:20 -04:00
Andrew Sliwinski
717ac46bbd Reorder video motion blocks. Resolves GH-1073 2018-04-23 12:57:14 -04:00
Karishma Chadha
af7ed61016 Fix bitmap support. In Scratch 3.0, we are defaulting to bitmapResolution = 2 for all costumes. 2018-04-22 21:22:03 -04:00
Karishma Chadha
e1d9df3b1b Undo an unnecessary change from the last commit. 2018-04-20 18:11:14 -04:00
Karishma Chadha
dfa3408add Update sound dataFormat after editing 2018-04-20 14:13:57 -04:00
Andrew Sliwinski
968643ed16
Merge pull request #1069 from thisandagain/bugfix/underscore
Replace extension delimiter with '_'
2018-04-20 11:46:25 -04:00
Paul Kaplan
0f16e2fe65
Merge pull request #1070 from paulkaplan/fix-bubbles
Fix drag and empty costume bugs with say bubbles
2018-04-20 11:43:15 -04:00
Andrew Sliwinski
192084e0e7 Do not load extension if prefix is undefined 2018-04-20 11:36:16 -04:00
Andrew Sliwinski
fd97892eb1 Remove console log 2018-04-20 10:58:35 -04:00
Andrew Sliwinski
57b7e9916d Resolve issue with SB2 import 2018-04-20 10:58:03 -04:00
Andrew Sliwinski
645a42b843 Address feedback from review 2018-04-20 10:49:06 -04:00
Paul Kaplan
393b5d54df Handle positioning bubbles for empty costumes 2018-04-20 10:45:54 -04:00
Paul Kaplan
54d5be8bba Do not bother repositioning bubbles for invisible sprites 2018-04-20 10:45:34 -04:00
Paul Kaplan
9782c137bb Use the new general target visual change for updating bubbles. 2018-04-20 10:44:55 -04:00
Paul Kaplan
c36ff056a2 Add new event for all visual target changes, not just moving. 2018-04-20 10:43:45 -04:00
Andrew Sliwinski
9ec3d41ea1 Clarify 'core' list for SB2 import 2018-04-20 10:34:17 -04:00
Andrew Sliwinski
f86cad3305 Replace extension delimeter with '_' 2018-04-20 07:54:02 -04:00
Karishma Chadha
54b52ba96c Use calculated rotation center from renderer when rotation center is not provided with the costume being loaded. 2018-04-20 00:04:08 -04:00
Karishma Chadha
d6f28f2266 Correct what is being passed into scratch-render if some metadata (rotationCenter, bitmapResolution) is missing. 2018-04-18 14:21:29 -04:00
kchadha
47a2d76a14
Merge pull request #1060 from kchadha/fix-sound-metadata
Update sound metadata and retrieve mp3 correctly from storage
2018-04-17 11:02:56 -04:00
Michael "Z" Goddard
d04d6b2c6a
Revert "Revert "Push reported""
This reverts commit 107adad647.
2018-04-16 13:21:53 -04:00
Paul Kaplan
5b9dc4df77
Merge pull request #1061 from kchadha/video-transparency-save-load-fix
Fix video transparency save/load issue.
2018-04-13 13:58:19 -04:00
Karishma Chadha
bd0bcb9395 video transparency should be a number. 2018-04-13 13:47:05 -04:00
Paul Kaplan
d42135a40a
Merge pull request #1057 from thisandagain/bugfix/1056
Rename pen 'clear' to 'erase all'
2018-04-13 13:26:54 -04:00
Paul Kaplan
aff8f93999 Change displayed name to Video Motion 2018-04-13 12:52:46 -04:00
Karishma Chadha
e71e51866f Fix typo. 2018-04-13 11:28:04 -04:00
Karishma Chadha
dca9270730 Use sound returned from audio engine to set sample rate and sample count since the sound gets resampled by the audio engine. Also, check for an mp3 format in deserialize assets, and otherwise default to wav. 2018-04-13 11:20:16 -04:00
Paul Kaplan
0838f6c875 Remove duplicate play 2018-04-13 11:12:44 -04:00
Paul Kaplan
c46d1157fa Slicing array buffers with no args throws on Safari 2018-04-13 11:08:32 -04:00
Paul Kaplan
71333765c9 Use new mediaDevices API for getUserMedia 2018-04-13 11:08:32 -04:00
Andrew Sliwinski
6f80403e8a Rename pen 'clear' to 'erase all'. Resolves GH-1056 2018-04-13 10:53:13 -04:00
kchadha
0e0d09c235
Merge pull request #1042 from mzgoddard/target-video-state
Configure video device with stage video settings
2018-04-13 09:12:25 -04:00
Andrew Sliwinski
3ac2922a07
Merge pull request #1028 from mzgoddard/motion-detect-4
Motion detect 4
2018-04-13 08:16:34 -04:00
kchadha
8739a524eb
Merge pull request #1031 from kchadha/block_serialization_compression
Block serialization compression
2018-04-11 19:17:42 -04:00
kchadha
7311b103fa
Merge pull request #1045 from kchadha/broadcast-message-shadow-fix
Fix import of broadcast block empty string obscured shadow import
2018-04-11 18:13:20 -04:00
Michael "Z" Goddard
8ebd659094
Use string enumerated values for videoSensing sensor block 2018-04-11 10:30:58 -04:00
Karishma Chadha
6c538d0659 Sounds should still get loaded from storage even if there is not an audio engine present. This is analagous to costumes getting loaded even if there is no renderer present. 2018-04-11 10:28:22 -04:00
Michael "Z" Goddard
cef9f58c2a
Set video device state and transparency from values in stage
Set the video device state and transparency to the values in the stage target
when the video sensing extension is loaded. Changing video state and
transparency from the extension's blocks will also store that setting to the
stage target.
2018-04-11 10:15:53 -04:00
Michael "Z" Goddard
b9911332c7
Default stage.videoState to ON
Set to ON, adding a video extension when a user selects a video extension in
the gui, the video extension will use stage.videoState to turn on the video
device. Adding a video extension as part of loading a project, the stage's
videoState will be set to the stored value in the project's saved data, and the
extension will set the video device's state with that saved value.
2018-04-11 10:15:52 -04:00
Michael "Z" Goddard
044370790c
Merge pull request #1016 from gnarf/io-video
Video IO Device Implementation
2018-04-11 10:14:56 -04:00
Paul Kaplan
f23b5a9625
Merge pull request #1041 from paulkaplan/fix-clone-drag
Only select the original target after a drag.
2018-04-11 10:04:25 -04:00
Paul Kaplan
64c2d1f7b1
Merge pull request #1038 from paulkaplan/skin-size
Attach the costume size to the costume when loaded and modified
2018-04-11 09:30:02 -04:00
Paul Kaplan
2478f2ff8b
Merge pull request #1040 from paulkaplan/filter-dragging-touching
Filter out dragging targets from touching sprite check.
2018-04-11 09:17:52 -04:00
Paul Kaplan
4a9adcc3d9 Make stopDrag deal with bare targets and add tests 2018-04-11 09:12:43 -04:00
Karishma Chadha
6f3c84bf77 Ensure we are serializing file extensions for costumes and sounds as lower case. 2018-04-10 17:01:31 -04:00
Karishma Chadha
585a46f334 Add one last pass to block serialization to remove orphan primitive shadow blocks. 2018-04-10 16:55:27 -04:00
Karishma Chadha
0df937f5c0 Adding a bit more clarification to comment. 2018-04-10 16:53:07 -04:00
Karishma Chadha
18c1a20eaa Remove unnecessary comments. 2018-04-10 15:44:32 -04:00
Karishma Chadha
2f53996c9c Switch video flipped string back to hyphen. 2018-04-10 15:43:29 -04:00
Chris Willis-Ford
631d7fb4de
Merge pull request #1021 from cwillisf/features-for-control-extension
Features for control extension
2018-04-10 12:17:43 -07:00
Karishma Chadha
a4d9ff9266 Fix issue with importing broadcast block with obscured empty string shadow. 2018-04-10 15:16:18 -04:00
Michael "Z" Goddard
461d523729
Add block comments to videoSensing.videoToggle and setVideoTransparency 2018-04-10 14:34:27 -04:00
Michael "Z" Goddard
d4037808a7
Add VideoState enum to Scratch3VideoSensingBlocks 2018-04-10 14:34:27 -04:00
Paul Kaplan
da539ea6cd Only select the original target after a drag.
This allows you to still drag clones around, but when you stop dragging,
the original sprite gets selected.
2018-04-10 14:31:49 -04:00
Paul Kaplan
92d00b5944 Filter out dragging targets from touching sprite check.
This introduces an asymmetry that matches the Scratch 2 behavior, that
is, a sprite that is being dragged can detect other sprites using
touching <sprite>, but cannot be detected by other sprites while it is
being dragged.
2018-04-10 14:20:51 -04:00
Corey Frang
fe7aa8a78f
Add @param documentation for the frameInfo descriptor param 2018-04-10 13:59:23 -04:00
Corey Frang
a86202b8e2
make onError a prototype method 2018-04-10 13:59:23 -04:00
Corey Frang
0180964333
Simplify setup method promise, add onError 2018-04-10 13:59:23 -04:00
Corey Frang
89dd4720a4
store ghost state so previews will use last value whenever setup 2018-04-10 13:59:23 -04:00
Corey Frang
d0a71dcaf9
store the ghost effect in case preview is setup after it was last set 2018-04-10 13:59:23 -04:00
Corey Frang
e20723994f
fix sb2 conversion to load into correct VIDEO_STATE 2018-04-10 13:59:22 -04:00
Corey Frang
9cd5e4da2b
Reduce indentation waterfall 2018-04-10 13:59:22 -04:00
Corey Frang
f3a956af2b
add enabled state tracking, disable state waits for setup complete 2018-04-10 13:59:22 -04:00
Corey Frang
ce03e978dc
stop the track in the "on-off" scenario 2018-04-10 13:59:22 -04:00
Corey Frang
825ff22fa4
Guard against some issues that could happen with enable/disable video quickly 2018-04-10 13:59:22 -04:00
Corey Frang
f19ae793c0
enableVideo - get rid of "requests" 2018-04-10 13:59:22 -04:00
Corey Frang
efa6b3a069
stop track 2018-04-10 13:59:22 -04:00
Corey Frang
46b4ef4d80
Use a global mirror state 2018-04-10 13:59:21 -04:00
Corey Frang
90166dc732
Add extra control blocks for video transparency and on/off control 2018-04-10 13:59:21 -04:00
Corey Frang
e4bd9cf6b2
Move methods around to sort the public interface nearer the top 2018-04-10 13:57:54 -04:00
Corey Frang
992e884668
Make disableVideo a public method 2018-04-10 13:57:54 -04:00
Corey Frang
d512042415
Add set preview ghost 2018-04-10 13:57:54 -04:00
Corey Frang
da05e673fa
_singleSetup makes more sense 2018-04-10 13:57:54 -04:00
Corey Frang
c10696f88c
Rewrite the setup/disable process from review comments 2018-04-10 13:57:53 -04:00
Corey Frang
eef88f6c2d
First draft of video IO device 2018-04-10 13:57:53 -04:00
Michael "Z" Goddard
cd7e03f0f6
Merge pull request #1019 from mzgoddard/motion-detect-3
Test VideoMotion and VideoSensing blocks
2018-04-10 13:06:58 -04:00
Paul Kaplan
89eb1ce39b Set the costume asset size when a costume is loaded or modified. 2018-04-10 09:51:29 -04:00
Paul Kaplan
f29482957c Change getSkinSize to getCurrentSkinSize for renderer update. 2018-04-10 09:50:18 -04:00
Christopher Willis-Ford
53b5ba93f5 Add tests for converting extension metadata
These tests convert some extension metadata into scratch-blocks JSON and
XML, then verify that the JSON and XML are as expected.
2018-04-09 15:37:08 -07:00
kchadha
d177f4cd0c
Merge pull request #1033 from towerofnix/counter-vm
Implement counter blocks
2018-04-09 13:55:35 -04:00
kchadha
b794e19c31
Merge pull request #1032 from towerofnix/while-vm
Implement "while" block
2018-04-09 13:48:08 -04:00
Florrie
797d16be26 Implement counter blocks 2018-04-07 16:02:49 -03:00
Florrie
c57d0c94eb Add implementation for while 2018-04-07 14:04:00 -03:00
Florrie
27d053acff Add doWhile -> control_while to specmap 2018-04-07 14:04:00 -03:00
Michael "Z" Goddard
d3ff8b5eed
Test VideoMotion and VideoSensing blocks
- Add pngjs dev dependency to read test images
2018-04-06 18:09:50 -04:00
Karishma Chadha
9ce6040b0f Fix lint error... 2018-04-06 16:57:52 -04:00
Karishma Chadha
1861b5a262 Can't have hyphens in identifiers. 2018-04-06 16:51:46 -04:00
Karishma Chadha
e92db8fa1e Don't really need level 9 compression. 2018-04-06 15:47:24 -04:00
Karishma Chadha
44b1a2f798 List limit should apply to insert block as well. 2018-04-06 15:31:10 -04:00
Karishma Chadha
5d46f8de99 Not providing a zip to deserialize asset functions is not an error. 2018-04-06 15:04:03 -04:00
Michael "Z" Goddard
0591b475f2
Merge pull request #1020 from gnarf/sb2-spec-when-video-motion
Allow specmap to have methods to branch into multiple sb3 opcodes
2018-04-06 14:28:17 -04:00
Eric Rosenbaum
25f1c1a5e6
Merge pull request #1017 from ericrosenbaum/bugfix/clones-inherit-instrument
Clones inherit music custom state
2018-04-06 13:38:03 -04:00
Karishma Chadha
8c1e6095cb Remove code that was temporarily accomodating for the old version of the default project in gui. 2018-04-06 11:33:44 -04:00
Karishma Chadha
4ec25b32b1 Code cleanup and commenting. 2018-04-06 11:33:44 -04:00
Karishma Chadha
9892dac904 Custom state (e.g. tempo, volume, video related state) should show up in a target that has been 'flattened' via JSON.stringify. 2018-04-06 11:33:44 -04:00
Karishma Chadha
2dbcdc2244 The stage should always be called 'Stage'. 2018-04-06 11:33:44 -04:00
Karishma Chadha
b436b5fd82 Add a limit to the number of items a list can have. No-op on 'addToList' block if trying to add to a list that is already at the limit. 2018-04-06 11:33:44 -04:00
Karishma Chadha
6c0d257a63 Deserialize tempo, volume, and video related state. 2018-04-06 11:33:44 -04:00
Karishma Chadha
4dd83cf717 Todo comment for clarity... 2018-04-06 11:33:44 -04:00
Karishma Chadha
118c6f0356 Use bitmap asset type and 'png' for various costume formats. 2018-04-06 11:33:44 -04:00
Karishma Chadha
d61ea23e1e Deserialize compressed primitives. 2018-04-06 11:33:44 -04:00
Karishma Chadha
21d60604ac Some block serialization compression -- compress primitives. This is a WIP since we don't deserialize blocks serialized in this way. 2018-04-06 11:33:44 -04:00
Karishma Chadha
334058b081 Block and variable compression. No need to serialize uid of block and shadow if they are the same, reduce duplication of information. 2018-04-06 11:33:44 -04:00
kchadha
4b62a938c4
Merge pull request #1000 from kchadha/deserialize-assets-in-sb2
Deserialize sb2 assets while loading local .sb2.
2018-04-06 11:33:00 -04:00
Ray Schamp
efb1bdb1ea Remove video motion icon until we have one 2018-04-06 09:55:16 -04:00
Michael "Z" Goddard
91747fd229
Add back missing Scratch3VideoSensingBlocks.INTERVAL
The INTERVAL time defines how often to analyze a frame. Without the value the
test whether a frame should be analyzed will always be false.
2018-04-05 17:47:07 -04:00
Corey Frang
78199c41a5 Allow specmap to have methods to branch into multiple sb3 opcodes 2018-04-05 15:39:41 -04:00
Christopher Willis-Ford
3be16eddb1 Add code to load 'core' extensions 2018-04-05 12:20:03 -07:00
Christopher Willis-Ford
f8db6c3f02 Support extension translation
The new `maybeFormatMessage` function detects whether its argument
looks like a message descriptor object and, if so, will call
`formatMessage` on it. This is now used for all user-visible text fields
in extensions.

Also, messages may use "select" to check the target type with a message
like this: '{targetType, select, stage {text for stage} sprite {text for
sprite} other {text for other}'. Note that the "other" clause is
required by `formatMessage`.
2018-04-05 12:17:05 -07:00
Eric Rosenbaum
2a90e5868d Fix runtime scope and unit test 2018-04-05 15:01:52 -04:00
Ray Schamp
41955913aa
Merge pull request #1007 from mzgoddard/motion-detect-2
Motion detect 2
2018-04-05 11:59:59 -04:00
Eric Rosenbaum
88b13e218d Clones inherit music custom state 2018-04-05 11:27:54 -04:00
Christopher Willis-Ford
defdd42c47 Add TargetType enum for use by/with extensions 2018-04-04 23:45:26 -07:00
Christopher Willis-Ford
de9e2be265 Add EVENT extension block type
An EVENT block is like a HAT block but it has no implementation
function. Its stack runs when the VM emits the corresponding event.
2018-04-04 23:44:59 -07:00
Christopher Willis-Ford
af058b8146 Support LOOP and CONDITIONAL blocks in extensions
A LOOP block is like a conditional, but the LOOP block will be
re-evaluated after any child branch runs.

Also:
- Support using '---' as a block separator
- Refactor common code from `_registerExtensionPrimitives` and
  `_refreshExtensionPrimitives` into new `_fillExtensionCategory`
- Improve error reporting during block conversion
2018-04-04 22:19:48 -07:00
Eric Rosenbaum
21ae14c499
Merge pull request #1014 from ericrosenbaum/bugfix/video-state
Import and store video state
2018-04-04 19:59:14 -04:00
Eric Rosenbaum
5dc8e51c6d Import and store video state 2018-04-03 16:36:58 -04:00
Michael "Z" Goddard
d4bffcbddb
Rename playground/motion.html to video-sensing.html 2018-04-03 16:19:52 -04:00
Michael "Z" Goddard
6d2c29530f
Document VideoMotionView 2018-04-03 16:19:52 -04:00
Michael "Z" Goddard
9a2e937271
Document VideoMotion class
- Rename video_sensing/lib.js to video_sensing/library.js
2018-04-03 16:19:52 -04:00
Michael "Z" Goddard
a32b15a8f9
Add VideoSensing math module
- motionVector takes motion component and returns a 2d vector
- scratchAtan2 takes a y and x value and returns an angle in degrees
  referencing Scratch's coordinate system
2018-04-03 16:19:52 -04:00
Michael "Z" Goddard
b46c956203
Comment items in Scratch3VideoSensingBlocks 2018-04-03 16:19:51 -04:00
Michael "Z" Goddard
c291a04cc7
Add file comment block to video_sensing/debug.js 2018-04-03 16:19:51 -04:00
Michael "Z" Goddard
e65b7985cb
Add whenMotionGreaterThan hat block to video sensing ext 2018-04-03 16:19:51 -04:00
Michael "Z" Goddard
cfd74a7c7f
Add checkboxes for each video sensing debug view 2018-04-03 16:19:51 -04:00
Michael "Z" Goddard
b012d60689
Add video sensing debug C_CELL and AB_CELL views
- Rename UV to UV_CELL, UV cannot be rendered in a non-cell format

Modify C and AB views as well to better represent in color the work being done.
If you watch the debug views with XY_CELL, AB_CELL, C_CELL, and UV_CELL you can
see how AB_CELL and C_CELL affect UV_CELL in similar color patterns.
2018-04-03 16:19:51 -04:00
Michael "Z" Goddard
0a58a6d806
Merge pull request #1001 from mzgoddard/motion-detect
Motion detect
2018-04-03 16:19:26 -04:00
Florrie
b861c78086 Implement 'get item # of (thing) in (list)' 2018-03-31 13:25:50 -03:00
Michael "Z" Goddard
f3d19dc1a1
Use videoSensing extension for sb2 senseVideoMotion 2018-03-29 19:02:07 -04:00
Michael "Z" Goddard
c206dc3241
Add motion playground page for debugging video sensing 2018-03-29 19:02:07 -04:00
Paul Kaplan
2d9bd92140
Merge pull request #930 from ericrosenbaum/bugfix/loudness-performance
Only measure loudness once per step
2018-03-29 16:27:10 -04:00
Michael "Z" Goddard
3c473f6ba8
Translate scratch 2 video sensing into scratch 3 extension
- Add videoSensing extension to extension-manager
2018-03-29 15:15:11 -04:00
kchadha
51306e3492
Merge pull request #963 from towerofnix/foreach-vm
Implement for-each block
2018-03-28 10:52:14 -04:00
Karishma Chadha
b8e67a7727 Hookup sb2 import code to deserialize assets from local sb2 file. 2018-03-25 18:14:30 -04:00
Paul Kaplan
13641297fd
Merge pull request #996 from paulkaplan/fix-bubble-bounds
Position the speech bubble more tightly.
2018-03-23 14:36:52 -04:00
Paul Kaplan
ea534b35ea Position the speech bubble more tightly. 2018-03-23 10:51:19 -04:00
kchadha
dbc7b9597f
Merge pull request #979 from kchadha/serialization-cleanup
SB3 Serialization & Load Project
2018-03-23 10:11:49 -04:00
Paul Kaplan
a27ed888d2
Merge pull request #992 from paulkaplan/stage-clicked
Make "when clicked" blocks  target dependent.
2018-03-23 09:20:22 -04:00
Chris Willis-Ford
9dc3df1fda
Merge pull request #994 from cwillisf/looks-extension-support
Looks extension support
2018-03-22 15:16:21 -07:00
Florrie
1db4a2c7a7 Compatibility implementation 2018-03-22 18:55:36 -03:00
Eric Rosenbaum
4e3c5c7f2e
Merge pull request #991 from ericrosenbaum/bugfix/clones-share-activesoundplayers
Clones share their parent’s activeSoundPlayers object
2018-03-22 16:49:04 -04:00
Karishma Chadha
c4ad76eef1 Turns out ArrayBuffers are not views of themselves. 2018-03-22 16:19:36 -04:00
Karishma Chadha
3a4f620318 Check if loadProject input is any typed array using ArrayBuffer.isView. This allows us to pass a project's asset.data (from storage) directly instead of calling toString on it first. 2018-03-22 14:04:58 -04:00
Karishma Chadha
2c3e3472ed Add warning to 'fromJSON' function since it is now just a wrapper around loadProject. Change vm sb3_serialization test to use 'loadProject' function instead of 'fromJSON'. 2018-03-21 17:55:02 -04:00
Karishma Chadha
ce6ef92eb5 Clear runtime after validation success instead of before. 2018-03-21 17:46:39 -04:00
Karishma Chadha
ab863096cd Remove cruft and fix for..in loops. 2018-03-21 17:42:01 -04:00
Karishma Chadha
9d3a3fd12f When serializing md5+ext, the name should reflect that. Deserializing translates this name back to what vm and other components currently expect. 2018-03-21 16:51:40 -04:00
Karishma Chadha
24e248d4fb Removing cruft... 2018-03-21 14:46:21 -04:00
Christopher Willis-Ford
26bc7851bb Rename ReporterScope.SPRITE to TARGET & add JSDoc 2018-03-20 15:30:34 -07:00
Christopher Willis-Ford
d3352ac54d Add JSDoc tags for ArgumentType & BlockType 2018-03-20 15:26:27 -07:00
Christopher Willis-Ford
1049e90a8f Wrap extension menu function to provide context
When the extension system calls a function to retrieve extension menu
items, it now provides the ID of the current editing target. There's
also now a little bit of error-checking on the results.
2018-03-20 15:26:27 -07:00
Christopher Willis-Ford
2932f232c4 Improve developer feedback for missing block func 2018-03-20 15:26:12 -07:00
Christopher Willis-Ford
4201f212d3 Add JSDoc for extension metadata format
This is a first pass and is probably not 100% correct. It also contains
the new (experimental?) reporter scope field.
2018-03-20 15:05:21 -07:00
Christopher Willis-Ford
6a06984678 Add enum for reporter scope
Some reporters are sprite-specific, such as the costume name/number or
X position of the sprite. Others are global. This enum allows an
extension author to specify the scope of a reporter.
2018-03-20 15:05:21 -07:00
Paul Kaplan
140094a7ad Make "when clicked" blocks target dependent.
This involves adding a new opcode, event_whenstageclicked, and adding a
method to the blocks container to update the opcode pair depending on
whether the target is the stage. This method is then called in two
places: first after the sb2 import parses the blocks (not done in the
sb2 parsing itself because no other blocks are target specific) and then
again when blocks are shared between targets.

Also added tests for the block container method, and a fixture project
that tests the opcode splitting on sb2 import.
2018-03-20 10:41:50 -04:00
Eric Rosenbaum
2b985fa083
Merge pull request #975 from ericrosenbaum/bugfix/move-volume-to-rendered-target
Move volume to rendered target
2018-03-19 16:45:25 -04:00
Eric Rosenbaum
2527c804ea Clones get ref to parent’s activeSoundPlayers obj 2018-03-19 16:44:49 -04:00
Chris Willis-Ford
4c0e968bec
Merge pull request #978 from cwillisf/fix-saythink-and-wait
Fix say/think and wait
2018-03-19 10:36:01 -07:00
Paul Kaplan
979c8b05e0
Merge pull request #965 from bartljak/issue#960
fixed issue 960
2018-03-19 06:06:00 -07:00
Karishma Chadha
b4f6f24926 Fix up tests. 2018-03-16 11:43:27 -04:00
Florrie
6517bd0974 Make 'key pressed?' block import correctly 2018-03-16 11:58:25 -03:00
Karishma Chadha
003ed01015 Update VM to use scratch-parser callback interface 2018-03-15 22:40:40 -04:00
Andrew Sliwinski
1d90c82fcf
Merge pull request #945 from picklesrus/translate-extension
Translate extension block
2018-03-15 08:36:39 -04:00
kchadha
a3ed4cad99 Remove todo 2018-03-14 22:52:00 -04:00
kchadha
0d55e4c74f Modifying apis to accomodate existing tests. 2018-03-14 22:52:00 -04:00
kchadha
22be2b15f3 Major refactor of project loading. Removed loadProjectLocal, in favor of going back to single API (loadProject). loadProject uses scratch-parser to unpack and validate project. Scratch-parser is getting updated to return validated project, with appended project metadata, and unpacked zip (JSZip object) if provided a buffer. 2018-03-14 22:52:00 -04:00
kchadha
2c551d1739 Some more cleanup. 2018-03-14 22:51:59 -04:00
kchadha
09c8110923 Always serialize parent and next on a block even if they're null. 2018-03-14 22:51:59 -04:00
kchadha
4f6ece9fa8 Be specific about what we're serializing. Flatten targets first by turning them into JSON strings and re-parsing them, and then only serialize the properties necessary for saving and loading. 2018-03-14 22:51:59 -04:00
Christopher Willis-Ford
4210c6dd4c Fix stack check in stepThread
The previous logic seemed to be expecting `peekStack` to return 0 when
the stack was empty, but its return type is `?string` and it returns
`undefined` when the stack is empty. The `!== 0` check would never pass,
then, leading to problems with (for example) the "say/think and wait"
blocks.
2018-03-14 16:17:29 -07:00
Christopher Willis-Ford
b61c6a8f76 Don't render say/think bubbles during tests
This change makes say & think commands work during headless tests.
2018-03-14 16:07:05 -07:00
Eric Rosenbaum
a652156032 Sensing-of block gets target volume 2018-03-13 11:45:11 -04:00
Eric Rosenbaum
f8c2771776 Use target volume, not custom state 2018-03-13 11:43:53 -04:00
Eric Rosenbaum
a7c6c430b8 Add volume to rendered target 2018-03-13 11:43:33 -04:00
Andrew Sliwinski
2ae788ca28
Merge pull request #968 from gnarf/instanceof-fix
ensure this.workerClass exists before instanceof check
2018-03-12 12:45:09 -04:00
Andrew Sliwinski
6039f1b7e7
Merge pull request #969 from gnarf/fix-music-no-audio
Ensure music extension _decodeSound is promise
2018-03-12 12:44:16 -04:00
picklesrus
39d2559e37 Initial version of translate extension. 2018-03-11 12:18:21 -07:00
kchadha
adfbeddcab
Merge pull request #964 from kchadha/save-load
Preliminary Save and Load Work
2018-03-09 09:34:44 -05:00
Corey Frang
1d414dd5a0 Ensure music extension _decodeSound is promise
Currently if there is no audio engine detected this returns undefined,
which in turn causes the line above to fail trying to call `.then` on
it.
2018-03-08 12:32:01 -05:00
kchadha
d59a4ffd55 VM receives input buffer representing project to load and unpacks it as zip. This functionality will eventually move to storage. 2018-03-08 10:25:58 -05:00
Corey Frang
9b8a8647f0 ensure this.workerClass exists before instanceof check
This avoids an error I was running into in a node environment:

```
TypeError: Right-hand side of 'instanceof' is not an object
```
2018-03-07 18:13:15 -05:00
kchadha
cc2bf1dfc7
Merge pull request #957 from kchadha/mouse-up-drag-end
Use flag to selectively activate 'when this sprite clicked' hat on mouse up
2018-03-07 13:26:28 -05:00
Chris Willis-Ford
219f083a29
Merge pull request #934 from picklesrus/extensions-dynamic-menu
Extensions dynamic menu
2018-03-06 16:33:26 -05:00
Jake Bartles
11e12cca4f fixed issue 960 2018-03-05 20:15:49 -05:00
Karishma Chadha
d6e248aab8 VM should do the heavy lifting of saving project to a zip file, and return a promise of the zip to gui. 2018-03-05 17:20:36 -05:00
Florrie
00b151b9ff Add doForLoop to sb2 specmap 2018-03-05 17:36:17 -04:00
Karishma Chadha
c0afcd2ab3 Ensure that md5 and assetId stay in sync. 2018-03-05 15:16:06 -05:00
Karishma Chadha
605ce4b16d Configuring scratch-vm to use changes made to scratch-parser. 2018-03-05 15:16:06 -05:00
Karishma Chadha
e0b23cde31 Can load saved sb3 files (including sounds and costumes that were modified in the 3.0 editors and saved in the sb3 zip when the project was saved). Tests still need to be fixed. 2018-03-05 15:16:06 -05:00
Karishma Chadha
089df0a50f Sounds get updated in storage and vm runtime when they are updated in the sound editor. The updateSvg function ensures that the costume that was edited has an updated dataFormat property in the vm runtime. This is specifically for when pngs get edited in the vector editor. Their file format should then get updated to svg. 2018-03-05 15:16:06 -05:00
Karishma Chadha
52c77d9fb0 Updating asset serialization code to get data format from stored asset rather than vm state. Storage seems to be more up to date than vm in the case of editing the blank backdrop, which is stored as a png instead of an svg. 2018-03-05 15:16:06 -05:00
Karishma Chadha
525a8c2ce7 Serializing sounds and costumes into file descriptors upon 'saveProjectSb3'. 2018-03-05 15:16:06 -05:00
Florrie
928df260ff Fix lint errors 2018-03-05 15:46:54 -04:00
Florrie
defcc45419 Implement foreach block 2018-03-05 15:36:26 -04:00
DD Liu
97d3785554 Temporarily return real costumes array. GUI currently relies on this behavior somewhere 2018-03-05 11:07:50 -05:00
picklesrus
16ecaab1be Fix up comment. 2018-03-02 11:07:22 -08:00
picklesrus
026b9dc282 Stop wrapping function for no reason. 2018-03-02 11:02:56 -08:00
kchadha
a0c7d9aeb3
Merge pull request #956 from kchadha/validate-sb2
Validate sb2
2018-03-02 10:28:53 -05:00
DD
b885402081 Merge branch 'develop' into privateSprite 2018-03-01 17:27:10 -05:00
Eric Rosenbaum
5d658b5ecb
Merge pull request #953 from ericrosenbaum/bugfix/load-tempo-from-sb2
Load tempo from sb2
2018-03-01 13:20:37 -05:00
Eric Rosenbaum
981fc57a43
Merge pull request #950 from ericrosenbaum/bugfix/import-music-menus
Fix music extension menu import
2018-02-28 18:47:30 -05:00
kchadha
8bebc1f5a2
Merge pull request #952 from kchadha/duplicate-sprite-names
Duplicating sprite should give new sprite a fresh name.
2018-02-28 17:13:19 -05:00
Karishma Chadha
d9fb315e3b Removing log messages. 2018-02-28 17:10:54 -05:00
Ray Schamp
4e933eed81
Merge pull request #878 from davidaylaian/reduce-peekstack-calls
Optimize stepThread by reducing the number of calls to peekStack
2018-02-28 16:50:20 -05:00
Karishma Chadha
d51a2ad39f Use wasDragged flag to selectively activate 'when this sprite clicked' block on mouse up. 2018-02-28 16:45:26 -05:00
Karishma Chadha
7c7b016643 scratch-parser expects json string... 2018-02-28 11:52:22 -05:00
Karishma Chadha
59d1c2a0b3 Code cleanup and actually throw errors when project fails to load. Depends on scratch-gui loading sb3 version of default project. 2018-02-28 10:02:02 -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
Karishma Chadha
8c5c68b896 Duplicating sprite should give new sprite a fresh name. 2018-02-26 23:17:25 -05:00
Karishma Chadha
79169c81b3 Use scratch-parser to validate structure of project json files. 2018-02-26 22:43:55 -05:00
Eric Rosenbaum
651d46fff0 Add default values for obscured shadows 2018-02-26 17:28:20 -05:00
Paul Kaplan
1f3c6ac6ad
Merge pull request #939 from fsih/blockDrag
Block drag
2018-02-26 16:26:53 -05:00
Eric Rosenbaum
8b18ff7ae9 make inputOP, arg name and menu name the same 2018-02-26 15:56:37 -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
d6bcfae526 Remove costume ID 2018-02-23 10:25:14 -05:00
DD
b4d6db0ad9 Fix tests 2018-02-22 15:45:41 -05:00
DD
729fc3d303 Make sprite.costumes private so that I can enforce that when you add costumes, they get assigned a unique ID 2018-02-21 19:59:35 -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
picklesrus
1910968b13 Fix lint errors. 2018-02-16 10:49:26 -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
063ac39019 Load music extension assets with require 2018-02-14 17:53:05 -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
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
Eric Rosenbaum
33966ba582 Check for runtime.currentStepTime is null 2018-02-06 12:25:44 -05:00
Eric Rosenbaum
0a239005a9 Rename and initialize vars 2018-02-06 11:06:48 -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
107adad647
Revert "Push reported" 2018-02-02 12:42:09 -05:00
Eric Rosenbaum
c661ac7cce Only measure loudness once per step 2018-02-01 19:53:41 -05:00
Eric Rosenbaum
f78ddb2072 Change pitch effect range to -360 to 360 2018-01-31 16:44:54 -05:00
Luke Schlangen
f8dced53dc round numbers but break tests 2018-01-31 08:23:08 -06: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
picklesrus
b6bb92d8f6 Adding support for dynamic menus in extensions. 2018-01-26 14:36:36 -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
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
Florrie
6c2e0338a1 Fix eslint whitespace error 2018-01-23 18:36:33 -04:00
Florrie
8f0130e439 Automatically create asset for generated 'flattened' image 2018-01-23 18:34:28 -04:00
Florrie
9180f9cc24
Fix eslint errors 2018-01-23 16:10:39 -04:00
Eric Rosenbaum
115184a2a3
Merge pull request #891 from ericrosenbaum/bugfix/audioplayer-clone-state
Audio effects state for clones
2018-01-23 11:55:39 -05:00
Florrie
ad96ec952b
Fix 'promsie' typo in docs for loadOldTextCostume 2018-01-23 12:07:03 -04:00
Florrie
78c54852c6
Merge base/text layers 2018-01-23 12:03:39 -04:00
Florrie
430dbf0bd6
Remove old dead import file 2018-01-23 11:53:23 -04:00
Florrie
287222f7ed
Merge branch 'develop' of https://github.com/LLK/scratch-vm into old-text-costumes 2018-01-23 11:37:03 -04:00
Eric Rosenbaum
275b0c7944 Get customState but don’t create it 2018-01-22 16:38:45 -05:00
Karishma Chadha
784341909b Update block xml for all blocks that use a variable that was just renamed. 2018-01-22 15:14:43 -05:00
Eric Rosenbaum
073ee84a91 Keep bufferSource refs so onended fires on safari 2018-01-22 11:57:06 -05:00
Eric Rosenbaum
9eaf67b504 Fix eslint-disable-line 2018-01-22 10:27:16 -05:00
Eric Rosenbaum
4778ab8d4f Fix music extension asset loading on safari 2018-01-22 10:15:41 -05:00
Ray Schamp
cc1923f982
Merge pull request #901 from mzgoddard/benchmark-prototype
Benchmark prototype
2018-01-19 13:52:13 -05:00
Paul Kaplan
90e9e1c0b0
Merge pull request #889 from paulkaplan/fix-mouse-positions
Fix mouse positions for different stage zoom levels
2018-01-17 13:49:23 -05:00
Michael "Z" Goddard
4d4966cba9
Save and compare results, show individual results in iframe 2018-01-17 12:25:07 -05:00
Michael "Z" Goddard
775d38d8d5
Truncate benchmark selfTime and totalTime values 2018-01-17 12:16:08 -05:00
Michael "Z" Goddard
479f1ba163
Produce a benchmark share link storing the report in the url 2018-01-17 12:16:06 -05:00
Michael "Z" Goddard
c6f4d89371
Add benchmark suite, run and report on multiple benchmark projects 2018-01-17 12:10:27 -05:00
Michael "Z" Goddard
b02d7e8cd8
Read benchmark warm up time and recording time from uri 2018-01-17 11:59:58 -05:00
Paul Kaplan
d649b2555b Require TextEncoder correctly 2018-01-17 11:41:24 -05:00
Ray Schamp
e83141e810
Revert "Use text-encoding library for text encoder" 2018-01-17 10:59:28 -05:00