You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#JIRA: UE-141361 #preflight 62681303430b9997ebe27d9b #review-19870484 @thomas.engel @ruslan.idrisov @eric.renaudhoude #rb thomas.engel, ruslan.idrisov, eric.renaudhoude #rnx [CL 19921801 by Tony Wong in ue5-main branch]
110 lines
2.2 KiB
C++
110 lines
2.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "MediaAssetsPrivate.h"
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "IMediaAssetsModule.h"
|
|
#include "Misc/CoreMisc.h"
|
|
#include "Modules/ModuleManager.h"
|
|
#include "UObject/UObjectHash.h"
|
|
#include "UObject/UObjectIterator.h"
|
|
|
|
#include "MediaPlayer.h"
|
|
|
|
|
|
DEFINE_LOG_CATEGORY(LogMediaAssets);
|
|
|
|
|
|
/**
|
|
* Implements the MediaAssets module.
|
|
*/
|
|
class FMediaAssetsModule
|
|
: public FSelfRegisteringExec
|
|
, public IMediaAssetsModule
|
|
{
|
|
public:
|
|
|
|
//~ FSelfRegisteringExec interface
|
|
|
|
virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override
|
|
{
|
|
if (FParse::Command(&Cmd, TEXT("MEDIA")))
|
|
{
|
|
FString MovieCmd = FParse::Token(Cmd, 0);
|
|
|
|
if (MovieCmd.Contains(TEXT("PLAY")))
|
|
{
|
|
for (TObjectIterator<UMediaPlayer> It; It; ++It)
|
|
{
|
|
UMediaPlayer* MediaPlayer = *It;
|
|
MediaPlayer->Play();
|
|
}
|
|
}
|
|
else if (MovieCmd.Contains(TEXT("PAUSE")))
|
|
{
|
|
for (TObjectIterator<UMediaPlayer> It; It; ++It)
|
|
{
|
|
UMediaPlayer* MediaPlayer = *It;
|
|
MediaPlayer->Pause();
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public:
|
|
//~ IMediaAssetsModule interface
|
|
virtual int32 RegisterGetPlayerFromObject(const FOnGetPlayerFromObject& Delegate) override
|
|
{
|
|
int32 Index = GetPlayerFromObjectDelegates.Num();
|
|
GetPlayerFromObjectDelegates.Add(Delegate);
|
|
return Index;
|
|
}
|
|
|
|
virtual void UnregisterGetPlayerFromObject(int32 DelegateID) override
|
|
{
|
|
GetPlayerFromObjectDelegates[DelegateID].Unbind();
|
|
}
|
|
|
|
virtual UMediaPlayer* GetPlayerFromObject(UObject* Object) override
|
|
{
|
|
UMediaPlayer* Player = nullptr;
|
|
|
|
// Go through all our delegates.
|
|
for (FOnGetPlayerFromObject& Delegate : GetPlayerFromObjectDelegates)
|
|
{
|
|
if (Delegate.IsBound())
|
|
{
|
|
Player = Delegate.Execute(Object);
|
|
if (Player != nullptr)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return Player;
|
|
}
|
|
|
|
//~ IModuleInterface interface
|
|
|
|
virtual void StartupModule() override { }
|
|
virtual void ShutdownModule() override { }
|
|
|
|
virtual bool SupportsDynamicReloading() override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
private:
|
|
/** All the functions that can get a player from an object. */
|
|
TArray<FOnGetPlayerFromObject> GetPlayerFromObjectDelegates;
|
|
|
|
};
|
|
|
|
|
|
IMPLEMENT_MODULE(FMediaAssetsModule, MediaAssets);
|