Difference between revisions of "W4 Collision System"

From Ciliz|W4
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, local Transform, and callback management mechanisms.
+
* '''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

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

Raycast