Changeset 115 for Swollen/swollen/main.cpp
- Timestamp:
- Jun 26, 2005, 2:52:53 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Swollen/swollen/main.cpp
r114 r115 207 207 208 208 209 // animation mode is off to start 209 // animation 210 State s = State(); 211 std::vector<State> statelist; 210 212 bool recordingmode = false; 211 212 213 // test state 214 State* s = new State; 215 std::vector<State>* statelist = new std::vector<State>; 213 bool playbackmode = false; 214 unsigned int playback_index = 0; 215 216 216 217 217 218 unsigned int timestep = 0; … … 223 224 224 225 225 // current time 226 double time = viewer.getFrameStamp()->getReferenceTime(); 227 228 // advance sww frame? 229 event_handler->setTime( time ); 230 if( event_handler->timestepChanged() ) 226 if( !playbackmode ) 231 227 { 228 229 // current time 230 double time = viewer.getFrameStamp()->getReferenceTime(); 231 232 233 event_handler->setTime( time ); 232 234 timestep = event_handler->getTimestep(); 233 235 water->setTimeStep(timestep); 234 236 hud->setTime( sww->getTime(timestep) ); 237 238 239 // events 240 if( event_handler->toggleWireframe() ) 241 water->toggleWireframe(); 242 243 if( event_handler->toggleCulling() ) 244 { 245 sww->toggleCulling(); 246 water->setTimeStep(timestep); // refresh 247 } 248 249 250 // '1' key starts/stops recording of view/position/setting info 251 if( event_handler->toggleRecording() ) 252 { 253 switch( recordingmode ) 254 { 255 case false : 256 recordingmode = true; 257 hud->setRecordingMode("recording"); 258 break; 259 case true : 260 recordingmode = false; 261 hud->setRecordingMode(""); 262 break; 263 } 264 } 265 266 267 // '2' key starts playback of recorded frames 268 if( event_handler->togglePlayback() ) 269 { 270 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 } 287 } 288 289 290 if( recordingmode ) 291 { 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; 300 } 235 301 } 236 302 237 // events 238 if( event_handler->toggleWireframe() ) 239 water->toggleWireframe(); 240 241 if( event_handler->toggleCulling() ) 303 else 304 242 305 { 243 sww->toggleCulling(); 244 water->setTimeStep(timestep); // refresh 306 // 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; 312 313 // loop playback 314 playback_index ++; 315 if( playback_index == statelist.size() ) 316 playback_index = 0; 245 317 } 246 318 247 /*248 Finite State Machine for animation249 250 0 1 1 begin storing view/orientation/cull settings251 0 2 2 if exists, store current settings, commence playback of saved animation path252 0 3 0 save animation to disk253 254 1 1 0 stop storing settings255 1 2 2 stop storing settings and commence playback256 1 3 1 save animation, keep recording257 258 2 2 0 stop playback, return to saved settings259 2 1 2 no effect260 2 3 2 save animation, continue playing back261 262 header comprised of original command line arguments263 264 state comprised of:265 frame266 elapsedtime267 position268 orientation269 timestep270 cullsteep271 wireframe272 273 */274 275 276 if( event_handler->toggleRecording() )277 {278 switch( recordingmode )279 {280 case false :281 recordingmode = true;282 hud->setRecordingMode("recording");283 break;284 case true :285 recordingmode = false;286 hud->setRecordingMode("");287 break;288 }289 290 }291 292 if( recordingmode )293 {294 s->setTimestep( event_handler->getTimestep() );295 s->setTime( sww->getTime(timestep) );296 s->setCulling( sww->getCulling() );297 s->setWireframe( water->getWireframe() );298 s->setPosition( viewer.getPosition() );299 s->setOrientation( viewer.getOrientation() );300 statelist->push_back( *s );301 }302 303 //s.write( std::cout );304 319 305 320 306 321 // update the scene by traversing with the update visitor 307 322 viewer.update(); 308 323 309 324 // fire off the cull and draw traversals of the scene. 310 325 viewer.frame();
Note: See TracChangeset
for help on using the changeset viewer.