Skip to content

Commit 1127a83

Browse files
authored
Use godot 4.2 builtin hot reloading (#17)
1 parent 3239868 commit 1127a83

13 files changed

+537
-279
lines changed

Cargo.lock

Lines changed: 37 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ version = "0.1.0"
1010
edition = "2021"
1111

1212
[workspace.dependencies]
13-
godot = { git = "https://github.com/titannano/gdext", rev = "a5d17342b7b47e8af652a6a733f497c468bbd59a" }
13+
godot = { git = "https://github.com/titannano/gdext", rev = "4ce4714" }
1414
itertools = "0.10.3"
1515
abi_stable = { version = "0.11.2", default-features = false }
1616
rand = "0.8.5"

rust-script/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ itertools = { workspace = true, optional = true }
1313
rand = { workspace = true, optional = true }
1414

1515
godot-rust-script-derive = { workspace = true, optional = true }
16+
once_cell = "1.19.0"
1617

1718
[dev-dependencies]
1819
tests-scripts-lib = { path = "../tests-scripts-lib" }

rust-script/src/library.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use abi_stable::{
66
};
77
use godot::{
88
engine::global::{MethodFlags, PropertyHint, PropertyUsageFlags},
9-
obj::EngineEnum,
9+
obj::{EngineBitfield, EngineEnum},
1010
prelude::{Gd, Object},
1111
sys::VariantType,
1212
};
@@ -90,6 +90,7 @@ pub enum RegistryItem {
9090
Methods(RustScriptEntryMethods),
9191
}
9292

93+
#[derive(Debug)]
9394
pub struct RustScriptPropDesc {
9495
pub name: &'static str,
9596
pub ty: VariantType,

rust-script/src/runtime/metadata.rs

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use std::{ops::Deref, rc::Rc};
1+
use std::ops::Deref;
22

33
use abi_stable::std_types::RBox;
44
use godot::{
5-
obj::EngineEnum,
5+
obj::{EngineBitfield, EngineEnum},
66
prelude::{
77
meta::{ClassName, MethodInfo, PropertyInfo},
88
Array, Dictionary, Gd, Object, StringName, ToGodot,
@@ -12,17 +12,18 @@ use godot::{
1212

1313
use crate::{
1414
apply::Apply,
15-
script_registry::{CreateScriptInstanceData_TO, RemoteGodotScript_TO, RemoteScriptMetaData},
15+
script_registry::{
16+
CreateScriptInstanceData_TO, RemoteGodotScript_TO, RemoteScriptMetaData,
17+
RemoteScriptMethodInfo, RemoteScriptPropertyInfo,
18+
},
1619
};
1720

1821
#[derive(Debug)]
1922
pub struct ScriptMetaData {
2023
class_name: ClassName,
2124
base_type_name: StringName,
22-
properties_documented: Vec<Documented<PropertyInfo>>,
23-
properties: Rc<Vec<PropertyInfo>>,
24-
methods_documented: Vec<Documented<MethodInfo>>,
25-
methods: Rc<Vec<MethodInfo>>,
25+
properties: Vec<RemoteScriptPropertyInfo>,
26+
methods: Vec<RemoteScriptMethodInfo>,
2627
create_data: CreateScriptInstanceData_TO<'static, RBox<()>>,
2728
description: &'static str,
2829
}
@@ -40,20 +41,12 @@ impl ScriptMetaData {
4041
self.create_data.create(base.to_variant().into())
4142
}
4243

43-
pub fn properties(&self) -> Rc<Vec<PropertyInfo>> {
44-
self.properties.clone()
45-
}
46-
47-
pub fn properties_documented(&self) -> &[Documented<PropertyInfo>] {
48-
&self.properties_documented
49-
}
50-
51-
pub fn methods(&self) -> Rc<Vec<MethodInfo>> {
52-
self.methods.clone()
44+
pub fn properties(&self) -> &[RemoteScriptPropertyInfo] {
45+
&self.properties
5346
}
5447

55-
pub fn methods_documented(&self) -> &[Documented<MethodInfo>] {
56-
&self.methods_documented
48+
pub fn methods(&self) -> &[RemoteScriptMethodInfo] {
49+
&self.methods
5750
}
5851

5952
pub fn description(&self) -> &'static str {
@@ -66,15 +59,8 @@ impl From<RemoteScriptMetaData> for ScriptMetaData {
6659
Self {
6760
class_name: ClassName::from_ascii_cstr(value.class_name.as_str().as_bytes()),
6861
base_type_name: StringName::from(&value.base_type_name.as_str()),
69-
properties_documented: value
70-
.properties
71-
.clone()
72-
.into_iter()
73-
.map(Into::into)
74-
.collect(),
75-
properties: Rc::new(value.properties.into_iter().map(Into::into).collect()),
76-
methods_documented: value.methods.clone().into_iter().map(Into::into).collect(),
77-
methods: Rc::new(value.methods.into_iter().map(Into::into).collect()),
62+
properties: value.properties.to_vec(),
63+
methods: value.methods.to_vec(),
7864
create_data: value.create_data,
7965
description: value.description.as_str(),
8066
}

0 commit comments

Comments
 (0)