Vicente Penades 6 years ago
parent
commit
ab63178d7b

+ 1 - 0
SharpGLTF.ruleset

@@ -39,6 +39,7 @@
     <Rule Id="SA1633" Action="None" />
     <Rule Id="SA1633" Action="None" />
     <Rule Id="SA1649" Action="None" />
     <Rule Id="SA1649" Action="None" />
     <Rule Id="SA1652" Action="None" />
     <Rule Id="SA1652" Action="None" />
+    <Rule Id="SA1605" Action="None" />
   </Rules>
   </Rules>
   <Rules AnalyzerId="Microsoft.CodeQuality.CSharp.Analyzers" RuleNamespace="Microsoft.CodeQuality.CSharp.Analyzers">
   <Rules AnalyzerId="Microsoft.CodeQuality.CSharp.Analyzers" RuleNamespace="Microsoft.CodeQuality.CSharp.Analyzers">
     <Rule Id="CA1001" Action="Error" />
     <Rule Id="CA1001" Action="Error" />

+ 3 - 3
build/SharpGLTF.CodeGen/CodeGen/EmitCSharp.cs

@@ -606,13 +606,13 @@ namespace SharpGLTF.CodeGen
             yield return string.Empty;
             yield return string.Empty;
 
 
             yield return "/// <inheritdoc />".Indent(1);
             yield return "/// <inheritdoc />".Indent(1);
-            yield return "protected override void DeserializeProperty(string property, JsonReader reader)".Indent(1);
+            yield return "protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)".Indent(1);
             yield return "{".Indent(1);
             yield return "{".Indent(1);
-            yield return "switch (property)".Indent(2);
+            yield return "switch (jsonPropertyName)".Indent(2);
             yield return "{".Indent(2);
             yield return "{".Indent(2);
 
 
             foreach (var l in _DeserializerSwitchBody.Indent(3)) yield return l;
             foreach (var l in _DeserializerSwitchBody.Indent(3)) yield return l;
-            if (HasBaseClass) yield return "default: base.DeserializeProperty(property, reader); break;".Indent(3);
+            if (HasBaseClass) yield return "default: base.DeserializeProperty(jsonPropertyName, reader); break;".Indent(3);
             else yield return "default: throw new NotImplementedException();".Indent(3);
             else yield return "default: throw new NotImplementedException();".Indent(3);
 
 
             yield return "}".Indent(2);
             yield return "}".Indent(2);

+ 1 - 1
src/SharpGLTF.Core/IO/JsonSerializable.cs

@@ -318,7 +318,7 @@ namespace SharpGLTF.IO
             return reader.Value;
             return reader.Value;
         }
         }
 
 
