MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / on_load

Method on_load

samples/application/live2d-viewer/src/viewer_module.cpp:66–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66void SLive2DViewerModule::on_load(int argc, char8_t** argv)
67{
68 SKR_LOG_INFO(u8"live2d viewer loaded!");
69
70 std::error_code ec = {};
71 auto resourceRoot = (skr::filesystem::current_path(ec) / "../resources").u8string();
72 skr_vfs_desc_t vfs_desc = {};
73 vfs_desc.mount_type = SKR_MOUNT_TYPE_CONTENT;
74 vfs_desc.override_mount_dir = resourceRoot.c_str();
75 resource_vfs = skr_create_vfs(&vfs_desc);
76
77 l2d_world = sugoiS_create();
78
79 auto render_device = skr_get_default_render_device();
80 l2d_renderer = skr_create_renderer(render_device, l2d_world);
81
82 auto jobQueueDesc = make_zeroed<skr::JobQueueDesc>();
83 jobQueueDesc.thread_count = 2;
84 jobQueueDesc.priority = SKR_THREAD_ABOVE_NORMAL;
85 jobQueueDesc.name = u8"Live2DViewer-RAMIOJobQueue";
86 io_job_queue = SkrNew<skr::JobQueue>(jobQueueDesc);
87
88 auto ramServiceDesc = make_zeroed<skr_ram_io_service_desc_t>();
89 ramServiceDesc.name = u8"Live2DViewer-RAMIOService";
90 ramServiceDesc.sleep_time = 1000 / 100; // tick rate: 100
91 ramServiceDesc.io_job_queue = io_job_queue;
92 ramServiceDesc.callback_job_queue = io_job_queue;
93 ramServiceDesc.awake_at_request = false; // add latency but reduce CPU usage & batch IO requests
94 ram_service = skr_io_ram_service_t::create(&ramServiceDesc);
95 ram_service->run();
96
97 auto vramServiceDesc = make_zeroed<skr_vram_io_service_desc_t>();
98 vramServiceDesc.name = u8"Live2DViewer-VRAMIOService";
99 vramServiceDesc.awake_at_request = true;
100 vramServiceDesc.ram_service = ram_service;
101 vramServiceDesc.callback_job_queue = SLive2DViewerModule::Get()->io_job_queue;
102 vramServiceDesc.use_dstorage = true;
103 vramServiceDesc.gpu_device = render_device->get_cgpu_device();
104 vram_service = skr_io_vram_service_t::create(&vramServiceDesc);
105 vram_service->run();
106
107#ifdef _WIN32
108 skr_win_dstorage_decompress_desc_t decompress_desc = {};
109 decompress_desc.job_queue = io_job_queue;
110 if (auto decompress_service = skr_runtime_create_win_dstorage_decompress_service(&decompress_desc))
111 {
112 skr_win_dstorage_decompress_service_register_callback(decompress_service,
113 SKR_WIN_DSTORAGE_COMPRESSION_TYPE_IMAGE,
114 &skr_image_coder_win_dstorage_decompressor, nullptr);
115 }
116#endif
117}
118
119void SLive2DViewerModule::on_unload()
120{

Callers

nothing calls this directly

Calls 10

skr_create_vfsFunction · 0.85
sugoiS_createFunction · 0.85
skr_create_rendererFunction · 0.85
createFunction · 0.50
GetClass · 0.50
c_strMethod · 0.45
runMethod · 0.45

Tested by

no test coverage detected