internal MeshPrimitive(Mesh <TMaterial> owner, Schema2.MeshPrimitive primitive) : this(owner) { _Vertices = primitive.VertexAccessors .Select(kvp => new VertexAccessor(kvp.Key, kvp.Value)) .ToArray(); for (int i = 0; i < primitive.MorphTargetsCount; ++i) { var accessors = primitive.GetMorphTargetAccessors(i) .Select(kvp => new VertexAccessor(kvp.Key, kvp.Value)) .ToArray(); _MorphAccessors.Add(accessors); } _Indices = primitive.IndexAccessor == null ? null : new IndicesAccessor(primitive.IndexAccessor); _PrimitiveDrawType = primitive.DrawPrimitiveType; if (primitive.Material != null) { if (typeof(TMaterial) == typeof(Schema2.Material)) { _Material = (TMaterial)(Object)primitive.Material; } if (typeof(TMaterial) == typeof(int?)) { var materialIndex = primitive.Material?.LogicalIndex; _Material = (TMaterial)(Object)materialIndex; } } }
public void AssignTo(Schema2.MeshPrimitive dstPrim) { var dstAccessor = dstPrim.LogicalParent.LogicalParent.CreateAccessor(this.Name); dstAccessor.SetVertexData(_MemoryAccessor); dstPrim.SetVertexAccessor(this._MemoryAccessor.Attribute.Name, dstAccessor); }
public void AssignToSchema(Schema2.MeshPrimitive dstPrim) { var dstAccessor = dstPrim.LogicalParent.LogicalParent.CreateAccessor(this.Name); dstAccessor.SetIndexData(_MemoryAccessor); dstPrim.IndexAccessor = dstAccessor; }
internal PrimitiveReport(Schema2.MeshPrimitive prim) { var vertices = prim.GetVertexAccessor("POSITION").AsVector3Array(); NumVertices = vertices.Count; NumPoints = prim.GetPointIndices().Count(); NumLines = prim.GetLineIndices().Count(); NumTriangles = prim.GetTriangleIndices().Count(); Bounds = vertices.GetBounds(); VertexAttributes = prim.VertexAccessors.Keys.ToArray(); }