internal RwHAnimFrameExtensionNode(RwNodeFactory.RwNodeHeader header, BinaryReader reader)
            : base(header)
        {
            int version = reader.ReadInt32();

            if (version != VERSION)
            {
                throw new NotImplementedException("Unexpected version for RWHierarchyAnimPlugin");
            }

            NameId = reader.ReadInt32();
            int numNodes = reader.ReadInt32();

            if (numNodes == 0)
            {
                return;
            }

            RwHAnimHierarchyFlags flags  = (RwHAnimHierarchyFlags)reader.ReadUInt32();
            int keyFrameSize             = reader.ReadInt32();
            List <RwHAnimNodeInfo> nodes = new List <RwHAnimNodeInfo>(numNodes);

            for (int i = 0; i < numNodes; i++)
            {
                nodes.Add(new RwHAnimNodeInfo(reader));
            }

            Hierarchy = new RwHAnimHierarchy(flags, nodes);
        }
        public RwHAnimFrameExtensionNode(int boneName, RwHAnimHierarchy hierarchy)
            : base(RwNodeId.RwHAnimFrameExtensionNode)
        {
            NameId = boneName;

            Hierarchy = hierarchy ?? throw new ArgumentNullException("hierarchy");
        }