Revision: 6614
          http://playerstage.svn.sourceforge.net/playerstage/?rev=6614&view=rev
Author:   rtv
Date:     2008-06-16 20:24:37 -0700 (Mon, 16 Jun 2008)

Log Message:
-----------
improving external API. mainly running and updating worlds. also increased 
speed a bit

Modified Paths:
--------------
    code/stage/trunk/libstage/canvas.cc
    code/stage/trunk/libstage/main.cc
    code/stage/trunk/libstage/model.cc
    code/stage/trunk/libstage/model_laser.cc
    code/stage/trunk/libstage/model_load.cc
    code/stage/trunk/libstage/stage.cc
    code/stage/trunk/libstage/stage.hh
    code/stage/trunk/libstage/test.cc
    code/stage/trunk/libstage/world.cc
    code/stage/trunk/libstage/worldgui.cc
    code/stage/trunk/worlds/fasr.world

Modified: code/stage/trunk/libstage/canvas.cc
===================================================================
--- code/stage/trunk/libstage/canvas.cc 2008-06-17 03:08:57 UTC (rev 6613)
+++ code/stage/trunk/libstage/canvas.cc 2008-06-17 03:24:37 UTC (rev 6614)
@@ -13,11 +13,11 @@
 
 void StgCanvas::TimerCallback( StgCanvas* c )
 {
-       c->redraw();
-
-       Fl::repeat_timeout(((double)c->interval/1000),
-                       (Fl_Timeout_Handler)StgCanvas::TimerCallback, 
-                       c);
+  c->redraw();
+  
+  Fl::repeat_timeout(((double)c->interval/1000),
+                                                        
(Fl_Timeout_Handler)StgCanvas::TimerCallback, 
+                                                        c);
 }
 
 
@@ -47,10 +47,10 @@
 
        showflags = STG_SHOW_CLOCK | STG_SHOW_BLOCKS | STG_SHOW_GRID | 
STG_SHOW_DATA;
 
-       // start the timer that causes regular redraws
-       Fl::add_timeout( ((double)interval/1000), 
-                       (Fl_Timeout_Handler)StgCanvas::TimerCallback, 
-                       this);
+       // // start the timer that causes regular redraws
+       Fl::add_timeout( ((double)interval/1000), 
+                                                 
(Fl_Timeout_Handler)StgCanvas::TimerCallback, 
+                                                 this);
 }
 
 StgCanvas::~StgCanvas()
@@ -133,7 +133,7 @@
        //printf("Clicked rByte: 0x%X, gByte: 0x%X, bByte: 0x%X, aByte: 
0x%X\n", rByte, gByte, bByte, aByte);
        //printf("-->model Id = 0x%X\n", modelId);
        
-       StgModel* mod = (StgModel*)g_hash_table_lookup( StgModel::modelsbyid, 
(void*)modelId );
+       StgModel* mod = StgModel::LookupId( modelId );
 
        //printf("%p %s %d %x\n", mod, mod ? mod->Token() : "(none)", id, id );
 
@@ -208,6 +208,7 @@
                                        camera.scale( Fl::event_dy(),  
Fl::event_x(), w(), Fl::event_y(), h() );
                                }
                                invalidate();
+                               redraw();
                        }
                        return 1;
 
@@ -226,6 +227,7 @@
                                }
 
                                invalidate();
+                               redraw();
                        }
                        else if( Fl::event_state( FL_ALT ) )
                        {   
@@ -319,6 +321,8 @@
                        }
                        startx = Fl::event_x();
                        starty = Fl::event_y();
+
+                       redraw();
                        return 1; // end case FL_DRAG
 
                case FL_RELEASE:   // mouse button released
@@ -347,9 +351,9 @@
                                        world->TogglePause();
                                        break;
                                case ' ': // space bar
-
                                        camera.resetAngle();
-                                       invalidate();
+                                       //invalidate();
+                                       redraw();
                                        break;
                                case FL_Left:  camera.move( -10, 0 ); break;
                                case FL_Right: camera.move( 10, 0 );; break;
@@ -565,7 +569,7 @@
 //     if( loaded_texture == true && use_perspective_camera == true )
 //             return;
 
