| 282 | |
| 283 | public: |
| 284 | Tutorial(GUIHelperInterface* guiHelper, int tutorialIndex) |
| 285 | : m_app(guiHelper->getAppInterface()), |
| 286 | m_guiHelper(guiHelper), |
| 287 | m_tutorialIndex(tutorialIndex), |
| 288 | m_timeSeriesCanvas0(0), |
| 289 | m_timeSeriesCanvas1(0), |
| 290 | m_stage(0), |
| 291 | m_counter(0) |
| 292 | { |
| 293 | int numBodies = 1; |
| 294 | |
| 295 | m_app->setUpAxis(1); |
| 296 | |
| 297 | switch (m_tutorialIndex) |
| 298 | { |
| 299 | case TUT_VELOCITY: |
| 300 | { |
| 301 | numBodies = 10; |
| 302 | m_timeSeriesCanvas0 = new TimeSeriesCanvas(m_app->m_2dCanvasInterface, 512, 256, "Constant Velocity"); |
| 303 | |
| 304 | m_timeSeriesCanvas0->setupTimeSeries(2, 60, 0); |
| 305 | m_timeSeriesCanvas0->addDataSource("X position (m)", 255, 0, 0); |
| 306 | m_timeSeriesCanvas0->addDataSource("X velocity (m/s)", 0, 0, 255); |
| 307 | m_timeSeriesCanvas0->addDataSource("dX/dt (m/s)", 0, 0, 0); |
| 308 | break; |
| 309 | } |
| 310 | case TUT_ACCELERATION: |
| 311 | { |
| 312 | numBodies = 10; |
| 313 | m_timeSeriesCanvas1 = new TimeSeriesCanvas(m_app->m_2dCanvasInterface, 256, 512, "Constant Acceleration"); |
| 314 | |
| 315 | m_timeSeriesCanvas1->setupTimeSeries(50, 60, 0); |
| 316 | m_timeSeriesCanvas1->addDataSource("Y position (m)", 255, 0, 0); |
| 317 | m_timeSeriesCanvas1->addDataSource("Y velocity (m/s)", 0, 0, 255); |
| 318 | m_timeSeriesCanvas1->addDataSource("dY/dt (m/s)", 0, 0, 0); |
| 319 | break; |
| 320 | } |
| 321 | case TUT_COLLISION: |
| 322 | { |
| 323 | numBodies = 2; |
| 324 | m_timeSeriesCanvas1 = new TimeSeriesCanvas(m_app->m_2dCanvasInterface, 512, 200, "Distance"); |
| 325 | m_timeSeriesCanvas1->setupTimeSeries(1.5, 60, 0); |
| 326 | m_timeSeriesCanvas1->addDataSource("distance", 255, 0, 0); |
| 327 | break; |
| 328 | } |
| 329 | |
| 330 | case TUT_SOLVE_CONTACT_CONSTRAINT: |
| 331 | { |
| 332 | numBodies = 2; |
| 333 | m_timeSeriesCanvas1 = new TimeSeriesCanvas(m_app->m_2dCanvasInterface, 512, 200, "Collision Impulse"); |
| 334 | m_timeSeriesCanvas1->setupTimeSeries(1.5, 60, 0); |
| 335 | m_timeSeriesCanvas1->addDataSource("Distance", 0, 0, 255); |
| 336 | m_timeSeriesCanvas1->addDataSource("Impulse magnutide", 255, 0, 0); |
| 337 | |
| 338 | { |
| 339 | SliderParams slider("Restitution", &gRestitution); |
| 340 | slider.m_minVal = 0; |
| 341 | slider.m_maxVal = 1; |
nothing calls this directly
no test coverage detected