gel.world: Add point casting.

This commit is contained in:
Rod Kay
2023-12-31 21:32:40 +11:00
parent 5280fa919f
commit 036cc6ec92
2 changed files with 35 additions and 0 deletions

View File

@@ -461,6 +461,7 @@ is
procedure Gravity_is (Self : in out Item; Now : in Vector_3)
is
begin
@@ -469,6 +470,7 @@ is
function cast_Ray (Self : in Item; From, To : in Vector_3) return ray_Collision
is
use type physics.Object.view;
@@ -491,6 +493,25 @@ is
function cast_Point (Self : in Item; Point : in Vector_3) return point_Collision
is
use type physics.Object.view;
physics_Collision : constant physics.Space.point_Collision := Self.physics_Space.cast_Point (Point);
begin
if physics_Collision.near_Object = null
then
return point_Collision' (near_Sprite => null,
others => <>);
else
return point_Collision' (to_GEL (physics_Collision.near_Object),
physics_Collision.Site_world);
end if;
end cast_Point;
--------------
--- Collisions

View File

@@ -227,6 +227,20 @@ is
-----------------
--- Point Casting
--
type point_Collision is
record
near_Sprite : gel.Sprite.view;
Site_world : Vector_3;
end record;
function cast_Point (Self : in Item; Point : in Vector_3) return point_Collision;
--------------------
--- World Mirroring