64 lines
2.2 KiB
C++
64 lines
2.2 KiB
C++
// 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 SURVIVAL_PROJET_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<UMusicPlaylistDataAsset> 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;
|
|
};
|