internal IEnumerator DoImport(Item item, Skin skin)
        {
            ImportVersion2 importVersion2 = null;

            if (importVersion2.Bundle != null)
            {
                importVersion2.Bundle.Unload(true);
                importVersion2.Bundle = null;
            }
            WorkshopItemEditor.Loading(true, "Downloading..", "", 0f);
            if (!item.IsInstalled)
            {
                item.Download(true);
                while (item.IsDownloading)
                {
                    yield return(null);
                }
                while (!item.IsInstalled)
                {
                    yield return(null);
                }
            }
            string str = string.Concat(item.Directory, "/bundle");

            if (!File.Exists(str))
            {
                UnityEngine.Debug.LogWarning("No Bundle Found!");
                Os.OpenFolder(item.Directory);
                yield return(new WaitForSeconds(5f));
            }
            else
            {
                yield return(importVersion2.StartCoroutine(importVersion2.LoadItem(item.Directory, str, skin)));
            }
        }
示例#2
0
 public void OpenFileLocation()
 {
     if (this.IsDefault)
     {
         return;
     }
     Os.OpenFolder(this.Filename);
 }
示例#3
0
        private async Task ExportToFolder(string folder, bool OpenFolder)
        {
            Rust.Workshop.Skin.Manifest manifest = new Rust.Workshop.Skin.Manifest()
            {
                ItemType    = this.Skinnable.Name,
                Version     = 3,
                Groups      = new Rust.Workshop.Skin.Manifest.Group[(int)this.Skin.Materials.Length],
                PublishDate = DateTime.UtcNow,
                AuthorId    = SteamClient.SteamId
            };
            Rust.Workshop.Skin.Manifest group = manifest;
            for (int i = 0; i < (int)this.Skin.Materials.Length; i++)
            {
                group.Groups[i] = new Rust.Workshop.Skin.Manifest.Group();
                await this.ExportTexture(group.Groups[i].Textures, folder, i, "_MainTex", this.Skin.Materials[i], this.Skin.DefaultMaterials[i], false);

                await this.ExportTexture(group.Groups[i].Textures, folder, i, "_OcclusionMap", this.Skin.Materials[i], this.Skin.DefaultMaterials[i], false);

                await this.ExportTexture(group.Groups[i].Textures, folder, i, "_SpecGlossMap", this.Skin.Materials[i], this.Skin.DefaultMaterials[i], false);

                await this.ExportTexture(group.Groups[i].Textures, folder, i, "_BumpMap", this.Skin.Materials[i], this.Skin.DefaultMaterials[i], true);

                await this.ExportTexture(group.Groups[i].Textures, folder, i, "_EmissionMap", this.Skin.Materials[i], this.Skin.DefaultMaterials[i], false);

                group.Groups[i].Floats.Add("_Cutoff", this.Skin.Materials[i].GetFloat("_Cutoff"));
                group.Groups[i].Floats.Add("_BumpScale", this.Skin.Materials[i].GetFloat("_BumpScale"));
                group.Groups[i].Floats.Add("_Glossiness", this.Skin.Materials[i].GetFloat("_Glossiness"));
                group.Groups[i].Floats.Add("_OcclusionStrength", this.Skin.Materials[i].GetFloat("_OcclusionStrength"));
                if (this.Skin.Materials[i].shader.name.Contains("Cloth"))
                {
                    group.Groups[i].Floats.Add("_MicrofiberFuzzIntensity", this.Skin.Materials[i].GetFloat("_MicrofiberFuzzIntensity"));
                    group.Groups[i].Floats.Add("_MicrofiberFuzzScatter", this.Skin.Materials[i].GetFloat("_MicrofiberFuzzScatter"));
                    group.Groups[i].Floats.Add("_MicrofiberFuzzOcclusion", this.Skin.Materials[i].GetFloat("_MicrofiberFuzzOcclusion"));
                }
                group.Groups[i].Colors.Add("_Color", new Rust.Workshop.Skin.Manifest.ColorEntry(this.Skin.Materials[i].GetColor("_Color")));
                group.Groups[i].Colors.Add("_SpecColor", new Rust.Workshop.Skin.Manifest.ColorEntry(this.Skin.Materials[i].GetColor("_SpecColor")));
                group.Groups[i].Colors.Add("_EmissionColor", new Rust.Workshop.Skin.Manifest.ColorEntry(this.Skin.Materials[i].GetColor("_EmissionColor")));
                if (this.Skin.Materials[i].shader.name.Contains("Cloth"))
                {
                    group.Groups[i].Colors.Add("_MicrofiberFuzzColor", new Rust.Workshop.Skin.Manifest.ColorEntry(this.Skin.Materials[i].GetColor("_MicrofiberFuzzColor")));
                }
            }
            PropRenderer.RenderScreenshot(this.Prefab, string.Concat(folder, "/icon.png"), 512, 512, 4);
            this.CreateWorkshopIcon(folder);
            string str = JsonConvert.SerializeObject(group, Formatting.Indented);

            File.WriteAllText(string.Concat(folder, "/manifest.txt"), str);
            if (OpenFolder)
            {
                Os.OpenFolder(folder);
            }
        }
        public IEnumerator LoadItem(string Folder, string BundleName, Skin skin)
        {
            ImportVersion2           importVersion2           = null;
            AssetBundleCreateRequest assetBundleCreateRequest = AssetBundle.LoadFromFileAsync(BundleName);

            yield return(new WaitUntil(() => assetBundleCreateRequest.isDone));

            if (assetBundleCreateRequest.assetBundle == null)
            {
                UnityEngine.Debug.LogWarning("Asset bundle is null!");
                yield break;
            }
            importVersion2.Bundle = assetBundleCreateRequest.assetBundle;
            WorkshopSkinBase workshopSkinBase = assetBundleCreateRequest.assetBundle.LoadAsset <WorkshopSkinBase>("Meta.asset");

            if (workshopSkinBase == null)
            {
                string[] allAssetNames = assetBundleCreateRequest.assetBundle.GetAllAssetNames();
                for (int i = 0; i < (int)allAssetNames.Length; i++)
                {
                    string str = allAssetNames[i];
                    workshopSkinBase = assetBundleCreateRequest.assetBundle.LoadAsset <WorkshopSkinBase>(str);
                    if (workshopSkinBase != null)
                    {
                        break;
                    }
                }
            }
            if (workshopSkinBase == null)
            {
                Os.OpenFolder(Folder);
                yield return(new WaitForSeconds(5f));

                yield break;
            }
            yield return(importVersion2.StartCoroutine(importVersion2.ProcessMaterial(0, workshopSkinBase.skinMaterial0, skin)));

            yield return(importVersion2.StartCoroutine(importVersion2.ProcessMaterial(1, workshopSkinBase.skinMaterial1, skin)));

            yield return(importVersion2.StartCoroutine(importVersion2.ProcessMaterial(2, workshopSkinBase.skinMaterial2, skin)));

            yield return(importVersion2.StartCoroutine(importVersion2.ProcessMaterial(3, workshopSkinBase.skinMaterial3, skin)));
        }
示例#5
0
 internal IEnumerator DoImport(Item item, Skin skin)
 {
     WorkshopItemEditor.Loading(true, "Downloading..", "", 0f);
     if (!item.IsInstalled)
     {
         item.Download(true);
         while (item.IsDownloading)
         {
             yield return(null);
         }
         WorkshopItemEditor.Loading(true, "Installing..", "", 0f);
         while (!item.IsInstalled)
         {
             yield return(null);
         }
     }
     Os.OpenFolder(item.Directory);
     WorkshopItemEditor.Loading(true, "Unable To Import", "", 0f);
     yield return(new WaitForSeconds(5f));
 }