示例#1
0
    public void ObjectParse(object parse)
    {
        CatalogueItem_Model item = parse as CatalogueItem_Model;

        this.tile  = item;
        lable.text = item.friendlyName;
        assetID    = item.itemID;
        favourite  = item.favourite;
        if (item.thumnailData != null)
        {
            Texture2D tex = new Texture2D(2, 2);
            tex.LoadImage(item.thumnailData);
            Sprite mySprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f);
            thumbnail.sprite = mySprite;
        }
    }
    public void ObjectParse(CatalogueItem_Model tileParse, CatalogueItemThumnail_Model thumbnail)
    {
        this.itemModel = tileParse;
        if (itemModel.itemID != 0)
        {
            //Existing Asset
            itemThumbnail          = thumbnail;
            assetFriendlyName.text = itemModel.friendlyName;
            tagsInputField.text    = string.Join("#", itemModel.tags);
            categoryDropDown.value = itemModel.itemTypeCategory;
            favouritesToggle.isOn  = itemModel.favourite;
            editViewObject.SetActive(false);

            ImportModel(Application.persistentDataPath + itemModel.modelPath);
            ClearMaterialData();
            foreach (Renderer renderer in modelViewParent.GetComponentsInChildren <Renderer>())
            {
                if (!string.IsNullOrEmpty(itemModel.textureColourPath))
                {
                    LoadTextureColour(Application.persistentDataPath + itemModel.textureColourPath, renderer);
                }
                if (!string.IsNullOrEmpty(itemModel.textureNormalPath))
                {
                    LoadTextureNormal(Application.persistentDataPath + itemModel.textureNormalPath, renderer);
                }
                if (!string.IsNullOrEmpty(itemModel.textureDisplacementPath))
                {
                    LoadTextureDisplacement(Application.persistentDataPath + itemModel.textureDisplacementPath, renderer);
                }
                if (!string.IsNullOrEmpty(itemModel.textureSpecularPath))
                {
                    LoadTextureSpecular(Application.persistentDataPath + itemModel.textureSpecularPath, renderer);
                }
                if (!string.IsNullOrEmpty(itemModel.textureOcclusionPath))
                {
                    LoadTextureOcclusion(Application.persistentDataPath + itemModel.textureOcclusionPath, renderer);
                }
            }
            modelViewParent.transform.localPosition    = itemModel.savePos.GetVector3();
            modelViewParent.transform.localEulerAngles = itemModel.saveRot.GetVector3();
            modelViewParent.transform.localScale       = itemModel.saveScale.GetVector3();
        }
    }
    public async void SaveAssetAsync()
    {
        if (string.IsNullOrEmpty(assetFriendlyName.text))
        {
            MessageBox.Show("Error", "Asset Name Is Missing", () => { });
            return;
        }

        if (itemModel.itemID == 0)
        {
            if (string.IsNullOrEmpty(tempModelPath))
            {
                MessageBox.Show("Error", "Must Import Model", () => { });
                return;
            }
        }

        this.GetComponent <Button>().interactable = false;
        LoadingPanelUI loadingPanelUI = GetComponentInChildren <LoadingPanelUI>(true);

        loadingPanelUI.gameObject.SetActive(true);
        loadingPanelUI.ChangeText("Please Wait", "Assets Uploading");

        const string itemFileName       = "CatalogueItem.asscat";
        const string thumnailPrefabName = "AssetThumnail_Model";

        if (itemModel.itemID == 0)
        {
            itemModel = new CatalogueItem_Model
            {
                friendlyName     = assetFriendlyName.text,
                itemID           = itemModel.itemID,
                modifiedDate     = DateTime.Now.ToString(),
                tags             = tagsInputField.text.Split('#'),
                favourite        = favouritesToggle.isOn,
                itemTypeCategory = categoryDropDown.value,
                savePos          = new CustomVector3(modelViewParent.transform.localPosition),
                saveRot          = new CustomVector3(modelViewParent.transform.localEulerAngles),
                saveScale        = new CustomVector3(modelViewParent.transform.localScale),
            };
        }

        //Screenshot
        Texture2D tex = new Texture2D(renderTextureNew.height, renderTextureNew.height);

        RenderTexture.active = renderTextureNew;
        float offsetX = (renderTextureNew.width - renderTextureNew.height) / 2;

        tex.ReadPixels(new Rect(offsetX, 0, renderTextureNew.height, renderTextureNew.height), 0, 0);
        tex.Apply();
        itemModel.thumnailData = tex.EncodeToPNG();

        if (itemModel.itemID == 0)
        {
            //Copy All Files
            catalogueManager._CreatedAssetCount++;
            itemModel.itemID = catalogueManager._CreatedAssetCount;
            CatalogueItemDetail itemDetail = new CatalogueItemDetail
            {
                ItemType = CatalogueItemDetail.ItemTypes.Model,
                ItemID   = catalogueManager._CreatedAssetCount,
                CatalogueItemDirectory = "/Assets/Models/" + catalogueManager._CreatedAssetCount.ToString("D5") + "/",
                DateModified           = DateTime.Now.ToString(),
                FriendlyName           = itemModel.friendlyName,
                ItemTypeCategory       = categoryDropDown.value,
            };

            string localAssetPath = "/" + catalogueManager._DatabaseUID + itemDetail.CatalogueItemDirectory + "/";
            //Debug.Log(_LocalAssetPath);
            cmd_File.DeleteFolder(Application.persistentDataPath + localAssetPath, false);
            Directory.CreateDirectory(Application.persistentDataPath + localAssetPath);

            if (tempModelPath != null)
            {
                string path = localAssetPath + "/" + Path.GetFileName(tempModelPath);
                File.Copy(tempModelPath, Application.persistentDataPath + path, true);
                itemModel.modelPath = path;
            }

            if (tempTextureColourPath != null)
            {
                string path = localAssetPath + "/" + Path.GetFileName(tempTextureColourPath);
                File.Copy(tempTextureColourPath, Application.persistentDataPath + path, true);
                itemModel.textureColourPath = path;
            }

            if (tempTextureNormalPath != null)
            {
                string path = localAssetPath + "/" + Path.GetFileName(tempTextureNormalPath);
                File.Copy(tempTextureNormalPath, Application.persistentDataPath + path, true);
                itemModel.textureNormalPath = path;
            }

            if (tempTextureDisplacementPath != null)
            {
                string path = localAssetPath + "/" + Path.GetFileName(tempTextureDisplacementPath);
                File.Copy(tempTextureDisplacementPath, Application.persistentDataPath + path, true);
                itemModel.textureDisplacementPath = path;
            }

            if (tempTextureSpecularPath != null)
            {
                string path = localAssetPath + "/" + Path.GetFileName(tempTextureSpecularPath);
                File.Copy(tempTextureSpecularPath, Application.persistentDataPath + path, true);
                itemModel.textureSpecularPath = path;
            }

            if (tempTextureOcclusionPath != null)
            {
                string path = localAssetPath + "/" + Path.GetFileName(tempTextureOcclusionPath);
                File.Copy(tempTextureOcclusionPath, Application.persistentDataPath + path, true);
                itemModel.textureOcclusionPath = path;
            }

            cmd_File.SerializeObject(Application.persistentDataPath + localAssetPath, itemFileName, itemModel);
            catalogueManager._CatalogueItemDetails.Add(itemDetail);
            catalogueManager.ResyncCatalogueDatabaseAsync();

            using (DropboxClient dbx = new DropboxClient(AvoEx.AesEncryptor.DecryptString(PlayerPrefs.GetString("Token"))))
            {
                if (tempModelPath != null)
                {
                    await cmd_Dropbox.UploadFileAsync(dbx, tempModelPath, itemDetail.CatalogueItemDirectory, Path.GetFileName(tempModelPath));
                }

                if (tempTextureColourPath != null)
                {
                    await cmd_Dropbox.UploadFileAsync(dbx, tempTextureColourPath, itemDetail.CatalogueItemDirectory, Path.GetFileName(tempTextureColourPath));
                }

                if (tempTextureNormalPath != null)
                {
                    await cmd_Dropbox.UploadFileAsync(dbx, tempTextureNormalPath, itemDetail.CatalogueItemDirectory, Path.GetFileName(tempTextureNormalPath));
                }

                if (tempTextureDisplacementPath != null)
                {
                    await cmd_Dropbox.UploadFileAsync(dbx, tempTextureDisplacementPath, itemDetail.CatalogueItemDirectory, Path.GetFileName(tempTextureDisplacementPath));
                }

                if (tempTextureSpecularPath != null)
                {
                    await cmd_Dropbox.UploadFileAsync(dbx, tempTextureSpecularPath, itemDetail.CatalogueItemDirectory, Path.GetFileName(tempTextureSpecularPath));
                }

                if (tempTextureOcclusionPath != null)
                {
                    await cmd_Dropbox.UploadFileAsync(dbx, tempTextureOcclusionPath, itemDetail.CatalogueItemDirectory, Path.GetFileName(tempTextureOcclusionPath));
                }

                await cmd_Dropbox.UploadObjAsync(dbx, itemModel, itemDetail.CatalogueItemDirectory, itemFileName);

                Debug.Log("LOG:" + DateTime.Now.ToString() + " - " + itemModel.friendlyName + " Created");

                MessageBox.Show("Boom Shaka Laka", "Asset Now Added", () =>
                {
                    GetComponent <PopupItemController>().HideDialog(0);
                });
            }

            GameObject go = Instantiate(Resources.Load(thumnailPrefabName) as GameObject, GameObject.FindWithTag("ThumbnailGrid").transform);
            go.SendMessage("ObjectParse", itemModel);
        }
        else
        {
            foreach (CatalogueItemDetail itemDetail in catalogueManager._CatalogueItemDetails)
            {
                if (itemDetail.ItemID == itemModel.itemID)
                {
                    itemDetail.DateModified    = DateTime.Now.ToString();
                    itemModel.modifiedDate     = DateTime.Now.ToString();
                    itemDetail.FriendlyName    = assetFriendlyName.text;
                    itemModel.friendlyName     = assetFriendlyName.text;
                    itemModel.tags             = tagsInputField.text.Split('#');
                    itemModel.favourite        = favouritesToggle.isOn;
                    itemModel.itemTypeCategory = categoryDropDown.value;
                    itemModel.savePos          = new CustomVector3(modelViewParent.transform.localPosition);
                    itemModel.saveRot          = new CustomVector3(modelViewParent.transform.localEulerAngles);
                    itemModel.saveScale        = new CustomVector3(modelViewParent.transform.localScale);
                    itemThumbnail.lable.text   = assetFriendlyName.text;
                    itemThumbnail.ObjectParse(itemModel);
                    catalogueManager.ResyncCatalogueDatabaseAsync();
                    using (DropboxClient dropboxClient = new DropboxClient(AvoEx.AesEncryptor.DecryptString(PlayerPrefs.GetString("Token"))))
                    {
                        await cmd_Dropbox.UploadObjAsync(dropboxClient, itemModel, itemDetail.CatalogueItemDirectory, itemFileName);

                        Debug.Log("LOG:" + DateTime.Now.ToString() + " - " + itemModel.friendlyName + " Updated");
                        MessageBox.Show("Boom Shaka Laka", "Asset Now Updated", () =>
                        {
                            GetComponent <PopupItemController>().HideDialog(0);
                        });
                        string localPath = Application.persistentDataPath + "/" + catalogueManager._DatabaseUID + itemDetail.CatalogueItemDirectory + "/";
                        cmd_File.SerializeObject(localPath, itemFileName, itemModel);
                        return;
                    }
                }
            }
        }
        loadingPanelUI.gameObject.SetActive(false);
        this.GetComponent <Button>().interactable = true;
    }