-        protected abstract void DeserializeProperty(string property, JsonReader reader);
+        protected abstract void DeserializeProperty(string jsonPropertyName, JsonReader reader);
 
 
         protected static T DeserializePropertyValue<T>(JsonReader reader)
         protected static T DeserializePropertyValue<T>(JsonReader reader)
         {
         {

+ 3 - 3
src/SharpGLTF.Core/Schema2/Generated/ext.MSFT.textureDDS.g.cs

@@ -42,12 +42,12 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "source": _source = DeserializePropertyValue<Int32?>(reader); break;
 				case "source": _source = DeserializePropertyValue<Int32?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	

+ 9 - 9
src/SharpGLTF.Core/Schema2/Generated/ext.ModelLightsPunctual.g.cs

@@ -48,13 +48,13 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "innerConeAngle": _innerConeAngle = DeserializePropertyValue<Double?>(reader); break;
 				case "innerConeAngle": _innerConeAngle = DeserializePropertyValue<Double?>(reader); break;
 				case "outerConeAngle": _outerConeAngle = DeserializePropertyValue<Double?>(reader); break;
 				case "outerConeAngle": _outerConeAngle = DeserializePropertyValue<Double?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -93,16 +93,16 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "color": _color = DeserializePropertyValue<Vector3?>(reader); break;
 				case "color": _color = DeserializePropertyValue<Vector3?>(reader); break;
 				case "intensity": _intensity = DeserializePropertyValue<Double?>(reader); break;
 				case "intensity": _intensity = DeserializePropertyValue<Double?>(reader); break;
 				case "range": _range = DeserializePropertyValue<Double?>(reader); break;
 				case "range": _range = DeserializePropertyValue<Double?>(reader); break;
 				case "spot": _spot = DeserializePropertyValue<PunctualLightSpot>(reader); break;
 				case "spot": _spot = DeserializePropertyValue<PunctualLightSpot>(reader); break;
 				case "type": _type = DeserializePropertyValue<String>(reader); break;
 				case "type": _type = DeserializePropertyValue<String>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -123,12 +123,12 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "lights": DeserializePropertyList<PunctualLight>(reader, _lights); break;
 				case "lights": DeserializePropertyList<PunctualLight>(reader, _lights); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	

+ 3 - 3
src/SharpGLTF.Core/Schema2/Generated/ext.NodeLightsPunctual.g.cs

@@ -39,12 +39,12 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "light": _light = DeserializePropertyValue<Int32>(reader); break;
 				case "light": _light = DeserializePropertyValue<Int32>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	

+ 3 - 3
src/SharpGLTF.Core/Schema2/Generated/ext.TextureTransform.g.cs

@@ -55,15 +55,15 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "offset": _offset = DeserializePropertyValue<Vector2?>(reader); break;
 				case "offset": _offset = DeserializePropertyValue<Vector2?>(reader); break;
 				case "rotation": _rotation = DeserializePropertyValue<Double?>(reader); break;
 				case "rotation": _rotation = DeserializePropertyValue<Double?>(reader); break;
 				case "scale": _scale = DeserializePropertyValue<Vector2?>(reader); break;
 				case "scale": _scale = DeserializePropertyValue<Vector2?>(reader); break;
 				case "texCoord": _texCoord = DeserializePropertyValue<Int32?>(reader); break;
 				case "texCoord": _texCoord = DeserializePropertyValue<Int32?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	

+ 3 - 3
src/SharpGLTF.Core/Schema2/Generated/ext.Unlit.g.cs

@@ -39,11 +39,11 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	

+ 3 - 3
src/SharpGLTF.Core/Schema2/Generated/ext.pbrSpecularGlossiness.g.cs

@@ -59,16 +59,16 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "diffuseFactor": _diffuseFactor = DeserializePropertyValue<Vector4?>(reader); break;
 				case "diffuseFactor": _diffuseFactor = DeserializePropertyValue<Vector4?>(reader); break;
 				case "diffuseTexture": _diffuseTexture = DeserializePropertyValue<TextureInfo>(reader); break;
 				case "diffuseTexture": _diffuseTexture = DeserializePropertyValue<TextureInfo>(reader); break;
 				case "glossinessFactor": _glossinessFactor = DeserializePropertyValue<Double?>(reader); break;
 				case "glossinessFactor": _glossinessFactor = DeserializePropertyValue<Double?>(reader); break;
 				case "specularFactor": _specularFactor = DeserializePropertyValue<Vector3?>(reader); break;
 				case "specularFactor": _specularFactor = DeserializePropertyValue<Vector3?>(reader); break;
 				case "specularGlossinessTexture": _specularGlossinessTexture = DeserializePropertyValue<TextureInfo>(reader); break;
 				case "specularGlossinessTexture": _specularGlossinessTexture = DeserializePropertyValue<TextureInfo>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	

+ 3 - 3
src/SharpGLTF.Core/Schema2/Generated/ext.textureWEBP.g.cs

@@ -42,12 +42,12 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "source": _source = DeserializePropertyValue<Int32?>(reader); break;
 				case "source": _source = DeserializePropertyValue<Int32?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	

+ 87 - 87
src/SharpGLTF.Core/Schema2/Generated/gltf.g.cs

@@ -185,12 +185,12 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "name": _name = DeserializePropertyValue<String>(reader); break;
 				case "name": _name = DeserializePropertyValue<String>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -221,14 +221,14 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "bufferView": _bufferView = DeserializePropertyValue<Int32>(reader); break;
 				case "bufferView": _bufferView = DeserializePropertyValue<Int32>(reader); break;
 				case "byteOffset": _byteOffset = DeserializePropertyValue<Int32?>(reader); break;
 				case "byteOffset": _byteOffset = DeserializePropertyValue<Int32?>(reader); break;
 				case "componentType": _componentType = DeserializePropertyValue<IndexEncodingType>(reader); break;
 				case "componentType": _componentType = DeserializePropertyValue<IndexEncodingType>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -256,13 +256,13 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "bufferView": _bufferView = DeserializePropertyValue<Int32>(reader); break;
 				case "bufferView": _bufferView = DeserializePropertyValue<Int32>(reader); break;
 				case "byteOffset": _byteOffset = DeserializePropertyValue<Int32?>(reader); break;
 				case "byteOffset": _byteOffset = DeserializePropertyValue<Int32?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -292,14 +292,14 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "count": _count = DeserializePropertyValue<Int32>(reader); break;
 				case "count": _count = DeserializePropertyValue<Int32>(reader); break;
 				case "indices": _indices = DeserializePropertyValue<AccessorSparseIndices>(reader); break;
 				case "indices": _indices = DeserializePropertyValue<AccessorSparseIndices>(reader); break;
 				case "values": _values = DeserializePropertyValue<AccessorSparseValues>(reader); break;
 				case "values": _values = DeserializePropertyValue<AccessorSparseValues>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -356,9 +356,9 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "bufferView": _bufferView = DeserializePropertyValue<Int32?>(reader); break;
 				case "bufferView": _bufferView = DeserializePropertyValue<Int32?>(reader); break;
 				case "byteOffset": _byteOffset = DeserializePropertyValue<Int32?>(reader); break;
 				case "byteOffset": _byteOffset = DeserializePropertyValue<Int32?>(reader); break;
@@ -369,7 +369,7 @@ namespace SharpGLTF.Schema2
 				case "normalized": _normalized = DeserializePropertyValue<Boolean?>(reader); break;
 				case "normalized": _normalized = DeserializePropertyValue<Boolean?>(reader); break;
 				case "sparse": _sparse = DeserializePropertyValue<AccessorSparse>(reader); break;
 				case "sparse": _sparse = DeserializePropertyValue<AccessorSparse>(reader); break;
 				case "type": _type = DeserializePropertyValue<DimensionType>(reader); break;
 				case "type": _type = DeserializePropertyValue<DimensionType>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -395,13 +395,13 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "node": _node = DeserializePropertyValue<Int32?>(reader); break;
 				case "node": _node = DeserializePropertyValue<Int32?>(reader); break;
 				case "path": _path = DeserializePropertyValue<PropertyPath>(reader); break;
 				case "path": _path = DeserializePropertyValue<PropertyPath>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -427,13 +427,13 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "sampler": _sampler = DeserializePropertyValue<Int32>(reader); break;
 				case "sampler": _sampler = DeserializePropertyValue<Int32>(reader); break;
 				case "target": _target = DeserializePropertyValue<AnimationChannelTarget>(reader); break;
 				case "target": _target = DeserializePropertyValue<AnimationChannelTarget>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -463,14 +463,14 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "input": _input = DeserializePropertyValue<Int32>(reader); break;
 				case "input": _input = DeserializePropertyValue<Int32>(reader); break;
 				case "interpolation": _interpolation = DeserializePropertyValue<AnimationInterpolationMode>(reader); break;
 				case "interpolation": _interpolation = DeserializePropertyValue<AnimationInterpolationMode>(reader); break;
 				case "output": _output = DeserializePropertyValue<Int32>(reader); break;
 				case "output": _output = DeserializePropertyValue<Int32>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -498,13 +498,13 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "channels": DeserializePropertyList<AnimationChannel>(reader, _channels); break;
 				case "channels": DeserializePropertyList<AnimationChannel>(reader, _channels); break;
 				case "samplers": DeserializePropertyList<AnimationSampler>(reader, _samplers); break;
 				case "samplers": DeserializePropertyList<AnimationSampler>(reader, _samplers); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -536,15 +536,15 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "copyright": _copyright = DeserializePropertyValue<String>(reader); break;
 				case "copyright": _copyright = DeserializePropertyValue<String>(reader); break;
 				case "generator": _generator = DeserializePropertyValue<String>(reader); break;
 				case "generator": _generator = DeserializePropertyValue<String>(reader); break;
 				case "minVersion": _minVersion = DeserializePropertyValue<String>(reader); break;
 				case "minVersion": _minVersion = DeserializePropertyValue<String>(reader); break;
 				case "version": _version = DeserializePropertyValue<String>(reader); break;
 				case "version": _version = DeserializePropertyValue<String>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -571,13 +571,13 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "byteLength": _byteLength = DeserializePropertyValue<Int32>(reader); break;
 				case "byteLength": _byteLength = DeserializePropertyValue<Int32>(reader); break;
 				case "uri": _uri = DeserializePropertyValue<String>(reader); break;
 				case "uri": _uri = DeserializePropertyValue<String>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -617,16 +617,16 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "buffer": _buffer = DeserializePropertyValue<Int32>(reader); break;
 				case "buffer": _buffer = DeserializePropertyValue<Int32>(reader); break;
 				case "byteLength": _byteLength = DeserializePropertyValue<Int32>(reader); break;
 				case "byteLength": _byteLength = DeserializePropertyValue<Int32>(reader); break;
 				case "byteOffset": _byteOffset = DeserializePropertyValue<Int32?>(reader); break;
 				case "byteOffset": _byteOffset = DeserializePropertyValue<Int32?>(reader); break;
 				case "byteStride": _byteStride = DeserializePropertyValue<Int32?>(reader); break;
 				case "byteStride": _byteStride = DeserializePropertyValue<Int32?>(reader); break;
 				case "target": _target = DeserializePropertyValue<BufferMode>(reader); break;
 				case "target": _target = DeserializePropertyValue<BufferMode>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -660,15 +660,15 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "xmag": _xmag = DeserializePropertyValue<Double>(reader); break;
 				case "xmag": _xmag = DeserializePropertyValue<Double>(reader); break;
 				case "ymag": _ymag = DeserializePropertyValue<Double>(reader); break;
 				case "ymag": _ymag = DeserializePropertyValue<Double>(reader); break;
 				case "zfar": _zfar = DeserializePropertyValue<Double>(reader); break;
 				case "zfar": _zfar = DeserializePropertyValue<Double>(reader); break;
 				case "znear": _znear = DeserializePropertyValue<Double>(reader); break;
 				case "znear": _znear = DeserializePropertyValue<Double>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -704,15 +704,15 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "aspectRatio": _aspectRatio = DeserializePropertyValue<Double?>(reader); break;
 				case "aspectRatio": _aspectRatio = DeserializePropertyValue<Double?>(reader); break;
 				case "yfov": _yfov = DeserializePropertyValue<Double>(reader); break;
 				case "yfov": _yfov = DeserializePropertyValue<Double>(reader); break;
 				case "zfar": _zfar = DeserializePropertyValue<Double?>(reader); break;
 				case "zfar": _zfar = DeserializePropertyValue<Double?>(reader); break;
 				case "znear": _znear = DeserializePropertyValue<Double>(reader); break;
 				case "znear": _znear = DeserializePropertyValue<Double>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -742,14 +742,14 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "orthographic": _orthographic = DeserializePropertyValue<CameraOrthographic>(reader); break;
 				case "orthographic": _orthographic = DeserializePropertyValue<CameraOrthographic>(reader); break;
 				case "perspective": _perspective = DeserializePropertyValue<CameraPerspective>(reader); break;
 				case "perspective": _perspective = DeserializePropertyValue<CameraPerspective>(reader); break;
 				case "type": _type = DeserializePropertyValue<CameraType>(reader); break;
 				case "type": _type = DeserializePropertyValue<CameraType>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -777,13 +777,13 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "index": _index = DeserializePropertyValue<Int32>(reader); break;
 				case "index": _index = DeserializePropertyValue<Int32>(reader); break;
 				case "texCoord": _texCoord = DeserializePropertyValue<Int32?>(reader); break;
 				case "texCoord": _texCoord = DeserializePropertyValue<Int32?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -825,16 +825,16 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "baseColorFactor": _baseColorFactor = DeserializePropertyValue<Vector4?>(reader); break;
 				case "baseColorFactor": _baseColorFactor = DeserializePropertyValue<Vector4?>(reader); break;
 				case "baseColorTexture": _baseColorTexture = DeserializePropertyValue<TextureInfo>(reader); break;
 				case "baseColorTexture": _baseColorTexture = DeserializePropertyValue<TextureInfo>(reader); break;
 				case "metallicFactor": _metallicFactor = DeserializePropertyValue<Double?>(reader); break;
 				case "metallicFactor": _metallicFactor = DeserializePropertyValue<Double?>(reader); break;
 				case "metallicRoughnessTexture": _metallicRoughnessTexture = DeserializePropertyValue<TextureInfo>(reader); break;
 				case "metallicRoughnessTexture": _metallicRoughnessTexture = DeserializePropertyValue<TextureInfo>(reader); break;
 				case "roughnessFactor": _roughnessFactor = DeserializePropertyValue<Double?>(reader); break;
 				case "roughnessFactor": _roughnessFactor = DeserializePropertyValue<Double?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -855,12 +855,12 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "scale": _scale = DeserializePropertyValue<Double?>(reader); break;
 				case "scale": _scale = DeserializePropertyValue<Double?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -883,12 +883,12 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "strength": _strength = DeserializePropertyValue<Double?>(reader); break;
 				case "strength": _strength = DeserializePropertyValue<Double?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -937,9 +937,9 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "alphaCutoff": _alphaCutoff = DeserializePropertyValue<Double?>(reader); break;
 				case "alphaCutoff": _alphaCutoff = DeserializePropertyValue<Double?>(reader); break;
 				case "alphaMode": _alphaMode = DeserializePropertyValue<AlphaMode>(reader); break;
 				case "alphaMode": _alphaMode = DeserializePropertyValue<AlphaMode>(reader); break;
@@ -949,7 +949,7 @@ namespace SharpGLTF.Schema2
 				case "normalTexture": _normalTexture = DeserializePropertyValue<MaterialNormalTextureInfo>(reader); break;
 				case "normalTexture": _normalTexture = DeserializePropertyValue<MaterialNormalTextureInfo>(reader); break;
 				case "occlusionTexture": _occlusionTexture = DeserializePropertyValue<MaterialOcclusionTextureInfo>(reader); break;
 				case "occlusionTexture": _occlusionTexture = DeserializePropertyValue<MaterialOcclusionTextureInfo>(reader); break;
 				case "pbrMetallicRoughness": _pbrMetallicRoughness = DeserializePropertyValue<MaterialPBRMetallicRoughness>(reader); break;
 				case "pbrMetallicRoughness": _pbrMetallicRoughness = DeserializePropertyValue<MaterialPBRMetallicRoughness>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -986,16 +986,16 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "attributes": DeserializePropertyDictionary<Int32>(reader, _attributes); break;
 				case "attributes": DeserializePropertyDictionary<Int32>(reader, _attributes); break;
 				case "indices": _indices = DeserializePropertyValue<Int32?>(reader); break;
 				case "indices": _indices = DeserializePropertyValue<Int32?>(reader); break;
 				case "material": _material = DeserializePropertyValue<Int32?>(reader); break;
 				case "material": _material = DeserializePropertyValue<Int32?>(reader); break;
 				case "mode": _mode = DeserializePropertyValue<PrimitiveType>(reader); break;
 				case "mode": _mode = DeserializePropertyValue<PrimitiveType>(reader); break;
 				case "targets": DeserializePropertyList<Dictionary<String,Int32>>(reader, _targets); break;
 				case "targets": DeserializePropertyList<Dictionary<String,Int32>>(reader, _targets); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -1025,13 +1025,13 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "primitives": DeserializePropertyList<MeshPrimitive>(reader, _primitives); break;
 				case "primitives": DeserializePropertyList<MeshPrimitive>(reader, _primitives); break;
 				case "weights": DeserializePropertyList<Double>(reader, _weights); break;
 				case "weights": DeserializePropertyList<Double>(reader, _weights); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -1082,9 +1082,9 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "camera": _camera = DeserializePropertyValue<Int32?>(reader); break;
 				case "camera": _camera = DeserializePropertyValue<Int32?>(reader); break;
 				case "children": DeserializePropertyList<Int32>(reader, _children); break;
 				case "children": DeserializePropertyList<Int32>(reader, _children); break;
@@ -1095,7 +1095,7 @@ namespace SharpGLTF.Schema2
 				case "skin": _skin = DeserializePropertyValue<Int32?>(reader); break;
 				case "skin": _skin = DeserializePropertyValue<Int32?>(reader); break;
 				case "translation": _translation = DeserializePropertyValue<Vector3?>(reader); break;
 				case "translation": _translation = DeserializePropertyValue<Vector3?>(reader); break;
 				case "weights": DeserializePropertyList<Double>(reader, _weights); break;
 				case "weights": DeserializePropertyList<Double>(reader, _weights); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -1129,15 +1129,15 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "magFilter": _magFilter = DeserializePropertyValue<TextureInterpolationFilter>(reader); break;
 				case "magFilter": _magFilter = DeserializePropertyValue<TextureInterpolationFilter>(reader); break;
 				case "minFilter": _minFilter = DeserializePropertyValue<TextureMipMapFilter>(reader); break;
 				case "minFilter": _minFilter = DeserializePropertyValue<TextureMipMapFilter>(reader); break;
 				case "wrapS": _wrapS = DeserializePropertyValue<TextureWrapMode>(reader); break;
 				case "wrapS": _wrapS = DeserializePropertyValue<TextureWrapMode>(reader); break;
 				case "wrapT": _wrapT = DeserializePropertyValue<TextureWrapMode>(reader); break;
 				case "wrapT": _wrapT = DeserializePropertyValue<TextureWrapMode>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -1161,12 +1161,12 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "nodes": DeserializePropertyList<Int32>(reader, _nodes); break;
 				case "nodes": DeserializePropertyList<Int32>(reader, _nodes); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -1196,14 +1196,14 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "inverseBindMatrices": _inverseBindMatrices = DeserializePropertyValue<Int32?>(reader); break;
 				case "inverseBindMatrices": _inverseBindMatrices = DeserializePropertyValue<Int32?>(reader); break;
 				case "joints": DeserializePropertyList<Int32>(reader, _joints); break;
 				case "joints": DeserializePropertyList<Int32>(reader, _joints); break;
 				case "skeleton": _skeleton = DeserializePropertyValue<Int32?>(reader); break;
 				case "skeleton": _skeleton = DeserializePropertyValue<Int32?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -1229,13 +1229,13 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "sampler": _sampler = DeserializePropertyValue<Int32?>(reader); break;
 				case "sampler": _sampler = DeserializePropertyValue<Int32?>(reader); break;
 				case "source": _source = DeserializePropertyValue<Int32?>(reader); break;
 				case "source": _source = DeserializePropertyValue<Int32?>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -1321,9 +1321,9 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "asset": _asset = DeserializePropertyValue<Asset>(reader); break;
 				case "asset": _asset = DeserializePropertyValue<Asset>(reader); break;
 				case "extensionsRequired": DeserializePropertyList<String>(reader, _extensionsRequired); break;
 				case "extensionsRequired": DeserializePropertyList<String>(reader, _extensionsRequired); break;
@@ -1342,7 +1342,7 @@ namespace SharpGLTF.Schema2
 				case "scenes": DeserializePropertyList<Scene>(reader, _scenes); break;
 				case "scenes": DeserializePropertyList<Scene>(reader, _scenes); break;
 				case "skins": DeserializePropertyList<Skin>(reader, _skins); break;
 				case "skins": DeserializePropertyList<Skin>(reader, _skins); break;
 				case "textures": DeserializePropertyList<Texture>(reader, _textures); break;
 				case "textures": DeserializePropertyList<Texture>(reader, _textures); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	
@@ -1371,14 +1371,14 @@ namespace SharpGLTF.Schema2
 		}
 		}
 	
 	
 		/// <inheritdoc />
 		/// <inheritdoc />
