--<summary>The Compounds package contains routines to create compound objects, that actually exist out of a collection of other objects</summary>
--<description>The Compounds package contains routines to create compound objects, that actually exist out of a collection of other objects.
--</description>
--<group>Objects</group>

package Objects.Compounds is

   function Construct_Arrow
     (From, To     : in     Point_3D;
      CSG_Obj_List : in out Object_List;
      Mat_Ptr      : in     Material_Ptr) return Object_Ptr;
   --<summary>Creates an Arrow, running from point From to To</summary>
   --<description>Creates an Arrow, running from point From to To</description>
   --<parameter name="From">The starting point of the arrow</parameter>
   --<parameter name="To">The end point of the arrow</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the arrow to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the arrow</parameter>
   --<exception>None at this moment</exception>

   function Construct_Double_Arrow
     (From, To     : in     Point_3D;
      CSG_Obj_List : in out Object_List;
      Mat_Ptr      : in     Material_Ptr) return Object_Ptr;
   --<summary>Creates a double Arrow, running from point From to To</summary>
   --<description>Creates a double Arrow, running from point From to To</description>
   --<parameter name="From">The starting point of the arrow</parameter>
   --<parameter name="To">The end point of the arrow</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the arrow to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the arrow</parameter>
   --<exception>None at this moment</exception>

   function Construct_Star (Pos : in Point_3D; CSG_Obj_List : in out Object_List; Mat_Ptr : in Material_Ptr) return Object_Ptr;
   --<summary>Creates an star at position Pos</summary>
   --<description>Creates an star at position Pos</description>
   --<parameter name="Pos">The position of the star</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the star to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the star</parameter>
   --<exception>None at this moment</exception>

   function Construct_Grid (To : in Point_3D; CSG_Obj_List : in out Object_List; Mat_Ptr : in Material_Ptr) return Object_Ptr;
   --<summary>Creates a 4x4 pixel grid at position Pos</summary>
   --<description>Creates a 4x4 pixel grid at position Pos</description>
   --<parameter name="To">The position of the grid</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the grid to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the grid</parameter>
   --<exception>None at this moment</exception>

   function Construct_Observer (To : in Point_3D; CSG_Obj_List : in out Object_List; Mat_Ptr : in Material_Ptr) return Object_Ptr;
   --<summary>Creates an observer symbol at position Pos</summary>
   --<description>Creates an observer symbol at position Pos</description>
   --<parameter name="To">The position of the observer</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the observer to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the observer</parameter>
   --<exception>None at this moment</exception>

   function Construct_Pawn (Pos : in Point_3D; CSG_Obj_List : in out Object_List; Mat_Ptr : in Material_Ptr) return Object_Ptr;
   --<summary>Creates a Pawn figure at position Pos</summary>
   --<description>Creates a Pawn figure at position Pos</description>
   --<parameter name="Pos">The position of the Pawn</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the Pawn to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the Pawn</parameter>
   --<exception>None at this moment</exception>

   function Construct_Rook (Pos : in Point_3D; CSG_Obj_List : in out Object_List; Mat_Ptr : in Material_Ptr) return Object_Ptr;
   --<summary>Creates a Rook figure at position Pos</summary>
   --<description>Creates a Rook figure at position Pos</description>
   --<parameter name="Pos">The position of the Rook</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the Rook to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the Rook</parameter>
   --<exception>None at this moment</exception>

   function Construct_Bishop (Pos : in Point_3D; CSG_Obj_List : in out Object_List; Mat_Ptr : in Material_Ptr) return Object_Ptr;
   --<summary>Creates a Bishop figure at position Pos</summary>
   --<description>Creates a Bishop figure at position Pos</description>
   --<parameter name="Pos">The position of the Bishop</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the Bishop to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the Bishop</parameter>
   --<exception>None at this moment</exception>

   function Construct_Knight (Pos : in Point_3D; CSG_Obj_List : in out Object_List; Mat_Ptr : in Material_Ptr) return Object_Ptr;
   --<summary>Creates a Knight figure at position Pos</summary>
   --<description>Creates a Knight figure at position Pos</description>
   --<parameter name="Pos">The position of the Knight</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the Knight to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the Knight</parameter>
   --<exception>None at this moment</exception>

   function Construct_Queen (Pos : in Point_3D; CSG_Obj_List : in out Object_List; Mat_Ptr : in Material_Ptr) return Object_Ptr;
   --<summary>Creates a Queen figure at position Pos</summary>
   --<description>Creates a Queen figure at position Pos</description>
   --<parameter name="Pos">The position of the Queen</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the Queen to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the Queen</parameter>
   --<exception>None at this moment</exception>

   function Construct_King (Pos : in Point_3D; CSG_Obj_List : in out Object_List; Mat_Ptr : in Material_Ptr) return Object_Ptr;
   --<summary>Creates a King figure at position Pos</summary>
   --<description>Creates a King figure at position Pos</description>
   --<parameter name="Pos">The position of the King</parameter>
   --<parameter name="CSG_Obj_List">The CSG object list to add the King to</parameter>
   --<parameter name="Mat_Ptr">Pointer to the material for the King</parameter>
   --<exception>None at this moment</exception>
end Objects.Compounds;