-       if (!valid() || world->dirty ) 
+       if (!valid() ) 
        { 
                valid(1);
                FixViewport(w(), h());

Modified: code/stage/trunk/libstage/main.cc
===================================================================
--- code/stage/trunk/libstage/main.cc   2008-06-17 03:08:57 UTC (rev 6613)
+++ code/stage/trunk/libstage/main.cc   2008-06-17 03:24:37 UTC (rev 6614)
@@ -42,12 +42,16 @@
 
        puts("");// end the first start-up line
 
+
+       // XX TODO
+
        // initialize libstage
        Stg::Init( &argc, &argv );
 
        // arguments at index optindex and later are not options, so they
        // must be world file names
 
+
        bool loaded_world_file = false;
        while( optindex < argc )
        {
@@ -56,19 +60,18 @@
                        const char* worldfilename = argv[optindex];
                        StgWorldGui* world = new StgWorldGui( 400, 300, 
worldfilename );
                        world->Load( worldfilename );
-                       world->Start();
                        loaded_world_file = true;
                }
                optindex++;
        }
 
-       if( loaded_world_file == false ) {
-               // replace this with a loading dialog/window
-               StgWorldGui* world = new StgWorldGui( 400, 300 );
-       }
+//     if( loaded_world_file == false ) {
+//             // replace this with a loading dialog/window
+//             StgWorldGui* world = new StgWorldGui( 400, 300 );
+//     }
 
-
-
-       StgWorldGui::Run(); // run all the simulations
+       
+       while(true)
+         StgWorld::UpdateAll();          
 }
 

Modified: code/stage/trunk/libstage/model.cc
===================================================================
--- code/stage/trunk/libstage/model.cc  2008-06-17 03:08:57 UTC (rev 6613)
+++ code/stage/trunk/libstage/model.cc  2008-06-17 03:24:37 UTC (rev 6614)
@@ -258,6 +258,8 @@
   
        if( callbacks ) g_hash_table_destroy( callbacks );
 
+       g_hash_table_remove( StgModel::modelsbyid, (void*)id );
+
        world->RemoveModel( this );
 }
 

Modified: code/stage/trunk/libstage/model_laser.cc
===================================================================
--- code/stage/trunk/libstage/model_laser.cc    2008-06-17 03:08:57 UTC (rev 
6613)
+++ code/stage/trunk/libstage/model_laser.cc    2008-06-17 03:24:37 UTC (rev 
6614)
@@ -17,23 +17,21 @@
 #include "stage_internal.hh"
 
 // DEFAULT PARAMETERS FOR LASER MODEL
-static const bool DEFAULT_LASER_FILLED = true;
-static const stg_watts_t DEFAULT_LASER_WATTS = 17.5; // laser power consumption
-static const stg_meters_t DEFAULT_LASER_SIZEX = 0.15;
-static const stg_meters_t DEFAULT_LASER_SIZEY = 0.15;
-static const stg_meters_t DEFAULT_LASER_SIZEZ = 0.2;
-static const stg_meters_t DEFAULT_LASER_MINRANGE = 0.0;
-static const stg_meters_t DEFAULT_LASER_MAXRANGE = 8.0;
-static const stg_radians_t DEFAULT_LASER_FOV = M_PI;
-static const unsigned int DEFAULT_LASER_SAMPLES = 180;
-static const stg_msec_t DEFAULT_LASER_INTERVAL_MS = 100;
-static const unsigned int DEFAULT_LASER_RESOLUTION = 1;
+const bool StgModelLaser::DEFAULT_FILLED = true;
+const stg_watts_t StgModelLaser::DEFAULT_WATTS = 17.5;
+const stg_size_t StgModelLaser::DEFAULT_SIZE = {0.15, 0.15, 0.2 };
+const stg_meters_t StgModelLaser::DEFAULT_MINRANGE = 0.0;
+const stg_meters_t StgModelLaser::DEFAULT_MAXRANGE = 8.0;
+const stg_radians_t StgModelLaser::DEFAULT_FOV = M_PI;
+const unsigned int StgModelLaser::DEFAULT_SAMPLES = 180;
+const stg_msec_t StgModelLaser::DEFAULT_INTERVAL_MS = 100;
+const unsigned int StgModelLaser::DEFAULT_RESOLUTION = 1;
 
