예제 #1
0
    /// <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);
        }
    }
예제 #2
0
    /// <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));
        }
    }