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))); } }
public void OpenFileLocation() { if (this.IsDefault) { return; } Os.OpenFolder(this.Filename); }
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))); }
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)); }