From b192c51c10e9f1a0a04aac98877a58a2caf3aa96 Mon Sep 17 00:00:00 2001 From: Hong Date: Tue, 24 Feb 2026 16:07:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=EF=BC=8C9=E4=B8=AA=E6=91=84=E5=83=8F=E6=9C=BA=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 39 +++++++ Config/DefaultEditor.ini | 0 Config/DefaultEngine.ini | 103 ++++++++++++++++++ Config/DefaultGame.ini | 6 + Config/DefaultInput.ini | 84 ++++++++++++++ Content/Levels/L_Test.umap | Bin 0 -> 48587 bytes NineCameraDemo.uproject | 22 ++++ Source/NineCameraDemo.Target.cs | 15 +++ Source/NineCameraDemo/NineCameraDemo.Build.cs | 23 ++++ Source/NineCameraDemo/NineCameraDemo.cpp | 6 + Source/NineCameraDemo/NineCameraDemo.h | 6 + Source/NineCameraDemoEditor.Target.cs | 15 +++ 12 files changed, 319 insertions(+) create mode 100644 .gitignore create mode 100644 Config/DefaultEditor.ini create mode 100644 Config/DefaultEngine.ini create mode 100644 Config/DefaultGame.ini create mode 100644 Config/DefaultInput.ini create mode 100644 Content/Levels/L_Test.umap create mode 100644 NineCameraDemo.uproject create mode 100644 Source/NineCameraDemo.Target.cs create mode 100644 Source/NineCameraDemo/NineCameraDemo.Build.cs create mode 100644 Source/NineCameraDemo/NineCameraDemo.cpp create mode 100644 Source/NineCameraDemo/NineCameraDemo.h create mode 100644 Source/NineCameraDemoEditor.Target.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e8b20b --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +/Plugins/SteamSession/Intermediate +*.pdb +/Saved +/Intermediate +/DerivedDataCache +/Binaries +/.vs +/*.sln +/.vsconfig +*_BuiltData.uasset +/enc_temp_folder +*.patch_* +/Binaries/Win64/D3D12/x64/D3D12Core.dll +/Binaries/Win64/D3D12/x64/d3d12SDKLayers.dll +/Binaries/Win64/DML/x64/DirectML.dll +/Binaries/Win64/DigitalHuman-Win64-Shipping.exe +/Binaries/Win64/DigitalHuman-Win64-Shipping.exp +/Binaries/Win64/DigitalHuman-Win64-Shipping.lib +/Binaries/Win64/DigitalHuman-Win64-Shipping.target +/Binaries/Win64/DigitalHuman.exe +/Binaries/Win64/DigitalHuman.exp +/Binaries/Win64/DigitalHuman.lib +/Binaries/Win64/DigitalHuman.target +/Binaries/Win64/boost_atomic-mt-x64.dll +/Binaries/Win64/boost_chrono-mt-x64.dll +/Binaries/Win64/boost_filesystem-mt-x64.dll +/Binaries/Win64/boost_iostreams-mt-x64.dll +/Binaries/Win64/boost_program_options-mt-x64.dll +/Binaries/Win64/boost_python311-mt-x64.dll +/Binaries/Win64/boost_regex-mt-x64.dll +/Binaries/Win64/boost_system-mt-x64.dll +/Binaries/Win64/boost_thread-mt-x64.dll +/Binaries/Win64/steam_appid.txt +/Binaries/Win64/tbb12.dll +/Binaries/Win64/tbbmalloc.dll +/Build/Windows/FileOpenOrder/CookerOpenOrder.log +/Build/Windows/FileOpenOrder/EditorOpenOrder.log +/Plugins/PaperZD/Intermediate +/Samples diff --git a/Config/DefaultEditor.ini b/Config/DefaultEditor.ini new file mode 100644 index 0000000..e69de29 diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini new file mode 100644 index 0000000..3fa6322 --- /dev/null +++ b/Config/DefaultEngine.ini @@ -0,0 +1,103 @@ + + +[/Script/EngineSettings.GameMapsSettings] +GameDefaultMap=/Game/Levels/L_Test.L_Test +EditorStartupMap=/Game/Levels/L_Test.L_Test + +[/Script/Engine.RendererSettings] +r.AllowStaticLighting=False + +r.GenerateMeshDistanceFields=True + +r.DynamicGlobalIlluminationMethod=1 + +r.ReflectionMethod=1 + +r.SkinCache.CompileShaders=True + +r.RayTracing=True + +r.RayTracing.RayTracingProxies.ProjectEnabled=True + +r.Substrate=True + +r.Substrate.ProjectGBufferFormat=0 + +r.Shadow.Virtual.Enable=1 + +r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True + +r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8 + +r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8 + +[/Script/WindowsTargetPlatform.WindowsTargetSettings] +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +-D3D12TargetedShaderFormats=PCD3D_SM5 ++D3D12TargetedShaderFormats=PCD3D_SM6 +-D3D11TargetedShaderFormats=PCD3D_SM5 ++D3D11TargetedShaderFormats=PCD3D_SM5 +Compiler=Default +AudioSampleRate=48000 +AudioCallbackBufferFrameSize=1024 +AudioNumBuffersToEnqueue=1 +AudioMaxChannels=0 +AudioNumSourceWorkers=4 +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) +CacheSizeKB=65536 +MaxChunkSizeOverrideKB=0 +bResampleForDevice=False +MaxSampleRate=48000.000000 +HighSampleRate=32000.000000 +MedSampleRate=24000.000000 +LowSampleRate=12000.000000 +MinSampleRate=8000.000000 +CompressionQualityModifier=1.000000 +AutoStreamingThreshold=0.000000 +SoundCueCookQualityIndex=-1 + +[/Script/LinuxTargetPlatform.LinuxTargetSettings] +-TargetedRHIs=SF_VULKAN_SM5 ++TargetedRHIs=SF_VULKAN_SM6 + +[/Script/MacTargetPlatform.MacTargetSettings] +-TargetedRHIs=SF_METAL_SM5 ++TargetedRHIs=SF_METAL_SM6 + +[/Script/HardwareTargeting.HardwareTargetingSettings] +TargetedHardwareClass=Desktop +AppliedTargetedHardwareClass=Desktop +DefaultGraphicsPerformance=Maximum +AppliedDefaultGraphicsPerformance=Maximum + +[/Script/WorldPartitionEditor.WorldPartitionEditorSettings] +CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet' + +[/Script/Engine.UserInterfaceSettings] +bAuthorizeAutomaticWidgetVariableCreation=False +FontDPIPreset=Standard +FontDPI=72 + +[/Script/Engine.Engine] ++ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/NineCameraDemo") ++ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/NineCameraDemo") + +[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] +bEnablePlugin=True +bAllowNetworkConnection=True +SecurityToken=6E615E764E2A40A0E895DCA047C9DF93 +bIncludeInShipping=False +bAllowExternalStartInShipping=False +bCompileAFSProject=False +bUseCompression=False +bLogFiles=False +bReportStats=False +ConnectionType=USBOnly +bUseManualIPAddress=False +ManualIPAddress= + diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini new file mode 100644 index 0000000..e3abbf9 --- /dev/null +++ b/Config/DefaultGame.ini @@ -0,0 +1,6 @@ + +[/Script/CommonUI.CommonUISettings] +CommonButtonAcceptKeyHandling=TriggerClick + +[/Script/EngineSettings.GeneralProjectSettings] +ProjectID=0F3C342943178EE6F052D6B2030E0877 diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini new file mode 100644 index 0000000..a919105 --- /dev/null +++ b/Config/DefaultInput.ini @@ -0,0 +1,84 @@ +[/Script/Engine.InputSettings] +-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) ++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +bAltEnterTogglesFullscreen=True +bF11TogglesFullscreen=True +bUseMouseForTouch=False +bEnableMouseSmoothing=True +bEnableFOVScaling=True +bCaptureMouseOnLaunch=True +bEnableLegacyInputScales=True +bEnableMotionControls=True +bFilterInputByPlatformUser=False +bShouldFlushPressedKeysOnViewportFocusLost=True +bAlwaysShowTouchInterface=False +bShowConsoleOnFourFingerTap=True +bEnableGestureRecognizer=False +bUseAutocorrect=False +DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown +DefaultViewportMouseLockMode=LockOnCapture +FOVScale=0.011110 +DoubleClickTime=0.200000 +DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput +DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent +DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks +-ConsoleKeys=Tilde ++ConsoleKeys=Tilde + diff --git a/Content/Levels/L_Test.umap b/Content/Levels/L_Test.umap new file mode 100644 index 0000000000000000000000000000000000000000..6f6f0ccb41a7107a0ccb8d2dae12d912624bca43 GIT binary patch literal 48587 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 RX-ZMsH(ws4VReZA{{W=~mc{@8 literal 0 HcmV?d00001 diff --git a/NineCameraDemo.uproject b/NineCameraDemo.uproject new file mode 100644 index 0000000..a494d1a --- /dev/null +++ b/NineCameraDemo.uproject @@ -0,0 +1,22 @@ +{ + "FileVersion": 3, + "EngineAssociation": "5.7", + "Category": "", + "Description": "", + "Modules": [ + { + "Name": "NineCameraDemo", + "Type": "Runtime", + "LoadingPhase": "Default" + } + ], + "Plugins": [ + { + "Name": "ModelingToolsEditorMode", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + } + ] +} \ No newline at end of file diff --git a/Source/NineCameraDemo.Target.cs b/Source/NineCameraDemo.Target.cs new file mode 100644 index 0000000..7c59813 --- /dev/null +++ b/Source/NineCameraDemo.Target.cs @@ -0,0 +1,15 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class NineCameraDemoTarget : TargetRules +{ + public NineCameraDemoTarget(TargetInfo Target) : base(Target) + { + Type = TargetType.Game; + DefaultBuildSettings = BuildSettingsVersion.V6; + IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7; + ExtraModuleNames.Add("NineCameraDemo"); + } +} diff --git a/Source/NineCameraDemo/NineCameraDemo.Build.cs b/Source/NineCameraDemo/NineCameraDemo.Build.cs new file mode 100644 index 0000000..4e4a53c --- /dev/null +++ b/Source/NineCameraDemo/NineCameraDemo.Build.cs @@ -0,0 +1,23 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; + +public class NineCameraDemo : ModuleRules +{ + public NineCameraDemo(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput" }); + + PrivateDependencyModuleNames.AddRange(new string[] { }); + + // Uncomment if you are using Slate UI + // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); + + // Uncomment if you are using online features + // PrivateDependencyModuleNames.Add("OnlineSubsystem"); + + // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true + } +} diff --git a/Source/NineCameraDemo/NineCameraDemo.cpp b/Source/NineCameraDemo/NineCameraDemo.cpp new file mode 100644 index 0000000..14512a3 --- /dev/null +++ b/Source/NineCameraDemo/NineCameraDemo.cpp @@ -0,0 +1,6 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "NineCameraDemo.h" +#include "Modules/ModuleManager.h" + +IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, NineCameraDemo, "NineCameraDemo" ); diff --git a/Source/NineCameraDemo/NineCameraDemo.h b/Source/NineCameraDemo/NineCameraDemo.h new file mode 100644 index 0000000..677c8e2 --- /dev/null +++ b/Source/NineCameraDemo/NineCameraDemo.h @@ -0,0 +1,6 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" + diff --git a/Source/NineCameraDemoEditor.Target.cs b/Source/NineCameraDemoEditor.Target.cs new file mode 100644 index 0000000..f0b3015 --- /dev/null +++ b/Source/NineCameraDemoEditor.Target.cs @@ -0,0 +1,15 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class NineCameraDemoEditorTarget : TargetRules +{ + public NineCameraDemoEditorTarget( TargetInfo Target) : base(Target) + { + Type = TargetType.Editor; + DefaultBuildSettings = BuildSettingsVersion.V6; + IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7; + ExtraModuleNames.Add("NineCameraDemo"); + } +}