-static const char LASER_GEOM_COLOR[] = "blue";
-//static const char LASER_BRIGHT_COLOR[] = "blue";
-//static const char LASER_CFG_COLOR[] = "light steel blue";
-//static const char LASER_COLOR[] = "steel blue";
-//static const char LASER_FILL_COLOR[] = "powder blue";
+const char StgModelLaser::DEFAULT_GEOM_COLOR[] = "blue";
+//const char BRIGHT_COLOR[] = "blue";
+//const char CFG_COLOR[] = "light steel blue";
+//const char COLOR[] = "steel blue";
+//const char FILL_COLOR[] = "powder blue";
 
 /**
   @ingroup model
@@ -83,24 +81,22 @@
                        id, typestr );
 
        // sensible laser defaults 
-       interval = 1e3 * DEFAULT_LASER_INTERVAL_MS;
+       interval = 1e3 * StgModelLaser::DEFAULT_INTERVAL_MS;
        laser_return = LaserVisible;
 
        stg_geom_t geom;
        memset( &geom, 0, sizeof(geom));
-       geom.size.x = DEFAULT_LASER_SIZEX;
-       geom.size.y = DEFAULT_LASER_SIZEY;
-       geom.size.z = DEFAULT_LASER_SIZEZ;
+       geom.size = StgModelLaser::DEFAULT_SIZE;
        SetGeom( geom );
 
        // set default color
-       SetColor( stg_lookup_color(LASER_GEOM_COLOR));
+       SetColor( stg_lookup_color(DEFAULT_GEOM_COLOR));
 
-       range_min    = DEFAULT_LASER_MINRANGE;
-       range_max    = DEFAULT_LASER_MAXRANGE;
-       fov          = DEFAULT_LASER_FOV;
-       sample_count = DEFAULT_LASER_SAMPLES;
-       resolution   = DEFAULT_LASER_RESOLUTION;
+       range_min    = DEFAULT_MINRANGE;
+       range_max    = DEFAULT_MAXRANGE;
+       fov          = DEFAULT_FOV;
+       sample_count = DEFAULT_SAMPLES;
+       resolution   = DEFAULT_RESOLUTION;
 
        // don't allocate sample buffer memory until Update() is called
        samples = NULL;
@@ -237,7 +233,7 @@
        PRINT_DEBUG( "laser startup" );
 
        // start consuming power
-       SetWatts( DEFAULT_LASER_WATTS );
+       SetWatts( StgModelLaser::DEFAULT_WATTS );
 }
 
 void StgModelLaser::Shutdown( void )

Modified: code/stage/trunk/libstage/model_load.cc
===================================================================
--- code/stage/trunk/libstage/model_load.cc     2008-06-17 03:08:57 UTC (rev 
6613)
+++ code/stage/trunk/libstage/model_load.cc     2008-06-17 03:24:37 UTC (rev 
6614)
@@ -33,7 +33,7 @@
                {
                        //printf( "changed %s to %s\n", this->token, token );
                        this->token = strdup( name );
-                       world->AddModelName( this ); // add this name to the 
world's table
+                       world->AddModel( this ); // add this name to the 
world's table
                }
                else
                        PRINT_ERR1( "Name blank for model %s. Check your 
worldfile\n", this->token );

Modified: code/stage/trunk/libstage/stage.cc
===================================================================
--- code/stage/trunk/libstage/stage.cc  2008-06-17 03:08:57 UTC (rev 6613)
+++ code/stage/trunk/libstage/stage.cc  2008-06-17 03:24:37 UTC (rev 6614)
@@ -23,6 +23,7 @@
 
 stg_typetable_entry_t Stg::typetable[MODEL_TYPE_COUNT];
 
+
 void Stg::Init( int* argc, char** argv[] )
 {
        PRINT_DEBUG( "Stg::Init()" );

Modified: code/stage/trunk/libstage/stage.hh
===================================================================
--- code/stage/trunk/libstage/stage.hh  2008-06-17 03:08:57 UTC (rev 6613)
+++ code/stage/trunk/libstage/stage.hh  2008-06-17 03:24:37 UTC (rev 6614)
@@ -84,13 +84,18 @@
 /** The Stage library uses its own namespace */
 namespace Stg 
 {
+       // foreward declare
+  class StgCanvas;
+  class Worldfile;
+  class StgWorld;
+  class StgModel;
+  
        /** Initialize the Stage library */
        void Init( int* argc, char** argv[] );
 
        /** returns true iff Stg::Init() has been called. */
        bool InitDone();
-
-
+  
   /** Create unique identifying numbers for each type of model, and a
                count of the number of types. */
   typedef enum {
@@ -106,9 +111,6 @@
         // types
   } stg_model_type_t;
 
-       // foreward declare
-       class StgCanvas;
-       class Worldfile;
 
        /// Copyright string
        const char COPYRIGHT[] =                                       
@@ -971,8 +973,15 @@
        friend class StgTime;
    friend class StgCanvas;
 
+public: 
+  static void UpdateAll();
+  
 private:
        
+  static GList* world_list;
+  /** Update all existing worlds */
+
+
        static bool quit_all; // quit all worlds ASAP  
        static unsigned int next_id; //< initialized to zero, used tob
        //allocate unique sequential world ids
@@ -1010,8 +1019,9 @@
        GList* velocity_list; ///< a list of models that have non-zero 
velocity, for efficient updating
 
        stg_usec_t sim_time; ///< the current sim time in this world in ms
-       stg_usec_t wall_last_update; ///< the real time of the last update in ms
 
+  //stg_usec_t wall_last_update; ///< the real time of the last update in ms
+
        long unsigned int updates; ///< the number of simulated time steps 
executed so far
 
        bool dirty; ///< iff true, a gui redraw would be required
@@ -1026,7 +1036,6 @@
        bool paused; ///< the world only updates when this is false
 
        GList* update_list; //< the descendants that need Update() called
-       void AddModelName( StgModel* mod );
 
        void StartUpdatingModel( StgModel* mod );
        void StopUpdatingModel( StgModel* mod );
@@ -1055,9 +1064,10 @@
        void RemoveBlock( int x, int y, StgBlock* block );
 
 
-protected:
+public:
        stg_usec_t interval_real;   ///< real-time interval between updates - 
set this to zero for 'as fast as possible
 
+protected:
        GHashTable* superregions;
 
        static void UpdateCb( StgWorld* world);
@@ -1099,8 +1109,8 @@
        stg_usec_t SimTimeNow(void){ return sim_time;} ;
        stg_usec_t RealTimeNow(void);
        stg_usec_t RealTimeSinceStart(void);
-       void PauseUntilNextUpdateTime(void);
-       void IdleUntilNextUpdateTime( int (*idler)(void) );
+  //void PauseUntilNextUpdateTime(void);
+  //   void IdleUntilNextUpdateTime( int (*idler)(void) );
 
        void AddBlock( StgBlock* block );
        void RemoveBlock( StgBlock* block );
@@ -1130,7 +1140,7 @@
 
   /** Returns a pointer to the model identified by ID, or NULL if
                nonexistent */
-       StgModel* GetModel( const stg_id_t id );
+  //StgModel* GetModel( const stg_id_t id );
 
   /** Returns a pointer to the model identified by name, or NULL if
                nonexistent */
@@ -1176,7 +1186,15 @@
   static uint32_t count;
   static GHashTable*  modelsbyid;
 
+
 public:
+  
+  /** Look up a model pointer by a unique model ID */
+  static StgModel* LookupId( uint32_t id )
+  { 
+        return (StgModel*)g_hash_table_lookup( modelsbyid, (void*)id ); 
+  }
+  
   /** unique process-wide identifier for this model */
   uint32_t id;
 
@@ -1804,8 +1822,6 @@
 
 // FLTK Gui includes
 #include <FL/Fl.H>
-//#include <FL/Fl_Box.H>
-//#include <FL/Fl_Double_Window.H>
 #include <FL/Fl_Gl_Window.H>
 #include <FL/Fl_Menu_Bar.H>
 #include <FL/Fl_Menu_Button.H>
@@ -2003,15 +2019,13 @@
        StgCanvas* canvas;
        Fl_Menu_Bar* mbar;
 
+  stg_usec_t real_time_of_last_update;
+
        public:
        StgWorldGui(int W,int H,const char*L=0);
        ~StgWorldGui();
 
-       /** Start the simulation and GUI. Does not return */
-       static void Run();
-       void Start();
-       void Stop();
-       void Cycle();
+  virtual bool Update();
 
        virtual void Load( const char* filename );
        virtual void UnLoad();
@@ -2169,6 +2183,18 @@
 class StgModelLaser : public StgModel
 {
 private:
+  // DEFAULT PARAMETERS FOR LASER MODEL
+  static const bool DEFAULT_FILLED;
+  static const stg_watts_t DEFAULT_WATTS; 
+  static const stg_size_t DEFAULT_SIZE;
+  static const stg_meters_t DEFAULT_MINRANGE;
+  static const stg_meters_t DEFAULT_MAXRANGE;
+  static const stg_radians_t DEFAULT_FOV;
+  static const unsigned int DEFAULT_SAMPLES;
+  static const stg_msec_t DEFAULT_INTERVAL_MS;
+  static const unsigned int DEFAULT_RESOLUTION;
+  static const char DEFAULT_GEOM_COLOR[];
+
   int dl_debug_laser;
   
   stg_laser_sample_t* samples;

Modified: code/stage/trunk/libstage/test.cc
===================================================================
--- code/stage/trunk/libstage/test.cc   2008-06-17 03:08:57 UTC (rev 6613)
+++ code/stage/trunk/libstage/test.cc   2008-06-17 03:24:37 UTC (rev 6614)
@@ -8,8 +8,10 @@
 
 void interact( StgWorldGui* wg )
 {
-  for( int i=0; i<100; i++ )
-        wg->Cycle();
+  //for( int i=0; i<100; i++ )
+  // wg->Cycle();
+
+  wg->Update();
 }
 
 void test( char* str, double a, double b )
@@ -180,5 +182,6 @@
 //      }
   
 
-  StgWorldGui::Run();
+       while(true)
+         world.Update();
 }

Modified: code/stage/trunk/libstage/world.cc
===================================================================
--- code/stage/trunk/libstage/world.cc  2008-06-17 03:08:57 UTC (rev 6613)
+++ code/stage/trunk/libstage/world.cc  2008-06-17 03:24:37 UTC (rev 6614)
@@ -57,6 +57,7 @@
 // static data members
 unsigned int StgWorld::next_id = 0;
 bool StgWorld::quit_all = false;
+GList* StgWorld::world_list = NULL;
 
 static guint PointIntHash( stg_point_int_t* pt )
 {
@@ -84,6 +85,14 @@
        delete sr;
 }
 
+void StgWorld::UpdateAll()
+{
+  assert( StgWorld::world_list );
+  
+  for( GList* it = StgWorld::world_list; it; it=it->next )
+        ((StgWorld*)it->data)->Update();
+}
+
 StgWorld::StgWorld( const char* token, 
                                                  stg_msec_t interval_sim,
                                                  stg_msec_t interval_real,
@@ -102,8 +111,8 @@
                PRINT_WARN( "Stg::Init() must be called before a StgWorld is 
created." );
                exit(-1);
        }
-
-       //      this->id = StgWorld::next_id++;
+       StgWorld::world_list = g_list_append( StgWorld::world_list, this );
+       
        this->ray_list = NULL;
        this->quit_time = 0;
 
@@ -159,6 +168,8 @@
        g_hash_table_destroy( models_by_name );
 
        g_free( token );
+
+       world_list = g_list_remove( world_list, this );
 }
 
 
@@ -399,54 +410,6 @@
        return timenow - real_time_start;
 }
 
