void CommandInternalRemoveSceneNode::Cancel() { if (nodesForDeletion.size() == 0) return; for (Vector<RemoveNodeRec>::reverse_iterator rIt = nodesForDeletion.rbegin(); rIt != nodesForDeletion.rend(); ++rIt) { if (rIt->insertBeforeNode) rIt->nodeParent->InsertBeforeNode(rIt->node, rIt->insertBeforeNode); else rIt->nodeParent->AddNode(rIt->node); } SceneData *activeScene = SceneDataManager::Instance()->SceneGetActive(); activeScene->RebuildSceneGraph(); if (selectedNode) { SceneEditorScreenMain* screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); DVASSERT(screen); EditorBodyControl* bodyControl = screen->FindCurrentBody()->bodyControl; if (bodyControl && !bodyControl->LandscapeEditorActive()) activeScene->SelectNode(selectedNode); } }
void CommandCopyPasteHeightmap::UpdateLandscapeTilemap(DAVA::Image *image) { Texture* texture = Texture::CreateFromData(image->GetPixelFormat(), image->GetData(), image->GetWidth(), image->GetHeight(), false); texture->relativePathname = tilemapSavedPathname; texture->GenerateMipmaps(); texture->SetWrapMode(Texture::WRAP_REPEAT, Texture::WRAP_REPEAT); LandscapeEditorBase* editor = GetActiveEditor(); if (editor) { editor->UpdateLandscapeTilemap(texture); } else { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); EditorScene* scene = screen->FindCurrentBody()->bodyControl->GetScene(); Landscape* landscape = scene->GetLandscape(scene); landscape->SetTexture(Landscape::TEXTURE_TILE_MASK, texture); landscape->UpdateFullTiledTexture(); ImageLoader::Save(image, tilemapSavedPathname); } SafeRelease(texture); }
void CommandCreateNode::Execute() { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { screen->CreateNode(nodeType); } }
void CommandChangeAreaSizeVisibilityTool::Execute() { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { screen->VisibilityToolSetAreaSize(size); } }
void CommandToggleVisibilityTool::Execute() { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { screen->VisibilityToolTriggered(); } }
void CommandSetPointVisibilityTool::Execute() { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { screen->VisibilityToolSetPoint(); } }
void CommandToggleVisibilityTool::Execute() { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { screen->VisibilityToolTriggered(); GUIState::Instance()->SetNeedUpdatedToolsMenu(true); GUIState::Instance()->SetNeedUpdatedToolbar(true); } }
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); }
void CommandHeightmapEditor::Execute() { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { screen->HeightmapTriggered(); } SceneData *activeScene = SceneDataManager::Instance()->SceneGetActive(); activeScene->RebuildSceneGraph(); }
void QtMainWindow::ApplyReferenceNodeSuffix() { QString qStr = ui->referenceSuffixEdit->text(); QByteArray array = qStr.toLatin1(); char * chars = array.data(); String str(chars); SceneEditorScreenMain * screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); Scene * scene = screen->FindCurrentBody()->bodyControl->GetScene(); scene->SetReferenceNodeSuffix(str); }
LandscapeEditorVisibilityCheckTool* CommandPlaceAreaVisibilityTool::GetEditor() { LandscapeEditorVisibilityCheckTool* editor = NULL; SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { editor = dynamic_cast<LandscapeEditorVisibilityCheckTool*>(screen->FindCurrentBody()->bodyControl->GetLandscapeEditor(SceneEditorScreenMain::ELEMID_VISIBILITY_CHECK_TOOL)); } return editor; }
LandscapeEditorHeightmap* HeightmapModificationCommand::GetEditor() { LandscapeEditorHeightmap* editor = NULL; SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { editor = dynamic_cast<LandscapeEditorHeightmap*>(screen->FindCurrentBody()->bodyControl->GetLandscapeEditor(SceneEditorScreenMain::ELEMID_HEIGHTMAP)); } return editor; }
LandscapeEditorCustomColors* CommandDrawCustomColors::GetEditor() { LandscapeEditorCustomColors* editor = NULL; SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { editor = dynamic_cast<LandscapeEditorCustomColors*>(screen->FindCurrentBody()->bodyControl->GetLandscapeEditor(SceneEditorScreenMain::ELEMID_CUSTOM_COLORS)); } return editor; }
LandscapeEditorBase* CommandCopyPasteHeightmap::GetActiveEditor() { LandscapeEditorBase* editor = NULL; SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { editor = screen->FindCurrentBody()->bodyControl->GetCurrentLandscapeEditor(); } return editor; }
void QSceneGraphTreeView::keyPressEvent(QKeyEvent *event) { if(event->key() == Qt::Key_X) { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { screen->ProcessIsSolidChanging(); } } QTreeView::keyPressEvent(event); }
void CommandEditScene::Execute() { DVASSERT(CheckExtension(String(".sc2")) && "Wrong extension"); String path, name; FileSystem::Instance()->SplitPath(filePathname, path, name); SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { screen->AddBodyItem(StringToWString(name), true); } SceneDataManager::Instance()->EditActiveScene(filePathname); QtMainWindowHandler::Instance()->ShowStatusBarMessage(filePathname); }
void CommandLoadTextureCustomColors::Execute() { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(!screen) return; FilePath currentPath = screen->CustomColorsGetCurrentSaveFileName(); if(currentPath.IsEmpty()) { currentPath = SceneDataManager::Instance()->SceneGetActive()->GetScenePathname().GetDirectory(); } FilePath selectedPathname = GetOpenFileName(String("Load texture"), currentPath, String("PNG image (*.png)")); if(!selectedPathname.IsEmpty()) { screen->CustomColorsLoadTexture(selectedPathname); } }
void CommandSaveTextureVisibilityTool::Execute() { String currentPath = FileSystem::Instance()->GetUserDocumentsPath(); QString filePath = QFileDialog::getSaveFileName(NULL, QString("Save texture"), QString(currentPath.c_str()), QString("PNG image (*.png)")); String selectedPathname = PathnameToDAVAStyle(filePath); if(selectedPathname.length() > 0) { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(screen) { screen->VisibilityToolSaveTexture(selectedPathname); } } }
void CommandSaveTextureCustomColors::Execute() { SceneEditorScreenMain *screen = dynamic_cast<SceneEditorScreenMain *>(UIScreenManager::Instance()->GetScreen()); if(!screen) return; FilePath selectedPathname = screen->CustomColorsGetCurrentSaveFileName(); if(selectedPathname.IsEmpty()) { selectedPathname = SceneDataManager::Instance()->SceneGetActive()->GetScenePathname().GetDirectory(); } QString filePath = QFileDialog::getSaveFileName(NULL, QString("Save texture"), QString(selectedPathname.GetAbsolutePathname().c_str()), QString("PNG image (*.png)")); selectedPathname = PathnameToDAVAStyle(filePath); if(!selectedPathname.IsEmpty()) screen->CustomColorsSaveTexture(selectedPathname); }
void CreateNodesDialog::CreateNode(ResourceEditor::eNodeType nodeType) { SafeRelease(sceneNode); SceneEditorScreenMain * screen = (SceneEditorScreenMain*)UIScreenManager::Instance()->GetScreen(SCREEN_SCENE_EDITOR_MAIN); EditorScene * editorScene = screen->FindCurrentBody()->bodyControl->GetScene(); scene = editorScene; switch (nodeType) { case ResourceEditor::NODE_LANDSCAPE: SetHeader(LocalizedString(L"createnode.landscape")); sceneNode = new LandscapeNode(); sceneNode->SetName("Landscape"); break; case ResourceEditor::NODE_LIGHT: { SetHeader(LocalizedString(L"createnode.light")); sceneNode = EditorLightNode::CreateSceneAndEditorLight(); sceneNode->SetName("Light"); break; } case ResourceEditor::NODE_SERVICE_NODE: { SetHeader(LocalizedString(L"createnode.servicenode")); sceneNode = new SceneNode(); KeyedArchive *customProperties = sceneNode->GetCustomProperties(); customProperties->SetBool("editor.isLocked", true); sceneNode->SetName("Servicenode"); break; } case ResourceEditor::NODE_BOX: SetHeader(LocalizedString(L"createnode.box")); sceneNode = new CubeNode(); sceneNode->SetName("Cube"); break; case ResourceEditor::NODE_SPHERE: SetHeader(LocalizedString(L"createnode.sphere")); sceneNode = new SphereNode(); sceneNode->SetName("Sphere"); break; case ResourceEditor::NODE_CAMERA: SetHeader(LocalizedString(L"createnode.camera")); sceneNode = new Camera(); ((Camera *)sceneNode)->SetUp(Vector3(0.0f, 0.0f, 1.0f)); sceneNode->SetName("Camera"); break; case ResourceEditor::NODE_IMPOSTER: SetHeader(LocalizedString(L"createnode.imposter")); sceneNode = new ImposterNode(); sceneNode->SetName("Imposter"); break; case ResourceEditor::NODE_PARTICLE_EMITTER: { SetHeader(LocalizedString(L"createnode.particleemitter")); ParticleEmitterNode * node = new ParticleEmitterNode(); node->LoadFromYaml("~res:/Particles/sparkles.yaml"); sceneNode = node; } break; case ResourceEditor::NODE_USER_NODE: SetHeader(LocalizedString(L"createnode.usernode")); sceneNode = new UserNode(); sceneNode->SetName("UserNode"); break; default: break; } propertyList = PropertyControlCreator::Instance()->CreateControlForNode(sceneNode, propertyRect, true); SafeRetain(propertyList); AddControl(propertyList); SetScene(editorScene); propertyList->ReadFrom(sceneNode); }
void MeshInstancePropertyControl::OnGo2Materials(DAVA::BaseObject *object, void *userData, void *callerData) { Material *material = (Material *)userData; SceneEditorScreenMain *screen = (SceneEditorScreenMain *)UIScreenManager::Instance()->GetScreen(SCREEN_MAIN); screen->EditMaterial(material); }
void MeshInstancePropertyControl::OnShowTexture(DAVA::BaseObject *object, void *userData, void *callerData) { PolygonGroup *polygonGroup = (PolygonGroup *)userData; SceneEditorScreenMain *screen = (SceneEditorScreenMain *)UIScreenManager::Instance()->GetScreen(SCREEN_MAIN); screen->ShowTextureTriangles(polygonGroup); }