From 28bdf476ca317ef64cb4dba93de32a0d7db8569e Mon Sep 17 00:00:00 2001 From: Hartmut Seichter Date: Mon, 7 Jan 2019 16:28:22 +0100 Subject: [PATCH] fix for erasure handling of nodes and components --- .gitignore | 1 + src/scene/src/node.cpp | 32 +++++++++++++++++++++++--------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 8a9d35c..a2ce144 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.user +*.user.* diff --git a/src/scene/src/node.cpp b/src/scene/src/node.cpp index c28bff3..428459d 100644 --- a/src/scene/src/node.cpp +++ b/src/scene/src/node.cpp @@ -51,11 +51,17 @@ node::ref node::add_child() void node::remove_child(ref child_node) { - node::ref_array::iterator it = _children.end(); + for (node::ref_array::iterator it = _children.begin(); + it != _children.end(); + it++) + { + if (child_node == *it) it = _children.erase(it); + } +// auto it = _children.end(); - while ((it = std::find(_children.begin(),_children.end(),child_node)) != _children.end()) { - _children.erase(it); - } +// while (it = std::find(_children.begin(),_children.end(),child_node) != _children.end()) { +// it = _children.erase(it); +// } } node::~node() @@ -74,12 +80,20 @@ void node::add_component(component::ref new_component) void node::remove_component(component::ref c) { - component::array::iterator it = _components.end(); +// component::array::iterator it = _components.end(); - while ((it = std::find(_components.begin(),_components.end(),c)) != _components.end()) { - (*it)->_node = nullptr; - _components.erase(it); - } + for (component::array::iterator it = _components.begin(); + it != _components.end(); + it++) + { + if (*it == c) it = _components.erase(it); + } + + +// while ((it = std::find(_components.begin(),_components.end(),c)) != _components.end()) { +// (*it)->_node = nullptr; +// _components.erase(it); +// } } const node::ptr_array &node::path() const