Annotation of /trunk/RexDotMeshLoader/OSerializer.cs
Parent Directory
|
Revision Log
Revision 48 - (view) (download)
| 1 : | tuco | 48 | /* |
| 2 : | Modified .mesh loader based on the Axiom Graphics Engine Library | ||
| 3 : | which is based on the open source Object Oriented Graphics Engine OGRE. | ||
| 4 : | |||
| 5 : | RexDotMeshLoader by realXtend project. | ||
| 6 : | |||
| 7 : | Axiom Graphics Engine Library | ||
| 8 : | Copyright (C) 2003-2006 Axiom Project Team | ||
| 9 : | The overall design, and a majority of the core engine and rendering code | ||
| 10 : | contained within this library is a derivative of the open source Object Oriented | ||
| 11 : | Graphics Engine OGRE, which can be found at http://ogre.sourceforge.net. | ||
| 12 : | Many thanks to the OGRE team for maintaining such a high quality project. | ||
| 13 : | |||
| 14 : | This library is free software; you can redistribute it and/or | ||
| 15 : | modify it under the terms of the GNU Lesser General Public | ||
| 16 : | License as published by the Free Software Foundation; either | ||
| 17 : | version 2.1 of the License, or (at your option) any later version. | ||
| 18 : | |||
| 19 : | This library is distributed in the hope that it will be useful, | ||
| 20 : | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 21 : | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 22 : | Lesser General Public License for more details. | ||
| 23 : | */ | ||
| 24 : | |||
| 25 : | using System; | ||
| 26 : | using System.IO; | ||
| 27 : | using System.Text; | ||
| 28 : | |||
| 29 : | namespace RexDotMeshLoader | ||
| 30 : | { | ||
| 31 : | public class Serializer | ||
| 32 : | { | ||
| 33 : | protected string version; | ||
| 34 : | protected int currentChunkLength; | ||
| 35 : | public const int ChunkOverheadSize = 6; | ||
| 36 : | |||
| 37 : | public Serializer() | ||
| 38 : | { | ||
| 39 : | version = "[Serializer_v1.00]"; | ||
| 40 : | } | ||
| 41 : | |||
| 42 : | protected void IgnoreCurrentChunk( BinaryReader vReader) | ||
| 43 : | { | ||
| 44 : | Seek(vReader, currentChunkLength - ChunkOverheadSize); | ||
| 45 : | } | ||
| 46 : | |||
| 47 : | protected void ReadBytes(BinaryReader vReader, int count, byte[] dest) | ||
| 48 : | { | ||
| 49 : | for (int i = 0; i < count; i++) | ||
| 50 : | dest[i] = vReader.ReadByte(); | ||
| 51 : | } | ||
| 52 : | |||
| 53 : | protected void ReadFloats( BinaryReader vReader, int count, float[] dest ) | ||
| 54 : | { | ||
| 55 : | for (int i = 0; i < count; i++) | ||
| 56 : | { | ||
| 57 : | dest[i] = vReader.ReadSingle(); | ||
| 58 : | } | ||
| 59 : | } | ||
| 60 : | |||
| 61 : | |||
| 62 : | protected void ReadFloats( BinaryReader vReader, int count, float[] dest, float[] destArray ) | ||
| 63 : | { | ||
| 64 : | for (int i = 0; i < count; i++) | ||
| 65 : | { | ||
| 66 : | float val = vReader.ReadSingle(); | ||
| 67 : | dest[i] = val; | ||
| 68 : | destArray[i] = val; | ||
| 69 : | } | ||
| 70 : | } | ||
| 71 : | |||
| 72 : | protected bool ReadBool( BinaryReader vReader ) | ||
| 73 : | { | ||
| 74 : | return vReader.ReadBoolean(); | ||
| 75 : | } | ||
| 76 : | |||
| 77 : | protected float ReadFloat( BinaryReader vReader ) | ||
| 78 : | { | ||
| 79 : | return vReader.ReadSingle(); | ||
| 80 : | } | ||
| 81 : | |||
| 82 : | protected int ReadInt( BinaryReader vReader ) | ||
| 83 : | { | ||
| 84 : | return vReader.ReadInt32(); | ||
| 85 : | } | ||
| 86 : | |||
| 87 : | protected uint ReadUInt( BinaryReader vReader ) | ||
| 88 : | { | ||
| 89 : | return vReader.ReadUInt32(); | ||
| 90 : | } | ||
| 91 : | |||
| 92 : | protected long ReadLong( BinaryReader vReader ) | ||
| 93 : | { | ||
| 94 : | return vReader.ReadInt64(); | ||
| 95 : | } | ||
| 96 : | |||
| 97 : | protected ulong ReadULong( BinaryReader vReader ) | ||
| 98 : | { | ||
| 99 : | return vReader.ReadUInt64(); | ||
| 100 : | } | ||
| 101 : | |||
| 102 : | protected short ReadShort( BinaryReader vReader ) | ||
| 103 : | { | ||
| 104 : | return vReader.ReadInt16(); | ||
| 105 : | } | ||
| 106 : | |||
| 107 : | protected ushort ReadUShort( BinaryReader vReader ) | ||
| 108 : | { | ||
| 109 : | return vReader.ReadUInt16(); | ||
| 110 : | } | ||
| 111 : | |||
| 112 : | protected void ReadInts( BinaryReader vReader, int count, int[] dest ) | ||
| 113 : | { | ||
| 114 : | for (int i = 0; i < count; i++) | ||
| 115 : | { | ||
| 116 : | dest[i] = vReader.ReadInt32(); | ||
| 117 : | } | ||
| 118 : | } | ||
| 119 : | |||
| 120 : | protected void ReadShorts( BinaryReader vReader, int count, short[] dest ) | ||
| 121 : | { | ||
| 122 : | for (int i = 0; i < count; i++) | ||
| 123 : | { | ||
| 124 : | dest[i] = vReader.ReadInt16(); | ||
| 125 : | } | ||
| 126 : | } | ||
| 127 : | |||
| 128 : | |||
| 129 : | protected string ReadString( BinaryReader vReader ) | ||
| 130 : | { | ||
| 131 : | return ReadString(vReader,'\n'); | ||
| 132 : | } | ||
| 133 : | |||
| 134 : | protected string ReadString( BinaryReader vReader, char delimiter ) | ||
| 135 : | { | ||
| 136 : | StringBuilder sb = new StringBuilder(); | ||
| 137 : | |||
| 138 : | char c; | ||
| 139 : | while ((c = vReader.ReadChar()) != delimiter) | ||
| 140 : | { | ||
| 141 : | sb.Append(c); | ||
| 142 : | } | ||
| 143 : | return sb.ToString(); | ||
| 144 : | } | ||
| 145 : | |||
| 146 : | protected Quaternion ReadQuat(BinaryReader vReader) | ||
| 147 : | { | ||
| 148 : | Quaternion quat = new Quaternion(); | ||
| 149 : | |||
| 150 : | quat.X = vReader.ReadSingle(); | ||
| 151 : | quat.Y = vReader.ReadSingle(); | ||
| 152 : | quat.Z = vReader.ReadSingle(); | ||
| 153 : | quat.W = vReader.ReadSingle(); | ||
| 154 : | |||
| 155 : | return quat; | ||
| 156 : | } | ||
| 157 : | |||
| 158 : | protected Vector3 ReadVector3(BinaryReader vReader) | ||
| 159 : | { | ||
| 160 : | Vector3 vector = new Vector3(); | ||
| 161 : | |||
| 162 : | vector.X = ReadFloat(vReader); | ||
| 163 : | vector.Y = ReadFloat(vReader); | ||
| 164 : | vector.Z = ReadFloat(vReader); | ||
| 165 : | |||
| 166 : | return vector; | ||
| 167 : | } | ||
| 168 : | |||
| 169 : | protected Vector4 ReadVector4(BinaryReader vReader) | ||
| 170 : | { | ||
| 171 : | Vector4 vector = new Vector4(); | ||
| 172 : | |||
| 173 : | vector.X = ReadFloat(vReader); | ||
| 174 : | vector.Y = ReadFloat(vReader); | ||
| 175 : | vector.Z = ReadFloat(vReader); | ||
| 176 : | vector.W = ReadFloat(vReader); | ||
| 177 : | return vector; | ||
| 178 : | } | ||
| 179 : | |||
| 180 : | protected MeshChunkID ReadChunk(BinaryReader vReader) | ||
| 181 : | { | ||
| 182 : | short id = vReader.ReadInt16(); | ||
| 183 : | currentChunkLength = vReader.ReadInt32(); | ||
| 184 : | return (MeshChunkID)id; | ||
| 185 : | } | ||
| 186 : | |||
| 187 : | protected void Seek(BinaryReader vReader,long length) | ||
| 188 : | { | ||
| 189 : | Seek( vReader, length, SeekOrigin.Current); | ||
| 190 : | } | ||
| 191 : | |||
| 192 : | protected void Seek(BinaryReader vReader, long length, SeekOrigin origin) | ||
| 193 : | { | ||
| 194 : | if(vReader.BaseStream.CanSeek) | ||
| 195 : | vReader.BaseStream.Seek(length,origin); | ||
| 196 : | else | ||
| 197 : | throw new Exception("Missing canseek from stream"); | ||
| 198 : | } | ||
| 199 : | |||
| 200 : | protected bool IsEOF(BinaryReader vReader) | ||
| 201 : | { | ||
| 202 : | return vReader.BaseStream.Position >= vReader.BaseStream.Length; | ||
| 203 : | } | ||
| 204 : | |||
| 205 : | } | ||
| 206 : | } |
| ViewVC Help | |
| Powered by ViewVC 1.0.0 |