-void StgWorld::PauseUntilNextUpdateTime( void )
-{
-       // sleep until it's time to update  
-       stg_usec_t timenow = RealTimeSinceStart();
-
-       /*  printf( "\ntimesincestart %llu interval_real %llu interval_sim %llu 
real_time_next_update %llu\n",
-               timenow,
-               interval_real,
-               interval_sim,
-               real_time_next_update );
-        */
-
-       if( timenow < real_time_next_update )
-       {
-               usleep( real_time_next_update - timenow );
-       }
-
-       interval_log[updates%INTERVAL_LOG_LEN] = timenow - real_time_now;
-
-       real_time_now = timenow;
-       real_time_next_update += interval_real;
-}
-
-void StgWorld::IdleUntilNextUpdateTime( int (*idler)(void) )
-{
-       // sleep until it's time to update  
-       stg_usec_t timenow;
-
-       /*  printf( "\ntimesincestart %llu interval_real %llu interval_sim %llu 
real_time_next_update %llu\n",
-               timenow,
-               interval_real,
-               interval_sim,
-               real_time_next_update );
-        */
-
-       while( (timenow = RealTimeSinceStart()) < real_time_next_update )
-       {
-               (*idler)();
-               usleep( 1000 );
-       }
-
-       interval_log[updates%INTERVAL_LOG_LEN] = timenow - real_time_now;
-
-       real_time_now = timenow;
-       real_time_next_update += interval_real;
-}
-
-
 #define DEBUG 1
 
 bool StgWorld::Update()
