mirror of
https://github.com/lune-org/lune.git
synced 2024-12-12 21:10:36 +00:00
Merge parent setter methods
This commit is contained in:
parent
a21861918b
commit
b63d016818
1 changed files with 9 additions and 26 deletions
|
@ -135,7 +135,7 @@ impl Instance {
|
||||||
let new_ref = Self::clone_inner(self.dom_ref, parent_ref);
|
let new_ref = Self::clone_inner(self.dom_ref, parent_ref);
|
||||||
let new_inst = Self::new(new_ref);
|
let new_inst = Self::new(new_ref);
|
||||||
|
|
||||||
new_inst.set_parent_to_nil();
|
new_inst.set_parent(None);
|
||||||
new_inst
|
new_inst
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,24 +340,7 @@ impl Instance {
|
||||||
/**
|
/**
|
||||||
Sets the parent of the instance, if it exists.
|
Sets the parent of the instance, if it exists.
|
||||||
|
|
||||||
### See Also
|
If the provided parent is [`None`] the instance will become orphaned.
|
||||||
* [`Parent`](https://create.roblox.com/docs/reference/engine/classes/Instance#Parent)
|
|
||||||
on the Roblox Developer Hub
|
|
||||||
*/
|
|
||||||
pub fn set_parent(&self, parent: Instance) {
|
|
||||||
if self.is_root {
|
|
||||||
panic!("Root instance can not be reparented")
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut dom = INTERNAL_DOM
|
|
||||||
.try_write()
|
|
||||||
.expect("Failed to get write access to target document");
|
|
||||||
|
|
||||||
dom.transfer_within(self.dom_ref, parent.dom_ref);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Sets the parent of the instance, if it exists, to nil, making it orphaned.
|
|
||||||
|
|
||||||
An orphaned instance is an instance at the root of a weak dom.
|
An orphaned instance is an instance at the root of a weak dom.
|
||||||
|
|
||||||
|
@ -365,7 +348,7 @@ impl Instance {
|
||||||
* [`Parent`](https://create.roblox.com/docs/reference/engine/classes/Instance#Parent)
|
* [`Parent`](https://create.roblox.com/docs/reference/engine/classes/Instance#Parent)
|
||||||
on the Roblox Developer Hub
|
on the Roblox Developer Hub
|
||||||
*/
|
*/
|
||||||
pub fn set_parent_to_nil(&self) {
|
pub fn set_parent(&self, parent: Option<Instance>) {
|
||||||
if self.is_root {
|
if self.is_root {
|
||||||
panic!("Root instance can not be reparented")
|
panic!("Root instance can not be reparented")
|
||||||
}
|
}
|
||||||
|
@ -374,9 +357,11 @@ impl Instance {
|
||||||
.try_write()
|
.try_write()
|
||||||
.expect("Failed to get write access to target document");
|
.expect("Failed to get write access to target document");
|
||||||
|
|
||||||
let nil_parent_ref = dom.root_ref();
|
let parent_ref = parent
|
||||||
|
.map(|parent| parent.dom_ref)
|
||||||
|
.unwrap_or_else(|| dom.root_ref());
|
||||||
|
|
||||||
dom.transfer_within(self.dom_ref, nil_parent_ref);
|
dom.transfer_within(self.dom_ref, parent_ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -739,10 +724,8 @@ impl LuaUserData for Instance {
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
type Parent = Option<Instance>;
|
type Parent = Option<Instance>;
|
||||||
match Parent::from_lua(prop_value, lua)? {
|
let parent = Parent::from_lua(prop_value, lua)?;
|
||||||
Some(parent) => this.set_parent(parent),
|
this.set_parent(parent);
|
||||||
None => this.set_parent_to_nil(),
|
|
||||||
}
|
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
|
Loading…
Reference in a new issue