Difference between revisions of "W4 Collision System"
From Ciliz|W4
(→Scope) |
(→Scope) |
||
Line 14: | Line 14: | ||
Let's take a closer look at the Collision system. | Let's take a closer look at the Collision system. | ||
Consider the main elements of the Collision system: | Consider the main elements of the Collision system: | ||
− | * '''BoundingVolume''' - interface. This is a visitor whose descendants implement methods for calculating intersections. | + | * '''BoundingVolume''' - interface. This is a visitor whose descendants implement methods for calculating intersections. Also BoundingVolume contains local Transform. |
* '''CollisionInfo''' - structure containing an intersection data. The data depends on the type of interaction and the types of interacting volumes. | * '''CollisionInfo''' - structure containing an intersection data. The data depends on the type of interaction and the types of interacting volumes. | ||
− | * '''Collider''' - class containing BoundingVolume | + | * '''Collider''' - class containing BoundingVolume and callback management mechanisms. |
* '''ColliderEventDispatcher''' - utility static class containing arrays of colliders, distributed by type of interaction. This class also contains general onUpdate event handling methods for calculating Intersect and onTouch (Screencast calculation). | * '''ColliderEventDispatcher''' - utility static class containing arrays of colliders, distributed by type of interaction. This class also contains general onUpdate event handling methods for calculating Intersect and onTouch (Screencast calculation). | ||
* '''Node''' (see [[W4_Coordinate_system_and_Node_structure]]) contains the collider management interface. | * '''Node''' (see [[W4_Coordinate_system_and_Node_structure]]) contains the collider management interface. |
Revision as of 10:42, 29 July 2020
Contents
Scope
The collision system provides the handling of intersections between objects. For one object, you can set several different volumes (bounding boxes, spheres) at once and subscribe to intersections.
The W4 Engine implements the following types of interactions with colliders:
- Intersect - intersection of two colliders.
- Raycast - collider and ray intersection.
- Screencast - intersection of the collider and the ray emitted from the given screen coordinates.
The following examples of the working code of the collision system can be found in the W4 Engine:
- apps/internal/gist-colliding
- apps/internal/test-screencast-blocking
- apps/samples/gist-raycast
Let's take a closer look at the Collision system. Consider the main elements of the Collision system:
- BoundingVolume - interface. This is a visitor whose descendants implement methods for calculating intersections. Also BoundingVolume contains local Transform.
- CollisionInfo - structure containing an intersection data. The data depends on the type of interaction and the types of interacting volumes.
- Collider - class containing BoundingVolume and callback management mechanisms.
- ColliderEventDispatcher - utility static class containing arrays of colliders, distributed by type of interaction. This class also contains general onUpdate event handling methods for calculating Intersect and onTouch (Screencast calculation).
- Node (see W4_Coordinate_system_and_Node_structure) contains the collider management interface.
Collider management
Adding a collider
Getting a collider
Removing a collider
The Collider class
This class implements control of collider interactions
Bounding Volume
Local Transform
Intersect
Screencast
Reaction to TouchEvent