Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public static class BasisAssetBundlePipeline
// Define static delegates
public delegate void BeforeBuildGameobjectHandler(GameObject prefab, BasisAssetBundleObject settings);
public delegate void BeforeBuildSceneHandler(Scene prefab, BasisAssetBundleObject settings);
public delegate string PrepareBuildSceneAssetPathHandler(Scene scene, BasisAssetBundleObject settings);
public delegate void AfterBuildHandler(string assetBundleName);
public delegate void BuildErrorHandler(Exception ex, GameObject prefab, bool wasModified, string temporaryStorage);

Expand All @@ -22,6 +23,7 @@ public static class BasisAssetBundlePipeline
public static BuildErrorHandler OnBuildErrorPrefab;

public static BeforeBuildSceneHandler OnBeforeBuildScene;
public static PrepareBuildSceneAssetPathHandler OnPrepareBuildSceneAssetPath;
public static AfterBuildHandler OnAfterBuildScene;
public static BuildErrorHandler OnBuildErrorScene;

Expand Down Expand Up @@ -78,7 +80,16 @@ public static class BasisAssetBundlePipeline
}

OnBeforeBuildScene?.Invoke(scene, settings);
assetPath = TemporaryStorageHandler.SaveScene(scene, settings, out uniqueID);
string preparedSceneAssetPath = OnPrepareBuildSceneAssetPath?.Invoke(scene, settings);
if (!string.IsNullOrEmpty(preparedSceneAssetPath))
{
assetPath = preparedSceneAssetPath;
uniqueID = Path.GetFileNameWithoutExtension(preparedSceneAssetPath);
}
else
{
assetPath = TemporaryStorageHandler.SaveScene(scene, settings, out uniqueID);
}
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,15 @@ public static string SavePrefabToTemporaryStorage(GameObject prefab, BasisAssetB
}
public static string SaveScene(Scene sceneToCopy, BasisAssetBundleObject settings, out string uniqueID)
{
// Generate a unique ID
EnsureDirectoryExists(settings.TemporaryStorage);
uniqueID = BasisGenerateUniqueID.GenerateUniqueID();
string scenePath = Path.Combine(settings.TemporaryStorage, $"{uniqueID}.unity");

// Attempt to save the scene
if (EditorSceneManager.SaveScene(sceneToCopy))
if (EditorSceneManager.SaveScene(sceneToCopy, scenePath, true))
{
// Return the path it was saved to
return sceneToCopy.path;
return scenePath;
}

// If save fails, clear the ID and return null
uniqueID = null;
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,4 +193,5 @@ MonoBehaviour:
- Cilbox.CilboxAvatarBasis
- Basis.Shims.BasisAvatarShim
- Basis.Shims.BasisNetworkShim
- Basis.Shims.CilboxUnityEventShim
- Cilbox.CilboxProxy
Original file line number Diff line number Diff line change
Expand Up @@ -358,3 +358,4 @@ MonoBehaviour:
- UnityEngine.Rendering.Universal.UniversalAdditionalLightData
- Basis.Scripts.BasisSdk.Interactions.BasisInteractableButton
- GatorDragonGames.JigglePhysics.JiggleRig
- Basis.Shims.CilboxUnityEventShim
Original file line number Diff line number Diff line change
Expand Up @@ -396,3 +396,4 @@ MonoBehaviour:
- Basis.Shims.VideoPlayerShim
- Basis.Shims.BasisNetworkShim
- Basis.Shims.BasisInteractableShim
- Basis.Shims.CilboxUnityEventShim
Loading
Loading