| 305 | } |
| 306 | |
| 307 | double BoxNester::calcCost_( const PlacedSocket& leafSocket ) const |
| 308 | { |
| 309 | if ( !params_.options.priorityMetric ) |
| 310 | { |
| 311 | assert( false ); |
| 312 | return 0.0; |
| 313 | } |
| 314 | |
| 315 | params_.options.priorityMetric->init( leafSocket.box ); |
| 316 | const PlacedSocket* socket = &leafSocket; |
| 317 | while ( socket ) |
| 318 | { |
| 319 | params_.options.priorityMetric->addNested( socket->box ); |
| 320 | socket = socket->parentSocketId == -1 ? nullptr : &socketTree_[socket->parentSocketId]; |
| 321 | } |
| 322 | if ( params_.options.preNestedVolumes ) |
| 323 | { |
| 324 | for ( const auto& box : *params_.options.preNestedVolumes ) |
| 325 | { |
| 326 | params_.options.priorityMetric->addNested( box ); |
| 327 | } |
| 328 | } |
| 329 | return params_.options.priorityMetric->complete(); |
| 330 | } |
| 331 | |
| 332 | /* |
| 333 | Vector3i BoxNester::calcPos_( const Vector3i& parentPos, uint8_t pc, uint8_t tc ) |