static void Main(string[] args) { var _ = Vector2D.Zero; var assembly = typeof(Program).Assembly; var fileVersion = assembly.GetCustomAttribute <AssemblyFileVersionAttribute>(); #if DEBUG var buildType = "Debug"; #else var buildType = "Release"; #endif Console.WriteLine($"UpgradeHead (HydraEd {fileVersion.Version}/{buildType})"); if (args.Length < 2) { Console.WriteLine("Error: Run this tool again with the file path specified."); return; } var version = Enum.Parse <PackageVersion>(args[0], true); var filename = args[1]; using var inFile = File.OpenRead(filename); var inPackage = new Package(inFile); using var outFile = File.OpenWrite(filename + ".new"); var outPackage = new Package(outFile); outPackage.Header.Version = version; foreach (var flag in args.Skip(2)) { var pkgFlag = Enum.Parse <PackageFlags>(flag, true); outPackage.Header.Flags.SetFlag(pkgFlag); } outPackage.Header.Serialize(outPackage); var table = new ObjectTable(); for (var index = 0; index < inPackage.ObjectTable.GetInnerObject().GetElementCount(); index++) { Console.WriteLine($"serializing {inPackage.ObjectTable.GetInnerObject().GetObject(index).GetLinkedObject()}"); table.AddObject(inPackage.ObjectTable.GetInnerObject().GetObject(index).GetLinkedObject()); } var offset = (uint)outPackage.FileOffset; outPackage.FileOffset = outPackage.Header.ObjectTablePtr.OffsetInFile; outPackage.WriteUInt32(offset); outPackage.FileOffset = offset; table.Serialize(outPackage); outPackage.FlushLateSerializationQueue(); }
/// <summary> /// Adds tags to this index without check if they exists already. /// </summary> /// <param name="tags"></param> /// <returns></returns> public uint AddObject(TagsCollectionBase tags) { int idx = 0; uint[] tagsArray = new uint[tags.Count]; foreach (Tag tag in tags) { tagsArray[idx] = _tagsTable.Add(tag); idx++; } var osmTags = new OsmTags(tagsArray); if (osmTags != null) { return(_tagsCollectionTable.AddObject(osmTags)); } throw new ArgumentNullException("tags", "Tags dictionary cannot be null or empty!"); }
// Physics Load Function void Start() { objectTable.AddObject("boxes", new PhysicsObject(0, 0, 1, 1)); }