void QtMainWindow::SetupActions() { QtMainWindowHandler *actionHandler = QtMainWindowHandler::Instance(); //File connect(ui->menuFile, SIGNAL(triggered(QAction *)), actionHandler, SLOT(FileMenuTriggered(QAction *))); connect(ui->actionNewScene, SIGNAL(triggered()), actionHandler, SLOT(NewScene())); connect(ui->actionOpenScene, SIGNAL(triggered()), actionHandler, SLOT(OpenScene())); connect(ui->actionOpenProject, SIGNAL(triggered()), actionHandler, SLOT(OpenProject())); connect(ui->actionSaveScene, SIGNAL(triggered()), actionHandler, SLOT(SaveScene())); connect(ui->actionSaveToFolder, SIGNAL(triggered()), actionHandler, SLOT(SaveToFolderWithChilds())); ui->actionExportPVRIOS->setData(GPU_POWERVR_IOS); ui->actionExportPVRAndroid->setData(GPU_POWERVR_ANDROID); ui->actionExportTegra->setData(GPU_TEGRA); ui->actionExportMali->setData(GPU_MALI); ui->actionExportAdreno->setData(GPU_ADRENO); ui->actionExportPNG->setData(GPU_UNKNOWN); connect(ui->menuExport, SIGNAL(triggered(QAction *)), actionHandler, SLOT(ExportMenuTriggered(QAction *))); connect(ui->actionReloadAll, SIGNAL(triggered()), actionHandler, SLOT(RepackAndReloadTextures())); //View connect(ui->actionRestoreViews, SIGNAL(triggered()), actionHandler, SLOT(RestoreViews())); //Tools connect(ui->actionMaterialEditor, SIGNAL(triggered()), actionHandler, SLOT(Materials())); connect(ui->actionTextureConverter, SIGNAL(triggered()), actionHandler, SLOT(ConvertTextures())); connect(ui->actionHeightMapEditor, SIGNAL(triggered()), actionHandler, SLOT(HeightmapEditor())); connect(ui->actionTileMapEditor, SIGNAL(triggered()), actionHandler, SLOT(TilemapEditor())); connect(ui->actionRulerTool, SIGNAL(triggered()), actionHandler, SLOT(RulerTool())); connect(ui->actionShowSettings, SIGNAL(triggered()), actionHandler, SLOT(ShowSettings())); connect(ui->actionSquareTextures, SIGNAL(triggered()), actionHandler, SLOT(SquareTextures())); connect(ui->actionShowMipmapLevel, SIGNAL(triggered()), actionHandler, SLOT(ReplaceZeroMipmaps())); #if defined (__DAVAENGINE_MACOS__) ui->menuTools->removeAction(ui->actionBeast); #else //#if defined (__DAVAENGINE_MACOS__) connect(ui->actionBeast, SIGNAL(triggered()), actionHandler, SLOT(Beast())); #endif //#if defined (__DAVAENGINE_MACOS__) //Edit connect(ui->actionConvertToShadow, SIGNAL(triggered()), actionHandler, SLOT(ConvertToShadow())); //Temporary hided for development-qa branch ui->actionEnableCameraLight->setVisible(false); ui->actionEnableCameraLight->setChecked(EditorSettings::Instance()->GetShowEditorCamerLight()); connect(ui->actionEnableCameraLight, SIGNAL(triggered()), actionHandler, SLOT(CameraLightTrigerred())); //Help connect(ui->actionHelp, SIGNAL(triggered()), actionHandler, SLOT(OpenHelp())); }
Editor::Editor(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); UIInitHelper(); mEngine = AGE::Engine::GetInstance(); mEngine->StartUp((HWND)ui.widget->winId()); AGE::GetLevelManager()->LoadLevel<EditorLevel>(ui.widget); connect(ui.widget, &RenderWidget::onRefresh, this, &Editor::RenderWidgetUpdate); connect(ui.widget, &RenderWidget::onMousePress, [this](QPoint point){ if (AGE::GetScene()) { AGE::SceneNode* node = AGE::GetScene()->GetCurrentCamera()->PickAt(point.x(), point.y()); printf("pick %p\n", node); ui.propertyWidget->clear(); if (!node) return; if (auto p = node->GetUserData<PropertySceneNode>(0)) { QtVariantPropertyManager *variantManager = new QtVariantPropertyManager(); QtVariantEditorFactory *variantFactory = new QtVariantEditorFactory(); ui.propertyWidget->setFactoryForManager(variantManager, variantFactory); p->AddProperties(ui.propertyWidget, variantManager); } } }); connect(ui.widget, &RenderWidget::onResize, [this](QSize newSize, QSize oldSize){ AGE::RenderEngine::GetInstance()->ResizeToFit(); ui.widget->update(); }); connect(ui.widget, &RenderWidget::onDrag, [this](QPoint delta){ if (GetEditorLevel()) { GetEditorLevel()->RotateCamera(delta.x(), delta.y()); } }); connect(ui.widget, &RenderWidget::onWheel, [this](int delta){ if (GetEditorLevel()) { GetEditorLevel()->AdjustDistance(delta); } }); connect(ui.actionSave, &QAction::triggered, [this](){ if (mProject) { mProject->Save(); if (mProject->GetCurrentScene()) mProject->GetCurrentScene()->Save(); } }); connect(ui.actionCS, &QAction::triggered, [](){ MDLImporterDlg w; w.exec(); }); connect(ui.action_N, &QAction::triggered, this, &Editor::OnActionNewProject); connect(ui.action_O, &QAction::triggered, [this](){ QString path = QFileDialog::getOpenFileName(this, tr("打开工程文件"), "", tr("AGE Project (*.aproj)")); if (path.isEmpty()) return; mProject = Project::Load(path); if (!mProject) { QMessageBox::information(this, tr("提示"), tr("读取项目文件失败")); return; } ProjectContentChanged(); }); connect(ui.actionTest, &QAction::triggered, [this](){ mProject = Project::Load("D:\\Projects\\AGEProjects\\test\\123.aproj"); mProject->OpenScene("good"); UpdateProjectView(); }); connect(ui.action_S, &QAction::triggered, [this](){ mProject->AddScene("good"); UpdateProjectView(); }); connect(ui.planeButton, &QPushButton::clicked, [this](){ GetEditorLevel()->AddPrimitive(PrimitiveType::Plane); }); connect(ui.icosphereButton, &QPushButton::clicked, [this](){ GetEditorLevel()->AddPrimitive(PrimitiveType::IcoSphere); }); connect(ui.projectTree, &QTreeWidget::itemDoubleClicked, [this](QTreeWidgetItem *item, int column){ if (item->parent() != mScenesTreeNode) return; OpenScene(item->text(0)); }); connect(ui.actionNewSceneNode, &QAction::triggered, [this](){ QString path = QFileDialog::getOpenFileName(this, tr("打开"), "", tr("AGE Mesh (*.AMESH)")); if (path.isEmpty()) return; AGE::AGEMeshImporter importer; GetEditorLevel()->AddSceneNode(importer.LoadFromFile(path.toStdString().c_str(), true)); }); connect(ui.actionNewPhysicsNode, &QAction::triggered, [this](){ QString path = QFileDialog::getOpenFileName(this, tr("打开"), "", tr("AGE Mesh (*.AMESH)")); if (path.isEmpty()) return; AGE::AGEMeshImporter importer; GetEditorLevel()->AddPhysicsNode(importer.LoadFromFile(path.toStdString().c_str(), true)); }); showMaximized(); }