Changeset 116 for Swollen/swollen/main.cpp
- Timestamp:
- Jun 27, 2005, 12:50:42 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Swollen/swollen/main.cpp
r115 r116 208 208 209 209 // animation 210 State s = State(); 211 std::vector<State> statelist; 210 StateList statelist; 212 211 bool recordingmode = false; 213 212 bool playbackmode = false; 214 213 unsigned int playback_index = 0; 215 214 216 217 215 218 216 unsigned int timestep = 0; … … 229 227 // current time 230 228 double time = viewer.getFrameStamp()->getReferenceTime(); 231 232 229 233 230 event_handler->setTime( time ); … … 240 237 if( event_handler->toggleWireframe() ) 241 238 water->toggleWireframe(); 242 243 239 if( event_handler->toggleCulling() ) 244 { 245 sww->toggleCulling(); 246 water->setTimeStep(timestep); // refresh 247 } 248 240 water->toggleCulling(); 249 241 250 242 // '1' key starts/stops recording of view/position/setting info … … 255 247 case false : 256 248 recordingmode = true; 257 hud->set RecordingMode("recording");249 hud->setMode("recording"); 258 250 break; 259 251 case true : 260 252 recordingmode = false; 261 hud->set RecordingMode("");253 hud->setMode(""); 262 254 break; 263 255 } … … 266 258 267 259 // '2' key starts playback of recorded frames 268 if( event_handler->togglePlayback() )260 if( event_handler->togglePlayback() && statelist.size() > 0 ) 269 261 { 270 262 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 287 268 } 288 289 269 290 270 if( recordingmode ) 291 271 { 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 ); 300 279 } 301 280 } … … 305 284 { 306 285 // 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() ); 312 291 313 292 // loop playback … … 315 294 if( playback_index == statelist.size() ) 316 295 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() ); 317 307 } 318 308 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(); 320 318 321 319 // update the scene by traversing with the update visitor
Note: See TracChangeset
for help on using the changeset viewer.