// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/Info.h" #include "MusicSubsystem.h" #include "MusicDirector.generated.h" class UMusicPlaylistDataAsset; /** * Declare la musique du jeu. UN SEUL exemplaire suffit, dans la premiere map * chargee -- typiquement la scene de menu. * * Il ne joue rien lui-meme et ne survit pas a sa map : il transmet sa consigne a * UMusicSubsystem, qui, lui, vit sur le GameInstance et traverse tous les * changements de niveau. C'est pour ca que les maps suivantes n'ont besoin de * rien : la musique continue toute seule, et la regle de transition a deja ete * posee ici. * * En poser un second dans une autre map reste possible : il change alors de * playlist a l'arrivee sur celle-la. * * Derive d'AInfo : aucun visuel, aucun tick, et AInfo se declare non * spatialement charge, donc il est present des le demarrage meme en World * Partition -- un acteur ordinaire hors de la zone de streaming ne ferait jamais * son BeginPlay. */ UCLASS(ClassGroup = "Audio", meta = (DisplayName = "Music Director")) class EMBERWILD_API AMusicDirector : public AInfo { GENERATED_BODY() public: AMusicDirector(); protected: virtual void BeginPlay() override; /** * La playlist a lancer en arrivant sur cette map. * * Si c'est deja elle qui tourne, elle n'est pas relancee. La laisser vide veut * dire "je ne change pas la musique en cours", et n'a d'interet que sur un * second Director pose uniquement pour changer la regle de transition. */ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Musique") TObjectPtr Playlist; /** * Ce que devient le morceau en cours a CHAQUE changement de scene suivant. * * Continue : il poursuit sa route par-dessus le chargement. * New : il s'eteint et le lecteur en demarre un autre -- tirage aleatoire * ou morceau suivant, selon le mode de la playlist. * * La consigne est envoyee au lecteur, qui la garde : les autres maps n'ont * rien a declarer. */ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Musique") EMusicLevelChangeMode LevelChangeMode = EMusicLevelChangeMode::Continue; };