void btCompoundShape::freeChildrenShapes()
{
	// Vodin fix: free child shapes as well
	while(m_children.size()) 
	{
		btCollisionShape *s = getChildShape(0);
		removeChildShapeByIndex(0);
		delete s;
	}
	m_children.clear();
}
bool ListShapeSetter::parseShape(const hkpShape* s)
{
	auto shape = dynamic_cast<const hkpListShape*>(s);
	if(!shape) return false;
	
	ui->listWidget->clear();
	for(int i=0; i<children.getSize(); ++i)
		children[i]->removeReference();
	children.clear();
	
	hkpShapeBuffer buffer;
	for(hkpShapeKey key = shape->getFirstKey(); key!=HK_INVALID_SHAPE_KEY; key = shape->getNextKey(key))
	{
		auto child = shape->getChildShape(key, buffer);
		child->addReference();
		auto shapeClass = getHavokClass(child);
		ui->listWidget->addItem(new QListWidgetItem(shapeClass->getName()));
		children.pushBack(child);
	}
	return true;
}