public void SetStreamedVertices(IPrimitiveReader <TMaterial> srcPrim, PackedEncoding vertexEncoding) { Guard.NotNull(srcPrim, nameof(srcPrim)); var attributeNames = VertexTypes.VertexUtils .GetVertexAttributes(srcPrim.Vertices[0], srcPrim.Vertices.Count, vertexEncoding) .Select(item => item.Name) .ToList(); var vAccessors = new List <MACCESSOR>(); GuardAll.MustBeEqualTo(vAccessors.Select(item => item.Attribute.ByteOffset), 0, nameof(vAccessors)); GuardAll.MustBeEqualTo(vAccessors.Select(item => item.Attribute.ByteStride), 0, nameof(vAccessors)); foreach (var an in attributeNames) { var vAccessor = VertexTypes.VertexUtils.CreateVertexMemoryAccessor(srcPrim.Vertices, an, vertexEncoding); if (vAccessor == null) { continue; } vAccessors.Add(vAccessor); } _VertexAccessors = vAccessors.ToArray(); MACCESSOR.SanitizeVertexAttributes(_VertexAccessors); }
public InstanceBuilder AddSkinnedMesh(MESHBUILDER mesh, Matrix4x4 meshWorldMatrix, params NodeBuilder[] joints) { Guard.NotNull(mesh, nameof(mesh)); Guard.IsTrue(meshWorldMatrix.IsValid(_Extensions.MatrixCheck.WorldTransform), nameof(meshWorldMatrix)); GuardAll.NotNull(joints, nameof(joints)); var instance = new InstanceBuilder(this); instance.Content = new SkinnedTransformer(mesh, meshWorldMatrix, joints); _Instances.Add(instance); return(instance); }