Ignore:
Timestamp:
Jun 27, 2005, 12:50:42 AM (20 years ago)
Author:
darran
Message:
  • distro20050627
  • functioning record/playback/save. Can't yet replay from movie.swm
  • image capture not yet implemented.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Swollen/swollen/main.cpp

    r115 r116  
    208208
    209209   // animation
    210    State s = State();
    211    std::vector<State> statelist;
     210   StateList statelist;
    212211   bool recordingmode = false;
    213212   bool playbackmode = false;
    214213   unsigned int playback_index = 0;
    215214
    216 
    217215 
    218216   unsigned int timestep = 0;
     
    229227         // current time
    230228         double time = viewer.getFrameStamp()->getReferenceTime();
    231 
    232229
    233230         event_handler->setTime( time );
     
    240237         if( event_handler->toggleWireframe() )
    241238            water->toggleWireframe();
    242 
    243239         if( event_handler->toggleCulling() )
    244          {
    245             sww->toggleCulling();
    246             water->setTimeStep(timestep);  // refresh
    247          }
    248 
     240            water->toggleCulling();
    249241
    250242         // '1' key starts/stops recording of view/position/setting info
     
    255247               case false :
    256248                  recordingmode = true;
    257                   hud->setRecordingMode("recording");
     249                  hud->setMode("recording");
    258250                  break;
    259251               case true :
    260252                  recordingmode = false;
    261                   hud->setRecordingMode("");
     253                  hud->setMode("");
    262254                  break;
    263255            }
     
    266258
    267259         // '2' key starts playback of recorded frames
    268          if( event_handler->togglePlayback() )
     260         if( event_handler->togglePlayback() && statelist.size() > 0 )
    269261         {
    270262            recordingmode = false;
    271             switch( playbackmode )
    272             {
    273                case false :
    274                   playbackmode = true;
    275                   hud->setRecordingMode("playback");
    276                   event_handler->setPaused( true );
    277                   playback_index = 0;
    278                   // store current state
    279                   break;
    280                case true :
    281                   playbackmode = false;
    282                   hud->setRecordingMode("");
    283                   event_handler->setPaused( false );
    284                   // pop saved state
    285                   break;
    286             }
     263            playbackmode = true;
     264            hud->setMode("playback");
     265            event_handler->setPaused( true );
     266            playback_index = 0;
     267            // store current state
    287268         }
    288 
    289269
    290270         if( recordingmode )
    291271         {
    292             s.setTimestep( event_handler->getTimestep() );
    293             s.setTime( sww->getTime(timestep) );
    294             s.setCulling( sww->getCulling() );
    295             s.setWireframe( water->getWireframe() );
    296             s.setPosition( viewer.getPosition() );
    297             s.setOrientation( viewer.getOrientation() );
    298             statelist.push_back( s );
    299             std::cout << "len(statelist): " << statelist.size() << std::endl;
     272            State state = State();
     273            state.setTimestep( event_handler->getTimestep() );
     274            state.setTime( sww->getTime(timestep) );
     275            state.setCulling( sww->getCulling() );
     276            state.setWireframe( water->getWireframe() );
     277            state.setMatrix( viewer.getViewMatrix() );
     278            statelist.push_back( state );
    300279         }
    301280      }
     
    305284      {
    306285         // in playback mode
    307          s = statelist.at( playback_index );
    308          water->setTimeStep( s.getTimestep() );
    309          hud->setTime( s.getTime() );
    310 
    311          std::cout << "playing back: " << playback_index << std::endl;
     286         State state = statelist.at( playback_index );
     287         water->setTimeStep( state.getTimestep() );
     288         water->setWireframe( state.getWireframe() );
     289         water->setCulling( state.getCulling() );
     290         hud->setTime( state.getTime() );
    312291
    313292         // loop playback
     
    315294         if( playback_index == statelist.size() )
    316295            playback_index = 0;
     296
     297         // '2' key stops playback of recorded frames
     298         if( event_handler->togglePlayback() )
     299         {
     300            playbackmode = false;
     301            hud->setMode("");
     302            event_handler->setPaused( true );
     303            // pop saved state
     304         }
     305
     306         viewer.setView( state.getMatrix() );
    317307      }
    318308
    319 
     309      // '3' key causes compiled animation to be saved to disk
     310      if( event_handler->toggleSave() )
     311         statelist.write( std::string("movie.swm") );
     312
     313
     314      // scene-graph updates
     315      bedslope->update();
     316      hud->update();
     317      water->update();
    320318
    321319      // update the scene by traversing with the update visitor
Note: See TracChangeset for help on using the changeset viewer.