com.wallstop-studios.unity-helpers 2.0.0-rc57 → 2.0.0-rc58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.config/dotnet-tools.json +9 -9
- package/.editorconfig +184 -184
- package/.gitattributes +63 -63
- package/.github/workflows/npm-publish.yml +66 -66
- package/.pre-commit-config.yaml +21 -21
- package/Editor/AnimationCopier.cs +181 -181
- package/Editor/AnimationCopier.cs.meta +2 -2
- package/Editor/AnimationCreator.cs +253 -253
- package/Editor/AnimationCreator.cs.meta +11 -11
- package/Editor/AnimationEventEditor.cs +887 -887
- package/Editor/AnimatorControllerCopier.cs +162 -162
- package/Editor/AnimatorControllerCopier.cs.meta +2 -2
- package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
- package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
- package/Editor/CustomEditors.meta +2 -2
- package/Editor/FitTextureSizeWizard.cs +147 -147
- package/Editor/FitTextureSizeWizard.cs.meta +2 -2
- package/Editor/PrefabCheckWizard.cs +170 -170
- package/Editor/PrefabCheckWizard.cs.meta +11 -11
- package/Editor/SpriteSettingsApplier.cs +272 -272
- package/Editor/SpriteSettingsApplier.cs.meta +2 -2
- package/Editor/StringInListeDrawer.cs +56 -56
- package/Editor/TextureResizerWizard.cs +181 -181
- package/Editor/TextureResizerWizard.cs.meta +2 -2
- package/Editor/TextureSettingsApplier.cs +178 -178
- package/Editor/TextureSettingsApplier.cs.meta +2 -2
- package/Editor/Utils/DxReadOnlyPropertyDrawer.cs +26 -26
- package/Editor/Utils/DxReadOnlyPropertyDrawer.cs.meta +11 -11
- package/Editor/Utils/EditorUtilities.cs +22 -22
- package/Editor/Utils/EditorUtilities.cs.meta +11 -11
- package/Editor/Utils.meta +8 -8
- package/Editor/WShowIfPropertyDrawer.cs +63 -63
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
- package/LICENSE +21 -21
- package/LICENSE.md +6 -6
- package/LICENSE.meta +7 -7
- package/README.md +177 -177
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
- package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
- package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
- package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
- package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
- package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
- package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
- package/Runtime/Binaries.meta +8 -8
- package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
- package/Runtime/Core/Attributes/ChildComponentAttribute.cs +209 -209
- package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs +6 -6
- package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
- package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
- package/Runtime/Core/Attributes/ParentComponent.cs +185 -185
- package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +117 -117
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
- package/Runtime/Core/Attributes/WShowIfAttribute.cs +16 -16
- package/Runtime/Core/Attributes.meta +8 -8
- package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
- package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
- package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
- package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
- package/Runtime/Core/DataStructure/Circle.cs +50 -50
- package/Runtime/Core/DataStructure/CyclicBuffer.cs +153 -153
- package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
- package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/KDTree.cs +292 -292
- package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/QuadTree.cs +287 -287
- package/Runtime/Core/DataStructure/RTree.cs +346 -346
- package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
- package/Runtime/Core/DataStructure/TimedCache.cs +66 -66
- package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
- package/Runtime/Core/Extension/AsyncOperationExtensions.cs +110 -110
- package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
- package/Runtime/Core/Extension/ColorExtensions.cs +629 -629
- package/Runtime/Core/Extension/DictionaryExtensions.cs +279 -279
- package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
- package/Runtime/Core/Extension/EnumExtensions.cs +37 -37
- package/Runtime/Core/Extension/EnumExtensions.cs.meta +2 -2
- package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
- package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
- package/Runtime/Core/Extension/IListExtensions.cs +106 -106
- package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
- package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
- package/Runtime/Core/Extension/SerializedPropertyExtensions.cs +157 -157
- package/Runtime/Core/Extension/StringExtensions.cs +151 -151
- package/Runtime/Core/Extension/UnityExtensions.cs +1608 -1608
- package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
- package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
- package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
- package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
- package/Runtime/Core/Helper/Enumerables.cs +17 -17
- package/Runtime/Core/Helper/FormattingHelpers.cs +32 -32
- package/Runtime/Core/Helper/Geometry.cs +43 -43
- package/Runtime/Core/Helper/Helpers.cs +722 -722
- package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
- package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
- package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
- package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
- package/Runtime/Core/Helper/Objects.cs +769 -769
- package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
- package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
- package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs +189 -189
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials.meta +2 -2
- package/Runtime/Core/Helper/ReflectionHelpers.cs +452 -452
- package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/SceneHelper.cs +209 -213
- package/Runtime/Core/Helper/SpriteHelpers.cs +41 -41
- package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
- package/Runtime/Core/Helper/StringInList.cs +31 -31
- package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
- package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +82 -82
- package/Runtime/Core/Helper/WallMath.cs +166 -166
- package/Runtime/Core/Math/Line.cs +55 -55
- package/Runtime/Core/Math/Parabola.cs +47 -47
- package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
- package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
- package/Runtime/Core/Math/Range.cs +92 -92
- package/Runtime/Core/Math/XXHash.cs +310 -310
- package/Runtime/Core/Math/XXHash.cs.meta +11 -11
- package/Runtime/Core/Model/Direction.cs +43 -43
- package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
- package/Runtime/Core/OneOf/None.cs +4 -4
- package/Runtime/Core/Random/AbstractRandom.cs +585 -585
- package/Runtime/Core/Random/DotNetRandom.cs +54 -54
- package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
- package/Runtime/Core/Random/IRandom.cs +161 -161
- package/Runtime/Core/Random/LinearCongruentialGenerator.cs +49 -49
- package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
- package/Runtime/Core/Random/PRNG.cs +7 -7
- package/Runtime/Core/Random/PRNG.cs.meta +2 -2
- package/Runtime/Core/Random/PcgRandom.cs +149 -149
- package/Runtime/Core/Random/PerlinNoise.cs +369 -369
- package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
- package/Runtime/Core/Random/RandomState.cs +131 -131
- package/Runtime/Core/Random/RandomUtilities.cs +26 -26
- package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
- package/Runtime/Core/Random/RomuDuo.cs +116 -116
- package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
- package/Runtime/Core/Random/SplitMix64.cs +94 -94
- package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
- package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
- package/Runtime/Core/Random/SystemRandom.cs +162 -162
- package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
- package/Runtime/Core/Random/UnityRandom.cs +57 -57
- package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
- package/Runtime/Core/Random/WyRandom.cs +121 -121
- package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
- package/Runtime/Core/Random/XorShiftRandom.cs +52 -52
- package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
- package/Runtime/Core/Random/XorShiroRandom.cs +119 -119
- package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
- package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -88
- package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +37 -37
- package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +218 -218
- package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +28 -28
- package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
- package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
- package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -88
- package/Runtime/Core/Serialization/Serializer.cs +195 -195
- package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +113 -113
- package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
- package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
- package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
- package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
- package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
- package/Runtime/UI/LayeredImage.cs +364 -364
- package/Runtime/UI/LayeredImage.cs.meta +2 -2
- package/Runtime/UI.meta +2 -2
- package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
- package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
- package/Runtime/Utils/Buffers.cs +33 -33
- package/Runtime/Utils/CenterPointOffset.cs +30 -30
- package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
- package/Runtime/Utils/CircleLineRenderer.cs +134 -134
- package/Runtime/Utils/CoroutineHandler.cs +4 -4
- package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
- package/Runtime/Utils/DeferredDisposalResult.cs +23 -23
- package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
- package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
- package/Runtime/Utils/Oscillator.cs +27 -27
- package/Runtime/Utils/RuntimeSingleton.cs +69 -69
- package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
- package/Runtime/Utils/SetTextureImportData.cs +69 -69
- package/Runtime/Utils/SpriteRendererMetadata.cs +374 -374
- package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
- package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
- package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
- package/Runtime/Utils/TextureScale.cs +179 -179
- package/Runtime/Utils/TextureScale.cs.meta +2 -2
- package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
- package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
- package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
- package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
- package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
- package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs +34 -34
- package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs.meta +2 -2
- package/Tests/Runtime/Components/RelationalComponentsTesterSimple.cs +40 -40
- package/Tests/Runtime/Components.meta +2 -2
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures.meta +8 -8
- package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
- package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/EnumExtensionTests.cs +128 -128
- package/Tests/Runtime/Extensions/EnumExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/IListExtensionTests.cs +104 -104
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
- package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions.meta +2 -2
- package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
- package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/FormattingHelperTests.cs +129 -129
- package/Tests/Runtime/Helper/FormattingHelperTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
- package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/ReflectionHelperTests.cs +536 -536
- package/Tests/Runtime/Helper/SceneHelperTests.cs +94 -94
- package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
- package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
- package/Tests/Runtime/Helper.meta +2 -2
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs +157 -157
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +61 -61
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/Performance.meta +8 -8
- package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
- package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs +12 -12
- package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
- package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
- package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
- package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
- package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
- package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
- package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
- package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
- package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
- package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
- package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
- package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random.meta +8 -8
- package/Tests/Runtime/Serialization/JsonSerializationTest.cs +156 -156
- package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
- package/Tests/Runtime/Serialization.meta +2 -2
- package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
- package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
- package/Tests/Runtime/Utils.meta +2 -2
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
- package/Tests/Runtime.meta +8 -8
- package/package.json +38 -38
|
@@ -1,218 +1,218 @@
|
|
|
1
|
-
namespace UnityHelpers.Core.Serialization.JsonConverters
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
using System.Text.Json;
|
|
5
|
-
using System.Text.Json.Serialization;
|
|
6
|
-
using UnityEngine;
|
|
7
|
-
|
|
8
|
-
public sealed class Matrix4x4Converter : JsonConverter<Matrix4x4>
|
|
9
|
-
{
|
|
10
|
-
private static readonly string[] PropertyNames =
|
|
11
|
-
{
|
|
12
|
-
"m00",
|
|
13
|
-
"m01",
|
|
14
|
-
"m02",
|
|
15
|
-
"m03",
|
|
16
|
-
"m10",
|
|
17
|
-
"m11",
|
|
18
|
-
"m12",
|
|
19
|
-
"m13",
|
|
20
|
-
"m20",
|
|
21
|
-
"m21",
|
|
22
|
-
"m22",
|
|
23
|
-
"m23",
|
|
24
|
-
"m30",
|
|
25
|
-
"m31",
|
|
26
|
-
"m32",
|
|
27
|
-
"m33",
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
public static readonly Matrix4x4Converter Instance = new();
|
|
31
|
-
|
|
32
|
-
private Matrix4x4Converter() { }
|
|
33
|
-
|
|
34
|
-
public override Matrix4x4 Read(
|
|
35
|
-
ref Utf8JsonReader reader,
|
|
36
|
-
Type typeToConvert,
|
|
37
|
-
JsonSerializerOptions options
|
|
38
|
-
)
|
|
39
|
-
{
|
|
40
|
-
if (reader.TokenType != JsonTokenType.StartObject)
|
|
41
|
-
{
|
|
42
|
-
throw new JsonException("Expected StartObject token when parsing Matrix4x4.");
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
float m00 = 0;
|
|
46
|
-
float m01 = 0;
|
|
47
|
-
float m02 = 0;
|
|
48
|
-
float m03 = 0;
|
|
49
|
-
float m10 = 0;
|
|
50
|
-
float m11 = 0;
|
|
51
|
-
float m12 = 0;
|
|
52
|
-
float m13 = 0;
|
|
53
|
-
float m20 = 0;
|
|
54
|
-
float m21 = 0;
|
|
55
|
-
float m22 = 0;
|
|
56
|
-
float m23 = 0;
|
|
57
|
-
float m30 = 0;
|
|
58
|
-
float m31 = 0;
|
|
59
|
-
float m32 = 0;
|
|
60
|
-
float m33 = 0;
|
|
61
|
-
|
|
62
|
-
bool[] found = new bool[16];
|
|
63
|
-
|
|
64
|
-
while (reader.Read())
|
|
65
|
-
{
|
|
66
|
-
if (reader.TokenType == JsonTokenType.EndObject)
|
|
67
|
-
{
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
if (reader.TokenType != JsonTokenType.PropertyName)
|
|
71
|
-
{
|
|
72
|
-
throw new JsonException("Expected property name in Matrix4x4 JSON.");
|
|
73
|
-
}
|
|
74
|
-
string propertyName = reader.GetString();
|
|
75
|
-
if (!reader.Read())
|
|
76
|
-
{
|
|
77
|
-
throw new JsonException($"Expected value for property '{propertyName}'.");
|
|
78
|
-
}
|
|
79
|
-
float value;
|
|
80
|
-
try
|
|
81
|
-
{
|
|
82
|
-
value = reader.GetSingle();
|
|
83
|
-
}
|
|
84
|
-
catch (Exception ex)
|
|
85
|
-
{
|
|
86
|
-
throw new JsonException($"Invalid value for property '{propertyName}'.", ex);
|
|
87
|
-
}
|
|
88
|
-
switch (propertyName)
|
|
89
|
-
{
|
|
90
|
-
case "m00":
|
|
91
|
-
m00 = value;
|
|
92
|
-
found[0] = true;
|
|
93
|
-
break;
|
|
94
|
-
case "m01":
|
|
95
|
-
m01 = value;
|
|
96
|
-
found[1] = true;
|
|
97
|
-
break;
|
|
98
|
-
case "m02":
|
|
99
|
-
m02 = value;
|
|
100
|
-
found[2] = true;
|
|
101
|
-
break;
|
|
102
|
-
case "m03":
|
|
103
|
-
m03 = value;
|
|
104
|
-
found[3] = true;
|
|
105
|
-
break;
|
|
106
|
-
case "m10":
|
|
107
|
-
m10 = value;
|
|
108
|
-
found[4] = true;
|
|
109
|
-
break;
|
|
110
|
-
case "m11":
|
|
111
|
-
m11 = value;
|
|
112
|
-
found[5] = true;
|
|
113
|
-
break;
|
|
114
|
-
case "m12":
|
|
115
|
-
m12 = value;
|
|
116
|
-
found[6] = true;
|
|
117
|
-
break;
|
|
118
|
-
case "m13":
|
|
119
|
-
m13 = value;
|
|
120
|
-
found[7] = true;
|
|
121
|
-
break;
|
|
122
|
-
case "m20":
|
|
123
|
-
m20 = value;
|
|
124
|
-
found[8] = true;
|
|
125
|
-
break;
|
|
126
|
-
case "m21":
|
|
127
|
-
m21 = value;
|
|
128
|
-
found[9] = true;
|
|
129
|
-
break;
|
|
130
|
-
case "m22":
|
|
131
|
-
m22 = value;
|
|
132
|
-
found[10] = true;
|
|
133
|
-
break;
|
|
134
|
-
case "m23":
|
|
135
|
-
m23 = value;
|
|
136
|
-
found[11] = true;
|
|
137
|
-
break;
|
|
138
|
-
case "m30":
|
|
139
|
-
m30 = value;
|
|
140
|
-
found[12] = true;
|
|
141
|
-
break;
|
|
142
|
-
case "m31":
|
|
143
|
-
m31 = value;
|
|
144
|
-
found[13] = true;
|
|
145
|
-
break;
|
|
146
|
-
case "m32":
|
|
147
|
-
m32 = value;
|
|
148
|
-
found[14] = true;
|
|
149
|
-
break;
|
|
150
|
-
case "m33":
|
|
151
|
-
m33 = value;
|
|
152
|
-
found[15] = true;
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
for (int i = 0; i < found.Length; i++)
|
|
158
|
-
{
|
|
159
|
-
if (!found[i])
|
|
160
|
-
{
|
|
161
|
-
throw new JsonException(
|
|
162
|
-
$"Missing property '{PropertyNames[i]}' for Matrix4x4."
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
Matrix4x4 matrix = new()
|
|
168
|
-
{
|
|
169
|
-
m00 = m00,
|
|
170
|
-
m01 = m01,
|
|
171
|
-
m02 = m02,
|
|
172
|
-
m03 = m03,
|
|
173
|
-
m10 = m10,
|
|
174
|
-
m11 = m11,
|
|
175
|
-
m12 = m12,
|
|
176
|
-
m13 = m13,
|
|
177
|
-
m20 = m20,
|
|
178
|
-
m21 = m21,
|
|
179
|
-
m22 = m22,
|
|
180
|
-
m23 = m23,
|
|
181
|
-
m30 = m30,
|
|
182
|
-
m31 = m31,
|
|
183
|
-
m32 = m32,
|
|
184
|
-
m33 = m33,
|
|
185
|
-
};
|
|
186
|
-
|
|
187
|
-
return matrix;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
public override void Write(
|
|
191
|
-
Utf8JsonWriter writer,
|
|
192
|
-
Matrix4x4 matrix,
|
|
193
|
-
JsonSerializerOptions options
|
|
194
|
-
)
|
|
195
|
-
{
|
|
196
|
-
writer.WriteStartObject();
|
|
197
|
-
|
|
198
|
-
writer.WriteNumber("m00", matrix.m00);
|
|
199
|
-
writer.WriteNumber("m01", matrix.m01);
|
|
200
|
-
writer.WriteNumber("m02", matrix.m02);
|
|
201
|
-
writer.WriteNumber("m03", matrix.m03);
|
|
202
|
-
writer.WriteNumber("m10", matrix.m10);
|
|
203
|
-
writer.WriteNumber("m11", matrix.m11);
|
|
204
|
-
writer.WriteNumber("m12", matrix.m12);
|
|
205
|
-
writer.WriteNumber("m13", matrix.m13);
|
|
206
|
-
writer.WriteNumber("m20", matrix.m20);
|
|
207
|
-
writer.WriteNumber("m21", matrix.m21);
|
|
208
|
-
writer.WriteNumber("m22", matrix.m22);
|
|
209
|
-
writer.WriteNumber("m23", matrix.m23);
|
|
210
|
-
writer.WriteNumber("m30", matrix.m30);
|
|
211
|
-
writer.WriteNumber("m31", matrix.m31);
|
|
212
|
-
writer.WriteNumber("m32", matrix.m32);
|
|
213
|
-
writer.WriteNumber("m33", matrix.m33);
|
|
214
|
-
|
|
215
|
-
writer.WriteEndObject();
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
1
|
+
namespace UnityHelpers.Core.Serialization.JsonConverters
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Text.Json;
|
|
5
|
+
using System.Text.Json.Serialization;
|
|
6
|
+
using UnityEngine;
|
|
7
|
+
|
|
8
|
+
public sealed class Matrix4x4Converter : JsonConverter<Matrix4x4>
|
|
9
|
+
{
|
|
10
|
+
private static readonly string[] PropertyNames =
|
|
11
|
+
{
|
|
12
|
+
"m00",
|
|
13
|
+
"m01",
|
|
14
|
+
"m02",
|
|
15
|
+
"m03",
|
|
16
|
+
"m10",
|
|
17
|
+
"m11",
|
|
18
|
+
"m12",
|
|
19
|
+
"m13",
|
|
20
|
+
"m20",
|
|
21
|
+
"m21",
|
|
22
|
+
"m22",
|
|
23
|
+
"m23",
|
|
24
|
+
"m30",
|
|
25
|
+
"m31",
|
|
26
|
+
"m32",
|
|
27
|
+
"m33",
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
public static readonly Matrix4x4Converter Instance = new();
|
|
31
|
+
|
|
32
|
+
private Matrix4x4Converter() { }
|
|
33
|
+
|
|
34
|
+
public override Matrix4x4 Read(
|
|
35
|
+
ref Utf8JsonReader reader,
|
|
36
|
+
Type typeToConvert,
|
|
37
|
+
JsonSerializerOptions options
|
|
38
|
+
)
|
|
39
|
+
{
|
|
40
|
+
if (reader.TokenType != JsonTokenType.StartObject)
|
|
41
|
+
{
|
|
42
|
+
throw new JsonException("Expected StartObject token when parsing Matrix4x4.");
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
float m00 = 0;
|
|
46
|
+
float m01 = 0;
|
|
47
|
+
float m02 = 0;
|
|
48
|
+
float m03 = 0;
|
|
49
|
+
float m10 = 0;
|
|
50
|
+
float m11 = 0;
|
|
51
|
+
float m12 = 0;
|
|
52
|
+
float m13 = 0;
|
|
53
|
+
float m20 = 0;
|
|
54
|
+
float m21 = 0;
|
|
55
|
+
float m22 = 0;
|
|
56
|
+
float m23 = 0;
|
|
57
|
+
float m30 = 0;
|
|
58
|
+
float m31 = 0;
|
|
59
|
+
float m32 = 0;
|
|
60
|
+
float m33 = 0;
|
|
61
|
+
|
|
62
|
+
bool[] found = new bool[16];
|
|
63
|
+
|
|
64
|
+
while (reader.Read())
|
|
65
|
+
{
|
|
66
|
+
if (reader.TokenType == JsonTokenType.EndObject)
|
|
67
|
+
{
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
if (reader.TokenType != JsonTokenType.PropertyName)
|
|
71
|
+
{
|
|
72
|
+
throw new JsonException("Expected property name in Matrix4x4 JSON.");
|
|
73
|
+
}
|
|
74
|
+
string propertyName = reader.GetString();
|
|
75
|
+
if (!reader.Read())
|
|
76
|
+
{
|
|
77
|
+
throw new JsonException($"Expected value for property '{propertyName}'.");
|
|
78
|
+
}
|
|
79
|
+
float value;
|
|
80
|
+
try
|
|
81
|
+
{
|
|
82
|
+
value = reader.GetSingle();
|
|
83
|
+
}
|
|
84
|
+
catch (Exception ex)
|
|
85
|
+
{
|
|
86
|
+
throw new JsonException($"Invalid value for property '{propertyName}'.", ex);
|
|
87
|
+
}
|
|
88
|
+
switch (propertyName)
|
|
89
|
+
{
|
|
90
|
+
case "m00":
|
|
91
|
+
m00 = value;
|
|
92
|
+
found[0] = true;
|
|
93
|
+
break;
|
|
94
|
+
case "m01":
|
|
95
|
+
m01 = value;
|
|
96
|
+
found[1] = true;
|
|
97
|
+
break;
|
|
98
|
+
case "m02":
|
|
99
|
+
m02 = value;
|
|
100
|
+
found[2] = true;
|
|
101
|
+
break;
|
|
102
|
+
case "m03":
|
|
103
|
+
m03 = value;
|
|
104
|
+
found[3] = true;
|
|
105
|
+
break;
|
|
106
|
+
case "m10":
|
|
107
|
+
m10 = value;
|
|
108
|
+
found[4] = true;
|
|
109
|
+
break;
|
|
110
|
+
case "m11":
|
|
111
|
+
m11 = value;
|
|
112
|
+
found[5] = true;
|
|
113
|
+
break;
|
|
114
|
+
case "m12":
|
|
115
|
+
m12 = value;
|
|
116
|
+
found[6] = true;
|
|
117
|
+
break;
|
|
118
|
+
case "m13":
|
|
119
|
+
m13 = value;
|
|
120
|
+
found[7] = true;
|
|
121
|
+
break;
|
|
122
|
+
case "m20":
|
|
123
|
+
m20 = value;
|
|
124
|
+
found[8] = true;
|
|
125
|
+
break;
|
|
126
|
+
case "m21":
|
|
127
|
+
m21 = value;
|
|
128
|
+
found[9] = true;
|
|
129
|
+
break;
|
|
130
|
+
case "m22":
|
|
131
|
+
m22 = value;
|
|
132
|
+
found[10] = true;
|
|
133
|
+
break;
|
|
134
|
+
case "m23":
|
|
135
|
+
m23 = value;
|
|
136
|
+
found[11] = true;
|
|
137
|
+
break;
|
|
138
|
+
case "m30":
|
|
139
|
+
m30 = value;
|
|
140
|
+
found[12] = true;
|
|
141
|
+
break;
|
|
142
|
+
case "m31":
|
|
143
|
+
m31 = value;
|
|
144
|
+
found[13] = true;
|
|
145
|
+
break;
|
|
146
|
+
case "m32":
|
|
147
|
+
m32 = value;
|
|
148
|
+
found[14] = true;
|
|
149
|
+
break;
|
|
150
|
+
case "m33":
|
|
151
|
+
m33 = value;
|
|
152
|
+
found[15] = true;
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
for (int i = 0; i < found.Length; i++)
|
|
158
|
+
{
|
|
159
|
+
if (!found[i])
|
|
160
|
+
{
|
|
161
|
+
throw new JsonException(
|
|
162
|
+
$"Missing property '{PropertyNames[i]}' for Matrix4x4."
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
Matrix4x4 matrix = new()
|
|
168
|
+
{
|
|
169
|
+
m00 = m00,
|
|
170
|
+
m01 = m01,
|
|
171
|
+
m02 = m02,
|
|
172
|
+
m03 = m03,
|
|
173
|
+
m10 = m10,
|
|
174
|
+
m11 = m11,
|
|
175
|
+
m12 = m12,
|
|
176
|
+
m13 = m13,
|
|
177
|
+
m20 = m20,
|
|
178
|
+
m21 = m21,
|
|
179
|
+
m22 = m22,
|
|
180
|
+
m23 = m23,
|
|
181
|
+
m30 = m30,
|
|
182
|
+
m31 = m31,
|
|
183
|
+
m32 = m32,
|
|
184
|
+
m33 = m33,
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
return matrix;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
public override void Write(
|
|
191
|
+
Utf8JsonWriter writer,
|
|
192
|
+
Matrix4x4 matrix,
|
|
193
|
+
JsonSerializerOptions options
|
|
194
|
+
)
|
|
195
|
+
{
|
|
196
|
+
writer.WriteStartObject();
|
|
197
|
+
|
|
198
|
+
writer.WriteNumber("m00", matrix.m00);
|
|
199
|
+
writer.WriteNumber("m01", matrix.m01);
|
|
200
|
+
writer.WriteNumber("m02", matrix.m02);
|
|
201
|
+
writer.WriteNumber("m03", matrix.m03);
|
|
202
|
+
writer.WriteNumber("m10", matrix.m10);
|
|
203
|
+
writer.WriteNumber("m11", matrix.m11);
|
|
204
|
+
writer.WriteNumber("m12", matrix.m12);
|
|
205
|
+
writer.WriteNumber("m13", matrix.m13);
|
|
206
|
+
writer.WriteNumber("m20", matrix.m20);
|
|
207
|
+
writer.WriteNumber("m21", matrix.m21);
|
|
208
|
+
writer.WriteNumber("m22", matrix.m22);
|
|
209
|
+
writer.WriteNumber("m23", matrix.m23);
|
|
210
|
+
writer.WriteNumber("m30", matrix.m30);
|
|
211
|
+
writer.WriteNumber("m31", matrix.m31);
|
|
212
|
+
writer.WriteNumber("m32", matrix.m32);
|
|
213
|
+
writer.WriteNumber("m33", matrix.m33);
|
|
214
|
+
|
|
215
|
+
writer.WriteEndObject();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
namespace UnityHelpers.Core.Serialization.JsonConverters
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
using System.Text.Json;
|
|
5
|
-
using System.Text.Json.Serialization;
|
|
6
|
-
|
|
7
|
-
public sealed class TypeConverter : JsonConverter<Type>
|
|
8
|
-
{
|
|
9
|
-
public static readonly TypeConverter Instance = new();
|
|
10
|
-
|
|
11
|
-
private TypeConverter() { }
|
|
12
|
-
|
|
13
|
-
public override Type Read(
|
|
14
|
-
ref Utf8JsonReader reader,
|
|
15
|
-
Type typeToConvert,
|
|
16
|
-
JsonSerializerOptions options
|
|
17
|
-
)
|
|
18
|
-
{
|
|
19
|
-
string typeName = reader.GetString();
|
|
20
|
-
return string.IsNullOrWhiteSpace(typeName) ? null : Type.GetType(typeName);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
public override void Write(Utf8JsonWriter writer, Type value, JsonSerializerOptions options)
|
|
24
|
-
{
|
|
25
|
-
writer.WriteStringValue(value?.AssemblyQualifiedName);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
1
|
+
namespace UnityHelpers.Core.Serialization.JsonConverters
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Text.Json;
|
|
5
|
+
using System.Text.Json.Serialization;
|
|
6
|
+
|
|
7
|
+
public sealed class TypeConverter : JsonConverter<Type>
|
|
8
|
+
{
|
|
9
|
+
public static readonly TypeConverter Instance = new();
|
|
10
|
+
|
|
11
|
+
private TypeConverter() { }
|
|
12
|
+
|
|
13
|
+
public override Type Read(
|
|
14
|
+
ref Utf8JsonReader reader,
|
|
15
|
+
Type typeToConvert,
|
|
16
|
+
JsonSerializerOptions options
|
|
17
|
+
)
|
|
18
|
+
{
|
|
19
|
+
string typeName = reader.GetString();
|
|
20
|
+
return string.IsNullOrWhiteSpace(typeName) ? null : Type.GetType(typeName);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public override void Write(Utf8JsonWriter writer, Type value, JsonSerializerOptions options)
|
|
24
|
+
{
|
|
25
|
+
writer.WriteStringValue(value?.AssemblyQualifiedName);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
namespace UnityHelpers.Core.Serialization.JsonConverters
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
using System.Text.Json;
|
|
5
|
-
using System.Text.Json.Serialization;
|
|
6
|
-
using UnityEngine;
|
|
7
|
-
|
|
8
|
-
public sealed class Vector2Converter : JsonConverter<Vector2>
|
|
9
|
-
{
|
|
10
|
-
public static readonly Vector2Converter Instance = new();
|
|
11
|
-
|
|
12
|
-
private Vector2Converter() { }
|
|
13
|
-
|
|
14
|
-
public override Vector2 Read(
|
|
15
|
-
ref Utf8JsonReader reader,
|
|
16
|
-
Type typeToConvert,
|
|
17
|
-
JsonSerializerOptions options
|
|
18
|
-
)
|
|
19
|
-
{
|
|
20
|
-
if (reader.TokenType != JsonTokenType.StartObject)
|
|
21
|
-
{
|
|
22
|
-
throw new JsonException($"Invalid token type {reader.TokenType}");
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
float x = 0;
|
|
26
|
-
float y = 0;
|
|
27
|
-
|
|
28
|
-
while (reader.Read())
|
|
29
|
-
{
|
|
30
|
-
if (reader.TokenType == JsonTokenType.EndObject)
|
|
31
|
-
{
|
|
32
|
-
return new Vector2(x, y);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (reader.TokenType == JsonTokenType.PropertyName)
|
|
36
|
-
{
|
|
37
|
-
string propertyName = reader.GetString();
|
|
38
|
-
reader.Read();
|
|
39
|
-
switch (propertyName)
|
|
40
|
-
{
|
|
41
|
-
case "x":
|
|
42
|
-
{
|
|
43
|
-
x = reader.GetSingle();
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
case "y":
|
|
47
|
-
{
|
|
48
|
-
y = reader.GetSingle();
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
default:
|
|
52
|
-
{
|
|
53
|
-
throw new JsonException($"Unknown property: {propertyName}");
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
throw new JsonException("Incomplete JSON for Vector2");
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
public override void Write(
|
|
63
|
-
Utf8JsonWriter writer,
|
|
64
|
-
Vector2 value,
|
|
65
|
-
JsonSerializerOptions options
|
|
66
|
-
)
|
|
67
|
-
{
|
|
68
|
-
writer.WriteStartObject();
|
|
69
|
-
writer.WriteNumber("x", value.x);
|
|
70
|
-
writer.WriteNumber("y", value.y);
|
|
71
|
-
writer.WriteEndObject();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
1
|
+
namespace UnityHelpers.Core.Serialization.JsonConverters
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Text.Json;
|
|
5
|
+
using System.Text.Json.Serialization;
|
|
6
|
+
using UnityEngine;
|
|
7
|
+
|
|
8
|
+
public sealed class Vector2Converter : JsonConverter<Vector2>
|
|
9
|
+
{
|
|
10
|
+
public static readonly Vector2Converter Instance = new();
|
|
11
|
+
|
|
12
|
+
private Vector2Converter() { }
|
|
13
|
+
|
|
14
|
+
public override Vector2 Read(
|
|
15
|
+
ref Utf8JsonReader reader,
|
|
16
|
+
Type typeToConvert,
|
|
17
|
+
JsonSerializerOptions options
|
|
18
|
+
)
|
|
19
|
+
{
|
|
20
|
+
if (reader.TokenType != JsonTokenType.StartObject)
|
|
21
|
+
{
|
|
22
|
+
throw new JsonException($"Invalid token type {reader.TokenType}");
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
float x = 0;
|
|
26
|
+
float y = 0;
|
|
27
|
+
|
|
28
|
+
while (reader.Read())
|
|
29
|
+
{
|
|
30
|
+
if (reader.TokenType == JsonTokenType.EndObject)
|
|
31
|
+
{
|
|
32
|
+
return new Vector2(x, y);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (reader.TokenType == JsonTokenType.PropertyName)
|
|
36
|
+
{
|
|
37
|
+
string propertyName = reader.GetString();
|
|
38
|
+
reader.Read();
|
|
39
|
+
switch (propertyName)
|
|
40
|
+
{
|
|
41
|
+
case "x":
|
|
42
|
+
{
|
|
43
|
+
x = reader.GetSingle();
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
case "y":
|
|
47
|
+
{
|
|
48
|
+
y = reader.GetSingle();
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
default:
|
|
52
|
+
{
|
|
53
|
+
throw new JsonException($"Unknown property: {propertyName}");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
throw new JsonException("Incomplete JSON for Vector2");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public override void Write(
|
|
63
|
+
Utf8JsonWriter writer,
|
|
64
|
+
Vector2 value,
|
|
65
|
+
JsonSerializerOptions options
|
|
66
|
+
)
|
|
67
|
+
{
|
|
68
|
+
writer.WriteStartObject();
|
|
69
|
+
writer.WriteNumber("x", value.x);
|
|
70
|
+
writer.WriteNumber("y", value.y);
|
|
71
|
+
writer.WriteEndObject();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|