bool BodyBarImpl::makeSingleSelection(BodyItem* bodyItem) { ItemTreeView* tree = ItemTreeView::mainInstance()->mainInstance(); ItemList<BodyItem> prevSelected = selectedBodyItems; for(size_t i=0; i < prevSelected.size(); ++i){ BodyItem* item = prevSelected[i]; if(item != bodyItem && tree->isItemSelected(item)){ tree->selectItem(item, false); } } bool selected = tree->isItemSelected(bodyItem); if(!selected){ selected = tree->selectItem(bodyItem, true); } return selected; }
static void forEachTargetBodyItem(boost::function<void(BodyItem*)> callback) { ItemTreeView* itemTreeView = ItemTreeView::instance(); ItemList<BodyItem> bodyItems; bodyItems.extractChildItems(RootItem::instance()); for(int i=0; i < bodyItems.size(); ++i){ BodyItem* bodyItem = bodyItems.get(i); bool isTarget = itemTreeView->isItemSelected(bodyItem); if(!isTarget){ WorldItem* worldItem = bodyItem->findOwnerItem<WorldItem>(); if(worldItem && itemTreeView->isItemSelected(worldItem)){ isTarget = true; } } if(isTarget){ callback(bodyItem); } } }