This commit is contained in:
2023-05-10 17:04:31 +02:00
parent 25787c8b65
commit 2efb3aff04
2 changed files with 53 additions and 0 deletions

40
rust/mhgd/src/lib.rs Normal file
View File

@@ -0,0 +1,40 @@
use crate::sproing::datafile::DatafileLoader;
use ::godot::engine::class_macros::auto_register_classes;
use ::godot::engine::{ResourceFormatLoaderVirtual, ResourceLoader};
use ::godot::init::{gdextension, ExtensionLayer};
use ::godot::prelude::{ExtensionLibrary, Gd, InitHandle, InitLevel, Share};
pub mod sproing;
pub mod lightwave_object;
struct Main {}
#[gdextension]
unsafe impl ExtensionLibrary for Main {
fn load_library(handle: &mut InitHandle) -> bool {
handle.register_layer(InitLevel::Editor, ResourceLoaderLayer { datafile: None });
true
}
}
struct ResourceLoaderLayer {
pub datafile: Option<Gd<DatafileLoader>>,
}
impl ExtensionLayer for ResourceLoaderLayer {
fn initialize(&mut self) {
auto_register_classes();
self.datafile = Some(Gd::<DatafileLoader>::with_base(DatafileLoader::init));
ResourceLoader::singleton()
.add_resource_format_loader(self.datafile.as_ref().unwrap().share().upcast(), true);
}
fn deinitialize(&mut self) {
if let Some(datafile) = &self.datafile {
ResourceLoader::singleton().remove_resource_format_loader(datafile.share().upcast());
self.datafile = None;
}
}
}