package body openGL.Model.billboard
is

   ---------
   --- Forge
   --

   procedure define (Self : out Item;   Size : Size_t := default_Size)
   is
   begin
      Self.Size := Size;
   end define;



   --------------
   --- Attributes
   --

   function Size (Self : in Item) return Size_t
   is
   begin
      return Self.Size;
   end Size;



   function Width (Self : in Item) return Real
   is
   begin
      return Self.Size.Width;
   end Width;



   function Height (Self : in Item) return Real
   is
   begin
      return Self.Size.Height;
   end Height;



   function vertex_Sites (for_Plane     : in Plane;
                          Width, Height : in Real) return Sites
   is
      half_Width  : constant Real := Width  / 2.0;
      half_Height : constant Real := Height / 2.0;

      the_Sites   : constant array (Plane) of Sites := [xy => [[-half_Width, -half_Height,         0.0],
                                                               [ half_Width, -half_Height,         0.0],
                                                               [ half_Width,  half_Height,         0.0],
                                                               [-half_Width,  half_Height,         0.0]],
                                                        xz => [[-half_Width,          0.0,         1.0],
                                                               [ half_Width,          0.0,         1.0],
                                                               [ half_Width,          0.0,        -1.0],
                                                               [-half_Width,          0.0,        -1.0]],
                                                        yz => [[        0.0, -half_Height,  half_Width],
                                                               [        0.0, -half_Height, -half_Width],
                                                               [        0.0,  half_Height, -half_Width],
                                                               [        0.0,  half_Height,  half_Width]]];
   begin
      return the_Sites (for_Plane);
   end vertex_Sites;


end openGL.Model.billboard;
