with gel_demo_Services, gel_demo_Server, gel.Applet.client_World, gel.Forge, gel.Camera, ada.Calendar, ada.Text_IO, ada.Exceptions; package body gel_demo_Client is use ada.Text_IO; task body Item is use type ada.Calendar.Time; the_Applet : gel.Applet.client_World.view; next_render_Time : ada.calendar.Time; begin accept start; the_Applet := gel.Forge.new_client_Applet ("distributed Demo ~ Client", 1920, 1200); -- Register the client world as a mirror of the server world. -- the_Applet.client_World.is_a_Mirror (of_World => gel_demo_Services.World); gel_demo_Services.World.register (the_Mirror => the_Applet.client_World.all'Access, Mirror_as_observer => the_Applet.client_World.all'Access); -- Setup. -- the_Applet.client_Camera.Site_is ((0.0, 0.0, 20.0)); the_Applet.enable_simple_Dolly (1); next_render_Time := ada.Calendar.clock; -- Begin processing. -- while the_Applet.is_open loop the_Applet.freshen; next_render_Time := next_render_Time + 1.0/60.0; delay until next_render_Time; end loop; -- Close. -- gel_demo_services.World.deregister (the_mirror => the_Applet.client_World.all'access); the_Applet.destroy; gel_demo_Server.item.stop; put_Line ("Client done."); exception when E : others => put_Line ("Client unhandled exception ..."); put_Line (ada.exceptions.Exception_Information (E)); put_Line ("Client has terminated !"); end Item; end gel_demo_Client;