エディタのビューポートにおける現在の画角情報(Field of View(H))は
GCurrentLevelEditingViewportClient->FOVAngle;
を使うことで取得することができます。なので、
MyBlueprintFunctionLibrary.h
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"
UCLASS()
class MYPROJECT_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable)
static float GetLevelViewFov();
};
MyBlueprintFunctionLibrary.cpp
#include "MyBlueprintFunctionLibrary.h"
#include "LevelEditorViewport.h"
float UMyBlueprintFunctionLibrary::GetLevelViewFov()
{
return GCurrentLevelEditingViewportClient->FOVAngle;
}
MyProject.Build.cs
using UnrealBuildTool;
public class MyProject: ModuleRules
{
public MyProject(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
// UnrealEdを追加
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "UnrealEd" });
}
}
という感じでプロジェクトのC++コードを書いて、
ノードを配置すると、
現在の画角情報を取得できます。EditorUtilityWidgetで実装すると、レベルを実行しなくても取得できるので便利です。
今回使用したGCurrentLevelEditingViewportClientは他にもプロパティが沢山あったり、UEditorLevelLibraryにもカメラ情報取得用の関数が色々用意されているのでご興味のある方はぜひ一度見てみてください!
【UE4】【C++】メモ:EditorのViewportの設定をBlueprintに公開してみる【★★★★】
最後に、今回のコードはエディタ専用機能なので、実際に組み込む際はエディタモジュールで実装することをおすすめします。
おしまい