Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dungeon: avoid building the same stream more than once (refactoring, CameraComponent) #1566

Merged
merged 1 commit into from
Jul 2, 2024

Conversation

cagix
Copy link
Member

@cagix cagix commented Jul 1, 2024

see #1564 (comment)

public void execute() {
    if (filteredEntityStream(CameraComponent.class, PositionComponent.class).findAny().isEmpty())
       focus();
     else filteredEntityStream().forEach(this::focus);

Hier wird der Stream bis zu 2x gebaut, was (a) aufwändig und (b) schlecht lesbar ist.

Zudem wird bei Vorliegen eines oder mehrerer Entitäten mit einer CameraComponent für alle Entitäten in einer nicht vorhersehbaren Reihenfolge die Methode focus(e) aufgerufen - die zuletzt iterierte Entität "gewinnt", da es nur eine Kamera (-position) gibt.

Refactoring: Dies wird durch einmaliges Erzeugen des Streams und durch Nutzen einer zufälligen Entität mit CameraComponent zum Setzen der Kamera abgelöst.

Keine Änderung der API und/oder des Verhaltens.

@cagix cagix added the dungeon label Jul 1, 2024
@cagix cagix self-assigned this Jul 1, 2024
@cagix cagix requested a review from AMatutat July 1, 2024 14:03
@cagix cagix merged commit 416b02c into master Jul 2, 2024
8 checks passed
@cagix cagix deleted the refactor-camerasystem branch July 2, 2024 06:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants