CameraCaptureDemo/Plugins/CameraCapture/Source/CameraCaptureSubSystem.h

49 lines
977 B
C++

// Copyright 2026 (c) Jupiter. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Subsystems/WorldSubsystem.h"
#include "Tickable.h"
#include "CameraCaptureSubSystem.generated.h"
class ACameraCaptureActor;
UCLASS()
class CAMERACAPTURE_API UCameraCaptureSubSystem : public UWorldSubsystem, public FTickableGameObject
{
GENERATED_BODY()
public:
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
virtual void Deinitialize() override;
virtual void OnWorldBeginPlay(UWorld& InWorld) override;
virtual void Tick(float DeltaTime) override;
virtual TStatId GetStatId() const override;
virtual bool IsTickable() const override
{
return true;
}
private:
void CaptureViewToImageTick();
void AsyncWriteImageToDisk(TArray<FColor>& AtlasPixels, const int32 AtlasW, const int32 AtlasH);
TArray<TWeakObjectPtr<ACameraCaptureActor>> AllCaptureCameras;
// 输出的目录
UPROPERTY()
FString OutPutDirectoryPath;
};