phaser-raycaster
Version:
Raycasting plugin for Phaser 3.
337 lines (196 loc) • 10.8 kB
Markdown
# Change Log
## Version 0.10.11 - 2024.11.28
## Updates
* Updated dev dependencies.
## Bug fixes
* `Map.updateMap` methlemod for tiaps doesn't map bottom row (fixed by [@theblacknight Kevin Bergin](https://github.com/theblacknight)).
---
## Version 0.10.10 - 2023.12.27
### Updates
* `npm run build-typings` command now add module declaration to types.d.ts file automatically.
### Bug fixes
* `Map.updateMap` method for containers doesn't check if child object's points array is empty while assigning neighbour points to last point.
---
## Version 0.10.9 - 2023.08.15
### Updates
* Rework of `Map.updateMap` method for matter objects.
* `Map.updateMap` method for matter objects now ignores internal segments in concave bodies.
### Bug fixes
* `Ray.cast` method won't test mapped object when ray is inside of mapped object and hit another mapped object within / overlap the first one.
* `Map.updateMap` method for matter objects don't map properly non enclosed concave bodies.
## Version 0.10.8 - 2023.08.08
### Bug fixes
* Typo in `Map.updateMap` method for polygons.
* Typo in `Map.updateMap` method for containers.
* Fixed code changes caused by faulty linter.
## Version 0.10.7 - 2023.08.06
### Updates
* `Map.updateMap` method now add array of neighbours to points in `Map.points`.
* Optimisation of `Map.updateMap` method for tilemaps.
* `Ray.castCircle` and `Ray.castCone` methods now checks if ray is "glancing" mapped objects.
* `Ray.cast` method now won't test mapped object if current closest intersection is closer to ray than it's bounding box.
### Bug fixes
* `Raycaster.removeMappedObjects` method isn't checking if passed objects are mapped.
* `Map.destroy` method doesn't work properly for Arcade and Matter bodies (fixed by [@dreasgrech Andreas Grech](https://github.com/dreasgrech)).
* Fixed docs typos
---
## Version 0.10.6 - 2023.01.30
### Updates
* Added `Raycaster.dynamicMappedObjects` to store dynamic maps.
* `Raycaster.update` method now traverse through `Raycaster.dynamicMappedObjects` to update maps.
* Setting `Raycaster.Map.dynamic` now updates `Raycaster.dynamicMappedObjects` and `Ratcaster._stats`.
### Bug fixes
* `Raycaster.drawDebug` method isn't checking if mapped object has defined data property.
* `Raycaster.destroy` method isn't destroying `Raycaster.graphics` object used for debug.
* `Raycaster.destroy` method isn't removing scene's `update` event listener.
* `Ray.destroy` method isn't destroying `Ray.graphics` object used for debug.
---
## Version 0.10.5 - 2022.11.04
### Features
* Added TypeScript typings.
### Updates
* Updated `PhaserRaycaster` plugin class.
### Bug fixes
* Fixed docs typos
---
## Version 0.10.4 - 2022.06.28
### Updates
* `Raycaster.mapGameObjects` method now checks if mapped object is supported.
* `Map.updateMap` method for container objects now checks if mapped children objects are supported.
---
## Version 0.10.3 - 2022.06.27
### New features
* Added `Ray.destroy` method.
* Added `Map.destroy` method.
* Added `Raycaster.destroy` method.
* Added `mapChild` option to `Map.config` parameters.
### Updates
* `Raycaster.removeMappedObjects` method now also destroys `Map` objects.
* Container's `Map` now allows to choose single child element which will be mapped, by passing it as `mapChild` option to `Map.config` parameters.
* Container's `Map` now allows to use circle map children with `Map.segmentCount` set to 0. Transformed children circles are stored in `Map._circles` property.
* Updated NPM dev dependencies.
---
## Version 0.10.2 - 2021.12.20
### Bug fixes
* `Ray.overlap` - method is using deprecated method `Ray.testOverlap` instead of `Ray.testArcadeOverlap` to test Arcade body.
---
## Version 0.10.1 - 2021.11.16
### Bug fixes
* `Raycaster.update` - typo in code.
* `Ray.cast`, `Ray.castCircle` and `Ray.castCone` methods after optimization in fringe cases when ray "glanced" object's border box corner didn't detect hit properly.
---
## Version 0.10.0 - 2021.11.13
### New features
* Added debug mode.
* Added statistics.
* Added additional intersection data. Each point contains reference to hit mapped object and it's segment if available.
### Updates
* `Ray.cast`, `Ray.castCircle` and `Ray.castCone` methods optimization.
---
## Version 0.9.4 - 2021.08.20
### Bug fixes
* `Map.config` doesn't add `Map.getBoundingBox` method to containers map.
* `Raycaster.mapGameObjects` doesn't add map to data attribute if it's already enabled.
### Updates
* `Ray.cast`, `Ray.castCircle` and `Ray.castCone` methods return additionally hit mapped objects and segments.
---
## Version 0.9.3 - 2021.03.07
### Updates
* `Ray.cast`, `Ray.castCircle` and `Ray.castCone` methods return additionally hit mapped objects and segments.
---
## Version 0.9.2 - 2020.02.13
### Bug fixes
* `Raycaster.mapGameObjects` doesn't map `Phaser.Tilemaps.TilemapLayer` which replaced `Phaser.Tilemaps.StaticTilemapLayer` and `Phaser.Tilemaps.DynamicTilemapLayer` in Phaser 3.50.0.
---
## Version 0.9.1 - 2020.12.13
### New features
* Added matter physics game objects collision methods to `Ray`.
* `Ray.setCollisionCategory` is new method that sets the collision category of `Ray` matter body.
* `Ray.setCollisionGroup` is new method that sets the collision category of `Ray` matter body.
* `Ray.setCollidesWith` is new method that sets the collision mask for `Ray` matter body.
* `Ray.setOnCollide` is new method that sets `onCollide` event's calback for `Ray` matter body.
* `Ray.setOnCollideEnd` is new method that sets `onCollideEnd` event's calback for `Ray` matter body.
* `Ray.setOnCollideActive` is new method that sets `onCollideActive` event's calback for `Ray` matter body.
* `Ray.setOnCollideWith` is new method that sets `onCollide` event's calback for `Ray` matter body when it collides with the given body or bodies.
### Bug fixes
* `Ray.processOverlap` method return false for all arcade bodies.
---
## Version 0.9.0 - 2020.11.26
### New features
* Added matter physics support.
* `Raycaster.mapGameObjects` now accepts matter bodies.
* `Map` can now map matter bodies.
* `Map.getBoundingBox` is new method that allows to get map bounding box.
* `Map.forceConvex` is new property that force using matter body's convex body (hull) for mapping.
* `Map.forceVerticesMapping` is new property that force using circle matter body's vertices for mapping.
* `Ray.enablePhysics` is new method that creates arcade / matter physics body for ray.
* `Ray.bodyType` is new property which define if ray's body use arcade or matter physics.
### Updates
* `Ray.enableArcadeBody` was replaced by `Ray.enablePhysics`.
* `Ray.processOverlap` now also accepts matter bodies and matter CollisionInfo objects.
* `Map` contains now reference to `Raycaster` object.
---
## Version 0.8.1 - 2020.09.08
### New features
* `Ray.round` is new property that determines if ray's hit point will be rounded.
### Updates
* Slight ray casting optimisation: raycaster will cast ray at each angle only once.
---
## Version 0.8.0 - 2020.05.22
### New features
* `Ray.intersections` is new property that stores intersections calculated by last casting.
* `Ray.slicedIntersections` is new property that stores intersections calculated by last casting sliced into array of `Phaser.Geom.Triangle` objects.
* `Ray.autoSlice` is new property that determine if after casting, intesections should be sliced.
* `Ray.slice` is new method that allows to slice array of intersections into array of `Phaser.Geom.Triangle` objects.
* `Ray.enableArcadeBody` is new method that creates arcade physics body for ray.
* `Ray.overlap` is new method that allows to if game objects wih physics bodies overlap ray's field of view.
* `Ray` can be added to arcade physics collider / overlap.
### Updates
* `Ray.range` was renamed to `Ray.rayRange`.
* `Ray.setRange` was renamed to `Ray.setRayRange`.
---
## Version 0.7.3 - 2020.04.21
### New features
* `Map` can now map `Phaser.Tilemaps.StaticTilemapLayer` and `Phaser.Tilemaps.DynamicTilemapLayer` objects.
---
## Version 0.7.2 - 2020.03.29
### New features
* `Map` can be enabled / disabled with `Map.active` option. Disabled map return empty arrays instead of its points and segments and won't be updated.
* `Raycaster.enableMaps` is new methods that allows to enable objects maps by passing game object / game objects array as an argument.
* `Raycaster.disableMaps` is new methods that allows to disable objects maps by passing game object / game objects array as an argument.
---
## Version 0.7.1 - 2020.03.25
### New features
* `Map` can now map `Phaser.GameObjects.Container` objects and its children. At this moment circle maps of container's children are tested by `Ray` objects properly only when `Raycaster.mapSegmentCount` or `Map.segmentCount` is set above 0 (when circle map consists of segments which number is defined by `Map.segmentCount`).
### Updates
* Automatic map updates on update event can be now disabled, by passing `autoUpdate` option to raycaster constructor.
### Bug fixes
* Typo in `Ray.setDetectionRange` method.
* In `Ray.cast` method, when ray's range is set below `Phaser.Math.MAX_SAFE_INTEGER` and theres no available intersections within detection range, method was trying to calculate ray's target distance to ray origin, even if target was not passed.
---
## Version 0.7.0 - 2020.03.06
### New features
* `Ray.castCone` is new method that allows to cast rays in a cone. cone direction is defined by `Ray.angle` and cone angle is defined by `Ray.cone`.
* `Ray.setCone` is new method that allows to set `Ray.cone` (`Ray.castCone` method's cone angle).
* `Ray.setConeDeg` is new method that allows to set `Ray.cone` (`Ray.castCone` method's cone angle) in degrees.
---
## Version 0.6.4 - 2020.02.23
### Updates
* `Ray.angle` is now normalized (between 0 - 2π).
---
## Version 0.6.3 - 2020.02.23
### Bug fixes
* Not defining `Raycaster.boundingBox` when physics was not defined caused error.
---
## Version 0.6.2 - 2020.02.23
### Bug fixes
* Not defining `Raycaster.boundingBox` when physics was not defined caused error.
---
## Version 0.6.1 - 2020.02.22
### New features
* `Ray.setAngleDeg` is new method that allows to set `Ray.angle` in degrees.
### Updates
* `Raycaster`: bounds will be set to the world bounds by default.
* `Ray.castAll`: method renamed to `Ray.castCircle`.
### Bug fixes
* Not passing argument to `Raycaster.createRay` method caused error.