static void HandleGenPropDefsOptions(string[] args) { CommandLine.Parse <GenPropDefsOptions>(args, (opts, gOpts) => { if (opts.InputFiles != null) { var inputFiles = Utils.Expand(opts.InputFiles); var ytyp = new YtypFile(); if (opts.Ytyp != null) { var inputYtyps = Utils.Expand(opts.Ytyp); for (int i = 0; i < inputYtyps.Length; i++) { var ytyp2 = new YtypFile(); ytyp2.Load(inputYtyps[i].FullName); for (int j = 0; j < ytyp2.CMapTypes.Archetypes.Count; j++) { var archetype = ytyp2.CMapTypes.Archetypes[j]; if (Archetypes.TryGetValue(archetype.Name, out MCBaseArchetypeDef arch)) { Archetypes[archetype.Name] = archetype; } else { Archetypes.Add(archetype.Name, archetype); } } } } for (int i = 0; i < inputFiles.Length; i++) { var fileInfo = inputFiles[i]; string name = ""; var split = fileInfo.Name.Split('.'); for (int j = 0; j < split.Length; j++) { if (j < split.Length - 1) { if (j > 0) { name += "."; } name += split[j]; } } Console.WriteLine(name); try { switch (fileInfo.Extension) { case ".ydr": { var nameHash = (MetaName)Jenkins.Hash(name); var ydr = new YdrFile(); ydr.Load(fileInfo.FullName); if (Archetypes.TryGetValue(nameHash, out MCBaseArchetypeDef arch)) { arch.BbMin = (Vector3)(Vector4)ydr.Drawable.BoundingBoxMin; arch.BbMax = (Vector3)(Vector4)ydr.Drawable.BoundingBoxMax; arch.BsCentre = (Vector3)ydr.Drawable.BoundingCenter; arch.BsRadius = ydr.Drawable.BoundingSphereRadius; } else { arch = new MCBaseArchetypeDef(); arch.Name = nameHash; arch.AssetName = nameHash; arch.TextureDictionary = nameHash; arch.PhysicsDictionary = (MetaName)Jenkins.Hash("prop_" + name); arch.Flags = 32; arch.AssetType = Unk_1991964615.ASSET_TYPE_DRAWABLE; arch.BbMin = (Vector3)(Vector4)ydr.Drawable.BoundingBoxMin; arch.BbMax = (Vector3)(Vector4)ydr.Drawable.BoundingBoxMax; arch.BsCentre = (Vector3)ydr.Drawable.BoundingCenter; arch.BsRadius = ydr.Drawable.BoundingSphereRadius; arch.LodDist = 500f; arch.HdTextureDist = 5; } ytyp.CMapTypes.Archetypes.Add(arch); break; } case ".ydd": // TODO { break; } default: break; } } catch (Exception e) { Console.Error.WriteLine("ERROR => " + e.Message); } } string path = (opts.OutputDirectory == null) ? @".\props.ytyp" : opts.OutputDirectory + @"\props.ytyp"; ytyp.Save(path); } }); }