diff --git a/CHANGES.md b/CHANGES.md index cf005b9f..f851665e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # Change Log +## v1.?.? - 2024-11-01 + +##### Fixes :wrench: + +- Added restrictions to `CesiumRuntime.asmdef` to prevent the plugin from attempting to load on platforms not supported by Cesium Native. + ## v1.13.0 - 2024-10-01 ##### Additions :tada: diff --git a/Runtime/CesiumRuntime.asmdef b/Runtime/CesiumRuntime.asmdef index 8d477cff..81e06478 100644 --- a/Runtime/CesiumRuntime.asmdef +++ b/Runtime/CesiumRuntime.asmdef @@ -6,7 +6,15 @@ "Unity.Mathematics", "Unity.Splines" ], - "includePlatforms": [], + "includePlatforms": [ + "Android", + "Editor", + "iOS", + "macOSStandalone", + "WSA", + "WindowsStandalone32", + "WindowsStandalone64" + ], "excludePlatforms": [], "allowUnsafeCode": true, "overrideReferences": false, diff --git a/native~/Runtime/src/TestGltfModelImpl.cpp b/native~/Runtime/src/TestGltfModelImpl.cpp index d6ffb331..3f0aa896 100644 --- a/native~/Runtime/src/TestGltfModelImpl.cpp +++ b/native~/Runtime/src/TestGltfModelImpl.cpp @@ -87,14 +87,15 @@ TestGltfModelImpl::AddFeatureIdTexture( // Copy feature IDs to texture. CesiumGltf::Image& image = this->_nativeModel.images.emplace_back(); - image.cesium.width = 2; - image.cesium.height = 2; - image.cesium.bytesPerChannel = 1; - image.cesium.channels = 2; - image.cesium.pixelData.resize(featureIdsLength * sizeof(std::uint16_t)); + image.pCesium.emplace(); + image.pCesium->width = 2; + image.pCesium->height = 2; + image.pCesium->bytesPerChannel = 1; + image.pCesium->channels = 2; + image.pCesium->pixelData.resize(featureIdsLength * sizeof(std::uint16_t)); std::uint16_t* pFeatureId = - reinterpret_cast(image.cesium.pixelData.data()); + reinterpret_cast(image.pCesium->pixelData.data()); for (int32_t i = 0; i < featureIdsLength; i++) { *pFeatureId = featureIds[i]; pFeatureId++; diff --git a/native~/Runtime/src/TextureLoader.cpp b/native~/Runtime/src/TextureLoader.cpp index 17ba73a2..4e5b1a6a 100644 --- a/native~/Runtime/src/TextureLoader.cpp +++ b/native~/Runtime/src/TextureLoader.cpp @@ -21,7 +21,7 @@ namespace CesiumForUnityNative { namespace { UnityEngine::TextureFormat -getCompressedPixelFormat(const CesiumGltf::ImageCesium& image) { +getCompressedPixelFormat(const CesiumGltf::ImageAsset& image) { switch (image.compressedPixelFormat) { case GpuCompressedPixelFormat::ETC1_RGB: return UnityEngine::TextureFormat::ETC_RGB4; @@ -55,7 +55,7 @@ getCompressedPixelFormat(const CesiumGltf::ImageCesium& image) { } UnityEngine::TextureFormat -getUncompressedPixelFormat(const CesiumGltf::ImageCesium& image) { +getUncompressedPixelFormat(const CesiumGltf::ImageAsset& image) { switch (image.channels) { case 1: return UnityEngine::TextureFormat::R8; @@ -72,7 +72,7 @@ getUncompressedPixelFormat(const CesiumGltf::ImageCesium& image) { } // namespace UnityEngine::Texture -TextureLoader::loadTexture(const CesiumGltf::ImageCesium& image, bool sRGB) { +TextureLoader::loadTexture(const CesiumGltf::ImageAsset& image, bool sRGB) { CESIUM_TRACE("TextureLoader::loadTexture"); std::int32_t mipCount = image.mipPositions.empty() ? 1 : std::int32_t(image.mipPositions.size()); @@ -107,7 +107,7 @@ TextureLoader::loadTexture(const CesiumGltf::ImageCesium& image, bool sRGB) { std::uint8_t* pWritePosition = pixels; const std::byte* pReadBuffer = image.pixelData.data(); - for (const ImageCesiumMipPosition& mip : image.mipPositions) { + for (const ImageAssetMipPosition& mip : image.mipPositions) { size_t start = mip.byteOffset; size_t end = mip.byteOffset + mip.byteSize; if (start >= textureLength || end > textureLength) @@ -144,7 +144,7 @@ UnityEngine::Texture TextureLoader::loadTexture( return UnityEngine::Texture(nullptr); } - const ImageCesium& imageCesium = pImage->cesium; + const ImageAsset& imageCesium = *pImage->pCesium; UnityEngine::Texture unityTexture = loadTexture(imageCesium, sRGB); const Sampler* pSampler = Model::getSafe(&model.samplers, texture.sampler); diff --git a/native~/Runtime/src/TextureLoader.h b/native~/Runtime/src/TextureLoader.h index 7c20b8fe..0cec2310 100644 --- a/native~/Runtime/src/TextureLoader.h +++ b/native~/Runtime/src/TextureLoader.h @@ -5,7 +5,7 @@ namespace CesiumGltf { struct Model; struct Texture; -struct ImageCesium; +struct ImageAsset; } // namespace CesiumGltf namespace DotNet::UnityEngine { @@ -17,7 +17,7 @@ namespace CesiumForUnityNative { class TextureLoader { public: static ::DotNet::UnityEngine::Texture - loadTexture(const CesiumGltf::ImageCesium& image, bool sRGB); + loadTexture(const CesiumGltf::ImageAsset& image, bool sRGB); static ::DotNet::UnityEngine::Texture loadTexture( const CesiumGltf::Model& model, diff --git a/native~/Runtime/src/UnityPrepareRendererResources.cpp b/native~/Runtime/src/UnityPrepareRendererResources.cpp index 91b4821d..bb6e39f4 100644 --- a/native~/Runtime/src/UnityPrepareRendererResources.cpp +++ b/native~/Runtime/src/UnityPrepareRendererResources.cpp @@ -274,7 +274,7 @@ void generateMipMaps( case CesiumGltf::Sampler::MinFilter::LINEAR_MIPMAP_NEAREST: case CesiumGltf::Sampler::MinFilter::NEAREST_MIPMAP_LINEAR: case CesiumGltf::Sampler::MinFilter::NEAREST_MIPMAP_NEAREST: - CesiumGltfReader::GltfReader::generateMipMaps(pImage->cesium); + CesiumGltfReader::GltfReader::generateMipMaps(*pImage->pCesium); } } } @@ -1722,7 +1722,7 @@ void UnityPrepareRendererResources::free( } void* UnityPrepareRendererResources::prepareRasterInLoadThread( - CesiumGltf::ImageCesium& image, + CesiumGltf::ImageAsset& image, const std::any& rendererOptions) { CesiumGltfReader::GltfReader::generateMipMaps(image); return nullptr; @@ -1732,7 +1732,7 @@ void* UnityPrepareRendererResources::prepareRasterInMainThread( CesiumRasterOverlays::RasterOverlayTile& rasterTile, void* pLoadThreadResult) { auto pTexture = std::make_unique( - TextureLoader::loadTexture(rasterTile.getImage(), true)); + TextureLoader::loadTexture(*rasterTile.getImage(), true)); pTexture->wrapMode(UnityEngine::TextureWrapMode::Clamp); pTexture->filterMode(UnityEngine::FilterMode::Trilinear); pTexture->anisoLevel(16); diff --git a/native~/Runtime/src/UnityPrepareRendererResources.h b/native~/Runtime/src/UnityPrepareRendererResources.h index d95c80c1..170cd514 100644 --- a/native~/Runtime/src/UnityPrepareRendererResources.h +++ b/native~/Runtime/src/UnityPrepareRendererResources.h @@ -84,7 +84,7 @@ class UnityPrepareRendererResources void* pMainThreadResult) noexcept override; virtual void* prepareRasterInLoadThread( - CesiumGltf::ImageCesium& image, + CesiumGltf::ImageAsset& image, const std::any& rendererOptions) override; virtual void* prepareRasterInMainThread(