EntityGroupItem SceneSelectionSystem::GetSelectableEntity(DAVA::Entity* entity) { EntityGroupItem ret; DAVA::Entity *solidEntity = entity; if(NULL != entity) { // find real solid entity solidEntity = entity; while(NULL != solidEntity && !solidEntity->GetSolid()) { solidEntity = solidEntity->GetParent(); } // if there is no solid entity, try to find lod parent entity if(NULL == solidEntity) { // find entity that has lod component solidEntity = entity; while(NULL != solidEntity && NULL == solidEntity->GetComponent(DAVA::Component::LOD_COMPONENT)) { solidEntity = solidEntity->GetParent(); } } // still not found? if(NULL == solidEntity) { // let it current entity to be tread as solid solidEntity = entity; } ret.entity = entity; ret.solidEntity = solidEntity; ret.bbox = CalcAABox(solidEntity); } return ret; }