static void Prefix(BatchOctrees __instance)
 {
     if (__instance.GetIsDirty())
     {
         Logger.Info($"Octrees of batch {__instance.id} is dirty. Writing to temp save data prior unloading");
         __instance.WriteOctrees();
     }
 }
        static public void SetOctree(this BatchOctrees batchOctrees, Int3 octreeId, VoxelandData.OctNode root)
        {
            var allocator = batchOctrees.allocator;

            var octree = batchOctrees.GetOctree(octreeId);

            octree.Set(root, allocator);

            if (!dirtyBatches.Contains(batchOctrees))
            {
                dirtyBatches.Add(batchOctrees);
            }
        }
        static public void WriteOctrees(this BatchOctrees batchOctrees)
        {
            var streamer = batchOctrees.streamer;

            var tmpPath = streamer.GetTmpPath(batchOctrees.id);

            using (var binaryWriter = new BinaryWriter(File.OpenWrite(tmpPath)))
            {
                var version = 4;
                binaryWriter.WriteInt32(version);
                foreach (Octree octree in batchOctrees.octrees)
                {
                    octree.Write(binaryWriter);
                }
            }

            dirtyBatches.Remove(batchOctrees);
        }
 static public bool GetIsDirty(this BatchOctrees batchOctrees)
 {
     return(dirtyBatches.Contains(batchOctrees));
 }