Skip to content

Commit 46334c1

Browse files
committed
update map collision based on io jump events.
1 parent 01fd7be commit 46334c1

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

base/interactable_objects/InteractableObjects.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {SpriteBase} from "../SpriteBase";
2-
import {IntegerPairKey, TileEvent} from "../tile_events/TileEvent";
2+
import {IntegerPairKey, TileEvent, event_types} from "../tile_events/TileEvent";
33
import * as numbers from "../magic_numbers";
44
import * as _ from "lodash";
55
import {
@@ -947,6 +947,16 @@ export class InteractableObjects {
947947
if (this.sprite?.body) {
948948
this.sprite.body.data.shapes.forEach(shape => (shape.sensor = !enable));
949949
this._shapes_collision_active = enable;
950+
if (this.allow_jumping_over_it) {
951+
this.get_events().forEach(event => {
952+
if (
953+
event.type === event_types.JUMP &&
954+
event.is_active_at_collision_layer(this.base_collision_layer)
955+
) {
956+
this.data.map.set_collision_in_tile(event.x, event.y, enable, this.base_collision_layer);
957+
}
958+
});
959+
}
950960
}
951961
}
952962

base/tile_events/TileEvent.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,14 @@ export abstract class TileEvent {
320320
collision_layers_indexes.forEach(this.activation_collision_layers.add, this.activation_collision_layers);
321321
}
322322

323+
/**
324+
* Checks if this event is active in a given collision layer.
325+
* @param collision_layer the collision layer index to be checked.
326+
*/
327+
is_active_at_collision_layer(collision_layer: number) {
328+
return this.activation_collision_layers.has(collision_layer);
329+
}
330+
323331
/**
324332
* This method will be called on map update. If necessary, overrides it.
325333
*/

0 commit comments

Comments
 (0)