void SceneEditorScreenMain::SaveToFolder(const String & folder) { BodyItem *iBody = FindCurrentBody(); iBody->bodyControl->PushDebugCamera(); SceneData *sceneData = SceneDataManager::Instance()->SceneGetActive(); String filePath = sceneData->GetScenePathname(); String dataSourcePath = EditorSettings::Instance()->GetDataSourcePath(); String::size_type pos = filePath.find(dataSourcePath); if(String::npos != pos) { filePath = filePath.replace(pos, dataSourcePath.length(), ""); } else { DVASSERT(0); } // Get project path KeyedArchive *keyedArchieve = EditorSettings::Instance()->GetSettings(); String projectPath = keyedArchieve->GetString(String("ProjectPath")); if(!SceneSaver::Instance()) new SceneSaver(); String inFolder = projectPath + String("DataSource/3d/"); SceneSaver::Instance()->SetInFolder(inFolder); SceneSaver::Instance()->SetOutFolder(folder); Set<String> errorsLog; SceneSaver::Instance()->SaveScene(iBody->bodyControl->GetScene(), filePath, errorsLog); iBody->bodyControl->PopDebugCamera(); ShowErrorDialog(errorsLog); }
void SceneEditorScreenMain::ExportAs(ImageFileFormat format) { String formatStr; switch (format) { case DAVA::PNG_FILE: formatStr = String("png"); break; case DAVA::PVR_FILE: formatStr = String("pvr"); break; case DAVA::DXT_FILE: formatStr = String("dds"); break; default: DVASSERT(0); return; } BodyItem *iBody = FindCurrentBody(); iBody->bodyControl->PushDebugCamera(); SceneData *sceneData = SceneDataManager::Instance()->SceneGetActive(); String filePath = sceneData->GetScenePathname(); String dataSourcePath = EditorSettings::Instance()->GetDataSourcePath(); String::size_type pos = filePath.find(dataSourcePath); if(String::npos != pos) { filePath = filePath.replace(pos, dataSourcePath.length(), ""); } else { DVASSERT(0); } // Get project path KeyedArchive *keyedArchieve = EditorSettings::Instance()->GetSettings(); String projectPath = keyedArchieve->GetString(String("ProjectPath")); if(!SceneExporter::Instance()) new SceneExporter(); String inFolder = projectPath + String("DataSource/3d/"); SceneExporter::Instance()->SetInFolder(inFolder); SceneExporter::Instance()->SetOutFolder(projectPath + String("Data/3d/")); SceneExporter::Instance()->SetExportingFormat(formatStr); //TODO: how to be with removed nodes? Set<String> errorsLog; SceneExporter::Instance()->ExportScene(iBody->bodyControl->GetScene(), filePath, errorsLog); iBody->bodyControl->PopDebugCamera(); ShowErrorDialog(errorsLog); }
void QSceneGraphTreeView::ShowSceneGraphMenu(const QModelIndex &index, const QPoint &point) { if(!index.isValid()) { return; } QMenu menu; // For "custom" Particles Editor nodes the "generic" ones aren't needed". if (sceneGraphModel->GetParticlesEditorSceneModelHelper().NeedDisplaySceneEditorPopupMenuItems(index)) { SceneData *activeScene = SceneDataManager::Instance()->SceneGetActive(); LandscapesController *landsacpesController = activeScene->GetLandscapesController(); SceneEditorScreenMain *screen = static_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen(SCREEN_MAIN_OLD)); EditorBodyControl *c = screen->FindCurrentBody()->bodyControl; bool canChangeScene = !landsacpesController->EditorLandscapeIsActive() && !c->LandscapeEditorActive(); if(!canChangeScene) return; AddActionToMenu(&menu, QString("Look at Object"), new CommandLockAtObject()); AddActionToMenu(&menu, QString("Remove Object"), new CommandRemoveSceneNode()); AddActionToMenu(&menu, QString("Debug Flags"), new CommandDebugFlags()); Entity *node = static_cast<Entity *>(sceneGraphModel->ItemData(index)); if (node) { SceneData *activeScene = SceneDataManager::Instance()->SceneGetActive(); if(node->GetParent() == activeScene->GetScene()) { KeyedArchive *properties = node->GetCustomProperties(); if (properties && properties->IsKeyExists(String(ResourceEditor::EDITOR_REFERENCE_TO_OWNER))) { String filePathname = properties->GetString(String(ResourceEditor::EDITOR_REFERENCE_TO_OWNER)); AddActionToMenu(&menu, QString("Remove Root Nodes"), new CommandRemoveRootNodes()); } } FilePath filePathForSaveAs(activeScene->GetScenePathname()); AddActionToMenu(&menu, QString("Save Scene As"), new CommandSaveSpecifiedScene(node, filePathForSaveAs)); } } // For "custom" Particles Editor nodes the "generic" ones aren't needed". // We might need more menu items/actions for Particles Editor. sceneGraphModel->GetParticlesEditorSceneModelHelper().AddPopupMenuItems(menu, index); connect(&menu, SIGNAL(triggered(QAction *)), this, SLOT(SceneGraphMenuTriggered(QAction *))); menu.exec(point); }
String SceneEditorScreenMain::CurrentScenePathname() { SceneData *sceneData = SceneDataManager::Instance()->SceneGetActive(); String pathname = sceneData->GetScenePathname(); if (0 < pathname.length()) { pathname = FileSystem::Instance()->ReplaceExtension(pathname, ".sc2"); } return pathname; }
void EditorBodyControl::PackLightmaps() { SceneData *sceneData = SceneDataManager::Instance()->SceneGetActive(); FilePath inputDir(EditorSettings::Instance()->GetProjectPath()+"DataSource/lightmaps_temp/"); FilePath outputDir = FilePath::CreateWithNewExtension(sceneData->GetScenePathname(), + ".sc2_lightmaps/"); FileSystem::Instance()->MoveFile(inputDir+"landscape.png", "test_landscape.png", true); LightmapsPacker packer; packer.SetInputDir(inputDir); packer.SetOutputDir(outputDir); packer.PackLightmaps(EditorSettings::Instance()->GetTextureViewGPU()); packer.CreateDescriptors(); packer.ParseSpriteDescriptors(); BeastProxy::Instance()->UpdateAtlas(beastManager, packer.GetAtlasingData()); FileSystem::Instance()->MoveFile("test_landscape.png", outputDir+"landscape.png", true); }