void LineSegment::editDrag(const EditData& ed) { // Only for resizing according to the diagonal properties QPointF deltaResize(ed.delta.x(), line()->diagonal() ? ed.delta.y() : 0.0); // Only for moving, no y limitaion QPointF deltaMove(ed.delta.x(), ed.delta.y()); switch(ed.curGrip) { case GRIP_LINE_START: // Resize the begin of element (left grip) setUserOff(userOff() + deltaResize); _userOff2 -= deltaResize; break; case GRIP_LINE_END: // Resize the end of element (rigth grip) _userOff2 += deltaResize; break; case GRIP_LINE_MIDDLE: // Move the element (middle grip) setUserOff(userOff() + deltaMove); break; } if ((line()->anchor() == Spanner::ANCHOR_NOTE) && (ed.curGrip == GRIP_LINE_START || ed.curGrip == GRIP_LINE_END)) { // // if we touch a different note, change anchor // Element* e = ed.view->elementNear(ed.pos); if (e && e->type() == NOTE) { SLine* l = line(); if (ed.curGrip == GRIP_LINE_END && e != line()->endElement()) { qDebug("LineSegment: move end anchor"); Note* noteOld = static_cast<Note*>(l->endElement()); Note* noteNew = static_cast<Note*>(e); noteOld->removeSpannerBack(l); noteNew->addSpannerBack(l); l->setEndElement(noteNew); _userOff2 += noteOld->canvasPos() - noteNew->canvasPos(); } else if (ed.curGrip == GRIP_LINE_START && e != l->startElement()) { qDebug("LineSegment: move start anchor (not impl.)"); } } } line()->layout(); }
void LineSegment::editDrag(const EditData& ed) { // Only for resizing according to the diagonal properties QPointF deltaResize(ed.delta.x(), line()->diagonal() ? ed.delta.y() : 0.0); // Only for moving, no y limitaion QPointF deltaMove(ed.delta.x(), ed.delta.y()); switch(ed.curGrip) { case GRIP_LINE_START: // Resize the begin of element (left grip) setUserOff(userOff() + deltaResize); _userOff2 -= deltaResize; break; case GRIP_LINE_END: // Resize the end of element (rigth grip) _userOff2 += deltaResize; break; case GRIP_LINE_MIDDLE: // Move the element (middle grip) setUserOff(userOff() + deltaMove); break; } layout(); }
// CanvasItem advance method void CardSprite::advance(int phase) { // Ignore phase 0 (collisions) if (phase == 0) { QGraphicsItem::advance(phase); return ; } // Turn a card if (mAnimationState == Turning) { mTime += mAdvancePeriod; // Turn delay counter if (mTime >= ANIM_CNT_TURNING) { mTime = 0.0; // Check whether animation is over if ( (mFrontFlag && frame() == 0) || (!mFrontFlag && frame() == mFrames.size()-1) ) { mAnimationState = Idle; } else { if (mFrontFlag) setFrame(frame()-1); else setFrame(frame()+1); } } }// end if Turning // Move a card else if (mAnimationState == Moving) { // Perform a move by a delta given by the sprites velocity. if (deltaMove()) { mAnimationState = Idle; } }// end if Moving // Move a card else if (mAnimationState == Removing) { // Perform a move by a delta given by the sprites velocity. if (deltaMove()) { // Turn to backside setTurning(false); } }// end if Removing // Shuffle move a card else if (mAnimationState == ShuffleMove) { // First delay move until counter is run down if (mTime > 0.0) { mTime -= mAdvancePeriod; } // Then move to target position else { // Perform a move by a delta given by the sprites velocity. if (deltaMove()) { if (mFrontFlag) mAnimationState = Turning; else mAnimationState = Idle; mTime = 0.0; } } }// end if ShuffleMove QGraphicsItem::advance(phase); }
void motor::Game::handlePlayer() { float multiplierMove = 0; float multiplierRotate = 0; if(input->isPressed(Key::LSHIFT)) { multiplierMove = 1.5f; multiplierRotate = 1.5f; } else if(input->isPressed(Key::RCTRL)) { multiplierMove = 0.1f; } else { multiplierMove = 5.4f; multiplierRotate = 5.0f; } multiplierMove *= time->getFrameTime(); multiplierRotate *= time->getFrameTime() * 20; glm::vec3 deltaMove(0, 0, 0); if(input->isPressed(Key::COMMA) && !input->isPressed(Key::O))//w { glm::vec3 delta = glm::vec3(0, 0, -1); //forward vector glm::vec2 deltaXZ = rotate(glm::vec2(delta.x, delta.z), camera->rotation.y); delta = glm::vec3(deltaXZ.x, delta.y, deltaXZ.y); deltaMove += delta; deltaMove = glm::normalize(deltaMove); } if(input->isPressed(Key::O) && !input->isPressed(Key::COMMA))//S { glm::vec3 delta = glm::vec3(0, 0, 1); //backward vector glm::vec2 deltaXZ = rotate(glm::vec2(delta.x, delta.z), camera->rotation.y); delta = glm::vec3(deltaXZ.x, delta.y, deltaXZ.y); deltaMove += delta; deltaMove = glm::normalize(deltaMove); } if(input->isPressed(Key::A) && !input->isPressed(Key::E))//a { glm::vec3 delta = glm::vec3(-1, 0, 0); //left vector glm::vec2 deltaXZ = rotate(glm::vec2(delta.x, delta.z), camera->rotation.y); delta = glm::vec3(deltaXZ.x, delta.y, deltaXZ.y); deltaMove += delta; deltaMove = glm::normalize(deltaMove); } if(input->isPressed(Key::E) && !input->isPressed(Key::A))//d { glm::vec3 delta = glm::vec3(1, 0, 0); //right vector glm::vec2 deltaXZ = rotate(glm::vec2(delta.x, delta.z), camera->rotation.y); delta = glm::vec3(deltaXZ.x, delta.y, deltaXZ.y); deltaMove += delta; deltaMove = glm::normalize(deltaMove); } if(input->isPressed(Key::LEFT)) { camera->moveRotation(glm::vec3(0, -multiplierRotate, 0)); } if(input->isPressed(Key::RIGHT)) { camera->moveRotation(glm::vec3(0, multiplierRotate, 0)); } if(input->isPressed(Key::UP)) { camera->moveRotation(glm::vec3(-multiplierRotate, 0, 0)); } if(input->isPressed(Key::DOWN)) { camera->moveRotation(glm::vec3(multiplierRotate, 0, 0)); } //---------------------------------- // handleCollision(deltaMove, multiplierMove); if(input->isPressed(Key::SEMICOLON)) { //newPos.y += 1.f * multiplierMove; //newPos.y += .1f; //camera->setPosition(newPos); vel.y = +15.f; pos.y += 1.f * multiplierMove; } if(input->isPressed(Key::DOT)) { //newPos.y -= 1.f * multiplierMove; //newPos.y -= .1f; //camera->setPosition(newPos); vel.y = -15.f; pos.y -= 1.f * multiplierMove; } if(input->isPressed(Key::TAB)) { pos.y = floor(pos.y) + .6; } //camera->setPosition(newPos); if(input->isPressed(Key::W) && input->getKeyDelay(Key::W) > .2f) { input->resetKeyDelay(Key::W); settings.printPosition = !settings.printPosition; } if(settings.printPosition) { cout << pos << " velY: " << vel.y << "\n"; } if(input->isPressed(Key::BACKSPACE)) { world.setBlock(int(pos.x) + 1, int(pos.y), int(pos.z), BLOCK_AIR); world.setBlock(int(pos.x) - 1, int(pos.y), int(pos.z), BLOCK_AIR); world.setBlock(int(pos.x) + 1, int(pos.y) - 1, int(pos.z), BLOCK_AIR); world.setBlock(int(pos.x) - 1, int(pos.y) - 1, int(pos.z), BLOCK_AIR); world.setBlock(int(pos.x), int(pos.y), int(pos.z) + 1, BLOCK_AIR); world.setBlock(int(pos.x), int(pos.y), int(pos.z) - 1, BLOCK_AIR); world.setBlock(int(pos.x), int(pos.y) - 1, int(pos.z) + 1, BLOCK_AIR); world.setBlock(int(pos.x), int(pos.y) - 1, int(pos.z) - 1, BLOCK_AIR); //world.setBlock(int(pos.x), int(pos.y - 1.6) - 1, int(pos.z), BLOCK_AIR); world.recalculateChunck(int(fabs(pos.x)), int(fabs(pos.y)), int(fabs(pos.z))); world.recalculateChunck(int(fabs(pos.x)) - 16, int(fabs(pos.y)), int(fabs(pos.z))); world.recalculateChunck(int(fabs(pos.x)) + 16, int(fabs(pos.y)), int(fabs(pos.z))); world.recalculateChunck(int(fabs(pos.x)), int(fabs(pos.y)), int(fabs(pos.z)) + 16); world.recalculateChunck(int(fabs(pos.x)), int(fabs(pos.y)), int(fabs(pos.z)) - 16); world.recalculateChunck(int(fabs(pos.x)) - 16, int(fabs(pos.y)), int(fabs(pos.z)) + 16); world.recalculateChunck(int(fabs(pos.x)) - 16, int(fabs(pos.y)), int(fabs(pos.z)) - 16); world.recalculateChunck(int(fabs(pos.x)) + 16, int(fabs(pos.y)), int(fabs(pos.z)) + 16); world.recalculateChunck(int(fabs(pos.x)) + 16, int(fabs(pos.y)), int(fabs(pos.z)) - 16); } }