internal static unsafe NXNode ParseNode(NodeData *ptr, NXFile file) { NXNode ret; switch (ptr->Type) { case NXNodeType.Nothing: ret = new NXNode(ptr, file); break; case NXNodeType.Int64: ret = new NXInt64Node(ptr, file); break; case NXNodeType.Double: ret = new NXDoubleNode(ptr, file); break; case NXNodeType.String: ret = new NXStringNode(ptr, file); break; case NXNodeType.Point: ret = new NXPointNode(ptr, file); break; case NXNodeType.Bitmap: ret = new NXBitmapNode(ptr, file); break; case NXNodeType.Audio: ret = new NXAudioNode(ptr, file); break; default: return(Util.Die <NXNode>($"NX node has invalid type {ptr->Type}")); } if (file.HasFlag(NXReadSelection.EagerParseFile)) { ret.InitialiseMap(); } return(ret); }