| 846 | } |
| 847 | |
| 848 | void Renderer::CollectDecalsForRoom(short roomNumber, RenderView& renderView) |
| 849 | { |
| 850 | if (_rooms.size() <= roomNumber) |
| 851 | return; |
| 852 | |
| 853 | RendererRoom& room = _rooms[roomNumber]; |
| 854 | |
| 855 | room.Decals.clear(); |
| 856 | |
| 857 | if (Decals.empty()) |
| 858 | return; |
| 859 | |
| 860 | for (auto& decal : Decals) |
| 861 | { |
| 862 | if (!renderView.Camera.Frustum.SphereInFrustum(decal.Sphere.Center, decal.Sphere.Radius)) |
| 863 | continue; |
| 864 | |
| 865 | bool decalInRoom = (decal.RoomNumber == room.RoomNumber); |
| 866 | |
| 867 | if (!decalInRoom) |
| 868 | { |
| 869 | for (auto j : decal.Neighbors) |
| 870 | { |
| 871 | if (j == roomNumber) |
| 872 | { |
| 873 | decalInRoom = true; |
| 874 | break; |
| 875 | } |
| 876 | } |
| 877 | } |
| 878 | |
| 879 | if (decalInRoom) |
| 880 | { |
| 881 | RendererDecal newDecal; |
| 882 | |
| 883 | newDecal.Position = decal.Sphere.Center; |
| 884 | newDecal.Radius = decal.Sphere.Radius; |
| 885 | newDecal.Opacity = decal.Opacity; |
| 886 | newDecal.Pattern = (int)decal.Type; |
| 887 | |
| 888 | room.Decals.push_back(newDecal); |
| 889 | } |
| 890 | } |
| 891 | } |
| 892 | |
| 893 | void Renderer::CollectLightsForRoom(short roomNumber, RenderView &renderView) |
| 894 | { |
nothing calls this directly
no test coverage detected