MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / DrawSortedFaces

Method DrawSortedFaces

TombEngine/Renderer/RendererDraw.cpp:3553–3787  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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);

Callers

nothing calls this directly

Calls 7

bulk_push_backMethod · 0.80
Vector3Function · 0.50
sizeMethod · 0.45
clearMethod · 0.45
dataMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected