void CameraManager::next() { for(int i = 0; i<cameras.size(); i++) { CameraWrapper * currentCamera = cameras[i]; if(currentCamera == camera) { if(i==cameras.size()-1) { changeCamera(cameras[0]); } else { changeCamera(cameras[i+1]); } break; } } }
void reset() { dist = s.radio*4; rotateX = rotateY = 45; rotateZ = 0; zoom = 1; changeCamera(Perspective); }
/* * BOUCLE D'AFFICHAGE */ bool SceneManager::execute(SDL_Window* window, unsigned int w, unsigned int h) { init3D(w,h); init2D(); initSounds(); unsigned int debut ,fin; /* VARIABLES DE GESTION DU TEMPS */ float period = 1.0 / FPS_LIMIT,fps,time; while(!m_input.terminer()) /* BOUCLE D'EXECUTION */ { debut = SDL_GetTicks(); /* ON RELEVE LE TEMPS DE DEBUT DE BOUCLE */ onPreRender(); /* ON MET À JOUR LES MODELES DYNAMIQUES */ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); /* NETTOYAGE DE LA FENETRE */ m_input.update(); /* MISE A JOUR DES EVENEMENTS */ updateCameras(); /* MISE À JOUR DES CAMERAS */ if(m_input.getKey(SDL_SCANCODE_ESCAPE)) break; /* QUITTER EN APPUYANT SUR ESPACE */ if(m_input.getKeyRelease(SDL_SCANCODE_V)) changeCamera(); /* CHANGER DE CAMERA EN APPUYANT SUR ESPACE */ if(m_input.getKeyRelease(SDL_SCANCODE_SPACE)) m_soundMgr.playEffect("laser",127/2); drawAll(); /* AFFICHAGE DE TOUS LES MODELES DU MONDE 3D */ SDL_GL_SwapWindow(window); /* RAFRAICHISSEMENT DE LA FENETRE */ fin = SDL_GetTicks(); /* ON RELEVE LE TEMPS DE FIN DE BOUCLE */ time = (float)(fin - debut); /* ON CALCULE LE TEMPS D'EXECUTION DE LA BOUCLE */ fps = 1000.0/time; /* ON CALCULE LA FREQUENCE MAXIMALE */ std::ostringstream streamTitle; streamTitle << "fps: " << fps; SDL_SetWindowTitle(window,streamTitle.str().c_str()); /* ON AFFICHE LA FREQUENCE COMME TITRE DE LA FENETRE */ if(time < period) SDL_Delay((unsigned int)(period - time)); /* ON LIMITE LA FREQUENCE A 60 FPS */ } printf("toto\n"); return true; }
CameraProperty::CameraProperty(const CameraProperty& rhs) : CompositeProperty(rhs) , cameraType_(rhs.cameraType_) , lookFrom_(rhs.lookFrom_) , lookTo_(rhs.lookTo_) , lookUp_(rhs.lookUp_) , aspectRatio_(rhs.aspectRatio_) , nearPlane_(rhs.nearPlane_) , farPlane_(rhs.farPlane_) , mouseChangeFocusPoint_(rhs.mouseChangeFocusPoint_) , adjustCameraOnDataChange_(rhs.adjustCameraOnDataChange_) , camera_() , inport_(rhs.inport_) , data_(nullptr) , prevDataToWorldMatrix_(0) { // Make sure that the Camera) is // in sync with the property values. addProperty(cameraType_); cameraType_.onChange([&]() { changeCamera(InviwoApplication::getPtr()->getCameraFactory()->create(cameraType_.get())); }); lookFrom_.onChange([&]() { camera_->setLookFrom(lookFrom_.get()); }); lookTo_.onChange([&]() { camera_->setLookTo(lookTo_.get()); }); lookUp_.onChange([&]() { camera_->setLookUp(lookUp_.get()); }); addProperty(lookFrom_); addProperty(lookTo_); addProperty(lookUp_); aspectRatio_.onChange([&]() { camera_->setAspectRatio(aspectRatio_.get()); }); nearPlane_.onChange([&]() { camera_->setNearPlaneDist(nearPlane_.get()); }); farPlane_.onChange([&]() { camera_->setFarPlaneDist(farPlane_.get()); }); addProperty(aspectRatio_); addProperty(nearPlane_); addProperty(farPlane_); addProperty(mouseChangeFocusPoint_); adjustCameraOnDataChange_.onChange([&]() { resetAdjustCameraToData(); }); addProperty(adjustCameraOnDataChange_); changeCamera(InviwoApplication::getPtr()->getCameraFactory()->create(cameraType_.get())); if (inport_) inport_->onChange(this, &CameraProperty::inportChanged); inportChanged(); }
void CameraProperty::set(const Property* srcProperty) { if (const auto cameraSrcProp = dynamic_cast<const CameraProperty*>(srcProperty)) { if (!camera_->update(cameraSrcProp->camera_.get())) { // update failed, make a clone changeCamera(std::unique_ptr<Camera>(cameraSrcProp->camera_->clone())); } CompositeProperty::set(static_cast<const CompositeProperty*>(srcProperty)); } }
void HumanPlayer::controlRobotAt(int index) { selectRobotView(robots.at(0)); changeCamera(CAMERA_ROBOT); selectRobot(index); aRobotIsSelected = true; robots.at(0)->isRobotBeingControlled = true; }
bool CameraManager:: changeCamera(string camname) { for(int i = 0; i<cameras.size(); i++) { CameraWrapper * cam = cameras[i]; if(cam->name == camname) { changeCamera(cam); return true; } } return false; }
void End::update() { // timer for each 1 second if (ofGetElapsedTimeMillis() - getSharedData().lastUpdate > 1000) { getSharedData().counter++; getSharedData().lastUpdate = ofGetElapsedTimeMillis(); if (getSharedData().counter > 5) { init(); changeCamera(getSharedData().qrcodeCamId); changeState("Start"); } } }
CameraProperty& CameraProperty::operator=(const CameraProperty& that) { if (this != &that) { CompositeProperty::operator=(that); changeCamera(std::unique_ptr<Camera>(that.camera_->clone())); if (inport_) inport_->removeOnChange(this); inport_ = that.inport_; if (inport_) inport_->onChange(this, &CameraProperty::inportChanged); data_ = nullptr; prevDataToWorldMatrix_ = mat4(0); updatePropertyFromValue(); inportChanged(); } return *this; }
void HumanPlayer::lockRobotAndUfo(){ V3 ufoPos = ufo->getPosition(); if(!robotUfoLock && ufo->ufoCollisionTest(ufoPos.x,ufoPos.y-0.1f,ufoPos.z) > 0){ controlRobotAt(0); //searched for robot being collided with and finds index in vector for(int i = 0; i < (int)robots.size(); i++){ if(robots.at(i)->getRobotId() == ufo->ufoCollisionTest(ufoPos.x,ufoPos.y-0.05f,ufoPos.z)){ //input vector index to control that robot controlRobotAt(i); } } robotUfoLock = true; } else{ changeCamera(CAMERA_FOLLOW); robots.at(0)->isRobotBeingControlled = false; robotUfoLock = false; } }
void init() { modelos = std::vector<Model>(qttModels); loadedModels = std::vector<bool>(qttModels,false); balas = std::vector<Bala>(0); patricio1 = Muneco(kpatricio,1,Vector3f(0,0,0)); patricio2 = Muneco(patricio,1.5,Vector3f(2.5,0,2.5)); speed = 0.1; direccionPatricio = -90; // textCamera = "fps"; showing = sFill; textShow = "Fill"; r = g = 1; b = a = 0.8; monigote = 0.5; sferaVisible = false; wallVisible = true; reset(); changeCamera(Fps); updateCamera(); glEnable(GL_NORMALIZE); }
void Player::event(sf::Event event) { switch (event.type) { case sf::Event::KeyPressed: { switch (event.key.code) { case sf::Keyboard::W: upPressed = true; break; case sf::Keyboard::A: leftPressed = true; break; case sf::Keyboard::D: rightPressed = true; break; case sf::Keyboard::S: downPressed = true; break; case sf::Keyboard::F: pushEnemy = true; break; case sf::Keyboard::V: changeCamera(); break; case sf::Keyboard::Left: rotLeftPressed = true; break; case sf::Keyboard::Right: rotRightPressed = true; break; case sf::Keyboard::Space: generateCrack(); break; default: break; } } break; case sf::Event::KeyReleased: { switch (event.key.code) { case sf::Keyboard::W: upPressed = false; break; case sf::Keyboard::A: leftPressed = false; break; case sf::Keyboard::D: rightPressed = false; break; case sf::Keyboard::S: downPressed = false; break; case sf::Keyboard::Left: rotLeftPressed = false; break; case sf::Keyboard::Right: rotRightPressed = false; break; default: break; } } break; case sf::Event::MouseMoved: { unsigned int xMiddle = window->getSize().x / 2; unsigned int yMiddle = window->getSize().y / 2; if (event.mouseMove.x != int(xMiddle) || event.mouseMove.y != int(yMiddle)) { xDeltaMouse = event.mouseMove.x - xMiddle; yDeltaMouse = event.mouseMove.y - yMiddle; sf::Mouse::setPosition(sf::Vector2i(xMiddle, yMiddle), *window); } } break; default: break; } }
void GameProcess::Update() { //cout << "Timer" << endl; restartSnake(); pastX = snake[num - 1].x; pastY = snake[num - 1].y; for (int i = num; i > 0; --i) { snake[i].x = snake[i - 1].x; snake[i].y = snake[i - 1].y; } if (dir == 0) snake[0].y += 1; if (dir == 1) snake[0].x += 1; if (dir == 2) snake[0].y -= 1; if (dir == 3) snake[0].x -= 1; if (snake[0].x > N - 1) snake[0].x = 0; if (snake[0].x < 0) snake[0].x = N - 1; if (snake[0].y > M - 1) snake[0].y = 0; if (snake[0].y < 0) snake[0].y = M - 1; checkIntersects(); //changeCamera(); cout << "Camera x: " << camera->getPosition().x << " " << camera->getPosition().y << " " << camera->getPosition().z << endl; changeCamera(); //cout << "EAT " << eat.x << " " << eat.y << endl; }
//-------------------------------------------------------------- void End::keyPressed(int key){ switch (key) { case 'a': init(); changeState("Print"); break; case 's': init(); changeCamera(getSharedData().qrcodeCamId); changeState("Start"); break; case ' ': _count++; if(_count > 2){ _count = 0; } break; default: break; } }
void ImageViewer::updateCameraandImages() { // 关闭所有灯 changeCamera("", false); // 打开灯 QString cameraindex = ui->cam1->itemText(tmpUpdateCameraImage_cam1index); //qDebug() << uicameraindex << cameraindex; changeCamera(cameraindex, true); cameraindex = ui->cam1->itemText(tmpUpdateCameraImage_cam2index); changeCamera(cameraindex, true); cameraindex = ui->cam1->itemText(tmpUpdateCameraImage_cam3index); changeCamera(cameraindex, true); cameraindex = ui->cam1->itemText(tmpUpdateCameraImage_cam4index); changeCamera(cameraindex, true); cameraindex = ui->cam1->itemText(tmpUpdateCameraImage_cam5index); changeCamera(cameraindex, true); setCamerasCurrentFCs(current_fc_master); updateImages(); }
void End::mousePressed(int x, int y, int button) { init(); changeCamera(getSharedData().qrcodeCamId); changeState("Start"); }
/** * 构造函数传入WorkingStatus status初始化界面 * @param newsinglewidgetapp 是否为单一界面程序(采集程序有可能为单一界面程序,其结束方式与复界面程序不用) @see closeEvent方法 * @param status 工作状态,@see status.h * Collecting = 1 采集时 * Calculating_Backuping = 5 计算备份同时进行 */ MainWidget::MainWidget(bool newsinglewidgetapp, WorkingStatus initstatus, QWidget *parent) : QWidget(parent), ui(new Ui::MainWidget) { ui->setupUi(this); // 初始化结束方式 singlewidgetapp = newsinglewidgetapp; // 初始化工作状态 workingstatus = initstatus; // 初始时采集工程文件名为空 projectfilename = ""; // 默认用户不知道是谁 currentusername = "******"; // 在主界面连接主控底层服务信号槽 connect(MasterProgram::getMasterProgramInstance(), SIGNAL(makeGUIActive(WorkingStatus, bool)), this, SLOT(msgToGUICreateProjectWidget(WorkingStatus, bool))); connect(MasterProgram::getMasterProgramInstance(), SIGNAL(signalMsgToGUI(WorkingStatus, QString)), this, SLOT(appendMsg(WorkingStatus, QString))); connect(MasterProgram::getMasterProgramInstance(), SIGNAL(signalErrorToGUI(WorkingStatus, QString)), this, SLOT(appendError(WorkingStatus, QString))); // [采集转发消息] connect(MasterProgram::getMasterProgramInstance(), SIGNAL(signalToLights(HardwareType, QString, HardwareStatus)), this, SLOT(changeHardwareStatus(HardwareType, QString, HardwareStatus))); connect(MasterProgram::getMasterProgramInstance(), SIGNAL(signalToCameraFC(QString, qint64)), this, SLOT(changeCameraFC_slot(QString, qint64))); // [采集、计算、备份转发消息] connect(MasterProgram::getMasterProgramInstance(), SIGNAL(signalToCameraTask(WorkingStatus, QString, int, QString, QString)), this, SLOT(changeSlaveCameraTask_slot(WorkingStatus, QString, int, QString, QString))); // [计算转发消息] // 每个从控每个线程每个任务帧号反馈消息转发 connect(MasterProgram::getMasterProgramInstance(), SIGNAL(signalToCameraTaskFC(WorkingStatus, QString, int, QString, long long)), this, SLOT(changeSlaveCameraTaskFC_slot(WorkingStatus, QString, int, QString, long long))); // 每个从控每个线程每个任务初始化界面(起始帧、终止帧)消息转发 connect(MasterProgram::getMasterProgramInstance(), SIGNAL(signalToSlaveCameraTaskFC_init(WorkingStatus, QString, int, QString, long long, long long)), this, SLOT(changeSlaveCameraTaskFC_init_slot(WorkingStatus, QString, int, QString, long long, long long))); // [计算备份转发消息] connect(MasterProgram::getMasterProgramInstance(), SIGNAL(calcubackupProgressingBar(WorkingStatus, QString, int, int, int, bool)), this, SLOT(changecalcubackupProgressingBar_slot(WorkingStatus, QString, int, int, int, bool))); connect(MasterProgram::getMasterProgramInstance(), SIGNAL(turnOffAllHardware()), this, SLOT(turnOffLights())); //connect(MasterProgram::getMasterProgramInstance(), SIGNAL(makeGUIActive(bool)), this, SLOT(getCalcuBackupGUIActive(bool))); // 重启服务器按钮信号槽 connect(ui->restartServerButton, SIGNAL(clicked()), this, SLOT(restartServer())); // 关闭服务器 connect(ui->closeServerButton, SIGNAL(clicked()), this, SLOT(closeServer())); // 初始时关闭所有提示灯 turnOffLights(); // 开启网络连接从控计算机提示灯 initConnectedSlaves(); /******设置采集机、备份机、相机的状态,正常或者不正常**********/ // statuscollectmessage为从控机发送过来的采集机和备份机的状态信息,如0表示正常,则显示为黄色,1表示异常,则显示为红色。 // if 采集机异常 // ui->slave1Label_net->setPixmap(QPixmap(":/image/lightred.png")); this->setWindowTitle(QObject::tr("铁路隧道建筑限界测量系统-主控终端")); QIcon icon; icon.addFile(QString::fromUtf8(":image/icon.png"), QSize(), QIcon::Normal, QIcon::Off); this->setWindowIcon(icon); // 功能,设置小图标变灰 ui->collectstatuslabel->setPixmap(QString::fromUtf8(":image//collectstatus1_2.png")); ui->backupstatuslabel->setPixmap(QString::fromUtf8(":image//up_alt_2.png")); ui->calculatestatuslabel->setPixmap(QString::fromUtf8(":image//Calculatorstatus1_2.png")); // 导入已有工程、创建新工程界面 CreateProjectWidget * cpwidget = new CreateProjectWidget(workingstatus, ui->createprojwidget); connect(cpwidget, SIGNAL(sendproject_file_name(QString)), this, SLOT(slotprojectfilename(QString))); connect(this, SIGNAL(setCreateProjectWidgetEnabled(bool)), cpwidget, SLOT(setWidgetEnabled(bool))); // @author 范翔 3个界面合二为一之后,关闭重启服务器两个按钮无效 ui->closeServerButton->setVisible(false); ui->restartServerButton->setVisible(false); if (workingstatus == Collecting) { // Tab界面布局 // ui->gridLayout_5是整个Window的最外层布局Layout。可从.ui文件中找出 ui->gridLayout_5->addWidget(ui->page, 4, 0); CollectWidget * collectWidget = new CollectWidget(ui->page, MasterSetting::getSettingInstance()->getDefaultDistanceMode()); QGridLayout *layout5 = new QGridLayout(); layout5->addWidget(collectWidget); ui->page->setLayout(layout5); // 得到帧间隔里程 connect(this, SIGNAL(sendproject_file_name(QString)), collectWidget,SLOT(getDistanceMode(QString))); // 界面信号槽 connect(this, SIGNAL(changeCameraStatus(QString,HardwareStatus)), collectWidget, SLOT(changeCamera(QString, HardwareStatus))); connect(this, SIGNAL(changeLayserStatus(QString,HardwareStatus)), collectWidget, SLOT(changeLayser(QString, HardwareStatus))); connect(this, SIGNAL(changeCameraFC(QString,qint64)), collectWidget, SLOT(changeCameraFC(QString, qint64))); connect(this, SIGNAL(changeSlaveCameraTask(WorkingStatus, QString, int, QString, QString)), collectWidget, SLOT(changeCameraTask(WorkingStatus, QString, int, QString, QString))); connect(this, SIGNAL(turnOffAllHardware()), collectWidget, SLOT(turnOffHardwares()), Qt::DirectConnection); collectWidget->turnOffHardwares(); // 【标记1】此处作废 // 因为有master的单一实例模式+各种对应方法,此处无需接受底层界面发送的消息了,因为底层界面可以直接调用各类主控方法 //connect(calcuWidget,SIGNAL(clicked111()),this,SLOT(sendToMaster(QString))); // 可以导入已有、创建新工程 connect(ui->operationConfigButton, SIGNAL(clicked()), this, SLOT(configCurrentOperation())); connect(ui->operationConfigButton2, SIGNAL(clicked()), this, SLOT(configCurrentOperation2())); // 初始时的界面显示 ui->page->setVisible(true); // projectclass projectclass = LzProjectClass::Collect; projectclassstr = "collect"; }
void teclado(unsigned char c, int x, int y) { (void)x;(void)y; switch (c) { case 27: glutExit(); break; case 'h': help; //Nesisito aiuda amiho servesa bier std::cout << "You can see the state of the camera type on the up left corner." << std::endl; std::cout << "Press H to display the help(lolol)" << std::endl; std::cout << "Press R to reset the camera" << std::endl; std::cout << "Press P to switch between perspective and ortho camera" << std::endl; std::cout << "Press C to switch between first person camera and third person camera" << std::endl; std::cout << "Press WASD to move the Patricio" << std::endl; std::cout << "Press Z or X to increment/decrement the speed of the Patricio" << std::endl; std::cout << "Press V to make the walls visible/invisible" << std::endl; std::cout << "Press B to make the sfere of the scene visible/invisible" << std::endl; std::cout << "Press M to switch the model of the main character" << std::endl; std::cout << "Press O to change the polygon mode" << std::endl; std::cout << "Press Space to unleash the hidden and destructive power of the Killer Patricio" << std::endl; std::cout << std::endl; break; case 'w': patricio1.posFinal = patricio1.posFinal + Vector3f(sin(direccionPatricio*M_PI/180)*speed,0,cos(direccionPatricio*M_PI/180)*speed); updateCamera(); // Por si el patricio se ha salido de la esfera i ase iorar al ninio jisus glutPostRedisplay(); break; case 's': patricio1.posFinal = patricio1.posFinal - Vector3f(sin(direccionPatricio*M_PI/180)*speed,0,cos(direccionPatricio*M_PI/180)*speed); updateCamera(); // Por si el patricio se ha salido de la esfera i ase iorar al ninio jisus glutPostRedisplay(); break; case 'a': direccionPatricio += 2.5; if (fps) updateCamera(); else glutPostRedisplay(); break; case 'd': direccionPatricio -= 2.5; if (fps) updateCamera(); else glutPostRedisplay(); break; case 'z': speed += 0.03; break; case 'x': speed -= 0.03; if (speed < 0) speed = 0; break; case 'r': reset(); glutPostRedisplay(); break; case 'c': fps = not fps; if (fps) changeCamera(Fps); else changeCamera(ortho ? Ortho : Perspective); updateCamera(); break; case 'p': if (cameraState != Fps) changeCamera(CameraType((cameraState+1)%(qttCameraType-1))); updateCameraType(); break; case 'o': changeShowing(Showing((showing+1)%qttShowing)); break; case 'm': patricio1.changeModel(Models((patricio1.name+1)%qttModels)); glutPostRedisplay(); break; case 'v': wallVisible = not wallVisible; glutPostRedisplay(); break; case 'b': sferaVisible = not sferaVisible; glutPostRedisplay(); break; case ' ': balas.push_back(Bala(patricio1.posFinal,direccionPatricio)); break; default: break; } }
CameraProperty::CameraProperty(std::string identifier, std::string displayName, vec3 eye, vec3 center, vec3 lookUp, Inport* inport, InvalidationLevel invalidationLevel, PropertySemantics semantics) : CompositeProperty(identifier, displayName, invalidationLevel, semantics) , cameraType_("cameraType", "Camera Type", []() { std::vector<OptionPropertyStringOption> options; for (auto& key : InviwoApplication::getPtr()->getCameraFactory()->getKeys()) { options.emplace_back(key, key, key); } return options; }(), 0) , lookFrom_("lookFrom", "Look from", eye, -vec3(100.0f), vec3(100.0f), vec3(0.1f), InvalidationLevel::InvalidOutput, PropertySemantics("Spherical")) , lookTo_("lookTo", "Look to", center, -vec3(100.0f), vec3(100.0f), vec3(0.1f)) , lookUp_("lookUp", "Look up", lookUp, -vec3(100.0f), vec3(100.0f), vec3(0.1f)) , aspectRatio_("aspectRatio", "Aspect Ratio", 1.0f, 0.01f, 100.0f, 0.01f) , nearPlane_("near", "Near Plane", 0.1f, 0.001f, 10.f, 0.001f) , farPlane_("far", "Far Plane", 100.0f, 1.0f, 1000.0f, 1.0f) , mouseChangeFocusPoint_("mouseChangeFocusPoint", "Change Focus Point", new MouseEvent(MouseEvent::MOUSE_BUTTON_LEFT, InteractionEvent::MODIFIER_NONE, MouseEvent::MOUSE_STATE_DOUBLE_CLICK), new Action(this, &CameraProperty::changeFocusPoint)) , adjustCameraOnDataChange_("fitToBasis_", "Adjust camera on data change", true) , camera_() , inport_(inport) , data_(nullptr) , prevDataToWorldMatrix_(0) { // Make sure that the Camera) is // in sync with the property values. cameraType_.setSelectedIdentifier("PerspectiveCamera"); cameraType_.setCurrentStateAsDefault(); addProperty(cameraType_); cameraType_.onChange([&]() { changeCamera(InviwoApplication::getPtr()->getCameraFactory()->create(cameraType_.get())); }); lookFrom_.onChange([&]() { camera_->setLookFrom(lookFrom_.get()); }); lookTo_.onChange([&]() { camera_->setLookTo(lookTo_.get()); }); lookUp_.onChange([&]() { camera_->setLookUp(lookUp_.get()); }); addProperty(lookFrom_); addProperty(lookTo_); addProperty(lookUp_); aspectRatio_.onChange([&]() { camera_->setAspectRatio(aspectRatio_.get()); }); nearPlane_.onChange([&]() { camera_->setNearPlaneDist(nearPlane_.get()); }); farPlane_.onChange([&]() { camera_->setFarPlaneDist(farPlane_.get()); }); addProperty(aspectRatio_); addProperty(nearPlane_); addProperty(farPlane_); addProperty(mouseChangeFocusPoint_); adjustCameraOnDataChange_.onChange([&]() { resetAdjustCameraToData(); }); addProperty(adjustCameraOnDataChange_); changeCamera(InviwoApplication::getPtr()->getCameraFactory()->create(cameraType_.get())); if (inport_) inport_->onChange(this, &CameraProperty::inportChanged); }