using System; using System.IO; using Microsoft.Xna.Framework; using NIFLib.Core; using NIFLib.Enums; namespace NIFLib.Nodes { public class NiAVObject : NiObjectNET { public ushort Flags; public ushort UnknownUShort1; public Vector3 Translation; public Matrix Rotation; public float Scale; public Vector3 Velocity; public NiRef[] Properties; public uint[] UnknownUInts; public byte UnknownByte; public bool HasBoundingBox; public NiRef CollisionObject; public NiNode Parent; public NiAVObject(NiFile file, BinaryReader reader) : base(file, reader) { if (File.Header.Version >= NifVersion.VER_3_0) { Flags = reader.ReadUInt16(); } if (File.Header.Version >= NifVersion.VER_20_2_0_7 && File.Header.UserVersion == 11u && File.Header.UserVersion2 > 26u) { UnknownUShort1 = reader.ReadUInt16(); } Translation = reader.ReadVector3(); Rotation = reader.ReadMatrix(); Scale = reader.ReadSingle(); if (File.Header.Version <= NifVersion.VER_4_2_2_0) { Velocity = reader.ReadVector3(); } if (File.Header.Version <= NifVersion.VER_20_2_0_7 || File.Header.UserVersion <= 11u) { var num = reader.ReadUInt32(); Properties = new NiRef[num]; var num2 = 0; while (num2 < num) { Properties[num2] = new NiRef(reader.ReadUInt32()); num2++; } } if (File.Header.Version <= NifVersion.VER_2_3) { UnknownUInts = new uint[4]; for (var i = 0; i < 4; i++) { UnknownUInts[i] = reader.ReadUInt32(); } UnknownByte = reader.ReadByte(); } if (File.Header.Version >= NifVersion.VER_3_0 && File.Header.Version <= NifVersion.VER_4_2_2_0) { HasBoundingBox = reader.ReadBoolean(Version); if (HasBoundingBox) { throw new Exception("Cannot read BoundingBoxes yet"); } } if (File.Header.Version >= NifVersion.VER_10_0_1_0) { CollisionObject = new NiRef(reader.ReadUInt32()); } } } }