diff --git a/Editor/Sites/SiteBuilder.cs b/Editor/Sites/SiteBuilder.cs index d5c8466..fd62467 100644 --- a/Editor/Sites/SiteBuilder.cs +++ b/Editor/Sites/SiteBuilder.cs @@ -81,6 +81,8 @@ namespace Passer { bool hasChanged = false; for (int i = 0; i < assetbundles.Length; i++) { + PrepareSite(assetbundles[i]); + Sites.SiteBuild siteBuild = siteBuilds.list.Find(sb => sb.siteName == assetbundles[i]); if (siteBuild == null) { siteBuild = new Sites.SiteBuild() { @@ -95,6 +97,21 @@ namespace Passer { AssetDatabase.SaveAssets(); } + private static void PrepareSite(string sitename) { + string[] paths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(sitename, sitename); + if (paths.Length == 0) + return; + + Scene scene = UnityEditor.SceneManagement.EditorSceneManager.OpenScene(paths[0]); + if (scene == null) { + Debug.Log("Could not load " + sitename); + return; + } + Debug.Log("Prepare " + sitename); + NetworkObject_Check.CheckNetworkObjects(); + UnityEditor.SceneManagement.EditorSceneManager.SaveScene(UnityEngine.SceneManagement.SceneManager.GetActiveScene()); + } + private static void StartBuildToFolder() { string savePath = EditorUtility.SaveFolderPanel("Target folder", "", ""); BuildSites(savePath); diff --git a/Editor/Tools/Networking/NetworkObject_Editor.cs b/Editor/Tools/Networking/NetworkObject_Editor.cs index b3acbc9..3714b37 100644 --- a/Editor/Tools/Networking/NetworkObject_Editor.cs +++ b/Editor/Tools/Networking/NetworkObject_Editor.cs @@ -10,25 +10,27 @@ using UnityEditor.Experimental.SceneManagement; namespace Passer { [InitializeOnLoad] - public class NetworkObject_Check : IPreprocessBuildWithReport { + public class NetworkObject_Check { public int callbackOrder => 0; public void OnPreprocessBuild(UnityEditor.Build.Reporting.BuildReport report) { - NetworkObject[] networkObjects = Object.FindObjectsOfType(); - - foreach (NetworkObject networkObject in networkObjects) - CheckForNetworkObject(networkObject.gameObject); + CheckNetworkObjects(); } /// Check if this gameObject has the right network transform code static NetworkObject_Check() { + CheckNetworkObjects(); + } + + public static void CheckNetworkObjects() { NetworkObject[] networkObjects = Object.FindObjectsOfType(); foreach (NetworkObject networkObject in networkObjects) CheckForNetworkObject(networkObject.gameObject); } + public static void CheckForNetworkObject(GameObject gameObject) { CheckNetworkObjectNone(gameObject); CheckNetworkObjectUnet(gameObject);