// Generate root document when constructor is there. public SideloaderMod([NotNull] TextAsset file) { // check parse error var assetPath = AssetDatabase.GetAssetPath(file); AssetFolder = Path.GetDirectoryName(assetPath) ?? ""; AssetDirectory = Path.Combine(Directory.GetCurrentDirectory(), AssetFolder).Replace("\\", "/"); FileName = file.name; _outputDocumentObject = XmlUtils.GetManifestTemplate(); _inputDocumentObject = XDocument.Parse(file.text); MainData = new MainData(); DependencyData = new DependencyLoaderData(); GameMapInfo = new GameMapInfo(); StudioInfo = new StudioInfo(); MainData.ParseData(this, _inputDocumentObject.Root); DependencyData.ParseData(this, _inputDocumentObject.Root); _manifestData = new List <IManifestData> { // it should be in order, lmk if there is good way to do. I'm always learning. MainData, DependencyData, new HeelsData(), new MaterialEditorData(), new AIMapData() }; _bundleTargets = new List <BundleBase>(); GameItems = new Dictionary <string, GameInfo>(); Assets = new AssetInfo(); ParseDocument(_inputDocumentObject.Root); }