コード例 #1
0
        /// <summary>
        /// Called internally by the serializer when the buffer content is to be written as an external file
        /// </summary>
        /// <param name="writer">The satellite asset writer</param>
        /// <param name="satelliteUri">A local satellite URI</param>
        internal void _WriteToSatellite(IO.WriteContext writer, string satelliteUri)
        {
            this._uri        = satelliteUri;
            this._byteLength = _Content.Length;

            writer.WriteAllBytesToEnd(satelliteUri, new ArraySegment <byte>(_Content.GetPaddedContent()));
        }
コード例 #2
0
 internal void _PrepareBuffersForSatelliteWriting(IO.WriteContext context, string baseName)
 {
     // setup all buffers to be written as satellite files
     for (int i = 0; i < this._buffers.Count; ++i)
     {
         var buffer = this._buffers[i];
         var bname  = this._buffers.Count != 1 ? $"{baseName}_{i}.bin" : $"{baseName}.bin";
         buffer._WriteToSatellite(context, bname);
     }
 }
コード例 #3
0
ファイル: gltf.Buffer.cs プロジェクト: weianweigan/DuSwToglTF
        /// <summary>
        /// Called internally by the serializer when the buffer content is to be written as an external file
        /// </summary>
        /// <param name="writer">The satellite asset writer</param>
        /// <param name="satelliteUri">A local satellite URI</param>
        internal void _WriteToSatellite(IO.WriteContext writer, string satelliteUri)
        {
            writer.WriteAllBytesToEnd(satelliteUri, new ArraySegment <byte>(_Content.GetPaddedContent()));

            Uri uri = new Uri(satelliteUri, UriKind.Relative);

            this._uri = uri.ToString() /*Uri.EscapeUriString(satelliteUri)*/;

            this._byteLength = _Content.Length;
        }
コード例 #4
0
        /// <summary>
        /// Called internally by the serializer when the image content is to be written as an external file
        /// </summary>
        /// <param name="writer">The satellite asset writer</param>
        /// <param name="satelliteUri">A local satellite URI</param>
        internal void _WriteToSatellite(IO.WriteContext writer, string satelliteUri)
        {
            if (_SatelliteImageContent == null)
            {
                _WriteAsBufferView();
                return;
            }

            if (_SatelliteImageContent._IsPngImage())
            {
                _mimeType = null;
                _uri      = satelliteUri += ".png";
                writer.WriteAllBytesToEnd(_uri, _SatelliteImageContent.Slice(0));
                return;
            }

            if (_SatelliteImageContent._IsJpgImage())
            {
                _mimeType = null;
                _uri      = satelliteUri += ".jpg";
                writer.WriteAllBytesToEnd(_uri, _SatelliteImageContent.Slice(0));
                return;
            }

            if (_SatelliteImageContent._IsDdsImage())
            {
                _mimeType = null;
                _uri      = satelliteUri += ".dds";
                writer.WriteAllBytesToEnd(_uri, _SatelliteImageContent.Slice(0));
                return;
            }

            if (_SatelliteImageContent._IsWebpImage())
            {
                _mimeType = null;
                _uri      = satelliteUri += ".webp";
                writer.WriteAllBytesToEnd(_uri, _SatelliteImageContent.Slice(0));
                return;
            }

            throw new NotImplementedException();
        }
コード例 #5
0
        /// <summary>
        /// Called internally by the serializer when the image content is to be written as an external file
        /// </summary>
        /// <param name="writer">The satellite asset writer</param>
        /// <param name="satelliteUri">A local satellite URI</param>
        internal void _WriteToSatellite(IO.WriteContext writer, string satelliteUri)
        {
            if (_SatelliteImageContent == null)
            {
                _WriteAsBufferView();
                return;
            }

            _mimeType = null;

            var imimg = new Memory.InMemoryImage(_SatelliteImageContent);

            if (!imimg.IsValid)
            {
                throw new InvalidOperationException();
            }

            _uri = System.IO.Path.ChangeExtension(satelliteUri, imimg.FileExtension);
            writer.WriteAllBytesToEnd(_uri, imimg.GetBuffer());
        }
コード例 #6
0
        internal void _PrepareImagesForWriting(IO.WriteContext context, string baseName, ResourceWriteMode rmode)
        {
            if (context.ImageWriting != ResourceWriteMode.Default)
            {
                rmode = context.ImageWriting;
            }

            // setup all images to be written to the appropiate location.
            for (int i = 0; i < this._images.Count; ++i)
            {
                var image = this._images[i];

                if (rmode != ResourceWriteMode.SatelliteFile)
                {
                    image._WriteToInternal();
                }
                else
                {
                    var iname = this._images.Count != 1 ? $"{baseName}_{i}" : $"{baseName}";
                    image._WriteToSatellite(context, iname);
                }
            }
        }