Browse Source

Simplified monogame loader by removing a redundant argument.

Vicente Penades 5 years ago
parent
commit
cf0c99344d

+ 3 - 3
examples/SharpGLTF.Runtime.MonoGame/LoaderContext.BasicEffect.cs

@@ -108,10 +108,10 @@ namespace SharpGLTF.Runtime
 
         #region meshes creation
 
-        protected override void WriteMeshPrimitive(int logicalMeshIndex, MeshPrimitiveReader srcPrimitive, Effect effect)
+        protected override void WriteMeshPrimitive(MeshPrimitiveReader srcPrimitive, Effect effect)
         {
-            if (srcPrimitive.IsSkinned) WriteMeshPrimitive<VertexSkinned>(logicalMeshIndex, effect, srcPrimitive);
-            else WriteMeshPrimitive<VertexPositionNormalTexture>(logicalMeshIndex, effect, srcPrimitive);
+            if (srcPrimitive.IsSkinned) WriteMeshPrimitive<VertexSkinned>(effect, srcPrimitive);
+            else WriteMeshPrimitive<VertexPositionNormalTexture>(effect, srcPrimitive);
         }
 
         #endregion

+ 9 - 6
examples/SharpGLTF.Runtime.MonoGame/LoaderContext.cs

@@ -38,6 +38,7 @@ namespace SharpGLTF.Runtime
 
         // gathers all meshes using shared vertex and index buffers whenever possible.
         private MeshPrimitiveWriter _MeshWriter;
+        private int _CurrentMeshIndex;
 
         // used as a container to a default material;
         private SharpGLTF.Schema2.ModelRoot _DummyModel; 
@@ -77,7 +78,9 @@ namespace SharpGLTF.Runtime
             
             foreach (var srcPrim in srcPrims)
             {
-                _WriteMeshPrimitive(srcMesh.LogicalIndex, srcPrim.Value, srcPrim.Key.Material);                
+                _CurrentMeshIndex = srcMesh.LogicalIndex;
+
+                _WriteMeshPrimitive(srcPrim.Value, srcPrim.Key.Material);                
             }            
         }
 
@@ -97,7 +100,7 @@ namespace SharpGLTF.Runtime
             }
         }
 
-        private void _WriteMeshPrimitive(int logicalMeshIndex, MeshPrimitiveReader srcPrim, SRCMATERIAL srcMaterial)
+        private void _WriteMeshPrimitive(MeshPrimitiveReader srcPrim, SRCMATERIAL srcMaterial)
         {
             if (srcMaterial == null) srcMaterial = GetDefaultMaterial();
 
@@ -109,15 +112,15 @@ namespace SharpGLTF.Runtime
                 _MatFactory.Register(srcMaterial, srcPrim.IsSkinned, effect);
             }
 
-            WriteMeshPrimitive(logicalMeshIndex, srcPrim, effect);
+            WriteMeshPrimitive(srcPrim, effect);
         }        
 
-        protected abstract void WriteMeshPrimitive(int logicalMeshIndex, MeshPrimitiveReader srcPrimitive, Effect effect);
+        protected abstract void WriteMeshPrimitive(MeshPrimitiveReader srcPrimitive, Effect effect);
 
-        protected void WriteMeshPrimitive<TVertex>(int logicalMeshIndex, Effect effect, MeshPrimitiveReader primitive)
+        protected void WriteMeshPrimitive<TVertex>(Effect effect, MeshPrimitiveReader primitive)
             where TVertex : unmanaged, IVertexType
         {
-            _MeshWriter.WriteMeshPrimitive<TVertex>(logicalMeshIndex, effect, primitive);
+            _MeshWriter.WriteMeshPrimitive<TVertex>(_CurrentMeshIndex, effect, primitive);
         }
 
         #endregion

+ 2 - 7
examples/SharpGLTF.Runtime.MonoGame/MonoGameModelInstance.cs

@@ -111,15 +111,10 @@ namespace SharpGLTF.Runtime
             {
                 var xposed = skinTransforms.Select(item => Matrix.Transpose(item)).ToArray();
 
-                iskin.SetBoneTransforms(skinTransforms);
+                iskin.SetBoneTransforms(skinTransforms, 0, skinTransforms.Length);
             }            
         }
 
         #endregion
-    }
-
-    public interface IEffectBones // it could be great if SkinnedEffect implemented this.
-    {        
-        void SetBoneTransforms(Matrix[] boneTransforms);
-    }
+    }    
 }

+ 5 - 0
examples/SharpGLTF.Runtime.MonoGame/VertexSkinned.cs

@@ -50,4 +50,9 @@ namespace SharpGLTF.Runtime
         
         #endregion
     }
+
+    public interface IEffectBones // it could be great if SkinnedEffect implemented this.
+    {
+        void SetBoneTransforms(Matrix[] boneTransforms, int boneStart, int boneCount);
+    }
 }