当前位置: 首页>>代码示例>>C#>>正文


C# Surface.Load方法代码示例

本文整理汇总了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);
//.........这里部分代码省略.........
开发者ID:GodLesZ,项目名称:FimbulwinterClient,代码行数:101,代码来源:Ground.cs


注:本文中的Surface.Load方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。