Exemple #1
0
        private void Read(string Filename)
        {
            mRsmFile = new RsmFile();

            using (FileStream s = System.IO.File.OpenRead(Filename)) {
                using (BinaryReader bin = new BinaryReader(s, Encoding.GetEncoding("ISO-8859-1"))) {
                    mRsmFile.MagicHead = bin.ReadChars(4);
                    mRsmFile.MajorVer  = (int)bin.ReadChar();
                    mRsmFile.MinorVer  = (int)bin.ReadChar();

                    // 1.2 && 1.3 == 24 bytes FREE, others == 25 bytes FREE
                    byte skip = 25;
                    if (mRsmFile.MajorVer == 1 && (mRsmFile.MinorVer == 2 || mRsmFile.MinorVer == 3))
                    {
                        skip = 24;
                    }
                    bin.BaseStream.Position += skip;

                    mRsmFile.TextureNameCount = (int)bin.ReadUInt32();
                    mRsmFile.TextureNames     = new string[mRsmFile.TextureNameCount];
                    for (int i = 0; i < mRsmFile.TextureNameCount; i++)
                    {
                        mRsmFile.TextureNames[i] = Tools.ReadWord(bin, 40);
                    }

                    bool isMain = true;
                    mRsmFile.Meshes = new List <Mesh>();
                    while (bin.PeekChar() >= 0)
                    {
                        ReadMesh(isMain, bin);
                        isMain = false;

                        if (bin.BaseStream.Length - bin.BaseStream.Position < 100)
                        {
                            break;
                        }
                    }

                    if (mRsmFile.Meshes.Count == 1)
                    {
                        mRsmFile.Meshes[0].IsOnly = true;
                    }
                }
            }
        }
Exemple #2
0
		private void Read( string Filename ) {
			mRsmFile = new RsmFile();

			using( FileStream s = System.IO.File.OpenRead( Filename ) ) {
				using( BinaryReader bin = new BinaryReader( s, Encoding.GetEncoding( "ISO-8859-1" ) ) ) {
					mRsmFile.MagicHead = bin.ReadChars( 4 );
					mRsmFile.MajorVer = (int)bin.ReadChar();
					mRsmFile.MinorVer = (int)bin.ReadChar();

					// 1.2 && 1.3 == 24 bytes FREE, others == 25 bytes FREE
					byte skip = 25;
					if( mRsmFile.MajorVer == 1 && ( mRsmFile.MinorVer == 2 || mRsmFile.MinorVer == 3 ) )
						skip = 24;
					bin.BaseStream.Position += skip;

					mRsmFile.TextureNameCount = (int)bin.ReadUInt32();
					mRsmFile.TextureNames = new string[ mRsmFile.TextureNameCount ];
					for( int i = 0; i < mRsmFile.TextureNameCount; i++ )
						mRsmFile.TextureNames[ i ] = Tools.ReadWord( bin, 40 );

					bool isMain = true;
					mRsmFile.Meshes = new List<Mesh>();
					while( bin.PeekChar() >= 0 ) {
						ReadMesh( isMain, bin );
						isMain = false;

						if( bin.BaseStream.Length - bin.BaseStream.Position < 100 )
							break;
					}

					if( mRsmFile.Meshes.Count == 1 )
						mRsmFile.Meshes[ 0 ].IsOnly = true;

				}
			}

		}