public static Accessor CreateVertexAccessor(this ModelRoot root, Memory.MemoryAccessor memAccessor)
        {
            Guard.NotNull(memAccessor, nameof(memAccessor));

            var accessor = root.CreateAccessor(memAccessor.Attribute.Name);

            accessor.SetVertexData(memAccessor);

            return(accessor);
        }
Beispiel #2
0
        public static MeshPrimitive WithVertexAccessor(this MeshPrimitive primitive, Memory.MemoryAccessor memAccessor)
        {
            Guard.NotNull(primitive, nameof(primitive));
            Guard.NotNull(memAccessor, nameof(memAccessor));

            var root = primitive.LogicalParent.LogicalParent;

            primitive.SetVertexAccessor(memAccessor.Attribute.Name, root.CreateVertexAccessor(memAccessor));

            return(primitive);
        }
        public void SetIndices(IPrimitiveReader <TMaterial> srcPrim, EncodingType encoding)
        {
            Guard.NotNull(srcPrim, nameof(srcPrim));

            var iAccessor = VertexTypes.VertexUtils.CreateIndexMemoryAccessor(srcPrim.GetIndices(), encoding);

            if (_VerticesPerPrimitive == 1)
            {
                Guard.MustBeNull(iAccessor, nameof(srcPrim));
            }
            else
            {
                Guard.NotNull(iAccessor, nameof(iAccessor));
            }

            _IndexAccessors = iAccessor;
        }
Beispiel #4
0
        private static Memory.MemoryAccessor _RemoveDelta(Memory.MemoryAccessor accessor)
        {
            var name = accessor.Attribute.Name;

            if (!name.EndsWith("DELTA", StringComparison.Ordinal))
            {
                throw new InvalidOperationException();
            }

            name = name.Replace("DELTA", string.Empty);

            var attr = accessor.Attribute;

            attr.Name = name;

            return(new SharpGLTF.Memory.MemoryAccessor(accessor.Data, attr));
        }
Beispiel #5
0
        public void AddPrimitive(TMaterial material, Memory.MemoryAccessor[] vrtAccessors, Memory.MemoryAccessor idxAccessor)
        {
            var p = new PackedPrimitiveBuilder <TMaterial>(material, vrtAccessors, idxAccessor);

            _Primitives.Add(p);
        }
Beispiel #6
0
 internal PackedPrimitiveBuilder(TMaterial material, Memory.MemoryAccessor[] vrtAccessors, Memory.MemoryAccessor idxAccessor)
 {
     _Material        = material;
     _VertexAccessors = vrtAccessors;
     _IndexAccessors  = idxAccessor;
 }
Beispiel #7
0
        public static MeshPrimitive WithIndicesAccessor(this MeshPrimitive primitive, PrimitiveType primitiveType, Memory.MemoryAccessor memAccessor)
        {
            Guard.NotNull(primitive, nameof(primitive));

            var root = primitive.LogicalParent.LogicalParent;

            var accessor = root.CreateAccessor();

            accessor.SetIndexData(memAccessor);

            primitive.DrawPrimitiveType = primitiveType;
            primitive.SetIndexAccessor(accessor);

            return(primitive);
        }