-		protected override void DeserializeProperty(string property, JsonReader reader)
+		protected override void DeserializeProperty(string jsonPropertyName, JsonReader reader)
 		{
 		{
-			switch (property)
+			switch (jsonPropertyName)
 			{
 			{
 				case "bufferView": _bufferView = DeserializePropertyValue<Int32?>(reader); break;
 				case "bufferView": _bufferView = DeserializePropertyValue<Int32?>(reader); break;
 				case "mimeType": _mimeType = DeserializePropertyValue<String>(reader); break;
 				case "mimeType": _mimeType = DeserializePropertyValue<String>(reader); break;
 				case "uri": _uri = DeserializePropertyValue<String>(reader); break;
 				case "uri": _uri = DeserializePropertyValue<String>(reader); break;
-				default: base.DeserializeProperty(property, reader); break;
+				default: base.DeserializeProperty(jsonPropertyName, reader); break;
 			}
 			}
 		}
 		}
 	
 	

+ 1 - 1
src/SharpGLTF.Core/Schema2/glb.cs

@@ -113,7 +113,7 @@ namespace SharpGLTF.Schema2
                 Guard.NotNull(model, nameof(model));
                 Guard.NotNull(model, nameof(model));
                 Guard.IsTrue(model.LogicalBuffers.Count <= 1, nameof(model), $"GLB format only supports one binary buffer, {model.LogicalBuffers.Count} found. It can be solved by calling {nameof(ModelRoot.MergeImages)} and {nameof(ModelRoot.MergeBuffers)}");
                 Guard.IsTrue(model.LogicalBuffers.Count <= 1, nameof(model), $"GLB format only supports one binary buffer, {model.LogicalBuffers.Count} found. It can be solved by calling {nameof(ModelRoot.MergeImages)} and {nameof(ModelRoot.MergeBuffers)}");
             }
             }
