Files
UnrealEngine/Engine/Source/Runtime/MediaAssets/Private/Assets/MediaTextureTracker.cpp
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

47 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "MediaTextureTracker.h"
#include "MediaTexture.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(MediaTextureTracker)
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;
}