//-------------------------------------------------------------- void testApp::update() { ofVec2f mouse(ofGetMouseX(), ofGetMouseY()); ofVec2f mouseVec(ofGetPreviousMouseX()-ofGetMouseX(), ofGetPreviousMouseY()-ofGetMouseY()); mouseVec.limit(10.0); for (int i=0; i<NUM_BILLBOARDS; i++) { ofSeedRandom(i); if(mouse.distance(pos[i]) < ofRandom(100, 200)) { vel[i] -= mouseVec; } pos[i] += vel[i]; vel[i] *= 0.84f; if(pos[i].x < 0) pos[i].x = ofGetWidth(); if(pos[i].x > ofGetWidth()) pos[i].x = 0; if(pos[i].y < 0) pos[i].y = ofGetHeight(); if(pos[i].y > ofGetHeight()) pos[i].y = 0; ofVec2f center(ofGetWidth()/2, ofGetHeight()/2); ofVec2f frc = home[i] - pos[i]; if(frc.length() > 20.0) { frc.normalize(); frc *= 0.84; vel[i] += frc; } // get the 2d heading float angle = (float)atan2(-vel[i].y, vel[i].x) + PI; rotations[i] = (angle * -1.0); } }
void FboMaskManager::mouseMove(float mouseX, float mouseY){ if(editing){ ofxVec2f mouse = mouseVec(mouseX, mouseY); ofxVec2f deltaMouse = mouse - lastMouse; if(dragging){ dragPoint.point += deltaMouse; mask.replacePoint(dragPoint); } lastMouse = mouse; } }
void PlayerController::Tick(sf::Window *window) { b2Body *body = Character()->Body(); b2Vec2 chrPos = body->GetPosition(); b2Vec2 base = Character()->ClosestPlanet()->Position(); float angle_r = RadiansOf(chrPos - base); if (chrPos.x < base.x) angle_r = -angle_r; Character()->Body()->SetTransform(chrPos, angle_r); if (left_down_) { b2Vec2 mouseVec(mouse_x_ - window->getSize().x / 2.0f, mouse_y_ - window->getSize().y / 2.0f); b2Vec2 rotated = RotatedVector(mouseVec, angle_r); body->ApplyLinearImpulse(rotated, body->GetPosition()); } }
void FboMaskManager::mouseDown(float mouseX, float mouseY){ if(editing){ ofxVec2f mouse = mouseVec(mouseX, mouseY); if(checkShiftKey()){ } else { FboMaskSelection nearest = mask.getNearestPoint(mouse); float distance = nearest.distance(mouse); if(nearest.valid && !nearest.midPoint && distance < clickDistance){ dragging = true; dragPoint = nearest; } } lastMouse = mouse; } }
void FboMaskManager::mouseUp(float mouseX, float mouseY){ if(editing){ ofxVec2f mouse = mouseVec(mouseX, mouseY); if(dragging){ } else { FboMaskSelection nearest = mask.getNearestPoint(mouse); float distance = nearest.distance(mouse); if(nearest.valid){ if(distance < clickDistance){ if(!nearest.midPoint){ if(checkShiftKey()){ //delete this point! mask.deletePoint(nearest); } } else { if(!checkShiftKey()){ //insert a new point at the midpoint mask.insertPoint(nearest); } } } } else { //we need to insert a new shape if(checkShiftKey()){ nearest.setPoint(mouse); mask.insertShape(nearest); } } } dragging = false; lastMouse = mouse; } }