-            catch (Exception ex)
+            catch (ArgumentException ex)
             {
             {
                 return ex;
                 return ex;
             }
             }

+ 1 - 1
src/SharpGLTF.Core/Schema2/gltf.Skin.cs

@@ -244,7 +244,7 @@ namespace SharpGLTF.Schema2
                 {
                 {
                     var ibxform = ibxAccessor.AsMatrix4x4Array()[i];
                     var ibxform = ibxAccessor.AsMatrix4x4Array()[i];
                     try { ibxform.Inverse(); }
                     try { ibxform.Inverse(); }
-                    catch { result.AddError(this, $"Joint {i} has invalid bind matrix"); }
+                    catch (ArgumentException) { result.AddError(this, $"Joint {i} has invalid bind matrix"); }
                 }
                 }
             }
             }
 
 

+ 1 - 1
src/SharpGLTF.Core/Transforms/AnimationSamplerFactory.cs

@@ -99,7 +99,7 @@ namespace SharpGLTF.Transforms
 
 
                 for (int i = 0; i < result.Length; ++i)
                 for (int i = 0; i < result.Length; ++i)
                 {
                 {
-                    result[i] = sample.Item1[i] * (1 - sample.Item3) + sample.Item2[i] * sample.Item3;
+                    result[i] = (sample.Item1[i] * (1 - sample.Item3)) + (sample.Item2[i] * sample.Item3);
                 }
                 }
 
 
                 return result;
                 return result;

