private void OnGUI() { string modName = typeof(ModEntryPoint).Assembly.GetName().Name; GUILayout.Label("Build Settings", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Mod Name", modName); if (GUILayout.Button("Change")) { var obj = AssetDatabase.LoadAssetAtPath <Object>("Assets/Scripts/MyMod.asmdef"); Selection.activeObject = obj; EditorGUIUtility.PingObject(obj); } EditorGUILayout.EndHorizontal(); if (GUILayout.Button("BUILD")) { if (modName.Length > 0) { if (Directory.Exists(PATH_BUILD_BUNDLE)) { Directory.Delete(PATH_BUILD_BUNDLE, true); } if (Directory.Exists(PATH_BUILD_BUNDLE)) { throw new System.Exception("Temp/ModBuild exist"); } Directory.CreateDirectory(PATH_BUILD_BUNDLE); //HACK for unique id AssetImporter.GetAtPath("Assets/Resources").SetAssetBundleNameAndVariant(modName + "_resources", ""); AssetDatabase.Refresh(); BuildPipeline.BuildAssetBundles(PATH_BUILD_BUNDLE, BuildAssetBundleOptions.None /*BuildAssetBundleOptions.DisableWriteTypeTree*/, BuildTarget.StandaloneWindows64); //copy dll string modsFolder = Application.persistentDataPath + "/../../AtomTeam/Atom/Mods"; if (!Directory.Exists(modsFolder)) { Directory.CreateDirectory(modsFolder); } Copy("Library/ScriptAssemblies/" + modName + ".dll", modsFolder + "/" + modName + ".dll"); //copy res string modResFolder = modsFolder; string dataAsset = Application.dataPath; int index = dataAsset.ToLower().IndexOf(PATH_TO_ASSETS); dataAsset = dataAsset.Remove(index, PATH_TO_ASSETS.Length); var resPath = dataAsset + "/Temp/ModBuild/" + modName + "_resources"; if (File.Exists(resPath)) { Copy(resPath, modResFolder + "/" + modName + "_resources"); } Copy("Library/ScriptAssemblies/" + modName + ".dll", "Temp/ModBuild/" + modName + ".dll"); EditorUtility.RevealInFinder(modsFolder + "/" + modName + ".dll"); } } GUILayout.Space(50); GUILayout.Label("Publish Settings", EditorStyles.boldLabel); if (steam.IsSign()) { EditorGUILayout.LabelField("App Id", steam.GetAppId().ToString()); if (_modIndex < 0) { for (int i = 0; i != _modList.Count; ++i) { if (GUILayout.Button("Open Mod Item(" + _modList[i].m_rgchTitle + ")")) { _modIndex = i; } } if (GUILayout.Button("Create New Mod Item")) { SteamAPICall_t handle = SteamUGC.CreateItem(SteamUtils.GetAppID(), EWorkshopFileType.k_EWorkshopFileTypeCommunity); OnCreateItemResultCallResult.Set(handle); } } else { SteamUGCDetails_t details = _modList[_modIndex]; //copy temp EditorGUILayout.LabelField("Mod Id", details.m_nPublishedFileId.ToString()); details.m_rgchTitle = EditorGUILayout.TextField("Title", details.m_rgchTitle); details.m_rgchDescription = EditorGUILayout.TextField("Description", details.m_rgchDescription); details.m_eVisibility = (ERemoteStoragePublishedFileVisibility)EditorGUILayout.EnumPopup(details.m_eVisibility); _modList[_modIndex] = details; //assign if (GUILayout.Button("Upload details")) { var handle = SteamUGC.StartItemUpdate(SteamUtils.GetAppID(), details.m_nPublishedFileId); SteamUGC.SetItemTitle(handle, details.m_rgchTitle); SteamUGC.SetItemDescription(handle, details.m_rgchDescription); SteamUGC.SetItemVisibility(handle, details.m_eVisibility); SteamAPICall_t callHandle = SteamUGC.SubmitItemUpdate(handle, ""); OnSubmitItemUpdateResultCallResult.Set(callHandle); } GUILayout.Space(20); EditorGUILayout.HelpBox("Select and upload preview image to Steam", MessageType.Info); if (GUILayout.Button("Upload preview image")) { var handle = SteamUGC.StartItemUpdate(SteamUtils.GetAppID(), details.m_nPublishedFileId); SteamUGC.SetItemPreview(handle, EditorUtility.OpenFilePanel("Preview mod image", "", "png")); SteamAPICall_t callHandle = SteamUGC.SubmitItemUpdate(handle, ""); OnSubmitItemUpdateResultCallResult.Set(callHandle); } GUILayout.Space(20); EditorGUILayout.HelpBox("Upload pre built mod content to Steam", MessageType.Info); if (GUILayout.Button("Upload content")) { var handle = SteamUGC.StartItemUpdate(SteamUtils.GetAppID(), details.m_nPublishedFileId); string dataAsset = Application.dataPath; int index = dataAsset.ToLower().IndexOf(PATH_TO_ASSETS); dataAsset = dataAsset.Remove(index, PATH_TO_ASSETS.Length); string modsFolder = dataAsset + "/" + PATH_BUILD_BUNDLE; SteamUGC.SetItemContent(handle, modsFolder); SteamAPICall_t callHandle = SteamUGC.SubmitItemUpdate(handle, ""); OnSubmitItemUpdateResultCallResult.Set(callHandle); } } } else { EditorGUILayout.HelpBox("Attach to Steam account", MessageType.Warning); if (GUILayout.Button("Attach")) { RequestInfo(); } } }