Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[derive(Debug)]
- struct Scene {
- root: Rc<RefCell<SceneNode>>
- }
- impl Scene {
- pub fn new() -> Scene {
- Scene {
- root: Rc::new(RefCell::new(SceneNode::new(String::from("root"))))
- }
- }
- pub fn root(&self) -> Rc<RefCell<SceneNode>> {
- self.root.clone()
- }
- }
- #[derive(Debug)]
- struct SceneNode {
- identifier: String,
- parent: Option<Weak<RefCell<SceneNode>>>,
- children: HashMap<String, Rc<RefCell<SceneNode>>>
- }
- impl SceneNode {
- pub fn new(identifier: String) -> SceneNode {
- SceneNode {
- identifier,
- parent: None,
- children: HashMap::new()
- }
- }
- pub fn identifier(&self) -> &String {
- &self.identifier
- }
- pub fn add_child(&mut self, child: SceneNode) {
- // How? child.set_parent(self);
- self.children.insert(child.identifier().clone(), Rc::new(RefCell::new(child)));
- }
- pub fn set_parent(&mut self, parent: Option<Weak<RefCell<SceneNode>>>) {
- self.parent = parent;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement