Beispiel #1
0
        public void RemoveMiddleDataFromStream()
        {
            string outPath =
                TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 3, TestAssetPaths.GLB_EXTENSION);

            FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOX_PATH);

            FileStream glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
            GLBObject  glbObject    = GLBBuilder.ConstructFromStream(glbStream, glbOutStream);

            const uint numBuffersToAdd = 5;
            const uint bufferSize      = 100;

            BufferViewId[] bufferViews = new BufferViewId[numBuffersToAdd];
            for (int i = 0; i < numBuffersToAdd; ++i)
            {
                byte[] buffer = new byte[bufferSize];
                bufferViews[i] = AddBinaryDataToStreamHelper(glbObject, new MemoryStream(buffer));
            }

            uint previousFileLength      = glbObject.Header.FileLength;
            uint previousBufferLength    = glbObject.BinaryChunkInfo.Length;
            int  previousBufferViewCount = glbObject.Root.BufferViews.Count;

            GLBBuilder.RemoveBinaryData(glbObject, bufferViews[2]);             // remove from the middle
            Assert.AreEqual(previousFileLength, glbObject.Header.FileLength);
            Assert.AreEqual(previousBufferLength, glbObject.BinaryChunkInfo.Length);
            Assert.AreEqual(previousBufferViewCount - 1, glbObject.Root.BufferViews.Count);
        }
Beispiel #2
0
        public void RemoveAllDataFromStream()
        {
            string outPath =
                TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 3, TestAssetPaths.GLB_EXTENSION);

            FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOX_PATH);

            FileStream   glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
            GLBObject    glbObject    = GLBBuilder.ConstructFromStream(glbStream, glbOutStream);
            BufferViewId id0          = new BufferViewId
            {
                Id   = 0,
                Root = glbObject.Root
            };

            int numBufferViews = glbObject.Root.BufferViews.Count;

            for (int i = 0; i < numBufferViews; ++i)
            {
                GLBBuilder.RemoveBinaryData(glbObject, id0);
            }

            Assert.AreEqual(0, glbObject.Root.Buffers.Count);
            Assert.AreEqual(0, glbObject.Root.BufferViews.Count);
        }
Beispiel #3
0
        public void RemoveBinaryDataFromStream()
        {
            string outPath =
                TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 2, TestAssetPaths.GLB_EXTENSION);

            FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOX_PATH);

            FileStream glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
            GLBObject  glbObject    = GLBBuilder.ConstructFromStream(glbStream, glbOutStream);

            const uint bufferSize = 100;

            byte[]       buffer                  = new byte[bufferSize];
            BufferViewId bufferViewId            = AddBinaryDataToStreamHelper(glbObject, new MemoryStream(buffer));
            uint         length                  = (uint)bufferViewId.Value.ByteLength;
            uint         previousFileLength      = glbObject.Header.FileLength;
            uint         previousBufferLength    = glbObject.BinaryChunkInfo.Length;
            int          previousBufferViewCount = glbObject.Root.BufferViews.Count;

            GLBBuilder.RemoveBinaryData(glbObject, bufferViewId);
            Assert.AreEqual(previousFileLength - length, glbObject.Header.FileLength);
            Assert.AreEqual(previousBufferLength - length, glbObject.BinaryChunkInfo.Length);
            Assert.AreEqual(previousBufferLength - length, (uint)glbObject.Root.Buffers[0].ByteLength);
            Assert.AreEqual(previousBufferViewCount - 1, glbObject.Root.BufferViews.Count);
        }