@@ -474,27 +437,13 @@
        stg_usec_t timenow = RealTimeSinceStart();
 
        interval_log[updates%INTERVAL_LOG_LEN] = timenow - real_time_now;
-
-       //interval_log[updates%INTERVAL_LOG_LEN] = timenow - real_time_now;
-
        real_time_now = timenow;
-       //real_time_next_update += interval_real;
 
        return true;
 }
 
 void StgWorld::AddModel( StgModel*  mod  )
 {
-       //PRINT_DEBUG3( "World %s adding model %d %s to hash tables ", 
-       //        token, mod->id, mod->Token() );
-
-       //g_hash_table_insert( this->models_by_id, (gpointer)mod->Id(), mod );
-       AddModelName( mod );
-}
-
-
-void StgWorld::AddModelName( StgModel* mod )
-{
        g_hash_table_insert( this->models_by_name, (gpointer)mod->Token(), mod 
);
 }
 
@@ -509,13 +458,6 @@
        return mod;
 }
 
-// StgModel* StgWorld::GetModel( const stg_id_t id )
-// {
-//     PRINT_DEBUG1( "looking up model id %d in models_by_id", id );
-//     return (StgModel*)g_hash_table_lookup( this->models_by_id, (gpointer)id 
);
-// }
-
-
 void StgWorld::RecordRay( double x1, double y1, double x2, double y2 )
 {  
        float* drawpts = new float[4];

Modified: code/stage/trunk/libstage/worldgui.cc
===================================================================
--- code/stage/trunk/libstage/worldgui.cc       2008-06-17 03:08:57 UTC (rev 
6613)
+++ code/stage/trunk/libstage/worldgui.cc       2008-06-17 03:24:37 UTC (rev 
6614)
@@ -511,50 +511,38 @@
        return StgWorld::Save( filename );
 }
 
