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;