@@ -360,7 +360,7 @@ private class GLTF: Decodable {
360360 let pattern = UInt32 (
361361 littleEndian: $0. load ( fromByteOffset: offset, as: UInt32 . self)
362362 )
363- array. append ( Float ( bitPattern: pattern) )
363+ array. append ( Scalar ( bitPattern: pattern) )
364364 }
365365 return array. map ( { T ( $0) } )
366366 }
@@ -444,7 +444,7 @@ private class GLTF: Decodable {
444444 let pattern = UInt32 (
445445 littleEndian: $0. load ( fromByteOffset: offset, as: UInt32 . self)
446446 )
447- array. append ( Float ( bitPattern: pattern) )
447+ array. append ( Scalar ( bitPattern: pattern) )
448448 }
449449 return array. map ( { T ( $0) } )
450450 }
@@ -718,8 +718,13 @@ extension GLTransmissionFormat: GeometryImporter {
718718 throw GateEngineError . failedToDecode ( " Failed to decode geometry. " )
719719 }
720720
721- let geometryBase = RawGeometry ( byCombining: geometries, withOptimization: . dontOptimize)
722-
721+ let geometryBase : RawGeometry = {
722+ if geometries. count == 1 {
723+ return geometries [ 0 ]
724+ }
725+ return RawGeometry ( byCombining: geometries, withOptimization: . dontOptimize)
726+ } ( )
727+
723728 if options. applyRootTransform, let nodeIndex = gltf. scenes [ gltf. scene] . nodes? . first {
724729 let transform = gltf. nodes [ nodeIndex] . transform. createMatrix ( )
725730 return geometryBase * transform
@@ -817,12 +822,10 @@ extension GLTransmissionFormat: SkinImporter {
817822 }
818823
819824 let skin = skins [ skinIndex]
820- guard
821- let inverseBindMatrices = await inverseBindMatrices (
822- from: gltf. bufferViews [ skin. inverseBindMatrices] ,
823- expecting: skin. joints. count
824- )
825- else {
825+ guard let inverseBindMatrices = await inverseBindMatrices (
826+ from: gltf. bufferViews [ gltf. accessors [ skin. inverseBindMatrices] . bufferView] ,
827+ expecting: gltf. accessors [ skin. inverseBindMatrices] . count
828+ ) else {
826829 throw GateEngineError . failedToDecode ( " Failed to parse skin. " )
827830 }
828831
@@ -831,14 +834,10 @@ extension GLTransmissionFormat: SkinImporter {
831834 }
832835 let mesh = gltf. meshes![ meshID]
833836
834- guard
835- let meshJoints: [ UInt32 ] = await gltf. values ( forAccessor: mesh. primitives [ 0 ] [ . joints] !)
836- else {
837+ guard let meshJoints: [ UInt32 ] = await gltf. values ( forAccessor: mesh. primitives [ 0 ] [ . joints] !) else {
837838 throw GateEngineError . failedToDecode ( " Failed to parse skin. " )
838839 }
839- guard
840- let meshWeights: [ Float ] = await gltf. values ( forAccessor: mesh. primitives [ 0 ] [ . weights] !)
841- else {
840+ guard let meshWeights: [ Float ] = await gltf. values ( forAccessor: mesh. primitives [ 0 ] [ . weights] !) else {
842841 throw GateEngineError . failedToDecode ( " Failed to parse skin. " )
843842 }
844843
0 commit comments