void CommandCopyPasteHeightmap::Execute() { LandscapeEditorHeightmap* editor = GetEditor(); if (!editor) { SetState(STATE_INVALID); return; } // Apply new heightmap if (heightmap) { if (editor->IsActive()) { Heightmap* heightmap = editor->GetHeightmap(); heightmap->Load(heightmapRedoFilename); editor->UpdateHeightmap(heightmap, updatedRect); } else { UpdateLandscapeHeightmap(heightmapRedoFilename); } } // Apply new tilemap if (tilemap) { UpdateLandscapeTilemap(tilemapRedoImage); } }
void CommandCopyPasteHeightmap::Cancel() { // Restore old heightmap if (heightmap) { LandscapeEditorHeightmap* editor = GetEditor(); if (!editor) return; if (editor->IsActive()) { Heightmap* heightmap = editor->GetHeightmap(); heightmap->Load(heightmapUndoFilename); editor->UpdateHeightmap(heightmap, updatedRect); } else { UpdateLandscapeHeightmap(heightmapUndoFilename); } } // Restore old tilemap if (tilemap) { UpdateLandscapeTilemap(tilemapUndoImage); } }
bool SceneValidator::ValidateHeightmapPathname(const FilePath &pathForValidation, Set<String> &errorsLog) { DVASSERT_MSG(!pathForChecking.IsEmpty(), "Need to set pathname for DataSource folder"); bool pathIsCorrect = IsPathCorrectForProject(pathForValidation); if(pathIsCorrect) { String::size_type posPng = pathForValidation.GetAbsolutePathname().find(".png"); String::size_type posHeightmap = pathForValidation.GetAbsolutePathname().find(Heightmap::FileExtension()); pathIsCorrect = ((String::npos != posPng) || (String::npos != posHeightmap)); if(!pathIsCorrect) { errorsLog.insert(Format("Heightmap path %s is wrong", pathForValidation.GetAbsolutePathname().c_str())); return false; } Heightmap *heightmap = new Heightmap(); if(String::npos != posPng) { Image *image = CreateTopLevelImage(pathForValidation); pathIsCorrect = heightmap->BuildFromImage(image); SafeRelease(image); } else { pathIsCorrect = heightmap->Load(pathForValidation); } if(!pathIsCorrect) { SafeRelease(heightmap); errorsLog.insert(Format("Can't load Heightmap from path %s", pathForValidation.GetAbsolutePathname().c_str())); return false; } pathIsCorrect = IsPowerOf2(heightmap->Size() - 1); if(!pathIsCorrect) { errorsLog.insert(Format("Heightmap %s has wrong size", pathForValidation.GetAbsolutePathname().c_str())); } SafeRelease(heightmap); return pathIsCorrect; } else { errorsLog.insert(Format("Path %s is incorrect for project %s", pathForValidation.GetAbsolutePathname().c_str(), pathForChecking.GetAbsolutePathname().c_str())); } return pathIsCorrect; }
void CommandDrawHeightmap::Cancel() { LandscapeEditorHeightmap* editor = GetEditor(); if (editor) { Heightmap* heightmap; editor->GetHeightmap(&heightmap); heightmap->Load(undoFilename); editor->UpdateHeightmap(heightmap); } }
void HeightmapModificationCommand::UpdateLandscapeHeightmap(String filename) { SceneData *activeScene = SceneDataManager::Instance()->SceneGetActive(); LandscapesController* landscapesController = activeScene->GetLandscapesController(); Landscape* landscapeNode = landscapesController->GetCurrentLandscape(); Heightmap* heightmap = new Heightmap(); heightmap->Load(filename); landscapeNode->SetHeightmap(heightmap); heightmap->Save(landscapeNode->GetHeightmapPathname()); SafeRelease(heightmap); }
void CommandDrawHeightmap::Cancel() { LandscapeEditorHeightmap* editor = GetEditor(); if (!editor) return; if (editor->IsActive()) { Heightmap* heightmap = editor->GetHeightmap(); heightmap->Load(undoFilename); editor->UpdateHeightmap(heightmap, updatedRect); } else { UpdateLandscapeHeightmap(undoFilename); } }
void CommandDrawHeightmap::Execute() { LandscapeEditorHeightmap* editor = GetEditor(); if (editor == NULL) { SetState(STATE_INVALID); return; } if (editor->IsActive()) { Heightmap* heightmap = editor->GetHeightmap(); heightmap->Load(redoFilename); editor->UpdateHeightmap(heightmap, updatedRect); } else { UpdateLandscapeHeightmap(redoFilename); } }
void CommandDrawHeightmap::Execute() { LandscapeEditorHeightmap* editor = GetEditor(); if (editor == NULL) { SetState(STATE_INVALID); return; } Heightmap* heightmap; editor->GetHeightmap(&heightmap); if (redoFilename == "") { redoFilename = SaveHeightmap(heightmap, "_" + GetRandomString(10)); } else { heightmap->Load(redoFilename); editor->UpdateHeightmap(heightmap); } }