jmoenig/Snap--Build-Your-Own-Blocks — pull request #192 by Craxic (2013-10-02 06:26:43+00:00)
Title: Altered Snap! threading internals to allow for the same BlockMorphs to be used on different SpriteMorphs.

...Processes are now created with a reciever, rather than taking the receiver from the top block.
This change was propagated through the call hierarchy.

I've made this change in a fork in the hopes that you would pull it. This will make it much easier for me to create the "Cellular" app based upon BYOB. In cellular, the current concept of a SpriteMorph is now the parent of many clones. "Snap!"s current implementation of a clone is simply a full copy. In Cellular, it is important that when the blocks for the parent SpriteMorph change, that all copies change too. To implement this with minimum fuss, I simply create a full copy and make the SpriteMorph.scripts object the same for the parent and all clones. This way, position and variables are all separate, cloning is done in the way Snap! understands, and the blocks are not copied in (potentially) hundreds of places.

I didn't really want to do this change in the Cellular fork since I'd have to copy out many functions and then if you ever decide to change the thread processing method significantly, it would require me to rework everything and to understand the changes you made. If it's already there, you can easily leave the functionality in place (since it was almost there to begin with).

Thanks! :)