-void StgWorld::UpdateCb( StgWorld* world  )
-{
-       world->Update();
 
-       // need to reinstantiatethe timeout each time
-       Fl::repeat_timeout( world->interval_real/1e6, 
-                       (Fl_Timeout_Handler)UpdateCb, world );
-}
-
-static void idle_callback( StgWorld* world  )
+bool StgWorldGui::Update()
 {
-       world->Update();
-}
+  if( real_time_of_last_update == 0 )
+        real_time_of_last_update = RealTimeNow();
+  
+  bool val = StgWorld::Update();
+  
 
+  stg_usec_t interval;
+  stg_usec_t timenow;
+  
+  do { // we loop over updating the GUI, sleeping if there's any spare
+                // time
+        Fl::check();
 
-void StgWorldGui::Start()
-{
-       // if a non-zero interval was requested, call Update() after that
-       // interval
-       if( interval_real > 0 )
-               Fl::add_timeout( interval_real/1e6, 
(Fl_Timeout_Handler)UpdateCb, this );
-       else // otherwise call Update() whenever there's no GUI work to do
-               Fl::add_idle( (Fl_Timeout_Handler)idle_callback, this );
+        timenow = RealTimeNow();
+        interval = timenow - real_time_of_last_update; // guaranteed to be >= 0
+        
+        double sleeptime = (double)interval_real - (double)interval;
+        
+        if( sleeptime > 0  ) 
+               usleep( MIN(sleeptime,100000) ); // check the GUI at 10Hz min
+        
+  } while( interval < interval_real );
+  
+  
+  real_time_of_last_update = timenow;
+  
+  return val;
 }
 
-void StgWorldGui::Stop()
-{
-       Fl::remove_timeout( (Fl_Timeout_Handler)UpdateCb, this );
-       Fl::remove_idle( (Fl_Timeout_Handler)idle_callback, this );
-}
-
-
-void StgWorldGui::Run()
-{
-       Fl::run();
-}
-
-void StgWorldGui::Cycle()
-{
-       if( Fl::ready() )
-               Fl::check();
-}
-
-
 void StgWorldGui::DrawTree( bool drawall )
 {  
        g_hash_table_foreach( superregions, (GHFunc)SuperRegion::Draw_cb, NULL 
);

Modified: code/stage/trunk/worlds/fasr.world
===================================================================
--- code/stage/trunk/worlds/fasr.world  2008-06-17 03:08:57 UTC (rev 6613)
+++ code/stage/trunk/worlds/fasr.world  2008-06-17 03:24:37 UTC (rev 6614)
@@ -15,7 +15,7 @@
 resolution 0.02
 
 interval_sim 100  # simulation timestep in milliseconds
-interval_real 0  # real-time interval between simulation updates in 
milliseconds 
+interval_real 20  # real-time interval between simulation updates in 
milliseconds 
 paused 1
 
 # configure the GUI window
@@ -26,7 +26,7 @@
   rotate [ 0.000 0.000 ]
   scale 33.306 
   show_data 0
-  interval 100
+  #interval 10
 )
 
 # load an environment bitmap


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Playerstage-commit mailing list
Playerstage-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to