Skip to content

Commit bde88fb

Browse files
committed
feat: add ZkWorld_save API
1 parent 7f4884d commit bde88fb

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

include/zenkit-capi/World.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ ZKC_API ZkWorld* ZkWorld_loadPathVersioned(ZkString path, ZkGameVersion version)
3535
ZKC_API ZkWorld* ZkWorld_loadVfsVersioned(ZkVfs* vfs, ZkString name, ZkGameVersion version);
3636
ZKC_API void ZkWorld_del(ZkWorld* slf);
3737

38+
ZKC_API void ZkWorld_save(ZkWorld* slf, ZkWrite* write, ZkGameVersion version);
39+
3840
ZKC_API ZkMesh const* ZkWorld_getMesh(ZkWorld const* slf);
3941
ZKC_API ZkWayNet const* ZkWorld_getWayNet(ZkWorld const* slf);
4042
ZKC_API ZkBspTree const* ZkWorld_getBspTree(ZkWorld const* slf);

src/World.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,14 @@ ZkWorld* ZkWorld_loadVfsVersioned(ZkVfs* vfs, ZkString name, ZkGameVersion versi
9191

9292
ZKC_DELETER(ZkWorld);
9393

94+
void ZkWorld_save(ZkWorld* slf, ZkWrite* write, ZkGameVersion version) {
95+
ZKC_TRACE_FN();
96+
ZKC_CHECK_NULLV(slf, write);
97+
98+
auto ar = zenkit::WriteArchive::to(write, zenkit::ArchiveFormat::BINSAFE);
99+
ZKC_CATCH(SLF->save(*ar, static_cast<zenkit::GameVersion>(version)));
100+
}
101+
94102
ZkMesh const* ZkWorld_getMesh(ZkWorld const* slf) {
95103
ZKC_TRACE_FN();
96104
ZKC_CHECK_NULL(slf);

0 commit comments

Comments
 (0)