Esempio n. 1
0
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()));
}
Esempio n. 2
0
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();
}