with gel.Forge, gel.Window.setup, gel.Applet.gui_world, gel.World, gel.Camera, gel.Sprite, ada.Calendar; pragma Unreferenced (gel.Window.setup); procedure launch_add_rid_sprite_Test -- -- drops a ball onto a box terrain. -- -- is use ada.Calendar; the_Applet : constant gel.Applet.gui_world.view := gel.forge.new_gui_Applet ("Add/Rid Sprite Test", 500, 500); the_Box : constant gel.Sprite.view := gel.forge.new_box_Sprite (the_Applet.gui_World, mass => 0.0); the_Balls : gel.Sprite.views (1 .. 1) := (others => gel.forge.new_ball_Sprite (the_Applet.gui_World, mass => 1.0)); next_render_Time : ada.calendar.Time; begin the_Applet.gui_Camera.Site_is ((0.0, 5.0, 15.0)); -- Position the camera the_Applet.enable_simple_Dolly (1); -- Enable user camera control via keyboards the_Applet.enable_Mouse (detect_Motion => False); -- Enable mouse events. the_Applet.gui_World.add (the_Box); -- Add the ground box. the_Box.Site_is ((0.0, 0.0, 0.0)); for Each in the_Balls'range loop the_Applet.gui_World.add (the_Balls (Each)); -- Add ball. the_Balls (Each).Site_is ((0.0, 10.0, 0.0)); end loop; for Each in 1 .. 100 loop the_Applet.gui_World.evolve; -- Evolve the world. the_Applet.freshen; -- Handle any new events and update the screen. end loop; for Each in the_Balls'range loop the_Applet.gui_World.rid (the_Balls (Each)); -- Rid ball. gel.Sprite.free (the_Balls (Each)); end loop; next_render_Time := ada.Calendar.clock; while the_Applet.is_open loop the_Applet.gui_World.evolve; -- Evolve the world. the_Applet.freshen; -- Handle any new events and update the screen. next_render_Time := next_render_Time + gel.World.evolve_Period; delay until next_render_Time; end loop; the_Applet.destroy; end launch_add_rid_sprite_Test;