Add initial prototype.
This commit is contained in:
59
4-high/gel/source/gel-camera.adb
Normal file
59
4-high/gel/source/gel-camera.adb
Normal file
@@ -0,0 +1,59 @@
|
||||
with
|
||||
gel.Sprite,
|
||||
openGL.Visual,
|
||||
ada.unchecked_Deallocation;
|
||||
|
||||
|
||||
package body gel.Camera
|
||||
is
|
||||
|
||||
--------
|
||||
-- Forge
|
||||
--
|
||||
|
||||
procedure free (Self : in out View)
|
||||
is
|
||||
procedure deallocate is new ada.unchecked_Deallocation (Item'Class, View);
|
||||
begin
|
||||
Self.destroy;
|
||||
deallocate (Self);
|
||||
end free;
|
||||
|
||||
|
||||
|
||||
--------------
|
||||
-- Operations
|
||||
--
|
||||
|
||||
procedure render (Self : in out Item; the_World : in gel.World.view;
|
||||
To : in openGL.Surface.view)
|
||||
is
|
||||
all_Sprites : gel.World.sprite_transform_Pairs renames the_World.sprite_Transforms;
|
||||
|
||||
the_Visuals : openGL.Visual.views (1 .. all_Sprites'Length);
|
||||
Count : Natural := 0;
|
||||
|
||||
the_Sprite : gel.Sprite.view;
|
||||
begin
|
||||
for i in all_Sprites'Range
|
||||
loop
|
||||
the_Sprite := all_Sprites (i).Sprite;
|
||||
|
||||
if not the_Sprite.is_Destroyed
|
||||
and then the_Sprite.is_Visible
|
||||
then
|
||||
Count := Count + 1;
|
||||
|
||||
the_Visuals (Count) := the_Sprite.Visual;
|
||||
the_Visuals (Count).Transform_is (all_Sprites (i).Transform);
|
||||
the_Visuals (Count).Scale_is ([1.0, 1.0, 1.0]);
|
||||
|
||||
the_Visuals (Count).program_Parameters_are (the_Sprite.program_Parameters);
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
Self.render (the_Visuals (1 .. Count));
|
||||
end render;
|
||||
|
||||
|
||||
end gel.Camera;
|
||||
Reference in New Issue
Block a user