205 lines
4.2 KiB
Ada
205 lines
4.2 KiB
Ada
with
|
|
ada.unchecked_Deallocation;
|
|
|
|
|
|
package body openGL.Visual
|
|
is
|
|
|
|
package body Forge
|
|
is
|
|
function new_Visual (Model : in openGL.Model.view;
|
|
Scale : in Vector_3 := [1.0, 1.0, 1.0];
|
|
is_Terrain : in Boolean := False) return openGL.Visual.view
|
|
is
|
|
begin
|
|
return new Visual.item' (Model => Model,
|
|
camera_Transform => Identity_4x4,
|
|
Transform => Identity_4x4,
|
|
mvp_Transform => Identity_4x4,
|
|
Scale => Scale,
|
|
program_Parameters => null,
|
|
is_Terrain => is_Terrain,
|
|
face_Count => 1,
|
|
apparent_Size => <>);
|
|
end new_Visual;
|
|
end Forge;
|
|
|
|
|
|
|
|
procedure free (Self : in out View)
|
|
is
|
|
procedure deallocate is new ada.unchecked_Deallocation (Item'Class, View);
|
|
begin
|
|
deallocate (Self);
|
|
end free;
|
|
|
|
|
|
|
|
function Model (Self : in Item) return openGL.Model.view
|
|
is
|
|
begin
|
|
return Self.Model;
|
|
end Model;
|
|
|
|
|
|
procedure Model_is (Self : in out Item; Now : in openGL.Model.view)
|
|
is
|
|
begin
|
|
Self.Model := Now;
|
|
end Model_is;
|
|
|
|
|
|
|
|
function Scale (Self : in Item) return Vector_3
|
|
is
|
|
begin
|
|
return Self.Scale;
|
|
end Scale;
|
|
|
|
|
|
procedure Scale_is (Self : in out Item; Now : in Vector_3)
|
|
is
|
|
begin
|
|
Self.Scale := Now;
|
|
end Scale_is;
|
|
|
|
|
|
|
|
function is_Terrain (Self : in Item) return Boolean
|
|
is
|
|
begin
|
|
return Self.is_Terrain;
|
|
end is_Terrain;
|
|
|
|
|
|
procedure is_Terrain (Self : in out Item; Now : in Boolean := True)
|
|
is
|
|
begin
|
|
Self.is_Terrain := Now;
|
|
end is_Terrain;
|
|
|
|
|
|
|
|
function face_Count (Self : in Item) return Natural
|
|
is
|
|
begin
|
|
return Self.face_Count;
|
|
end face_Count;
|
|
|
|
|
|
procedure face_Count_is (Self : in out Item; Now : in Natural)
|
|
is
|
|
begin
|
|
Self.face_Count := Now;
|
|
end face_Count_is;
|
|
|
|
|
|
|
|
function apparent_Size (Self : in Item) return Real
|
|
is
|
|
begin
|
|
return Self.apparent_Size;
|
|
end apparent_Size;
|
|
|
|
|
|
procedure apparent_Size_is (Self : in out Item; Now : in Real)
|
|
is
|
|
begin
|
|
Self.apparent_Size := Now;
|
|
end apparent_Size_is;
|
|
|
|
|
|
|
|
function Transform (Self : in Item) return Matrix_4x4
|
|
is
|
|
begin
|
|
return Self.Transform;
|
|
end Transform;
|
|
|
|
|
|
procedure Transform_is (Self : in out Item; Now : in Matrix_4x4)
|
|
is
|
|
begin
|
|
Self.Transform := Now;
|
|
end Transform_is;
|
|
|
|
|
|
function mvp_Transform (Self : in Item) return Matrix_4x4
|
|
is
|
|
begin
|
|
return Self.mvp_Transform;
|
|
end mvp_Transform;
|
|
|
|
|
|
procedure mvp_Transform_is (Self : in out Item; Now : in Matrix_4x4)
|
|
is
|
|
begin
|
|
Self.mvp_Transform := Now;
|
|
end mvp_Transform_is;
|
|
|
|
|
|
function camera_Transform (Self : in Item) return Matrix_4x4
|
|
is
|
|
begin
|
|
return Self.camera_Transform;
|
|
end camera_Transform;
|
|
|
|
|
|
procedure camera_Transform_is (Self : in out Item; Now : in Matrix_4x4)
|
|
is
|
|
begin
|
|
Self.camera_Transform := Now;
|
|
end camera_Transform_is;
|
|
|
|
|
|
|
|
procedure Spin_is (Self : in out Item; Now : in Matrix_3x3)
|
|
is
|
|
use linear_Algebra_3d;
|
|
begin
|
|
set_Rotation (Self.Transform, Now);
|
|
end Spin_is;
|
|
|
|
|
|
function Spin_of (Self : in Item) return Matrix_3x3
|
|
is
|
|
use linear_Algebra_3d;
|
|
begin
|
|
return get_Rotation (Self.Transform);
|
|
end Spin_of;
|
|
|
|
|
|
|
|
procedure Site_is (Self : in out Item; Now : in Vector_3)
|
|
is
|
|
use linear_Algebra_3d;
|
|
begin
|
|
set_Translation (Self.Transform, Now);
|
|
end Site_is;
|
|
|
|
|
|
function Site_of (Self : in Item) return Vector_3
|
|
is
|
|
use linear_Algebra_3d;
|
|
begin
|
|
return get_Translation (Self.Transform);
|
|
end Site_of;
|
|
|
|
|
|
|
|
function program_Parameters (Self : in Item) return program.Parameters_view
|
|
is
|
|
begin
|
|
return Self.program_Parameters;
|
|
end program_Parameters;
|
|
|
|
|
|
procedure program_Parameters_are (Self : in out Item; Now : in program.Parameters_view)
|
|
is
|
|
begin
|
|
Self.program_Parameters := Now;
|
|
end program_Parameters_are;
|
|
|
|
|
|
end openGL.Visual;
|