mirror of
https://github.com/lune-org/lune.git
synced 2024-12-12 04:50:36 +00:00
IsA
, ClassName
& Parent
should work if an instance is already destroyed (#271)
This commit is contained in:
parent
c935149c1e
commit
91af86cca2
4 changed files with 12 additions and 25 deletions
|
@ -113,7 +113,6 @@ pub fn add_methods<'lua, M: LuaUserDataMethods<'lua, Instance>>(m: &mut M) {
|
|||
},
|
||||
);
|
||||
m.add_method("IsA", |_, this, class_name: String| {
|
||||
ensure_not_destroyed(this)?;
|
||||
Ok(class_is_a(&this.class_name, class_name).unwrap_or(false))
|
||||
});
|
||||
m.add_method(
|
||||
|
@ -217,19 +216,20 @@ fn instance_property_get<'lua>(
|
|||
this: &Instance,
|
||||
prop_name: String,
|
||||
) -> LuaResult<LuaValue<'lua>> {
|
||||
ensure_not_destroyed(this)?;
|
||||
|
||||
match prop_name.as_str() {
|
||||
"ClassName" => return this.get_class_name().into_lua(lua),
|
||||
"Name" => {
|
||||
return this.get_name().into_lua(lua);
|
||||
}
|
||||
"Parent" => {
|
||||
return this.get_parent().into_lua(lua);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
ensure_not_destroyed(this)?;
|
||||
|
||||
if prop_name.as_str() == "Name" {
|
||||
return this.get_name().into_lua(lua);
|
||||
}
|
||||
|
||||
if let Some(info) = find_property_info(&this.class_name, &prop_name) {
|
||||
if let Some(prop) = this.get_property(&prop_name) {
|
||||
if let DomValue::Enum(enum_value) = prop {
|
||||
|
|
|
@ -302,10 +302,7 @@ impl Instance {
|
|||
pub fn get_parent(&self) -> Option<Instance> {
|
||||
let dom = INTERNAL_DOM.lock().expect("Failed to lock document");
|
||||
|
||||
let parent_ref = dom
|
||||
.get_by_ref(self.dom_ref)
|
||||
.expect("Failed to find instance in document")
|
||||
.parent();
|
||||
let parent_ref = dom.get_by_ref(self.dom_ref)?.parent();
|
||||
|
||||
if parent_ref == dom.root_ref() {
|
||||
None
|
||||
|
|
|
@ -20,14 +20,10 @@ assert(not pcall(function()
|
|||
return child1.Name
|
||||
end))
|
||||
|
||||
assert(not pcall(function()
|
||||
return child1.Parent
|
||||
end))
|
||||
assert(not child1.Parent)
|
||||
|
||||
assert(not pcall(function()
|
||||
return child2.Name
|
||||
end))
|
||||
|
||||
assert(not pcall(function()
|
||||
return child2.Parent
|
||||
end))
|
||||
assert(not child2.Parent)
|
||||
|
|
|
@ -14,22 +14,16 @@ assert(not pcall(function()
|
|||
return root.Name
|
||||
end))
|
||||
|
||||
assert(not pcall(function()
|
||||
return root.Parent
|
||||
end))
|
||||
assert(not root.Parent)
|
||||
|
||||
assert(not pcall(function()
|
||||
return child.Name
|
||||
end))
|
||||
|
||||
assert(not pcall(function()
|
||||
return child.Parent
|
||||
end))
|
||||
assert(not child.Parent)
|
||||
|
||||
assert(not pcall(function()
|
||||
return descendant.Name
|
||||
end))
|
||||
|
||||
assert(not pcall(function()
|
||||
return descendant.Parent
|
||||
end))
|
||||
assert(not descendant.Parent)
|
||||
|
|
Loading…
Reference in a new issue