public void AddGeometryData(MeshPartGeometryData data, MeshMaterial material, Matrix transform) { if (!parts.ContainsKey(material)) { throw new InvalidOperationException("Material not created by the meshbuilder"); } var p = parts[material]; var xTransform = transform.xna(); var sPositions = data.GetSourceVector3(MeshPartGeometryData.Semantic.Position); var sNormals = data.GetSourceVector3(MeshPartGeometryData.Semantic.Normal); var sTexcoords = data.GetSourceVector2(MeshPartGeometryData.Semantic.Texcoord); var nPositions = new XnaVector3[sPositions.Length]; var nNormals = new XnaVector3[sNormals.Length]; var nTexcoords = sTexcoords; XnaVector3.Transform(sPositions, ref xTransform, nPositions); XnaVector3.TransformNormal(sNormals, ref xTransform, nNormals); p.Positions.AddRange(nPositions); p.Normals.AddRange(nNormals); p.Texcoords.AddRange(nTexcoords); }