void GLWidget::stopPhysics() { #if DRGDRW disconnect(internalTimer(), SIGNAL(timeout()), this, SLOT(simulate())); #else disconnect(internalTimer(), SIGNAL(timeout()), m_thread, SLOT(simulate())); disconnect(m_thread, SIGNAL(doneStep()), this, SLOT(update())); #endif connect(internalTimer(), SIGNAL(timeout()), this, SLOT(update())); m_isPhysicsRunning = false; }
void GLWidget::clientInit() { CudaBase::SetDevice(); m_solver->initOnDevice(); #if SIMULATE_INLINE connect(internalTimer(), SIGNAL(timeout()), this, SLOT(update())); #else connect(internalTimer(), SIGNAL(timeout()), m_solver, SLOT(simulate())); connect(m_solver, SIGNAL(doneStep()), this, SLOT(update())); disconnect(internalTimer(), SIGNAL(timeout()), this, SLOT(update())); #endif }
void GLWidget::clientDraw() { #if SIMULATE_INLINE if(internalTimer()->isActive()) m_solver->stepPhysics(1.f / 60.f); #endif // m_dbgDraw->printTOI(m_solver->narrowphase(), m_solver->hostPairs()); // m_dbgDraw->printContactPairHash(m_contactSolver, m_narrowphase->numContacts()); m_solver->tetra()->sendXToHost(); m_solver->tetra()->sendVToHost(); m_dbgDraw->drawTetra((TetrahedronSystem *)m_solver->tetra()); // m_dbgDraw->drawTetraAtFrameEnd((TetrahedronSystem *)m_solver->tetra()); m_dbgDraw->drawSeparateAxis(m_solver->narrowphase(), m_solver->hostPairs(), (TetrahedronSystem *)m_solver->tetra()); bool chk = m_dbgDraw->checkConstraint(m_solver->contactSolver(), m_solver->narrowphase(), (TetrahedronSystem *)m_solver->tetra()); if(!chk) internalTimer()->stop(); //else internalTimer()->start(100); }
void GLWidget::startPhysics() { #if DRGDRW connect(internalTimer(), SIGNAL(timeout()), this, SLOT(simulate())); #else connect(this, SIGNAL(updatePhysics()), m_thread, SLOT(simulate())); connect(m_thread, SIGNAL(doneStep()), this, SLOT(update())); #endif m_isPhysicsRunning = true; }
GLWidget::GLWidget(QWidget *parent) : Base3DView(parent) { perspCamera()->setFarClipPlane(10000.f); perspCamera()->setNearClipPlane(1.f); orthoCamera()->setFarClipPlane(10000.f); orthoCamera()->setNearClipPlane(1.f); connect(internalTimer(), SIGNAL(timeout()), this, SLOT(update())); m_world = new AdeniumWorld; AdeniumInterface adei; adei.create(m_world); }
void GLWidget::keyPressEvent(QKeyEvent *event) { switch (event->key()) { case Qt::Key_A: break; case Qt::Key_D: break; case Qt::Key_W: #if SIMULATE_INLINE internalTimer()->stop(); #else disconnect(internalTimer(), SIGNAL(timeout()), m_solver, SLOT(simulate())); connect(internalTimer(), SIGNAL(timeout()), this, SLOT(update())); #endif break; case Qt::Key_S: #if SIMULATE_INLINE internalTimer()->start(); #else disconnect(internalTimer(), SIGNAL(timeout()), this, SLOT(update())); connect(internalTimer(), SIGNAL(timeout()), m_solver, SLOT(simulate())); #endif break; default: break; } Base3DView::keyPressEvent(event); }
void GLWidget::keyPressEvent(QKeyEvent *event) { switch (event->key()) { case Qt::Key_A: m_displayLevel++; m_drawBvh->addDispalyLevel(); break; case Qt::Key_D: m_displayLevel--; m_drawBvh->minusDispalyLevel(); break; case Qt::Key_W: internalTimer()->stop(); break; case Qt::Key_S: internalTimer()->start(); break; default: break; } Base3DView::keyPressEvent(event); }
void GLWidget::clientInit() { CudaBase::SetDevice(); m_mesh->initOnDevice(); m_particles->initOnDevice(); m_solver->setMesh(m_mesh); m_ray->createRays(IRAYDIM, IRAYDIM); m_solver->setRay(m_ray); m_solver->setParticleSystem(m_particles); #ifdef BVHSOLVER_DBG_DRAW CudaLinearBvh * bvh = m_mesh->bvh(); qDebug()<<" bvh used memory "<<bvh->usedMemory()<<" bytes"; m_displayLeafAabbs = new BaseBuffer; m_displayLeafAabbs->create(bvh->numLeafNodes() * sizeof(Aabb)); m_displayInternalAabbs = new BaseBuffer; m_displayInternalAabbs->create(bvh->numInternalNodes() * sizeof(Aabb)); m_displayLeafHash = new BaseBuffer; m_displayLeafHash->create(bvh->numLeafNodes() * sizeof(KeyValuePair)); m_displayInternalDistance = new BaseBuffer; m_displayInternalDistance->create(bvh->numInternalNodes() * sizeof(int)); m_internalChildIndices = new BaseBuffer; m_internalChildIndices->create(bvh->numInternalNodes() * sizeof(int2)); m_rootNodeInd = new int[1]; m_solver->setHostPtrs(m_displayLeafAabbs, m_displayInternalAabbs, m_displayInternalDistance, m_displayLeafHash, m_internalChildIndices, m_rootNodeInd); #endif m_tetra->initOnDevice(); m_tetra->update(); m_broadphase->initOnDevice(); m_broadphase->computeOverlappingPairs(); m_drawBvh->printPairCounts(); // connect(internalTimer(), SIGNAL(timeout()), m_solver, SLOT(simulate())); // connect(m_solver, SIGNAL(doneStep()), this, SLOT(update())); connect(internalTimer(), SIGNAL(timeout()), this, SLOT(update())); }
void GLWidget::clientInit() { connect(internalTimer(), SIGNAL(timeout()), this, SLOT(update())); }