Skip to content

Commit 0b8fb1a

Browse files
committed
Much better hard blocking flag sets
1 parent d942d28 commit 0b8fb1a

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

src/physics/arcade/CheckOverlap.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,37 +25,94 @@ var CheckOverlap = function (collisionInfo)
2525
var body1 = collisionInfo.body1;
2626
var body2 = collisionInfo.body2;
2727

28+
// console.log('');
29+
// console.log('%c CheckOverlap ' + body1.world._frame + ' ', 'background-color: pink');
30+
// collisionInfo.dump();
31+
2832
switch (face)
2933
{
3034
case CONST.FACING_LEFT:
35+
3136
body1.setTouchingLeft();
3237
body2.setTouchingRight();
38+
3339
body1.setBlockedLeft();
3440
body2.setBlockedRight();
41+
42+
if (body1.isWorldBlockedRight())
43+
{
44+
body2.setHardBlockedRight();
45+
}
46+
47+
if (body2.isWorldBlockedLeft())
48+
{
49+
body1.setHardBlockedLeft();
50+
}
51+
3552
break;
3653

3754
case CONST.FACING_RIGHT:
55+
3856
body1.setTouchingRight();
3957
body2.setTouchingLeft();
58+
4059
body1.setBlockedRight();
4160
body2.setBlockedLeft();
61+
62+
if (body1.isWorldBlockedLeft())
63+
{
64+
body2.setHardBlockedLeft();
65+
}
66+
67+
if (body2.isWorldBlockedRight())
68+
{
69+
body1.setHardBlockedRight();
70+
}
71+
4272
break;
4373

4474
case CONST.FACING_UP:
75+
4576
body1.setTouchingUp();
4677
body2.setTouchingDown();
78+
4779
body1.setBlockedUp();
4880
body2.setBlockedDown();
81+
82+
if (body1.isWorldBlockedDown())
83+
{
84+
body2.setHardBlockedDown();
85+
}
86+
87+
if (body2.isWorldBlockedUp())
88+
{
89+
body1.setHardBlockedUp();
90+
}
91+
4992
break;
5093

5194
case CONST.FACING_DOWN:
95+
5296
body1.setTouchingDown();
5397
body2.setTouchingUp();
98+
5499
body1.setBlockedDown();
55100
body2.setBlockedUp();
101+
102+
if (body1.isWorldBlockedUp())
103+
{
104+
body2.setHardBlockedUp();
105+
}
106+
107+
if (body2.isWorldBlockedDown())
108+
{
109+
body1.setHardBlockedDown();
110+
}
111+
56112
break;
57113
}
58114

115+
/*
59116
if (body1.isWorldBlockedLeft())
60117
{
61118
body2.setHardBlockedLeft();
@@ -91,6 +148,7 @@ var CheckOverlap = function (collisionInfo)
91148
{
92149
body1.setHardBlockedDown();
93150
}
151+
*/
94152

95153
return collisionInfo.touching;
96154
};

0 commit comments

Comments
 (0)