Files
lace/4-high/gel/source/gel.ads
2023-04-20 10:14:22 +10:00

89 lines
2.3 KiB
Ada

with
openGL,
Physics,
float_Math.Geometry.D2,
float_Math.Geometry.D3,
float_Math.Algebra.linear.D2,
float_Math.Algebra.linear.D3;
package GEL
--
-- A game engine library.
--
is
pragma Pure;
Error : exception;
--------
--- Math
--
package Math renames float_Math;
package Geometry renames math.Geometry;
package Geometry_2d renames Geometry.D2;
package Geometry_3d renames Geometry.D3;
package Algebra renames math.Algebra;
package linear_Algebra renames Algebra.linear;
package linear_Algebra_2D renames linear_Algebra.D2;
package linear_Algebra_3D renames linear_Algebra.D3;
---------------
--- Constraints
--
max_Worlds : constant := 1_000;
max_Cameras : constant := 1_000;
max_graphics_Models : constant := 2**32 - 1;
-- max_physics_Models : constant := 2**32 - 1;
max_Sprites : constant := 2**32 - 1;
-------
--- Ids
--
type world_Id is range 0 .. max_Worlds;
type camera_Id is range 0 .. max_Cameras;
subtype graphics_model_Id is openGL.model_Id;
-- type physics_model_Id is range 0 .. max_physics_Models;
type sprite_Id is range 0 .. max_Sprites;
null_graphics_model_Id : constant graphics_model_Id;
-- null_physics_model_Id : constant physics.model_Id;
null_sprite_Id : constant sprite_Id;
type graphics_model_Ids is array (Positive range <>) of graphics_model_Id;
type physics_model_Ids is array (Positive range <>) of physics.model_Id;
type sprite_Ids is array (Positive range <>) of sprite_Id;
----------
--- Assets
--
type asset_Name is new String (1 .. 128); -- TODO: Make private.
--
-- Name of a file containing textures, images, fonts, sounds, media or other resources.
null_Asset : constant asset_Name;
function to_Asset (Self : in String) return asset_Name;
function to_String (Self : in asset_Name) return String;
private
null_graphics_model_Id : constant graphics_model_Id := 0;
-- null_physics_model_Id : constant physics.model_Id := 0;
null_sprite_Id : constant sprite_Id := 0;
null_Asset : constant asset_Name := (others => ' ');
end GEL;