Beispiel #1
0
        private BufferViewId AddBinaryDataToStreamHelper(GLBObject glbObject, Stream blobToAdd)
        {
            int previousCount = 0;

            if (glbObject.Root.BufferViews != null)
            {
                previousCount = glbObject.Root.BufferViews.Count;
            }

            uint previousGLBLength   = glbObject.Header.FileLength;
            uint previousChunkLength = glbObject.BinaryChunkInfo.Length;

            uint         bufferSize   = GLBBuilder.CalculateAlignment((uint)blobToAdd.Length, 4);
            BufferViewId bufferViewId = GLBBuilder.AddBinaryData(glbObject, blobToAdd);

            uint headerModifier = previousChunkLength == 0 ? GLTFParser.CHUNK_HEADER_SIZE : 0;

            Assert.AreEqual(previousCount + 1, glbObject.Root.BufferViews.Count);
            Assert.AreEqual(previousCount, bufferViewId.Id);
            Assert.AreEqual(previousGLBLength + bufferSize + headerModifier, glbObject.Header.FileLength);
            Assert.AreEqual(previousChunkLength + bufferSize, glbObject.BinaryChunkInfo.Length);
            Assert.AreEqual(previousChunkLength + bufferSize, glbObject.Root.Buffers[0].ByteLength);
            Assert.AreEqual(glbObject.Header.FileLength, glbObject.Stream.Length);

            return(bufferViewId);
        }