Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
        public void AssignTo(Schema2.MeshPrimitive dstPrim)
        {
            var dstAccessor = dstPrim.LogicalParent.LogicalParent.CreateAccessor(this.Name);

            dstAccessor.SetVertexData(_MemoryAccessor);
            dstPrim.SetVertexAccessor(this._MemoryAccessor.Attribute.Name, dstAccessor);
        }
Exemplo n.º 3
0
        public void AssignToSchema(Schema2.MeshPrimitive dstPrim)
        {
            var dstAccessor = dstPrim.LogicalParent.LogicalParent.CreateAccessor(this.Name);

            dstAccessor.SetIndexData(_MemoryAccessor);
            dstPrim.IndexAccessor = dstAccessor;
        }
Exemplo n.º 4
0
        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();
        }