/// <summary>
        ///    Reads and returns a Quaternion.
        /// </summary>
        /// <returns></returns>
        protected Quaternion ReadQuat(BinaryMemoryReader reader)
        {
            Quaternion quat = new Quaternion();

            quat.x = reader.ReadSingle();
            quat.y = reader.ReadSingle();
            quat.z = reader.ReadSingle();
            quat.w = reader.ReadSingle();

            return(quat);
        }
        /// <summary>
        ///		Reads a specified number of floats and copies them into the destination pointer.
        /// </summary>
        /// <param name="count">Number of values to read.</param>
        /// <param name="dest">Pointer to copy the values into.</param>
        protected void ReadFloats(BinaryMemoryReader reader, int count, IntPtr dest)
        {
            // blast the data into the buffer
            unsafe {
                float *pointer = (float *)dest.ToPointer();

                for (int i = 0; i < count; i++)
                {
                    pointer[i] = reader.ReadSingle();
                }
            }
        }
 protected float ReadFloat(BinaryMemoryReader reader)
 {
     return(reader.ReadSingle());
 }