/// <summary> /// Carica un immagine e nasconde il menu. /// </summary> public void OpenFilePanel() { //Filtri per far scegliere all'utente solo immagini var extensionsFile = new[] { new ExtensionFilter("Image Files", "png", "jpg"), }; //Tutte le path selezionate string[] paths = StandaloneFileBrowser.OpenFilePanel("Open Image", "", extensionsFile, false); //Controlla che sia selezionata solo un'immagine if (paths.Length == 1 && File.Exists(paths[0])) { file = new FileManager(paths[0], FileManager.READ_MODE); string json = File.ReadAllText("./paths.json"); List <Paths> oldPaths = JsonConvert.DeserializeObject <List <Paths> >(json); for (int i = 0; i < oldPaths.Count; i++) { if (paths[0].Equals(oldPaths[i].path)) { oldPaths.RemoveAt(i); } } List <Paths> filePath = new List <Paths>(); filePath = new List <Paths> { new Paths { path = paths[0] } }; oldPaths.Add(filePath[0]); File.WriteAllText("./paths.json", JsonConvert.SerializeObject(oldPaths)); //Prende l'immagine texture = file.GetTexture(); //La applico sulla tela telaDisegnabile.GetComponent <Renderer>().material.mainTexture = texture; //Disattiva il menu hideMenuStart(); autoSize.AutoSizeTela(camera, telaDisegnabile, texture.width, texture.height); } }
/// <summary> /// Crea una nuova texture che viene applicata al piano che funge da tela salvandola in formato jpg o png e in seguito ne salva il /// percorso nel file "paths.json". /// </summary> /// <param name="imageWidth">larghezza della texture in pixel</param> /// <param name="imageHeight">altezza della texture in pixel</param> public void createNew(int imageWidth, int imageHeight) { // Crea la texture var texture = new Texture2D(imageWidth, imageHeight, TextureFormat.RGBA32, false); telaDisegnabile.gameObject.transform.localScale = new Vector3(UnityToPixels(imageWidth), 0, UnityToPixels(imageHeight)); telaDisegnabile.GetComponent <Renderer>().material.mainTexture = texture; // Setta tutti i colori del pixel a bianco for (int y = 0; y < texture.height; y++) { for (int x = 0; x < texture.width; x++) { texture.SetPixel(x, y, Color.white); } } texture.Apply(); // Adatta la dimensione della tela autoSize.AutoSizeTela(camera, telaDisegnabile, imageWidth, imageHeight); //Filtri per far scegliere all'utente solo immagini var extensionsFile = new[] { new ExtensionFilter("Image Files", "png", "jpg"), }; // Save file string filePath = StandaloneFileBrowser.SaveFilePanel("Save File", "", "MySaveFile", extensionsFile); // Apre il file della texture in modalità scrittura file = new FileManager(filePath, FileManager.WRITE_MODE); //Contiene l'estensione del file e lo salva string extension = filePath.Substring(filePath.Length - 3, 3); if (extension.Equals("png")) { file.SaveTexturePNG(texture); } else if (extension.Equals("jpg")) { file.SaveTextureJPG(texture); } List <Paths> paths = new List <Paths>(); paths = new List <Paths> { // Inserisco la path della nuova texture new Paths { path = filePath } }; // Controlla che la lista contenga almeno un percorso, altrimenti inserisce direttamente la path nella lista if (File.ReadAllText("./paths.json").Length > 1) { // Prende la lista dei percorsi string json = File.ReadAllText("./paths.json"); List <Paths> oldPaths = JsonConvert.DeserializeObject <List <Paths> >(json); // Controlla che nella lista non esista già lo stesso percorso, se si la rimuove for (int i = 0; i < oldPaths.Count; i++) { if (paths[0].path.Equals(oldPaths[i].path)) { oldPaths.RemoveAt(i); } } // Aggiunge la path alla lista oldPaths.Add(paths[0]); File.WriteAllText("./paths.json", JsonConvert.SerializeObject(oldPaths)); } else { File.WriteAllText("./paths.json", JsonConvert.SerializeObject(paths)); } }