diff --git a/CHANGELOG.md b/CHANGELOG.md index b49fe5db..6e273e9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [6.2.0] - 2024-01-29 + +### Added +- Deprecated soft-dependency packages are detected and a warning with upgrade instructions is shown in the console. + +### Changed +- Support for Draco 3D Data Compression is now provided by [*Draco for Unity* (com.unity.cloud.draco)][DracoForUnity], which is a fork of and replaces [*DracoUnity* (com.atteneder.draco)][DracoUnity]. + +### Fixed +- Compiler error when Newtonsoft JSON package was not installed. +- All Draco vertex attributes are assigned by identifier instead of type. As a result, tangents are now decoded properly instead of recalculated. +- Compilation error when scripting define `GLTFAST_BUILTIN_SHADER_GRAPH` is set. +- `GltfImport.IsTextureYFlipped` returns correct result for non-KTX textures. + ## [6.1.0] - 2024-01-17 ### Added @@ -1062,6 +1076,7 @@ This release contains multiple breaking changes. Please read the [upgrade guide] [Entities1.0]: https://docs.unity3d.com/Packages/com.unity.entities@1.0 [KtxUnity]: https://github.com/atteneder/KtxUnity [DanDovi]: https://github.com/DanDovi +[DracoForUnity]: https://docs.unity3d.com/Packages/com.unity.cloud.draco@latest [DracoUnity]: https://github.com/atteneder/DracoUnity [aurorahcx]: https://github.com/aurorahcx [Battlehub0x]: https://github.com/Battlehub0x diff --git a/Documentation~/ExportRuntime.md b/Documentation~/ExportRuntime.md index f767f208..057b582e 100644 --- a/Documentation~/ExportRuntime.md +++ b/Documentation~/ExportRuntime.md @@ -122,7 +122,7 @@ public class TestExport : MonoBehaviour { ### Draco Compression -*Unity glTFast* supports applying [Google Draco™ 3D Data compression][Draco] to meshes. This requires the [DracoUnity][DracoUnity] package to be installed. +*Unity glTFast* supports applying [Google Draco™ 3D Data compression][Draco] to meshes. This requires the [Draco for Unity][DracoForUnity] package to be installed. ```csharp // ExportSettings provides generic export settings @@ -147,7 +147,7 @@ var exportSettings = new ExportSettings { [asmdef]: https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html [Draco]: https://google.github.io/draco/ -[DracoUnity]: https://github.com/atteneder/DracoUnity +[DracoForUnity]: https://docs.unity3d.com/Packages/com.unity.cloud.draco@latest [GoogleLLC]: https://about.google/ [khronos]: https://www.khronos.org [unity]: https://unity.com diff --git a/Documentation~/UpgradeGuides.md b/Documentation~/UpgradeGuides.md index 27a18ce9..96b98c0e 100644 --- a/Documentation~/UpgradeGuides.md +++ b/Documentation~/UpgradeGuides.md @@ -31,7 +31,7 @@ Unity forks have been created for *KtxUnity* and *DracoUnity* as well. If you've See their respective upgrade guides - Upgrade to [*KTX for Unity*](https://docs.unity3d.com/Packages/com.unity.cloud.ktx@3.2/manual/upgrade-guide.html) -- Upgrade to *Draco for Unity* (coming soon) +- Upgrade to [*Draco for Unity*](https://docs.unity3d.com/Packages/com.unity.cloud.draco@5.0/manual/upgrade-guide.html) ### Keep using the original glTFast diff --git a/Documentation~/features.md b/Documentation~/features.md index b6e27e05..250d2e07 100644 --- a/Documentation~/features.md +++ b/Documentation~/features.md @@ -67,7 +67,7 @@ The glTF 2.0 specification is fully supported, with only a few minor remarks. | Texture coordinates / UV sets | ✅ | `?` | Three or more texture coordinates / UV sets | 2☑️ | `?` | Vertex colors | ✅ | `?` -| Draco™ mesh compression (via [DracoUnity]) | ✅ | ✅ +| Draco™ mesh compression (via [DracoForUnity]) | ✅ | ✅ | Implicit (no) indices | ✅ | | Per primitive material | ✅ | ✅ | Joints (up to 4 per vertex) | ✅ | @@ -268,7 +268,7 @@ Possibly incomplete list of things that are known to not work with Entities yet: [AnimationMecanim]: https://github.com/atteneder/glTFast/issues/167 [AnimationPlayables]: https://github.com/atteneder/glTFast/issues/166 [ClearCoat]: https://github.com/atteneder/glTFast/issues/68 -[DracoUnity]: https://github.com/atteneder/DracoUnity +[DracoForUnity]: https://docs.unity3d.com/Packages/com.unity.cloud.draco@latest [DOTS]: https://unity.com/dots [Entities]: https://docs.unity3d.com/Packages/com.unity.entities@latest [EntitiesGraphics]: https://docs.unity3d.com/Packages/com.unity.entities.graphics@latest diff --git a/Documentation~/installation.md b/Documentation~/installation.md index b4f486fc..7a5528ec 100644 --- a/Documentation~/installation.md +++ b/Documentation~/installation.md @@ -15,7 +15,7 @@ To install the *Unity glTFast* package, follow these steps: There are some related package that improve *Unity glTFast* by extending its feature set. -- [Draco™ 3D Data Compression Unity Package][DracoUnity] (provides support for [KHR_draco_mesh_compression][ExtDraco]) +- [Draco™ for Unity][DracoForUnity] (provides support for [KHR_draco_mesh_compression][ExtDraco]) - [KTX™ for Unity][KtxUnity] (provides support for [KHR_texture_basisu][ExtBasisU]) - [*meshoptimizer decompression for Unity*][Meshopt] (provides support for [EXT_meshopt_compression][ExtMeshopt]) @@ -29,7 +29,7 @@ There are some related package that improve *Unity glTFast* by extending its fea *Draco™* is a trademark of [*Google LLC*][GoogleLLC]. -[DracoUnity]: https://github.com/atteneder/DracoUnity +[DracoForUnity]: https://docs.unity3d.com/Packages/com.unity.cloud.draco@latest [ExtBasisU]: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu [ExtDraco]: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression [ExtMeshopt]: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Vendor/EXT_meshopt_compression diff --git a/Editor/Scripts/PackageSetupCheck.cs b/Editor/Scripts/PackageSetupCheck.cs new file mode 100644 index 00000000..775fa47a --- /dev/null +++ b/Editor/Scripts/PackageSetupCheck.cs @@ -0,0 +1,158 @@ +// SPDX-FileCopyrightText: 2023 Unity Technologies and the glTFast authors +// SPDX-License-Identifier: Apache-2.0 + +#if UNITY_2021_2_OR_NEWER +#define HYPERLINK +#define COMBINED +#endif + +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.PackageManager; +using UnityEditor.PackageManager.Requests; +using UnityEngine; + +namespace GLTFast.Editor +{ + [InitializeOnLoad] + static class PackageSetupCheck + { + static ListRequest s_ListRequest; + + static PackageReplacement[] s_Packages = new PackageReplacement[] + { + new PackageReplacement() + { + name = "Draco for Unity", + identifier = "com.unity.cloud.draco", + legacyName = "Draco 3D Data Compression", + legacyIdentifier = "com.atteneder.draco", + feature = "KHR_draco_mesh_compression", + featureUri = "https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_draco_mesh_compression/README.md", + upgradeDocsUri = "https://docs.unity3d.com/Packages/com.unity.cloud.draco@5.0/manual/upgrade-guide.html#transition-to-draco-for-unity" + }, + new PackageReplacement() + { + name = "KTX for Unity", + identifier = "com.unity.cloud.ktx", + legacyName = "KTX/Basis Universal Texture", + legacyIdentifier = "com.atteneder.ktx", + feature = "KHR_texture_basisu", + featureUri = "https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_texture_basisu/README.md", + upgradeDocsUri = "https://docs.unity3d.com/Packages/com.unity.cloud.ktx@3.2/manual/upgrade-guide.html#transition-to-ktx-for-unity" + } + }; + + static PackageSetupCheck() + { + EditorApplication.update += WaitForPackageList; + s_ListRequest = Client.List(true); +#if HYPERLINK + EditorGUI.hyperLinkClicked += HyperLinkClicked; +#endif + } + + static void WaitForPackageList() + { + if (s_ListRequest != null && s_ListRequest.IsCompleted) + { + if (s_ListRequest.Error == null) + { + foreach (var package in s_Packages) + { + CheckForLegacyPackage(s_ListRequest.Result, package); + } + } + + s_ListRequest = null; + EditorApplication.update -= WaitForPackageList; + } + } + + static void CheckForLegacyPackage( + PackageCollection packages, + PackageReplacement pkg + ) + { + var legacyFound = false; + + foreach (var packageInfo in packages) + { + if (packageInfo.name == pkg.legacyIdentifier) + { + legacyFound = true; + } + } + if (legacyFound) + { + pkg.LogUpgradeMessage(); + } + } + +#if HYPERLINK + static void HyperLinkClicked(EditorWindow window, HyperLinkClickedEventArgs args) + { + if(args.hyperLinkData.TryGetValue("command", out var command) && command=="replace") + { + if (args.hyperLinkData.TryGetValue("arg", out var pkg)) + { + foreach (var package in s_Packages) + { + if (package.legacyIdentifier == pkg) + { + ReplacePackage(package); + } + } + } + } + } +#endif + +#if COMBINED + static void ReplacePackage(PackageReplacement package) + { + if (EditorUtility.DisplayDialog( + "Package Upgrade", + $"Replace deprecated {package.legacyName} ({package.legacyIdentifier}) by {package.name} ({package.identifier})?", + "Replace", + "Cancel" + ) + ) + { + Client.AddAndRemove( + new[] { package.identifier }, + new[] { package.legacyIdentifier } + ); + } + } +#endif + } + + struct PackageReplacement + { + public string name; + public string identifier; + public string legacyName; + public string legacyIdentifier; + public string feature; + public string featureUri; + public string upgradeDocsUri; + + public void LogUpgradeMessage() + { + var message = $"Deprecated package {legacyName} ({legacyIdentifier}) detected!\n" + + $"glTFast now requires {name} ({identifier}) instead to provide support for " + + $"{feature}.\n"; +#if HYPERLINK + message += + $"You can automatically replace the " + + $"deprecated package or do it manually following the documentation."; +#else + message += "To upgrade the package, follow the documentation at " + + $"{upgradeDocsUri}"; +#endif + Debug.LogWarning(message); + } + } +} diff --git a/Editor/Scripts/PackageSetupCheck.cs.meta b/Editor/Scripts/PackageSetupCheck.cs.meta new file mode 100644 index 00000000..5c96ba7a --- /dev/null +++ b/Editor/Scripts/PackageSetupCheck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 433625e5684fd4f83b3ee45f614c2d7d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Export/Constants.cs b/Runtime/Scripts/Export/Constants.cs index dea1f81c..b1bedbfc 100644 --- a/Runtime/Scripts/Export/Constants.cs +++ b/Runtime/Scripts/Export/Constants.cs @@ -7,7 +7,7 @@ namespace GLTFast.Export { static class Constants { - public const string version = "6.1.0"; + public const string version = "6.2.0"; internal const string mimeTypePNG = "image/png"; internal const string mimeTypeJPG = "image/jpeg"; diff --git a/Runtime/Scripts/Export/DracoExportSettings.cs b/Runtime/Scripts/Export/DracoExportSettings.cs index 7cc2e1dd..1d5c5b76 100644 --- a/Runtime/Scripts/Export/DracoExportSettings.cs +++ b/Runtime/Scripts/Export/DracoExportSettings.cs @@ -1,6 +1,10 @@ // SPDX-FileCopyrightText: 2023 Unity Technologies and the glTFast authors // SPDX-License-Identifier: Apache-2.0 +#if DRACO_UNITY +using Draco.Encode; +#endif + namespace GLTFast.Export { /// @@ -28,5 +32,19 @@ public class DracoExportSettings /// Color quantization. public int colorQuantization = 8; + +#if DRACO_UNITY + public static implicit operator QuantizationSettings(DracoExportSettings s) => new QuantizationSettings( + s.positionQuantization, + s.normalQuantization, + s.texCoordQuantization, + s.colorQuantization + ); + + public static implicit operator SpeedSettings(DracoExportSettings s) => new SpeedSettings( + s.encodingSpeed, + s.decodingSpeed + ); +#endif } } diff --git a/Runtime/Scripts/Export/GltfWriter.cs b/Runtime/Scripts/Export/GltfWriter.cs index 77c741e7..32944ad1 100644 --- a/Runtime/Scripts/Export/GltfWriter.cs +++ b/Runtime/Scripts/Export/GltfWriter.cs @@ -14,7 +14,7 @@ using System.Threading.Tasks; #if DRACO_UNITY -using Draco.Encoder; +using Draco.Encode; #endif using GLTFast.Schema; using Unity.Collections; @@ -926,7 +926,7 @@ async Task BakeMeshes() { m_Logger.Warning(LogCode.UncompressedFallbackNotSupported); } #else - m_Logger?.Error(LogCode.PackageMissing, "DracoUnity", ExtensionName.DracoMeshCompression); + m_Logger?.Error(LogCode.PackageMissing, "Draco For Unity", ExtensionName.DracoMeshCompression); return false; #endif } @@ -1296,12 +1296,8 @@ async Task BakeMeshDraco(int meshId, UnityEngine.Mesh.MeshData meshData) var results = await DracoEncoder.EncodeMesh( unityMesh, meshData, - m_Settings.DracoSettings.encodingSpeed, - m_Settings.DracoSettings.decodingSpeed, - m_Settings.DracoSettings.positionQuantization, - m_Settings.DracoSettings.normalQuantization, - m_Settings.DracoSettings.texCoordQuantization, - m_Settings.DracoSettings.colorQuantization + (QuantizationSettings) m_Settings.DracoSettings, + (SpeedSettings) m_Settings.DracoSettings ); if (results == null) return; diff --git a/Runtime/Scripts/Export/glTFast.Export.asmdef b/Runtime/Scripts/Export/glTFast.Export.asmdef index f779a6c7..71eb66bd 100644 --- a/Runtime/Scripts/Export/glTFast.Export.asmdef +++ b/Runtime/Scripts/Export/glTFast.Export.asmdef @@ -7,7 +7,7 @@ "Unity.Burst", "Unity.RenderPipelines.Universal.Runtime", "Unity.RenderPipelines.HighDefinition.Runtime", - "DracoEncoder" + "Draco.Encode" ], "includePlatforms": [], "excludePlatforms": [], @@ -33,7 +33,7 @@ "define": "UNITY_IMAGECONVERSION" }, { - "name": "com.atteneder.draco", + "name": "com.unity.cloud.draco", "expression": "5.0.0-pre.1", "define": "DRACO_UNITY" } diff --git a/Runtime/Scripts/GltfImport.cs b/Runtime/Scripts/GltfImport.cs index 85117473..89f785dc 100644 --- a/Runtime/Scripts/GltfImport.cs +++ b/Runtime/Scripts/GltfImport.cs @@ -44,7 +44,6 @@ using UnityEngine.Experimental.Rendering; using UnityEngine.Profiling; using UnityEngine; - using Debug = UnityEngine.Debug; [assembly: InternalsVisibleTo("glTFast.Editor")] @@ -832,7 +831,7 @@ public Texture2D GetTexture(int index = 0) public bool IsTextureYFlipped(int index = 0) { #if KTX - return m_NonFlippedYTextureIndices == null || !m_NonFlippedYTextureIndices.Contains(index); + return (m_NonFlippedYTextureIndices == null || !m_NonFlippedYTextureIndices.Contains(index)) && GetSourceTexture(index).IsKtx; #else return false; #endif @@ -1154,7 +1153,7 @@ bool CheckExtensionSupport(IEnumerable extensions, bool required = true) #if !DRACO_UNITY if (ext == ExtensionName.DracoMeshCompression) { - m_Logger?.Error(LogCode.PackageMissing, "DracoUnity", ext); + m_Logger?.Error(LogCode.PackageMissing, "Draco for Unity", ext); } #endif @@ -3473,7 +3472,7 @@ void PreparePrimitiveDraco( RootBase gltf, MeshPrimitiveBase primitive, ref Prim var bufferView = gltf.BufferViews[dracoExt.bufferView]; var buffer = GetBufferViewSlice(bufferView); - c.StartDecode(buffer, dracoExt.attributes.WEIGHTS_0, dracoExt.attributes.JOINTS_0); + c.StartDecode(buffer, dracoExt.attributes); } #endif diff --git a/Runtime/Scripts/Material/BuiltInShaderGraphMaterialGenerator.cs b/Runtime/Scripts/Material/BuiltInShaderGraphMaterialGenerator.cs index 81f8b7cc..feb1e43d 100644 --- a/Runtime/Scripts/Material/BuiltInShaderGraphMaterialGenerator.cs +++ b/Runtime/Scripts/Material/BuiltInShaderGraphMaterialGenerator.cs @@ -3,8 +3,10 @@ #if UNITY_SHADER_GRAPH_12_OR_NEWER && GLTFAST_BUILTIN_SHADER_GRAPH +using GLTFast.Schema; using UnityEngine; using UnityEngine.Rendering; +using Material = UnityEngine.Material; namespace GLTFast.Materials { public class BuiltInShaderGraphMaterialGenerator : ShaderGraphMaterialGenerator { @@ -17,12 +19,12 @@ public class BuiltInShaderGraphMaterialGenerator : ShaderGraphMaterialGenerator static readonly int k_SurfacePropId = Shader.PropertyToID("_BUILTIN_Surface"); static readonly int k_ZWritePropId = Shader.PropertyToID("_BUILTIN_ZWrite"); - protected override void SetDoubleSided(Schema.Material gltfMaterial, Material material) { + protected override void SetDoubleSided(MaterialBase gltfMaterial, Material material) { base.SetDoubleSided(gltfMaterial,material); material.SetFloat(k_CullModePropId, (int)CullMode.Off); } - protected override void SetShaderModeBlend(Schema.Material gltfMaterial, Material material) { + protected override void SetShaderModeBlend(MaterialBase gltfMaterial, Material material) { material.EnableKeyword(AlphaTestOnKeyword); material.EnableKeyword(k_SurfaceTypeTransparent); material.renderQueue = (int)RenderQueue.Transparent; diff --git a/Runtime/Scripts/PrimitiveDracoCreateContext.cs b/Runtime/Scripts/PrimitiveDracoCreateContext.cs index 35d20209..98850826 100644 --- a/Runtime/Scripts/PrimitiveDracoCreateContext.cs +++ b/Runtime/Scripts/PrimitiveDracoCreateContext.cs @@ -4,17 +4,19 @@ #if DRACO_UNITY using System; +using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; using Unity.Collections; using Draco; +using GLTFast.Schema; using UnityEngine.Rendering; +using Mesh = UnityEngine.Mesh; namespace GLTFast { class PrimitiveDracoCreateContext : PrimitiveCreateContextBase { - DracoMeshLoader m_Draco; Task m_DracoTask; Bounds? m_Bounds; @@ -39,16 +41,23 @@ public PrimitiveDracoCreateContext( m_Bounds = bounds; } - public void StartDecode(NativeSlice data, int weightsAttributeId, int jointsAttributeId) { - m_Draco = new DracoMeshLoader(); - m_DracoTask = m_Draco.ConvertDracoMeshToUnity( - data, - m_NeedsNormals, - m_NeedsTangents, - weightsAttributeId, - jointsAttributeId, - morphTargetsContext!=null - ); + public void StartDecode(NativeSlice data, Attributes dracoAttributes) + { + var flags = DecodeSettings.ConvertSpace; + if (m_NeedsTangents) + { + flags |= DecodeSettings.RequireNormalsAndTangents; + } else + if (m_NeedsNormals) + { + flags |= DecodeSettings.RequireNormals; + } + if (morphTargetsContext != null) + { + flags |= DecodeSettings.ForceUnityVertexLayout; + } + + m_DracoTask = DracoDecoder.DecodeMesh(data, flags, GenerateAttributeIdMap(dracoAttributes)); } public override async Task CreatePrimitive() { @@ -102,6 +111,40 @@ public void StartDecode(NativeSlice data, int weightsAttributeId, int join mesh ); } + + static Dictionary GenerateAttributeIdMap(Attributes attributes) + { + var result = new Dictionary(); + if (attributes.POSITION >= 0) + result[VertexAttribute.Position] = attributes.POSITION; + if (attributes.NORMAL >= 0) + result[VertexAttribute.Normal] = attributes.NORMAL; + if (attributes.TANGENT >= 0) + result[VertexAttribute.Normal] = attributes.TANGENT; + if (attributes.COLOR_0 >= 0) + result[VertexAttribute.Color] = attributes.COLOR_0; + if (attributes.TEXCOORD_0 >= 0) + result[VertexAttribute.TexCoord0] = attributes.TEXCOORD_0; + if (attributes.TEXCOORD_1 >= 0) + result[VertexAttribute.TexCoord1] = attributes.TEXCOORD_1; + if (attributes.TEXCOORD_2 >= 0) + result[VertexAttribute.TexCoord2] = attributes.TEXCOORD_2; + if (attributes.TEXCOORD_3 >= 0) + result[VertexAttribute.TexCoord3] = attributes.TEXCOORD_3; + if (attributes.TEXCOORD_4 >= 0) + result[VertexAttribute.TexCoord4] = attributes.TEXCOORD_4; + if (attributes.TEXCOORD_5 >= 0) + result[VertexAttribute.TexCoord5] = attributes.TEXCOORD_5; + if (attributes.TEXCOORD_6 >= 0) + result[VertexAttribute.TexCoord6] = attributes.TEXCOORD_6; + if (attributes.TEXCOORD_7 >= 0) + result[VertexAttribute.TexCoord7] = attributes.TEXCOORD_7; + if (attributes.WEIGHTS_0 >= 0) + result[VertexAttribute.BlendWeight] = attributes.WEIGHTS_0; + if (attributes.JOINTS_0 >= 0) + result[VertexAttribute.BlendIndices] = attributes.JOINTS_0; + return result; + } } } #endif // DRACO_UNITY diff --git a/Runtime/Scripts/glTFast.asmdef b/Runtime/Scripts/glTFast.asmdef index 0d28d877..5df39654 100644 --- a/Runtime/Scripts/glTFast.asmdef +++ b/Runtime/Scripts/glTFast.asmdef @@ -21,8 +21,8 @@ "defineConstraints": [], "versionDefines": [ { - "name": "com.atteneder.draco", - "expression": "3.1.0", + "name": "com.unity.cloud.draco", + "expression": "5.0.0-pre.1", "define": "DRACO_UNITY" }, { @@ -102,4 +102,4 @@ } ], "noEngineReferences": false -} +} \ No newline at end of file diff --git a/Samples/Documentation/Manual/CustomGltfImport.cs b/Samples/Documentation/Manual/CustomGltfImport.cs index ea617af1..5ce6da08 100644 --- a/Samples/Documentation/Manual/CustomGltfImport.cs +++ b/Samples/Documentation/Manual/CustomGltfImport.cs @@ -1,7 +1,7 @@ +#if NEWTONSOFT_JSON namespace Samples.Documentation.Manual { - - #region CustomGltfImport +#region CustomGltfImport using GLTFast; using GLTFast.Addons; using System; @@ -96,6 +96,7 @@ void OnNodeCreated(uint nodeIndex, GameObject gameObject) } } } - #endregion +#endregion } +#endif diff --git a/Samples/Documentation/Unity.Cloud.Gltfast.Documentation.asmdef b/Samples/Documentation/Unity.Cloud.Gltfast.Documentation.asmdef index 1b779752..378bf6cb 100644 --- a/Samples/Documentation/Unity.Cloud.Gltfast.Documentation.asmdef +++ b/Samples/Documentation/Unity.Cloud.Gltfast.Documentation.asmdef @@ -12,6 +12,12 @@ "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], - "versionDefines": [], + "versionDefines": [ + { + "name": "com.unity.nuget.newtonsoft-json", + "expression": "3", + "define": "NEWTONSOFT_JSON" + } + ], "noEngineReferences": false } \ No newline at end of file diff --git a/package.json b/package.json index 05e7af12..a576358e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.atteneder.gltfast", - "version": "6.1.0", + "version": "6.2.0", "displayName": "glTFast", "description": "Use glTFast to import and export glTF 3D files efficiently at runtime or in the Editor", "unity": "2020.3",