diff --git a/Runtime/Cesium3DTileset.cs b/Runtime/Cesium3DTileset.cs index d71a8aea..93515910 100644 --- a/Runtime/Cesium3DTileset.cs +++ b/Runtime/Cesium3DTileset.cs @@ -41,7 +41,7 @@ public enum CesiumDataSource [ReinteropNativeImplementation("CesiumForUnityNative::Cesium3DTilesetImpl", "Cesium3DTilesetImpl.h")] [AddComponentMenu("Cesium/Cesium 3D Tileset")] [IconAttribute("Packages/com.cesium.unity/Editor/Resources/Cesium-24x24.png")] - public partial class Cesium3DTileset : MonoBehaviour, IDisposable + public partial class Cesium3DTileset : MonoBehaviour, IDisposable, ISerializationCallbackReceiver { public void Dispose() { @@ -186,7 +186,20 @@ public CesiumIonServer ionServer { get { - if (this._ionServer == null) this._ionServer = CesiumIonServer.currentForNewObjects; + if (this._ionServer == null) + { +#if UNITY_EDITOR + // See OnAfterDeserialize. + if (this._useDefaultServer) + this._ionServer = CesiumIonServer.defaultServer; + else + this._ionServer = CesiumIonServer.currentForNewObjects; + + this._useDefaultServer = false; +#else + this._ionServer = CesiumIonServer.currentForNewObjects; +#endif + } return this._ionServer; } set @@ -698,5 +711,22 @@ public bool createPhysicsMeshes /// Zoom the Editor camera to this tileset. This method does nothing outside of the Editor. /// public partial void FocusTileset(); + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { +#if UNITY_EDITOR + // For backward compatibility, tilesets loaded without a server should adopt the default one. + if (this._ionServer == null) + this._useDefaultServer = true; +#endif + } + +#if UNITY_EDITOR + private bool _useDefaultServer = false; +#endif } } diff --git a/Runtime/CesiumIonRasterOverlay.cs b/Runtime/CesiumIonRasterOverlay.cs index 60cb01f3..544d9f92 100644 --- a/Runtime/CesiumIonRasterOverlay.cs +++ b/Runtime/CesiumIonRasterOverlay.cs @@ -9,7 +9,7 @@ namespace CesiumForUnity [ReinteropNativeImplementation("CesiumForUnityNative::CesiumIonRasterOverlayImpl", "CesiumIonRasterOverlayImpl.h")] [AddComponentMenu("Cesium/Cesium Ion Raster Overlay")] [IconAttribute("Packages/com.cesium.unity/Editor/Resources/Cesium-24x24.png")] - public partial class CesiumIonRasterOverlay : CesiumRasterOverlay + public partial class CesiumIonRasterOverlay : CesiumRasterOverlay, ISerializationCallbackReceiver { [SerializeField] private long _ionAssetID = 0; @@ -53,7 +53,20 @@ public CesiumIonServer ionServer { get { - if (this._ionServer == null) this._ionServer = CesiumIonServer.currentForNewObjects; + if (this._ionServer == null) + { +#if UNITY_EDITOR + // See OnAfterDeserialize. + if (this._useDefaultServer) + this._ionServer = CesiumIonServer.defaultServer; + else + this._ionServer = CesiumIonServer.currentForNewObjects; + + this._useDefaultServer = false; +#else + this._ionServer = CesiumIonServer.currentForNewObjects; +#endif + } return this._ionServer; } set @@ -68,5 +81,22 @@ public CesiumIonServer ionServer protected override partial void AddToTileset(Cesium3DTileset tileset); /// protected override partial void RemoveFromTileset(Cesium3DTileset tileset); + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { +#if UNITY_EDITOR + // For backward compatibility, tilesets loaded without a server should adopt the default one. + if (this._ionServer == null) + this._useDefaultServer = true; +#endif + } + +#if UNITY_EDITOR + private bool _useDefaultServer = false; +#endif } }