| 391 | } |
| 392 | |
| 393 | void Humanoid::setWearableFromHead(uint8_t slot, HeadArmor const& head, Gender gender) { |
| 394 | auto& fashion = *m_fashion; |
| 395 | Wearable& current = fashion.wearables.at(slot); |
| 396 | if (auto currentHead = current.ptr<WornHead>()) |
| 397 | fashion.helmetMasksChanged |= currentHead->maskDirectives != head.maskDirectives(); |
| 398 | else { |
| 399 | wearableRemoved(current); |
| 400 | fashion.wornHeadsChanged = true; |
| 401 | fashion.helmetMasksChanged |= !head.maskDirectives().empty(); |
| 402 | } |
| 403 | current.makeType(current.typeIndexOf<WornHead>()); |
| 404 | auto& wornHead = current.get<WornHead>(); |
| 405 | wornHead.directives = head.directives(m_facingDirection == Direction::Left); |
| 406 | wornHead.frameset = head.frameset(gender); |
| 407 | wornHead.maskDirectives = head.maskDirectives(); |
| 408 | } |
| 409 | |
| 410 | void Humanoid::setWearableFromChest(uint8_t slot, ChestArmor const& chest, Gender gender) { |
| 411 | auto& fashion = *m_fashion; |
no test coverage detected