gel.world: Add point casting.
This commit is contained in:
@@ -461,6 +461,7 @@ is
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
procedure Gravity_is (Self : in out Item; Now : in Vector_3)
|
procedure Gravity_is (Self : in out Item; Now : in Vector_3)
|
||||||
is
|
is
|
||||||
begin
|
begin
|
||||||
@@ -469,6 +470,7 @@ is
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function cast_Ray (Self : in Item; From, To : in Vector_3) return ray_Collision
|
function cast_Ray (Self : in Item; From, To : in Vector_3) return ray_Collision
|
||||||
is
|
is
|
||||||
use type physics.Object.view;
|
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
|
--- Collisions
|
||||||
|
|||||||
@@ -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
|
--- World Mirroring
|
||||||
|
|||||||
Reference in New Issue
Block a user