Files
UnrealEngineUWP/Engine/Source/Runtime/MediaAssets/Private/Assets/MediaTextureTracker.cpp
Tony Wong 127da78c88 MediaAssets: ImgMediaEngine texture tracking moved to MediaTextureTracker so texture tracking can be done without the ImgMedia plugin.
#JIRA: UE-141373
#preflight 620446b0a65a8a28462fb1b7
#review-18926066 @ruslan.idrisov
#rb ruslan.idrisov
#rnx

[CL 18953523 by Tony Wong in ue5-main branch]
2022-02-11 11:33:14 -05:00

44 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "MediaTextureTracker.h"
#include "MediaTexture.h"
FMediaTextureTracker& FMediaTextureTracker::Get()
{
static FMediaTextureTracker Engine;
return Engine;
}
void FMediaTextureTracker::RegisterTexture(TSharedPtr<FMediaTextureTrackerObject, ESPMode::ThreadSafe>& InInfo,
TObjectPtr<UMediaTexture> InTexture)
{
// Do we have this media texture yet?
TWeakObjectPtr<UMediaTexture> TexturePtr(InTexture);
if (MediaTextures.Contains(TexturePtr) == false)
{
MediaTextures.Emplace(TexturePtr);
MapTextureToObject.Emplace(TexturePtr);
}
// Add component to our list.
TArray<TWeakPtr<FMediaTextureTrackerObject, ESPMode::ThreadSafe>>* FoundObjects = MapTextureToObject.Find(TexturePtr);
FoundObjects->Add(InInfo);
}
void FMediaTextureTracker::UnregisterTexture(TSharedPtr<FMediaTextureTrackerObject, ESPMode::ThreadSafe>& InInfo,
TObjectPtr<UMediaTexture> InTexture)
{
TWeakObjectPtr<UMediaTexture> TexturePtr(InTexture);
TArray<TWeakPtr<FMediaTextureTrackerObject, ESPMode::ThreadSafe>>* FoundObjects = MapTextureToObject.Find(TexturePtr);
if (FoundObjects != nullptr)
{
FoundObjects->RemoveSwap(InInfo);
}
}
const TArray<TWeakPtr<FMediaTextureTrackerObject, ESPMode::ThreadSafe>>* FMediaTextureTracker::GetObjects(TObjectPtr<UMediaTexture> InTexture) const
{
const TArray<TWeakPtr<FMediaTextureTrackerObject, ESPMode::ThreadSafe>>* ObjectsPtr = MapTextureToObject.Find(InTexture);
return ObjectsPtr;
}