| 3551 | } |
| 3552 | |
| 3553 | void Renderer::DrawSortedFaces(RenderView& view) |
| 3554 | { |
| 3555 | for (int i = 0; i < view.TransparentObjectsToDraw.size(); i++) |
| 3556 | { |
| 3557 | auto* object = &view.TransparentObjectsToDraw[i]; |
| 3558 | auto lastObjectType = (i > 0 ? view.TransparentObjectsToDraw[i - 1].ObjectType : RendererObjectType::Unknown); |
| 3559 | |
| 3560 | _sortedPolygonsVertices.clear(); |
| 3561 | _sortedPolygonsIndices.clear(); |
| 3562 | |
| 3563 | if (_currentMirror != nullptr && object->ObjectType == RendererObjectType::Room) |
| 3564 | continue; |
| 3565 | |
| 3566 | if (object->ObjectType == RendererObjectType::Room) |
| 3567 | { |
| 3568 | while (i < view.TransparentObjectsToDraw.size() && |
| 3569 | view.TransparentObjectsToDraw[i].ObjectType == object->ObjectType && |
| 3570 | view.TransparentObjectsToDraw[i].Room->RoomNumber == object->Room->RoomNumber && |
| 3571 | view.TransparentObjectsToDraw[i].Bucket->Animated == object->Bucket->Animated && |
| 3572 | view.TransparentObjectsToDraw[i].Bucket->Texture == object->Bucket->Texture && |
| 3573 | view.TransparentObjectsToDraw[i].BlendMode == object->BlendMode && |
| 3574 | _sortedPolygonsIndices.size() + (view.TransparentObjectsToDraw[i].Polygon->Shape == 0 ? 6 : 3) < MAX_TRANSPARENT_VERTICES) |
| 3575 | { |
| 3576 | auto* currentObject = &view.TransparentObjectsToDraw[i]; |
| 3577 | _sortedPolygonsIndices.bulk_push_back( |
| 3578 | _roomsIndices.data(), |
| 3579 | currentObject->Polygon->BaseIndex, |
| 3580 | currentObject->Polygon->Shape == 0 ? 6 : 3); |
| 3581 | i++; |
| 3582 | } |
| 3583 | |
| 3584 | DrawRoomSorted(object, lastObjectType, view); |
| 3585 | |
| 3586 | if (i == view.TransparentObjectsToDraw.size()) |
| 3587 | return; |
| 3588 | |
| 3589 | i--; |
| 3590 | } |
| 3591 | else if (object->ObjectType == RendererObjectType::Moveable) |
| 3592 | { |
| 3593 | while (i < view.TransparentObjectsToDraw.size() && |
| 3594 | view.TransparentObjectsToDraw[i].ObjectType == object->ObjectType && |
| 3595 | view.TransparentObjectsToDraw[i].Item->ItemNumber == object->Item->ItemNumber && |
| 3596 | view.TransparentObjectsToDraw[i].Bucket->Texture == object->Bucket->Texture && |
| 3597 | view.TransparentObjectsToDraw[i].Bucket->Animated == object->Bucket->Animated && |
| 3598 | view.TransparentObjectsToDraw[i].Skinned == object->Skinned && |
| 3599 | view.TransparentObjectsToDraw[i].BlendMode == object->BlendMode && |
| 3600 | _sortedPolygonsIndices.size() + (view.TransparentObjectsToDraw[i].Polygon->Shape == 0 ? 6 : 3) < MAX_TRANSPARENT_VERTICES) |
| 3601 | { |
| 3602 | auto* currentObject = &view.TransparentObjectsToDraw[i]; |
| 3603 | _sortedPolygonsIndices.bulk_push_back( |
| 3604 | _moveablesIndices.data(), |
| 3605 | currentObject->Polygon->BaseIndex, |
| 3606 | currentObject->Polygon->Shape == 0 ? 6 : 3); |
| 3607 | i++; |
| 3608 | } |
| 3609 | |
| 3610 | DrawItemSorted(object, lastObjectType, view); |
nothing calls this directly
no test coverage detected