示例#1
0
        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));
 }