本文整理汇总了C#中Surface.Load方法的典型用法代码示例。如果您正苦于以下问题:C# Surface.Load方法的具体用法?C# Surface.Load怎么用?C# Surface.Load使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Surface
的用法示例。
在下文中一共展示了Surface.Load方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Load
public bool Load(Stream gnd)
{
int texChunkSize, textureCount;
BinaryReader br = new BinaryReader(gnd);
string header = ((char)br.ReadByte()).ToString() + ((char)br.ReadByte()) + ((char)br.ReadByte()) + ((char)br.ReadByte());
if (header == "GRGN")
{
majorVersion = br.ReadByte();
minorVersion = br.ReadByte();
if (majorVersion != 1 || minorVersion < 5 || minorVersion > 7)
return false;
_width = br.ReadInt32();
_height = br.ReadInt32();
_zoom = br.ReadSingle();
textureCount = br.ReadInt32();
texChunkSize = br.ReadInt32();
}
else
{
majorVersion = 0;
minorVersion = 0;
br.BaseStream.Position = 0;
textureCount = br.ReadInt32();
_width = br.ReadInt32();
_height = br.ReadInt32();
_zoom = 10.0f;
texChunkSize = 80;
}
_textures = new Texture2D[textureCount];
for (int i = 0; i < _textures.Length; i++)
{
_textures[i] = SharedInformation.ContentManager.Load<Texture2D>(@"data\texture\" + br.ReadCString(texChunkSize));
}
if (majorVersion == 0 && minorVersion == 0)
{
int idx = 0;
_lightmaps = new Lightmap[0];
_cells = new Cell[_width * _height];
// Biggest possible amount of surfaces in this version is 3 * Width * Height.
// We resize it to the real amount after iterating through the cells.
_surfaces = new Surface[3 * _width * _height];
for (int i = 0; i < _cells.Length; i++)
{
int textureUp, textureOtherSide, textureSide;
textureUp = br.ReadInt32();
textureOtherSide = br.ReadInt32();
textureSide = br.ReadInt32();
Cell c = new Cell();
c.Load(br, majorVersion, minorVersion);
if (textureUp != -1)
{
Surface s = new Surface();
s.Load(this, br, majorVersion, minorVersion, textureUp);
textureUp = idx;
_surfaces[idx++] = s;
}
else
{
br.ReadBytes(32);
}
if (textureOtherSide != -1)
{
Surface s = new Surface();
s.Load(this, br, majorVersion, minorVersion, textureOtherSide);
textureOtherSide = idx;
_surfaces[idx++] = s;
}
else
{
br.ReadBytes(32);
}
if (textureSide != -1)
{
Surface s = new Surface();
s.Load(this, br, majorVersion, minorVersion, textureSide);
//.........这里部分代码省略.........