#region License information // ---------------------------------------------------------------------------- // // libeq2 - A library for analyzing the Everquest II File Format // Blaz (blaz@blazlabs.com) // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA // // ( The full text of the license can be found in the License.txt file ) // // ---------------------------------------------------------------------------- #endregion #region Using directives using System; #endregion namespace Everquest2.Visualization { public class VeRegion : VeBase { public VeRegion() { } /// /// Special constructor used when deserializing the instance of the class. /// /// Reader used to read the instance data. protected VeRegion(Util.Eq2Reader reader, Util.StreamingContext context) : base(reader, context) { byte classVersion = context.ClassVersions[typeof(VeRegion)]; if (classVersion == 0) unk0 = reader.ReadSingle(); ushort count = reader.ReadUInt16(); vert_count = count; m_normals = new float[count, 3]; m_distance = new float[count]; m_childindex = new short[count, 2]; for (ushort i = 0; i < count; ++i) { m_normals[i, 0] = reader.ReadSingle(); m_normals[i, 1] = reader.ReadSingle(); m_normals[i, 2] = reader.ReadSingle(); m_distance[i] = reader.ReadSingle(); m_childindex[i, 0] = reader.ReadInt16(); m_childindex[i, 1] = reader.ReadInt16(); } if (classVersion >= 2) { uint unkcount = reader.ReadUInt32(); m_center = new float[unkcount, 4]; for (int i = 0; i < unkcount; i++) { m_center[i, 0] = reader.ReadSingle(); m_center[i, 1] = reader.ReadSingle(); m_center[i, 2] = reader.ReadSingle(); m_center[i, 3] = reader.ReadSingle(); } } unk4[0] = reader.ReadSingle(); unk4[1] = reader.ReadSingle(); unk4[2] = reader.ReadSingle(); unk5 = reader.ReadSingle(); } public int vert_count; public float unk0; public float[,] m_normals; public float[] m_distance; public short[,] m_childindex; public float[] unk4 = new float[3]; public float unk5; public VeEnvironmentNode parentNode; float[,] m_center; // 1-3 is vector center, 4th is radius public int region_type; } }