本文整理汇总了C#中IUnrealStream.Seek方法的典型用法代码示例。如果您正苦于以下问题:C# IUnrealStream.Seek方法的具体用法?C# IUnrealStream.Seek怎么用?C# IUnrealStream.Seek使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IUnrealStream
的用法示例。
在下文中一共展示了IUnrealStream.Seek方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Deserialize
public void Deserialize( IUnrealStream stream )
{
if( stream.Version >= 63 )
{
// Offset to (Width = ...)
WidthOffset = stream.ReadUInt32();
long opos = stream.Position;
stream.Seek( WidthOffset, System.IO.SeekOrigin.Begin );
Width = stream.ReadUInt32();
Height = stream.ReadUInt32();
stream.Seek( opos, System.IO.SeekOrigin.Begin );
}
int mipMapSize = stream.ReadIndex();
Pixels = new int[mipMapSize];
switch( Owner._Format.Decompile().Substring( 6 ) )
{
case "TEXF_RGBA8": case "5":
for( int i = 0; i < mipMapSize; ++ i )
{
Pixels[i] = stream.ReadInt32();
}
break;
case "TEXF_DXT1": case "3":
for( int i = 0; i < mipMapSize / 2; ++ i )
{
byte c = stream.ReadByte();
Pixels[i ++] = c & 0xF0;
Pixels[i] = c & 0x0F;
}
// PostProcess:
// 4x4 4bit per pixel, 16bit per color: 5bits red; 6bits green; 5bits blue.
//
break;
}
// Width, Height. See above!
stream.Skip( 8 );
BitsWidth = stream.ReadByte();
BitsHeight = stream.ReadByte();
}
示例2: Deserialize
public void Deserialize( IUnrealStream stream )
{
if( stream.ReadUInt32() != Signature )
{
throw new System.IO.FileLoadException( stream + " isn't a UnrealMod file!" );
}
Summary = new FileSummary();
Summary.Deserialize( stream );
stream.Seek( Summary.FileTableOffset, System.IO.SeekOrigin.Begin );
FileTableList = new UArray<FileTable>( stream );
}
示例3: Serialize
public void Serialize( IUnrealStream stream )
{
// Serialize tables
var namesBuffer = new UObjectStream( stream );
foreach( var name in Names )
{
name.Serialize( namesBuffer );
}
var importsBuffer = new UObjectStream( stream );
foreach( var import in Imports )
{
import.Serialize( importsBuffer );
}
var exportsBuffer = new UObjectStream( stream );
foreach( var export in Exports )
{
//export.Serialize( exportsBuffer );
}
stream.Seek( 0, SeekOrigin.Begin );
stream.Write( Signature );
// Serialize header
var version = (int)(Version & 0x0000FFFFU) | (LicenseeVersion << 16);
stream.Write( version );
var headerSizePosition = stream.Position;
if( Version >= VHeaderSize )
{
stream.Write( (int)HeaderSize );
if( Version >= VGroup )
{
stream.WriteString( Group );
}
}
stream.Write( PackageFlags );
_TablesData.NamesCount = (uint)Names.Count;
_TablesData.ExportsCount = (uint)Exports.Count;
_TablesData.ImportsCount = (uint)Imports.Count;
var tablesDataPosition = stream.Position;
_TablesData.Serialize( stream );
// TODO: Serialize Heritages
stream.Write( Guid.NewGuid().ToByteArray(), 0, 16 );
Generations.Serialize( stream );
if( Version >= VEngineVersion )
{
stream.Write( EngineVersion );
if( Version >= VCOOKEDPACKAGES )
{
stream.Write( CookerVersion );
if( Version >= VCompression )
{
if( IsCooked() )
{
stream.Write( CompressionFlags );
CompressedChunks.Serialize( stream );
}
}
}
}
// TODO: Unknown data
stream.Write( (uint)0 );
// Serialize objects
// Write tables
// names
Console.WriteLine( "Writing names at position " + stream.Position );
_TablesData.NamesOffset = (uint)stream.Position;
var namesBytes = namesBuffer.GetBuffer();
stream.Write( namesBytes, 0, (int)namesBuffer.Length );
// imports
Console.WriteLine( "Writing imports at position " + stream.Position );
_TablesData.ImportsOffset = (uint)stream.Position;
var importsBytes = importsBuffer.GetBuffer();
stream.Write( importsBytes, 0, (int)importsBuffer.Length );
// exports
Console.WriteLine( "Writing exports at position " + stream.Position );
// Serialize tables data again now that offsets are known.
var currentPosition = stream.Position;
stream.Seek( tablesDataPosition, SeekOrigin.Begin );
_TablesData.Serialize( stream );
stream.Seek( currentPosition, SeekOrigin.Begin );
}