]> git.xolatile.top Git - xolatile-raylib-ada.git/commitdiff
Added some 3D functions...
authorxolatile <xolatile@proton.me>
Tue, 26 Mar 2024 03:30:41 +0000 (23:30 -0400)
committerxolatile <xolatile@proton.me>
Tue, 26 Mar 2024 03:30:41 +0000 (23:30 -0400)
raylib.ads

index 70af8ac5d623fc46fd8732298a217d1f19eec155..32a5bbd1fd58e1ab5753c2af6d0aca508017fb23 100644 (file)
@@ -689,14 +689,20 @@ package Raylib is
                Value : Float   := 0.0;
        end record with Convention => C_Pass_By_Copy;
 
-       type Float_Array_4 is array (0 .. 3) of Float;
+       No_Material_Map : Material_Map;
+
+       type Float_Array_4        is array (0 .. 3) of Float;
+       type Material_Map_Array_4 is array (0 .. 3) of Material_Map;
+       type Material_Map_Array   is array (Natural range <>) of Material_Map;
 
        type Material is record
-               Data      : Shader              := No_Shader;
-               Map       : access Material_Map := null;
-               Parameter : Float_Array_4       := (0.0, 0.0, 0.0, 0.0);
+               Data      :        Shader             := No_Shader;
+               Maps      : access Material_Map_Array := null;
+               Parameter :        Float_Array_4      := (0.0, 0.0, 0.0, 1.0);
        end record with Convention => C_Pass_By_Copy;
 
+       No_Material : Material;
+
        type Transform is record
                Translation : Vector_3D := (0.0, 0.0, 0.0);
                Rotation    : Vector_4D := (0.0, 0.0, 0.0, 0.0);
@@ -712,18 +718,23 @@ package Raylib is
                Parent : Integer            := 0;
        end record with Convention => C_Pass_By_Copy;
 
+       type Material_Array_4 is array (0 .. 3) of Material;
+       type Material_Array is array (Natural range <>) of Material;
+
        type Model is record
                Transform      :        Matrix_4D := Id_Matrix;
                Mesh_Count     :        Integer   := 0;
                Material_Count :        Integer   := 0;
                Meshes         : access Mesh      := null;
-               Materials      : access Material  := null;
+               Materials      : access Material_Array := null;
                Mesh_Materials : access Integer   := null;
                Bone_Count     :        Integer   := 0;
                Bones          : access Bone_Info := null;
                --~Bind_Post      : access Transform := null; ERROR
        end record with Convention => C_Pass_By_Copy;
 
+       No_Model : Model;
+
        type Model_Animation is record
                Bone_Count  :        Integer            := 0;
                Frame_Count :        Integer            := 0;
@@ -3445,10 +3456,12 @@ package Raylib is
                --~Convention    => C,
                --~External_Name => "";
 
-       --~function Model LoadModel (const char *fileName) with
-               --~Import        => True,
-               --~Convention    => C,
-               --~External_Name => "";
+       function Load_Model (
+               File_Name : String := ""
+       ) return Model with
+               Import        => True,
+               Convention    => C,
+               External_Name => "LoadModel";
 
        --~function Model LoadModelFromMesh (Mesh mesh) with
                --~Import        => True,
@@ -3460,20 +3473,27 @@ package Raylib is
                --~Convention    => C,
                --~External_Name => "";
 
-       --~procedure UnloadModel (Model model) with
-               --~Import        => True,
-               --~Convention    => C,
-               --~External_Name => "";
+       procedure Unload_Model (
+               Data : Model := No_Model
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "UnloadModel";
 
        --~function BoundingBox GetModelBoundingBox (Model model) with
                --~Import        => True,
                --~Convention    => C,
                --~External_Name => "";
 
-       --~procedure DrawModel (Model model, Vector3 position, float scale, Color tint) with
-               --~Import        => True,
-               --~Convention    => C,
-               --~External_Name => "";
+       procedure Draw_Model (
+               Data     : Model     := No_Model;
+               Position : Vector_3D := (0.0, 0.0, 0.0);
+               Scale    : Float     := 1.0;
+               Tint     : Color     := White
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "DrawModel";
 
        --~procedure DrawModelEx (Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint) with
                --~Import        => True,
@@ -3495,25 +3515,44 @@ package Raylib is
                --~Convention    => C,
                --~External_Name => "";
 
-       --~procedure DrawBillboard (Camera camera, Texture2D texture, Vector3 position, float size, Color tint) with
-               --~Import        => True,
-               --~Convention    => C,
-               --~External_Name => "";
+       procedure Draw_Billboard (
+               Camera      : Camera_3D := No_Camera_3D;
+               Billboard   : Texture   := No_Texture;
+               Position    : Vector_3D := (0.0, 0.0, 0.0);
+               Size        : Float     := 0.0;
+               Tint        : Color     := White
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "DrawBillboard";
 
        --~procedure DrawBillboardRec (Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector2 size, Color tint) with
                --~Import        => True,
                --~Convention    => C,
                --~External_Name => "";
 
-       --~procedure DrawBillboardPro (Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint) with
-               --~Import        => True,
-               --~Convention    => C,
-               --~External_Name => "";
+       procedure Draw_Billboard_Pro (
+               Camera      : Camera_3D := No_Camera_3D;
+               Billboard   : Texture   := No_Texture;
+               Source      : Rectangle := No_Rectangle;
+               Position    : Vector_3D := (0.0, 0.0, 0.0);
+               Up          : Vector_3D := (0.0, 0.0, 0.0);
+               Size        : Vector_2D := (0.0, 0.0);
+               Origin      : Vector_2D := (0.0, 0.0);
+               Rotation    : Float     := 0.0;
+               Tint        : Color     := White
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "DrawBillboardPro";
 
-       --~procedure UploadMesh (Mesh *mesh, bool dynamic) with
-               --~Import        => True,
-               --~Convention    => C,
-               --~External_Name => "";
+       procedure Upload_Mesh (
+               Data    : access Mesh    := null;
+               Dynamic :        Logical := False
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "UploadMesh";
 
        --~procedure UpdateMeshBuffer (Mesh mesh, int index, const void *data, int dataSize, int offset) with
                --~Import        => True,
@@ -3525,10 +3564,14 @@ package Raylib is
                --~Convention    => C,
                --~External_Name => "";
 
-       --~procedure DrawMesh (Mesh mesh, Material material, Matrix transform) with
-               --~Import        => True,
-               --~Convention    => C,
-               --~External_Name => "";
+       procedure Draw_Mesh (
+               Data      : Mesh      := No_Mesh;
+               Pixels    : Material  := No_Material;
+               Transform : Matrix_4D := (others => 0.0)
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "DrawMesh";
 
        --~procedure DrawMeshInstanced (Mesh mesh, Material material, const Matrix *transforms, int instances) with
                --~Import        => True,
@@ -3560,10 +3603,15 @@ package Raylib is
                --~Convention    => C,
                --~External_Name => "";
 
-       --~function Mesh GenMeshPlane (float width, float length, int resX, int resZ) with
-               --~Import        => True,
-               --~Convention    => C,
-               --~External_Name => "";
+       function Gen_Mesh_Plane (
+               Width  : Float   := 1.0;
+               Height : Float   := 1.0;
+               X      : Integer := 1;
+               Z      : Integer := 1
+       ) return Mesh with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GenMeshPlane";
 
        --~function Mesh GenMeshCube (float width, float height, float length) with
                --~Import        => True,