text: import time
  import threading
  
  from replay import ReplayExperiment as ExperimentBase
  
  class MyExperiment(ExperimentBase):
  
      def __init__(self, *args, **kwargs):
          ExperimentBase.__init__(self, *args, **kwargs)
  
          # load an initial osg model at the origin to show the coord system
          self.load_osg('debug_world_posts_at_0_6.osgt')
          # and a model to show the integrated world position
          self._mod = self.load_osg('1_object_1_animation_osgexp0130.osgt')
  
      # the base class calls this with the current integrated position of
      # the observer in the world
      def do_move_world(self, x, y, z):
          # move the second model there to visualise
          self._mod.move(x, y, z)
  
      def run_forever(self):
          t0 = time.time()
          try:
              while 1:
                  time.sleep(0.1)
          except KeyboardInterrupt:
              self.stop()
              
  if __name__ == '__main__':
      import logging
      import argparse
  
      logging.basicConfig(level=logging.INFO)
  
      parser = argparse.ArgumentParser()
      parser.add_argument('-s', '--server-ids', metavar='default-id,server-2', default='default-id',
                          help="comma separated display server ids (default='default-id'")
      parser.add_argument('logfile', nargs=1, help='yaml position log file')
      args = parser.parse_args()
  
      e = MyExperiment.new_osg2(servers=[n.strip() for n in args.server_ids.strip().split(',')],
                                replay_filename=args.logfile[0])
  
      e.start(record=True)
      e.run_forever()
  
  