84 lines
1.4 KiB
Ada
84 lines
1.4 KiB
Ada
with
|
|
ada.unchecked_Deallocation;
|
|
|
|
package body gel.Dolly
|
|
is
|
|
use Math;
|
|
|
|
|
|
procedure free (Self : in out View)
|
|
is
|
|
procedure deallocate is new ada.unchecked_Deallocation (Item'Class, View);
|
|
begin
|
|
if Self = null
|
|
then
|
|
return;
|
|
end if;
|
|
|
|
Self.destroy;
|
|
deallocate (Self);
|
|
end free;
|
|
|
|
|
|
--------------
|
|
--- Attributes
|
|
--
|
|
|
|
procedure add_Camera (Self : in out Item'Class; the_Camera : in Camera.view)
|
|
is
|
|
begin
|
|
Self.Cameras.append (the_Camera);
|
|
end add_Camera;
|
|
|
|
|
|
|
|
procedure is_moving (Self : in out Item'Class; Direction : dolly.Direction; Now : in Boolean := True)
|
|
is
|
|
begin
|
|
Self.Motion (Direction) := Now;
|
|
end is_moving;
|
|
|
|
|
|
|
|
procedure is_spinning (Self : in out Item'Class; Direction : dolly.Direction; Now : in Boolean := True)
|
|
is
|
|
begin
|
|
Self.Spin (Direction) := Now;
|
|
end is_spinning;
|
|
|
|
|
|
|
|
procedure is_orbiting (Self : in out Item'Class; Direction : dolly.Direction; Now : in Boolean := True)
|
|
is
|
|
begin
|
|
Self.Orbit (Direction) := Now;
|
|
end is_orbiting;
|
|
|
|
|
|
|
|
procedure Speed_is (Self : in out Item; Now : in Real)
|
|
is
|
|
begin
|
|
Self.Speed := Now;
|
|
end Speed_is;
|
|
|
|
|
|
|
|
function Speed (Self : in Item) return Real
|
|
is
|
|
begin
|
|
return Self.Speed;
|
|
end Speed;
|
|
|
|
|
|
|
|
procedure speed_Multiplier_is (Self : in out Item; Now : in Real)
|
|
is
|
|
begin
|
|
Self.Multiplier := Now;
|
|
end speed_Multiplier_is;
|
|
|
|
|
|
end gel.Dolly;
|
|
|