/// <summary>
        /// Initializer only to be called by the <see cref="RwNodeFactory"/>.
        /// </summary>
        internal RwRasterDataStructNode(RwNodeFactory.RwNodeHeader header, BinaryReader reader)
            : base(header)
        {
            long start = reader.BaseStream.Position;

            if (RasterInfoStructNode.Format.HasFlagUnchecked(RwRasterFormats.HasHeaders))
            {
                mImageHeader = new PS2StandardImageHeader(reader);
            }

            if (PS2PixelFormatHelper.IsIndexedPixelFormat(RasterInfoStructNode.Tex0Register.TexturePixelFormat))
            {
                ReadIndices(reader);

                if (RasterInfoStructNode.Format.HasFlagUnchecked(RwRasterFormats.HasHeaders))
                {
                    mPaletteHeader = new PS2StandardImageHeader(reader);
                }

                ReadPalette(reader);
            }
            else
            {
                ReadPixels(reader);
            }

            long end = reader.BaseStream.Position;

            mMipMapData = reader.ReadBytes((int)((start + Size) - end));
        }
Beispiel #2
0
        /// <summary>
        /// Initializer only to be called by the <see cref="RWNodeFactory"/>.
        /// </summary>
        internal RWRasterData(RWNodeFactory.RWNodeInfo header, BinaryReader reader)
            : base(header)
        {
            long start = reader.BaseStream.Position;

            if (RasterInfo.Format.HasFlagUnchecked(RWRasterFormats.HasHeaders))
                _imageHeader = new PS2StandardImageHeader(reader);

            if (PS2PixelFormatHelper.IsIndexedPixelFormat(RasterInfo.Tex0Register.TexturePixelFormat))
            {
                ReadIndices(reader);

                if (RasterInfo.Format.HasFlagUnchecked(RWRasterFormats.HasHeaders))
                    _paletteHeader = new PS2StandardImageHeader(reader);

                ReadPalette(reader);
            }
            else
            {
                ReadPixels(reader);
            }

            long end = reader.BaseStream.Position;

            _mipMapData = reader.ReadBytes((int)((start + Size) - end));
        }