Ejemplo n.º 1
0
        internal void SetMorphTargets(IPrimitiveMorphTargetReader other, IReadOnlyDictionary<int, int> vertexMap, Func<IVertexGeometry, VertexBuilder<TvG, TvM, VertexEmpty>> vertexFunc)
        {
            Guard.NotNull(vertexFunc, nameof(vertexFunc));

            var indices = other.GetTargetIndices();

            foreach (var srcVidx in indices)
            {
                var g = vertexFunc(other.GetVertex(srcVidx).GetGeometry());

                var dstVidx = srcVidx;

                if (vertexMap != null)
                {
                    if (!vertexMap.TryGetValue(srcVidx, out dstVidx)) dstVidx = -1;
                }

                if (dstVidx >= 0) this.SetVertex(dstVidx, g);
            }
        }
Ejemplo n.º 2
0
        public static VertexBuilder <VertexGeometryDelta, VertexEmpty, VertexEmpty>[] GetMorphTargetVertices(this IPrimitiveMorphTargetReader morphTarget, int vertexCount)
        {
            var c = new VertexBuilder <VertexGeometryDelta, VertexEmpty, VertexEmpty> [vertexCount];

            for (int i = 0; i < vertexCount; ++i)
            {
                var delta = morphTarget.GetVertexDelta(i);

                c[i] = new VertexBuilder <VertexGeometryDelta, VertexEmpty, VertexEmpty>(delta);
            }

            return(c);
        }