+ 0 - 1
src/SharpGLTF.Core/Transforms/MeshTransforms.cs

@@ -52,7 +52,6 @@ namespace SharpGLTF.Transforms
                 _InvWeight = 0;
                 _InvWeight = 0;
                 for (int i = 0; i < morphWeights.Count; ++i) _MorphWeights[i] = _MorphWeights[i] / sum;
                 for (int i = 0; i < morphWeights.Count; ++i) _MorphWeights[i] = _MorphWeights[i] / sum;
             }
             }
-
         }
         }
 
 
         #endregion
         #endregion

+ 2 - 2
src/SharpGLTF.Toolkit/Geometry/VertexColumns.cs

@@ -4,10 +4,10 @@ using System.Numerics;
 using System.Text;
 using System.Text;
 using System.Linq;
 using System.Linq;
 
 
+using SharpGLTF.Geometry.VertexTypes;
+
 namespace SharpGLTF.Geometry
 namespace SharpGLTF.Geometry
 {
 {
-    using VertexTypes;
-
     /// <summary>
     /// <summary>
     /// Represents a vertex buffer, where every vertex attribute is represented as a vector column.
     /// Represents a vertex buffer, where every vertex attribute is represented as a vector column.
     /// </summary>
     /// </summary>

+ 23 - 8
src/SharpGLTF.Toolkit/Geometry/VertexTypes/VertexSkinning.cs

@@ -32,17 +32,17 @@ namespace SharpGLTF.Geometry.VertexTypes
         public int Joint;
         public int Joint;
         public float Weight;
         public float Weight;
 
 
+        private static readonly _WeightComparer _DefaultWeightComparer = new _WeightComparer();
+
         #endregion
         #endregion
 
 
-        #region API
+        #region properties
 
 
-        private static int CompareWeightTo(JointBinding left, JointBinding right)
-        {
-            var a = left.Weight.CompareTo(right.Weight);
-            if (a != 0) return a;
+        public static IComparer<JointBinding> WeightComparer => _DefaultWeightComparer;
 
 
-            return left.Joint.CompareTo(right.Joint);
-        }
+        #endregion
+
+        #region API
 
 
         internal static void InPlaceReverseBubbleSort(Span<JointBinding> span)
         internal static void InPlaceReverseBubbleSort(Span<JointBinding> span)
         {
         {
@@ -52,7 +52,7 @@ namespace SharpGLTF.Geometry.VertexTypes
 
 
                 for (int j = 0; j < span.Length - 1; ++j)
                 for (int j = 0; j < span.Length - 1; ++j)
                 {
                 {
-                    if (CompareWeightTo(span[j], span[j + 1]) < 0)
+                    if (_DefaultWeightComparer.Compare(span[j], span[j + 1]) < 0)
                     {
                     {
                         var tmp = span[j];
                         var tmp = span[j];
                         span[j] = span[j + 1];
                         span[j] = span[j + 1];
@@ -98,6 +98,21 @@ namespace SharpGLTF.Geometry.VertexTypes
         }
         }
 
 
         #endregion
         #endregion
+
+        #region types
+
+        private sealed class _WeightComparer : IComparer<JointBinding>
+        {
+            public int Compare(JointBinding x, JointBinding y)
+            {
+                var a = x.Weight.CompareTo(y.Weight);
+                if (a != 0) return a;
+
+                return x.Joint.CompareTo(y.Joint);
+            }
+        }
+
+        #endregion
     }
     }
 
 
     public interface IVertexSkinning
     public interface IVertexSkinning

+ 0 - 1
src/SharpGLTF.Toolkit/IO/WavefrontWriter.cs

@@ -16,7 +16,6 @@ namespace SharpGLTF.IO
     using VERTEX = Geometry.VertexBuilder<Geometry.VertexTypes.VertexPositionNormal, Geometry.VertexTypes.VertexTexture1, Geometry.VertexTypes.VertexEmpty>;
     using VERTEX = Geometry.VertexBuilder<Geometry.VertexTypes.VertexPositionNormal, Geometry.VertexTypes.VertexTexture1, Geometry.VertexTypes.VertexEmpty>;
     using VGEOMETRY = Geometry.VertexTypes.VertexPositionNormal;
     using VGEOMETRY = Geometry.VertexTypes.VertexPositionNormal;
     using VMATERIAL = Geometry.VertexTypes.VertexTexture1;
     using VMATERIAL = Geometry.VertexTypes.VertexTexture1;
-    
 
 
     /// <summary>
     /// <summary>
     /// Tiny wavefront object writer
     /// Tiny wavefront object writer