Add initial prototype.
This commit is contained in:
74
4-high/gel/source/dolly/gel-dolly.ads
Normal file
74
4-high/gel/source/dolly/gel-dolly.ads
Normal file
@@ -0,0 +1,74 @@
|
||||
with
|
||||
gel.Camera,
|
||||
ada.Containers.Vectors;
|
||||
|
||||
package gel.Dolly
|
||||
--
|
||||
-- Models a camera dolly.
|
||||
--
|
||||
is
|
||||
type Item is abstract tagged private;
|
||||
type View is access all Item'Class;
|
||||
|
||||
|
||||
---------
|
||||
--- Forge
|
||||
--
|
||||
|
||||
procedure define (Self : in out Item) is abstract;
|
||||
procedure destroy (Self : in out Item) is abstract;
|
||||
|
||||
procedure free (Self : in out View);
|
||||
|
||||
|
||||
--------------
|
||||
--- Attributes
|
||||
--
|
||||
|
||||
type Direction is (Left, Right, Up, Down, Forward, Backward);
|
||||
|
||||
procedure add_Camera (Self : in out Item'Class; the_Camera : in Camera.view);
|
||||
|
||||
procedure is_moving (Self : in out Item'Class; Direction : dolly.Direction; Now : in Boolean := True);
|
||||
procedure is_spinning (Self : in out Item'Class; Direction : dolly.Direction; Now : in Boolean := True);
|
||||
procedure is_orbiting (Self : in out Item'Class; Direction : dolly.Direction; Now : in Boolean := True);
|
||||
|
||||
function Speed (Self : in Item) return math.Real;
|
||||
procedure Speed_is (Self : in out Item; Now : in math.Real);
|
||||
procedure speed_Multiplier_is (Self : in out Item; Now : in math.Real);
|
||||
|
||||
procedure allow_linear_Motion (Self : in out Item; Allow : in Boolean) is null;
|
||||
procedure allow_orbital_Motion (Self : in out Item; Allow : in Boolean) is null;
|
||||
|
||||
|
||||
--------------
|
||||
--- Operations
|
||||
--
|
||||
|
||||
procedure freshen (Self : in out Item) is abstract;
|
||||
|
||||
|
||||
|
||||
private
|
||||
|
||||
use type gel.Camera.view;
|
||||
package camera_Vectors is new ada.Containers.Vectors (Positive, gel.Camera.view);
|
||||
subtype camera_Vector is camera_Vectors.Vector;
|
||||
|
||||
type Direction_Flags is array (Direction) of Boolean;
|
||||
|
||||
|
||||
type Item is abstract tagged
|
||||
record
|
||||
Cameras : camera_Vector;
|
||||
|
||||
Motion : Direction_Flags := [others => False];
|
||||
Spin : Direction_Flags := [others => False];
|
||||
Orbit : Direction_Flags := [others => False];
|
||||
|
||||
Speed : math.Real := 1.0;
|
||||
Multiplier : math.Real := 1.0; -- Applied to speed.
|
||||
end record;
|
||||
|
||||
|
||||
end gel.Dolly;
|
||||
Reference in New Issue
Block a user