Commit graph

237 commits

Author SHA1 Message Date
Ray Schamp
d2343e3601 Fix up some auto-converted weirdness 2017-04-19 17:36:33 -04:00
Ray Schamp
a4f095db5e Use ES6 style classes 2017-04-17 19:42:48 -04:00
Ray Schamp
4455b0694f Fix remaining no-var and no-use-before-define's 2017-04-17 17:15:19 -04:00
Ray Schamp
e01c4ae108 Pass with --fix 2017-04-17 15:10:04 -04:00
Chris Willis-Ford
a4aa3810ae Merge pull request #462 from griffpatch/optimise/reduceGetBlockCalls
Optimise reducegetblockcalls
2017-04-03 13:00:05 -04:00
griffpatch
c754cc7cf8 Remove line break 2017-03-22 09:11:53 +00:00
griffpatch
220d854f28 Merge remote-tracking branch 'refs/remotes/LLK/develop' into optimise/reduceGetBlockCalls
# Conflicts:
#	src/engine/execute.js
2017-03-22 08:58:01 +00:00
griffpatch
25429b1192 Tidy up commit and revert direct member access 2017-03-22 08:48:30 +00:00
griffpatch
a5ce0f60cf Merge remote-tracking branch 'refs/remotes/LLK/develop' into optimise/reduceGetBlockCalls 2017-03-22 07:56:04 +00:00
Christopher Willis-Ford
c23e9c6bf8 Load projects & costumes through scratch-storage
This also sets up the framework to load sounds through scratch-storage,
to be finished in a later change.
2017-03-09 11:25:55 -08:00
Ray Schamp
d0cd9cd897 Add methods for dragging and dropping sprites
* Add `getTargetIdForDrawableId` to translate between renderer picks and VM targets
* Add `startDrag` to stop sprite motion while dragging
* Add `stopDrag` to return sprite motion after dragging
2017-03-03 09:43:31 -05:00
Andrew Sliwinski
7042bdb45c Merge pull request #472 from griffpatch/bug/escapeFromConditionalBranches
Bug - escapeFromConditionalBranches
2017-03-01 16:42:30 -05:00
Chris Willis-Ford
a56db95aba Merge pull request #446 from magmaboat/hasownproperty
Perform hasOwnProperty validation
2017-02-22 13:55:54 -08:00
griffpatch
c5eb8ece16 Handle actual looping cases
And it starts to get a little less elegant :/
Wondering if this should not be handled better in another part of the
codebase?
We don't want to be duplicating existing code stepping functionality
locally at the end of the promise script really... What do you think?
2017-02-20 09:40:32 +00:00
griffpatch
362a231279 bug - escape from conditional branches
Execution bug: can't escape from conditional branches that end with a
Promise-resolution-terminating command block (see #464)
2017-02-20 08:20:21 +00:00
griffpatch
a141bfb1b9 Fix lint issues 2017-02-16 10:54:17 +00:00
Christopher Willis-Ford
18107cde7b Reverse target iteration in allScriptsDo
The `allStacksAndOwnersDo` function in Scratch 2.0 runtime iterates
targets in reverse and projects sometimes rely on that for correct
initialization. If, for example, each sprite runs a "go back 999 layers"
or "go to front" block as its first action, the order of execution will
determine the ordering of the layers.

This change makes Scratch 3.0 match the Scratch 2.0 execution order.
2017-02-13 14:45:29 -08:00
griffpatch
ea59f8cd66 Reduce calls to getBlock 2017-02-11 14:26:23 +00:00
Magmaboat
85eee4f18e Perform hasOwnProperty validation 2017-02-09 21:12:47 -05:00
Andrew Sliwinski
d650e5393e Merge pull request #439 from griffpatch/bug/StopThisScript
Implement "Stop this script" function
2017-02-09 08:10:00 -05:00
griffpatch
276ae82769 Fixes Case Insensitive Broadcast Bug
Broadcasts are case sensitive #433
2017-02-08 10:05:48 +00:00
griffpatch
9cb595312e Implement "Stop this script" function
Existing implementation incorrectly terminates the entire thread.
See: http://llk.github.io/scratch-vm/#144142535
2017-02-08 09:44:10 +00:00
Ray Schamp
727fcc7875 Lint for eslint-config-scratch@3 2017-02-01 16:27:55 -05:00
Andrew Sliwinski
c2a488a197 Merge pull request #408 from griffpatch/optimisation/avoid-negative-index-lookups
Optimisation - Avoid negative index lookups #407
2017-01-30 15:06:02 -05:00
Andrew Sliwinski
249c0d6dca Merge pull request #409 from griffpatch/optimisation/remove-redundant-lookups
Optimisation - Remove redunant lookups
2017-01-30 15:04:42 -05:00
griffpatch
fbf2c0c345 Optimisation - Recycle Stack Frame for cosecutive blocks
This saves popping, destroying, recreating, and pushing the stack frame,
and then reassigning the warp mode attribute for every block to block
step in the execution.
2017-01-28 17:06:07 +00:00
griffpatch
76c9c993f2 Optimisation - Remove redunant lookups
It's surprising how much time it takes to do an object member lookup, so
reducing these is a great idea.
2017-01-28 16:33:20 +00:00
griffpatch
bd9159b9fb More negative index checks 2017-01-28 14:39:22 +00:00
griffpatch
a25e117412 optimisation/avoid negative index lookups #407
Run-time Optimisation

The thread.stackFrames array is accessed all the time to retrieve the
'parent' stack frame. This is done using as index of [this.stack.length
- 1]. However, a lot of the time this evaluated to [-1]. Although this
results in null, which is fine, to get to this javascript actually
defers from a numeric array lookup to an object lookup using the string
"-1". This is roughly 100 times slower to compute and so a simple catch
for negative indexes is well worth the extra check.
2017-01-28 14:38:13 +00:00
griffpatch
c6a872ef4a Fix whitespace issues 2017-01-28 14:11:48 +00:00
griffpatch
5f100129b6 Fix for ending warp bug
When popping down the stack frame it is assumed that you keep using the
previous warp state rather than looking at the warp state of the level
you just popped out to. This causes the loss of screen updates if the
warping block was the last statement in a loop as the loop does not obey
it's 'non warp' status.
2017-01-28 14:03:29 +00:00
Christopher Willis-Ford
88cc50aa18 Code review: more docs, move constants, clone util
Changes include:
- Added missing JSDoc for items in `scratch3_pen.js` and `target.js`.
- Moved constants used by `Scratch3PenBlocks` into the class.
- Created a constant for minimum and maximum pen size.
- Added `util/clone.js` to host cloning functionality.
- Pen blocks now check for the renderer before trying to use it.
- The pen integration test covers all blocks, though `clear`, `stamp`,
  and `pen down` will skip some of their functionality when there is no
  renderer.
2017-01-20 11:26:18 -08:00
Christopher Willis-Ford
369c02b5d5 Implement pen blocks
These blocks implement pen features as found in Scratch 2.0

Supporting changes include:
- `Target` is now an event emitter
- `RenderedTarget` now emits an event when it moves
- `Target` can now store arbitrary "extra" data, called "custom state"
  in the code, using a `Target`'s `setCustomState` and `getCustomState`
  methods. This is used to store per-target pen state without requiring
  `Target` or `RenderedTarget` to know anything about the pen.
- `Cast` can now cast to an RGB color object.
- `Color` now has functions to convert between RGB and HSV, constants
  for for black & white, and a `mixRgb` function to lerp between two
  colors.
2017-01-19 11:51:22 -08:00
Eric Rosenbaum
dc9126e067 Merge pull request #373 from ericrosenbaum/sound
Integrate audio engine
2017-01-06 16:28:09 -05:00
Eric Rosenbaum
9980f4da3f lint 2017-01-06 16:13:43 -05:00
Eric Rosenbaum
c0d57b4b6b separate out main audioengine from audioplayer for each clone 2017-01-04 18:37:55 -05:00
Andrew Sliwinski
5daaaa4438 Merge pull request #362 from thisandagain/bugfix/coverage
Add integration test coverage
2017-01-03 09:38:14 -05:00
Andrew Sliwinski
4709cae4b7 Basic integration (end-to-end) testing for default project 2016-12-23 10:39:19 -05:00
Andrew Sliwinski
48721dd336 If not hat fields are not found, check inputs before continuing. Resolves GH-360 2016-12-23 09:38:18 -05:00
Eric Rosenbaum
f2793a1d59 Merge branch 'develop' of https://github.com/LLK/scratch-vm into sound
# Conflicts:
#	package.json
#	src/engine/runtime.js
#	src/sprites/clone.js
2016-12-21 15:29:57 -05:00
Ray Schamp
e9da046969 Report full sprite info in targetsUpdate
We need more than just the name for the initial render, so send everything consistent with sprite info reports.
2016-12-07 17:11:08 -05:00
Ray Schamp
adaf2df743 Emit sprite info report for all sprites
This allows costume data to reach listeners even when the sprite isn't the editing target.

Filter out non-editing target reports in the playground to match previous behavior.
2016-11-30 13:21:00 -05:00
Ray Schamp
ce17fdbd30 Include costume data in sprite info reports
Also emit the report on all costume changes
2016-11-30 13:19:49 -05:00
Ray Schamp
d00cdd6b2c Account for done threads on threadCount update
Also rename inactiveThreads -> doneThreads, since this describes them better. They are the threads that have completed in the step.
2016-11-28 10:49:05 -05:00
Ray Schamp
0003b294cb Lint 2016-11-24 10:36:30 -05:00
Ray Schamp
55ac7e269c Add PROJECT_RUN_START/STOP events
These events signal when any threads are running or when all threads have stopped running. This maps to whether the green flag or the stop button should be illuminated in the GUI.
2016-11-23 15:47:49 -05:00
Ray Schamp
2ff719f2ba Fix consistency of existing emits 2016-11-23 15:43:05 -05:00
Tim Mickel
4deee071b2 Don't copy threads in step; stable restartThread (#331) 2016-11-10 15:05:49 -05:00
Eric Rosenbaum
6dadaba117 onStopAll function for stop button 2016-10-27 16:28:39 -04:00
Tim Mickel
56ef01745f Implement sprite info emitting and posting (#320) 2016-10-26 13:27:12 -04:00