internal void SetModinfo(ModInfo modInfo) { this.modInfo = modInfo; ModDependency[] dependencies = modInfo.Dependencies ?? Array.Empty <ModDependency>(); var editorDataGroup = new ModDependencyEditorData[dependencies.Length]; for (int i = 0; i < dependencies.Length; i++) { ModDependency dependency = dependencies[i]; ModDependencyEditorData editorData = new ModDependencyEditorData(); editorData.ModIndex = availableMods.ToList().IndexOf(dependency.Name); if (editorData.ModIndex == -1) { editorData.ModIndex = availableMods.Length - 1; } editorData.Name = dependency.Name; editorData.IsOptional = dependency.IsOptional ? 1 : 0; editorData.IsPeer = dependency.IsPeer ? 1 : 0; editorData.RequireVersion = !string.IsNullOrWhiteSpace(dependency.Version); if (editorData.RequireVersion) { int[] versionParts = dependency.Version.Split('.').Select(x => int.Parse(x)).ToArray(); editorData.Version = new Vector3Int(versionParts[0], versionParts[1], versionParts[2]); } editorDataGroup[i] = editorData; } this.dependencies = editorDataGroup.ToList(); }