public bint _unk2; //0

        #region Constructors

        public EFLSHeader(int entries, int brresCount, int unk1, int unk2)
        {
            _tag = Tag;
            _numEntries = (short)entries;
            _numBrres = (short)brresCount;
            _unk1 = unk1;
            _unk2 = unk2;
        }
 public EFLSEntry(int id1, int id2, int stringOffset, int unk)
 {
     _brresID1 = (short)id1;
     _brresID2 = (short)id2;
     _stringOffset = stringOffset;
     _unk = unk;
     _re3dOffset = 0;
 }
 public ARCFileHeader(ARCFileType type, int index, int size, byte groupIndex, short id)
 {
     _type = (short)type;
     _index = (short)index;
     _size = size;
     _groupIndex = groupIndex;
     _padding = 0;
     _redirectIndex = id;
     _pad1 = _pad2 = _pad3 = _pad4 = _pad5 = 0;
 }
        public PLT0v1(int length, WiiPaletteFormat format)
        {
            _bresEntry._tag = Tag;
            _bresEntry._size = (length * 2) + Size;
            _bresEntry._version = 1;
            _bresEntry._bresOffset = 0;

            _headerLen = 0x40;
            _stringOffset = 0;
            _pixelFormat = (uint)format;
            _numEntries = (short)length;
            _pad = 0;
            _origPathOffset = 0;
        }
        public TEX0v1(int width, int height, WiiPixelFormat format, int mipLevels)
        {
            _header._tag = Tag;
            _header._size = TextureConverter.Get(format).GetMipOffset(width, height, mipLevels + 1) + Size;
            _header._version = 1;
            _header._bresOffset = 0;

            _headerLen = Size;
            _stringOffset = 0;
            _hasPalette = ((format == WiiPixelFormat.CI4) || (format == WiiPixelFormat.CI8)) ? 1 : 0;
            _width = (short)width;
            _height = (short)height;
            _pixelFormat = (int)format;
            _levelOfDetail = mipLevels;
            _minLod = 0;
            _maxLod = mipLevels - 1.0f;
            _origPathOffset = 0;
        }
        public CollisionHeader(int numPoints, int numPlanes, int numObjects, int unk1)
        {
            _numPoints = (short)numPoints;
            _numPlanes = (short)numPlanes;
            _numObjects = (short)numObjects;
            _unk1 = (short)unk1;
            _pointOffset = 0x28;
            _planeOffset = 0x28 + (numPoints * 8);
            _objectOffset = 0x28 + (numPoints * 8) + (numPlanes * ColPlane.Size);

            fixed (int* p = _pad)
                for (int i = 0; i < 5; i++)
                    p[i] = 0;
        }
 public ColPlane(int pInd1, int pInd2, int pLink1, int pLink2, CollisionPlaneType type, CollisionPlaneFlags2 flags2, CollisionPlaneFlags flags, CollisionPlaneMaterial material)
 {
     _point1 = (short)pInd1;
     _point2 = (short)pInd2;
     _link1 = (short)pLink1;
     _link2 = (short)pLink2;
     _magic = -1;
     _type = (ushort)((int)flags2 | (int)type);
     _flags = flags;
     _material = material;
 }
        public void Set(int planeIndex, int planeCount, Vector2 boxMin, Vector2 boxMax, string modelName, string boneName)
        {
            _planeIndex = (short)planeIndex;
            _planeCount = (short)planeCount;
            _unk1 = 0;
            _unk2 = 0;
            _unk3 = 0;
            _flags = 0;
            _boxMin = boxMin;
            _boxMax = boxMax;
            _unk5 = 0;
            _unk6 = 0;

            ModelName = modelName;
            BoneName = boneName;
        }
        public ColObject(int planeIndex, int planeCount, int pointOffset, int pointCount, Vector2 boxMin, Vector2 boxMax, string modelName, string boneName,
            int unk1, int unk2, int unk3, int flags, int unk5, int unk6, int boneIndex)
        {
            _planeIndex = (short)planeIndex;
            _planeCount = (short)planeCount;
            _unk1 = unk1;
            _unk2 = unk2;
            _unk3 = unk3;
            _flags = (ushort)flags;
            _unk5 = (short)unk5;
            _boxMin = boxMin;
            _boxMax = boxMax;
            _pointOffset = (short)pointOffset;
            _pointCount = (short)pointCount;
            _unk6 = (short)unk6;
            _boneIndex = (short)boneIndex;

            fixed (byte* p = _modelName)
                SetStr(p, modelName);

            fixed (byte* p = _boneName)
                SetStr(p, boneName);
        }
        public I6Entry(int index, int step, float tangent)
        {
            _data = (ushort)(index << 5);
            _step = (ushort)step;

            tangent *= 256.0f;
            if (tangent < 0.0f)
                tangent -= 0.5f;
            else
                tangent += 0.5f;

            _exp = (short)((int)tangent).Clamp(-32768, 32767);
        }