W4 Collision System

From Ciliz|W4
Revision as of 15:32, 28 July 2020 by Azelenkin (talk | contribs) (Created page with "== Scope == The collision system provides the handling of intersections between objects. For one object, you can set several different volumes (bounding boxes, spheres) at onc...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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) - visitor, the inheritors of which implement methods for calculating intersections.
  • 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.
  • 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