optimized collision detection

by only looking at the alpha channel data
pull/89/head
jmoenig 2019-07-02 16:50:11 +02:00
rodzic c5746036b8
commit 71f3b37f14
3 zmienionych plików z 12 dodań i 9 usunięć

Wyświetl plik

@ -4,11 +4,15 @@
* **New Features:**
* **Notable Changes:**
* gliding animation when inserting blocks using the keyboard
* optimized collision detection
* **Notable Fixes:**
* list watchers occasionally didn't show cells after reassigning a changed list to a variable
* FOREACH over a linked list failed for scripts mutating it
* **Translation Updates:**
### 2019-07-02
* morphic: optimized collision detection by only looking at the alpha channel data
### 2019-07-01
* new dev version
* lists: fixed #2446

Wyświetl plik

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Snap! Build Your Own Blocks 5.0.1 - dev -</title>
<link rel="shortcut icon" href="src/favicon.ico">
<script type="text/javascript" src="src/morphic.js?version=2019-07-01"></script>
<script type="text/javascript" src="src/morphic.js?version=2019-07-02"></script>
<script type="text/javascript" src="src/widgets.js?version=2019-06-27"></script>
<script type="text/javascript" src="src/blocks.js?version=2019-07-01"></script>
<script type="text/javascript" src="src/threads.js?version=2019-07-01"></script>

Wyświetl plik

@ -1162,7 +1162,7 @@
/*global window, HTMLCanvasElement, FileReader, Audio, FileList, Map*/
var morphicVersion = '2019-July-01';
var morphicVersion = '2019-July-02';
var modules = {}; // keep track of additional loaded modules
var useBlurredShadows = getBlurredShadowSupport(); // check for Chrome-bug
@ -4454,19 +4454,18 @@ Morph.prototype.evaluateString = function (code) {
Morph.prototype.isTouching = function (otherMorph) {
var oImg = this.overlappingImage(otherMorph),
data;
data, len, i;
if (!oImg.width || !oImg.height) {
return false;
}
data = oImg.getContext('2d')
.getImageData(1, 1, oImg.width, oImg.height)
.data;
return detect(
data,
function (each) {
return each !== 0;
}
) !== null;
len = data.length;
for(i = 3; i < len; i += 4) {
if (data[i] !== 0) {return true; }
}
return false;
};
Morph.prototype.overlappingImage = function (otherMorph) {