58 lines
1.2 KiB
Ada
58 lines
1.2 KiB
Ada
package openGL.Model.billboard
|
|
--
|
|
-- Models a rectangle capable of displaying an image.
|
|
--
|
|
is
|
|
type Item is abstract new Model.item with private;
|
|
|
|
type Plane is (xy, xz, yz);
|
|
|
|
type Size_t is
|
|
record
|
|
Width : Real;
|
|
Height : Real;
|
|
end record;
|
|
|
|
type Coordinates is array (1 .. 4) of Coordinate_2D;
|
|
|
|
|
|
---------
|
|
--- Forge
|
|
--
|
|
|
|
default_Size : constant Size_t;
|
|
|
|
procedure define (Self : out Item; Size : Size_t := default_Size);
|
|
|
|
|
|
--------------
|
|
--- Attributes
|
|
--
|
|
|
|
function Size (Self : in Item) return Size_t;
|
|
function Width (Self : in Item) return Real;
|
|
function Height (Self : in Item) return Real;
|
|
|
|
|
|
|
|
private
|
|
|
|
type Item is abstract new Model.item with
|
|
record
|
|
Plane : billboard.Plane := xy;
|
|
Size : Size_t;
|
|
end record;
|
|
|
|
|
|
subtype site_Id is Index_t range 1 .. 4;
|
|
subtype Sites is Vector_3_array (site_Id'Range);
|
|
|
|
function vertex_Sites (for_Plane : in Plane;
|
|
Width, Height : in Real) return Sites;
|
|
|
|
Normal : constant Vector_3 := [0.0, 0.0, 1.0];
|
|
default_Size : constant Size_t := (Width => 1.0,
|
|
Height => 1.0);
|
|
|
|
end openGL.Model.billboard;
|