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;
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);

View File

@ -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<NetworkObject>();
foreach (NetworkObject networkObject in networkObjects)
CheckForNetworkObject(networkObject.gameObject);
CheckNetworkObjects();
}
/// <summary>Check if this gameObject has the right network transform code</summary>
static NetworkObject_Check() {
CheckNetworkObjects();
}
public static void CheckNetworkObjects() {
NetworkObject[] networkObjects = Object.FindObjectsOfType<NetworkObject>();
foreach (NetworkObject networkObject in networkObjects)
CheckForNetworkObject(networkObject.gameObject);
}
public static void CheckForNetworkObject(GameObject gameObject) {
CheckNetworkObjectNone(gameObject);
CheckNetworkObjectUnet(gameObject);