Check Networkobjects when building sites

This commit is contained in:
Pascal Serrarens 2022-02-25 14:05:31 +01:00
parent a75c4b38ec
commit 228b5925b7
2 changed files with 24 additions and 5 deletions

View File

@ -81,6 +81,8 @@ namespace Passer {
bool hasChanged = false; bool hasChanged = false;
for (int i = 0; i < assetbundles.Length; i++) { for (int i = 0; i < assetbundles.Length; i++) {
PrepareSite(assetbundles[i]);
Sites.SiteBuild siteBuild = siteBuilds.list.Find(sb => sb.siteName == assetbundles[i]); Sites.SiteBuild siteBuild = siteBuilds.list.Find(sb => sb.siteName == assetbundles[i]);
if (siteBuild == null) { if (siteBuild == null) {
siteBuild = new Sites.SiteBuild() { siteBuild = new Sites.SiteBuild() {
@ -95,6 +97,21 @@ namespace Passer {
AssetDatabase.SaveAssets(); 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() { private static void StartBuildToFolder() {
string savePath = EditorUtility.SaveFolderPanel("Target folder", "", ""); string savePath = EditorUtility.SaveFolderPanel("Target folder", "", "");
BuildSites(savePath); BuildSites(savePath);

View File

@ -10,25 +10,27 @@ using UnityEditor.Experimental.SceneManagement;
namespace Passer { namespace Passer {
[InitializeOnLoad] [InitializeOnLoad]
public class NetworkObject_Check : IPreprocessBuildWithReport { public class NetworkObject_Check {
public int callbackOrder => 0; public int callbackOrder => 0;
public void OnPreprocessBuild(UnityEditor.Build.Reporting.BuildReport report) { public void OnPreprocessBuild(UnityEditor.Build.Reporting.BuildReport report) {
NetworkObject[] networkObjects = Object.FindObjectsOfType<NetworkObject>(); CheckNetworkObjects();
foreach (NetworkObject networkObject in networkObjects)
CheckForNetworkObject(networkObject.gameObject);
} }
/// <summary>Check if this gameObject has the right network transform code</summary> /// <summary>Check if this gameObject has the right network transform code</summary>
static NetworkObject_Check() { static NetworkObject_Check() {
CheckNetworkObjects();
}
public static void CheckNetworkObjects() {
NetworkObject[] networkObjects = Object.FindObjectsOfType<NetworkObject>(); NetworkObject[] networkObjects = Object.FindObjectsOfType<NetworkObject>();
foreach (NetworkObject networkObject in networkObjects) foreach (NetworkObject networkObject in networkObjects)
CheckForNetworkObject(networkObject.gameObject); CheckForNetworkObject(networkObject.gameObject);
} }
public static void CheckForNetworkObject(GameObject gameObject) { public static void CheckForNetworkObject(GameObject gameObject) {
CheckNetworkObjectNone(gameObject); CheckNetworkObjectNone(gameObject);
CheckNetworkObjectUnet(gameObject); CheckNetworkObjectUnet(gameObject);