BGE patch: update KX_GameObject::getChildren() to use CListValue instead of python list (allows name search keep refcount consistent)

This commit is contained in:
Benoit Bolsee 2008-07-22 16:44:35 +00:00
parent 32d10bca2b
commit 1abe753bf0

@ -1306,18 +1306,18 @@ PyObject* KX_GameObject::PyRemoveParent(PyObject* self)
}
static void walk_children(SG_Node* node, PyObject *list, bool recursive)
static void walk_children(SG_Node* node, CListValue* list, bool recursive)
{
NodeList& children = node->GetSGChildren();
for (NodeList::iterator childit = children.begin();!(childit==children.end());++childit)
{
SG_Node* childnode = (*childit);
KX_GameObject* childobj = (KX_GameObject*)childnode->GetSGClientObject();
CValue* childobj = (CValue*)childnode->GetSGClientObject();
if (childobj != NULL) // This is a GameObject
{
// add to the list
PyList_Append(list, (PyObject *)childobj);
list->Add(childobj->AddRef());
}
// if the childobj is NULL then this may be an inverse parent link
@ -1330,14 +1330,14 @@ static void walk_children(SG_Node* node, PyObject *list, bool recursive)
PyObject* KX_GameObject::PyGetChildren(PyObject* self)
{
PyObject * list = PyList_New(0);
CListValue* list = new CListValue();
walk_children(m_pSGNode, list, 0);
return list;
}
PyObject* KX_GameObject::PyGetChildrenRecursive(PyObject* self)
{
PyObject * list = PyList_New(0);
CListValue* list = new CListValue();
walk_children(m_pSGNode, list, 1);
return list;
}