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)); }