From b63299c50d5c6126d801670c4e7df1d26b392c4f Mon Sep 17 00:00:00 2001 From: Oleg Petruny Date: Fri, 3 May 2024 14:33:49 +0200 Subject: [PATCH] CameraMode, better settings, CustomGlobalInstance, another ports --- .../DefaultEditorPerProjectUserSettings.ini | 10 +++ Config/DefaultEngine.ini | 3 + Config/DefaultGameUserSettings.ini | 35 ++++++++ Config/DefaultInput.ini | 28 +++--- .../Characters/BP_CameraMode.uasset | Bin 0 -> 58093 bytes .../Other/BP_CustomGameInstance.uasset | Bin 0 -> 6111 bytes ...good_timing_bd_Raymond_Larabie_Font.uasset | 3 + .../FF_bowhouse_bold_Takuminokami.uasset | 3 + .../FF_bowhouse_regular_Takuminokami.uasset | 3 + .../FF_good_times_rg_Raymond_Larabie.uasset | 3 + .../FF_good_timing_bd_Raymond_Larabie.uasset | 3 + ..._timing_bd_Raymond_Larabie_original.uasset | 3 + .../FF_primer_print_Raymond_Larabie.uasset | 3 + ...F_primer_print_bold_Raymond_Larabie.uasset | 3 + ...ont_bowhouse_bold_Takuminokami_Font.uasset | 3 + ..._bowhouse_regular_Takuminokami_Font.uasset | 3 + ..._good_times_rg_Raymond_Larabie_Font.uasset | 3 + ...ng_bd_Raymond_Larabie_Font_original.uasset | 3 + ...t_primer_print_Raymond_Larabie_Font.uasset | 3 + ...mer_print_bold_Raymond_Larabie_Font.uasset | 3 + Content/Input/Actions/IA_FlyUpDown.uasset | Bin 0 -> 1502 bytes Content/Input/Actions/IA_Interact.uasset | Bin 0 -> 1633 bytes Content/Input/Actions/IA_Jump.uasset | Bin 0 -> 1613 bytes Content/Input/Actions/IA_Look.uasset | Bin 0 -> 1477 bytes Content/Input/Actions/IA_Move.uasset | Bin 0 -> 1477 bytes Content/Input/Actions/IA_Run.uasset | Bin 0 -> 1605 bytes .../Input/Actions/IA_TurnCameraMode.uasset | Bin 0 -> 1663 bytes Content/Input/IMC_CameraMode.uasset | Bin 0 -> 9268 bytes Content/Input/IMC_Player.uasset | Bin 0 -> 9151 bytes .../Models/GrayBoxes/Materials/M_Gray.uasset | 3 + Lost_Edge.uproject | 7 +- Source/Lost_Edge/Private/APlayerBase.cpp | 25 +++--- Source/Lost_Edge/Private/APlayerBase.h | 10 +-- Source/Lost_Edge/Private/CameraModeBase.cpp | 85 ++++++++++++++++++ Source/Lost_Edge/Private/CameraModeBase.h | 43 +++++++++ .../Private/CustomGameInstanceBase.cpp | 43 +++++++++ .../Private/CustomGameInstanceBase.h | 25 ++++++ .../Private/CustomGameUserSettings.cpp | 4 + .../Private/CustomGameUserSettings.h | 11 +-- Source/Lost_Edge/Private/MainGameModeBase.cpp | 41 +++++++++ Source/Lost_Edge/Private/MainGameModeBase.h | 23 +++++ 41 files changed, 396 insertions(+), 42 deletions(-) create mode 100644 Config/DefaultEditorPerProjectUserSettings.ini create mode 100644 Config/DefaultGameUserSettings.ini create mode 100644 Content/Blueprints/Characters/BP_CameraMode.uasset create mode 100644 Content/Blueprints/Other/BP_CustomGameInstance.uasset create mode 100644 Content/Fonts/FF_good_timing_bd_Raymond_Larabie_Font.uasset create mode 100644 Content/Fonts/FontFaces/FF_bowhouse_bold_Takuminokami.uasset create mode 100644 Content/Fonts/FontFaces/FF_bowhouse_regular_Takuminokami.uasset create mode 100644 Content/Fonts/FontFaces/FF_good_times_rg_Raymond_Larabie.uasset create mode 100644 Content/Fonts/FontFaces/FF_good_timing_bd_Raymond_Larabie.uasset create mode 100644 Content/Fonts/FontFaces/FF_good_timing_bd_Raymond_Larabie_original.uasset create mode 100644 Content/Fonts/FontFaces/FF_primer_print_Raymond_Larabie.uasset create mode 100644 Content/Fonts/FontFaces/FF_primer_print_bold_Raymond_Larabie.uasset create mode 100644 Content/Fonts/Font_bowhouse_bold_Takuminokami_Font.uasset create mode 100644 Content/Fonts/Font_bowhouse_regular_Takuminokami_Font.uasset create mode 100644 Content/Fonts/Font_good_times_rg_Raymond_Larabie_Font.uasset create mode 100644 Content/Fonts/Font_good_timing_bd_Raymond_Larabie_Font_original.uasset create mode 100644 Content/Fonts/Font_primer_print_Raymond_Larabie_Font.uasset create mode 100644 Content/Fonts/Font_primer_print_bold_Raymond_Larabie_Font.uasset create mode 100644 Content/Input/Actions/IA_FlyUpDown.uasset create mode 100644 Content/Input/Actions/IA_Interact.uasset create mode 100644 Content/Input/Actions/IA_Jump.uasset create mode 100644 Content/Input/Actions/IA_Look.uasset create mode 100644 Content/Input/Actions/IA_Move.uasset create mode 100644 Content/Input/Actions/IA_Run.uasset create mode 100644 Content/Input/Actions/IA_TurnCameraMode.uasset create mode 100644 Content/Input/IMC_CameraMode.uasset create mode 100644 Content/Input/IMC_Player.uasset create mode 100644 Content/Models/GrayBoxes/Materials/M_Gray.uasset create mode 100644 Source/Lost_Edge/Private/CameraModeBase.cpp create mode 100644 Source/Lost_Edge/Private/CameraModeBase.h create mode 100644 Source/Lost_Edge/Private/CustomGameInstanceBase.cpp create mode 100644 Source/Lost_Edge/Private/CustomGameInstanceBase.h create mode 100644 Source/Lost_Edge/Private/MainGameModeBase.cpp create mode 100644 Source/Lost_Edge/Private/MainGameModeBase.h diff --git a/Config/DefaultEditorPerProjectUserSettings.ini b/Config/DefaultEditorPerProjectUserSettings.ini new file mode 100644 index 0000000..54117e8 --- /dev/null +++ b/Config/DefaultEditorPerProjectUserSettings.ini @@ -0,0 +1,10 @@ +[/Script/LiveCoding.LiveCodingSettings] +bEnabled=False +Startup=AutomaticButHidden +bEnableReinstancing=True +bAutomaticallyCompileNewClasses=True +bPreloadEngineModules=False +bPreloadEnginePluginModules=False +bPreloadProjectModules=True +bPreloadProjectPluginModules=True + diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 9d29ed7..8fa97e0 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -4,6 +4,8 @@ GameDefaultMap=/Engine/Maps/Templates/OpenWorld EditorStartupMap=/Game/Levels/Test/L_Test.L_Test bUseSplitscreen=False +GlobalDefaultGameMode=/Game/Blueprints/GameModes/BP_MainGameMode.BP_MainGameMode_C +GameInstanceClass=/Game/Blueprints/Other/BP_CustomGameInstance.BP_CustomGameInstance_C [/Script/WindowsTargetPlatform.WindowsTargetSettings] DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 @@ -55,6 +57,7 @@ CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet' +ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/Lost_Edge") +ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/Lost_Edge") +ActiveClassRedirects=(OldClassName="TP_BlankGameModeBase",NewClassName="Lost_EdgeGameModeBase") +GameUserSettingsClassName=/Script/Lost_Edge.CustomGameUserSettings [/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] bEnablePlugin=True diff --git a/Config/DefaultGameUserSettings.ini b/Config/DefaultGameUserSettings.ini new file mode 100644 index 0000000..df3d264 --- /dev/null +++ b/Config/DefaultGameUserSettings.ini @@ -0,0 +1,35 @@ +[/Script/Lost_Edge.CustomGameUserSettings] +bUseMotionBlur=False +bShowFps=False +bMouseInverted=False +fMouseSensetivity=1.000000 +bUseVSync=False +bUseDynamicResolution=False +ResolutionSizeX=1920 +ResolutionSizeY=1080 +LastUserConfirmedResolutionSizeX=1920 +LastUserConfirmedResolutionSizeY=1080 +WindowPosX=-1 +WindowPosY=-1 +FullscreenMode=1 +LastConfirmedFullscreenMode=1 +PreferredFullscreenMode=1 +Version=5 +AudioQualityLevel=0 +LastConfirmedAudioQualityLevel=0 +FrameRateLimit=0.000000 +DesiredScreenWidth=1280 +DesiredScreenHeight=720 +LastUserConfirmedDesiredScreenWidth=1280 +LastUserConfirmedDesiredScreenHeight=720 +LastRecommendedScreenWidth=-1.000000 +LastRecommendedScreenHeight=-1.000000 +LastCPUBenchmarkResult=-1.000000 +LastGPUBenchmarkResult=-1.000000 +LastGPUBenchmarkMultiplier=1.000000 +bUseHDRDisplayOutput=False +HDRDisplayOutputNits=1000 + +[/Script/Engine.GameUserSettings] +bUseDesiredScreenHeight=False + diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini index 717d0eb..411619e 100644 --- a/Config/DefaultInput.ini +++ b/Config/DefaultInput.ini @@ -67,6 +67,7 @@ bCaptureMouseOnLaunch=True bEnableLegacyInputScales=True bEnableMotionControls=True bFilterInputByPlatformUser=False +bEnableInputDeviceSubsystem=True bShouldFlushPressedKeysOnViewportFocusLost=True bEnableDynamicComponentInputBinding=True bAlwaysShowTouchInterface=False @@ -77,21 +78,6 @@ DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown DefaultViewportMouseLockMode=LockOnCapture FOVScale=0.011110 DoubleClickTime=0.200000 -+ActionMappings=(ActionName="Pause",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Escape) -+ActionMappings=(ActionName="Pause",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=P) -+ActionMappings=(ActionName="Interact",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=E) -+ActionMappings=(ActionName="SkipAny",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=SpaceBar) -+ActionMappings=(ActionName="Run",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftShift) -+ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=SpaceBar) -+ActionMappings=(ActionName="ChangeCamera",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=V) -+ActionMappings=(ActionName="Crouch",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftControl) -+ActionMappings=(ActionName="Crouch",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=C) -+AxisMappings=(AxisName="RotateX",Scale=1.000000,Key=MouseX) -+AxisMappings=(AxisName="RotateY",Scale=-1.000000,Key=MouseY) -+AxisMappings=(AxisName="MoveFB",Scale=1.000000,Key=W) -+AxisMappings=(AxisName="MoveLR",Scale=1.000000,Key=A) -+AxisMappings=(AxisName="MoveFB",Scale=-1.000000,Key=S) -+AxisMappings=(AxisName="MoveLR",Scale=-1.000000,Key=D) DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks @@ -99,3 +85,15 @@ DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.Defaul +ConsoleKeys=Tilde +ConsoleKeys=Caret +[/Script/EnhancedInput.EnhancedInputDeveloperSettings] +UserSettingsClass=/Script/EnhancedInput.EnhancedInputUserSettings +DefaultPlayerMappableKeyProfileClass=/Script/EnhancedInput.EnhancedPlayerMappableKeyProfile +DefaultWorldInputClass=/Script/EnhancedInput.EnhancedPlayerInput +bSendTriggeredEventsWhenInputIsFlushed=True +bEnableUserSettings=False +EnhancedInput.EnableDefaultMappingContexts=True +EnhancedInput.OnlyTriggerLastActionInChord=True +bLogOnDeprecatedConfigUsed=True +bEnableWorldSubsystem=False +EnhancedInput.bShouldLogAllWorldSubsystemInputs=False + diff --git a/Content/Blueprints/Characters/BP_CameraMode.uasset b/Content/Blueprints/Characters/BP_CameraMode.uasset new file mode 100644 index 0000000000000000000000000000000000000000..538b09371b7f10f2c918fb8a3d14b63254d38334 GIT binary patch literal 58093 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 N{AF0WcBugWe*wIT6|VpQ literal 0 HcmV?d00001 diff --git a/Content/Blueprints/Other/BP_CustomGameInstance.uasset b/Content/Blueprints/Other/BP_CustomGameInstance.uasset new file mode 100644 index 0000000000000000000000000000000000000000..e20fab3c705f1a093c762f48262f46040fd631d4 GIT binary patch literal 6111 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 HaZvvsnE5ZM literal 0 HcmV?d00001 diff --git a/Content/Input/Actions/IA_Interact.uasset b/Content/Input/Actions/IA_Interact.uasset new file mode 100644 index 0000000000000000000000000000000000000000..7b8d0dfafb7aaab1dff7e511ada6e0d605e013c0 GIT binary patch literal 1633 zcma)7T}V_x6h5Z*<4=WT^iW{ESgr1A;<{o#-gRABEVWV}ddcZJ=+?Ts+)qyoyrb@hYWm zr`KH=2U8x$@CW0Gk9$*u3$Ei#<1UV|H#bMR!kd-;fv1leqdnb6o;^{Ld3kN;;Ja64 zqtz1>n|LUZRMZy0boEeD7OrfzhRR~wE*{`a=lR9Ge0ijrMXDKG1pX!22uHj$Qyi;aZ>cBe5R04Kv+*a|sOd@Y;)5bI zfN_bR_+(BKBBn$x**BX`Jc$h_*3ye~3omT989$Df{Ogdzx(qWK-Y#0!Y-8FDbxk7+ zwDbB%m;?2lI~2l~Bq(yI!5iAaW0zx##3@}cyYS}D8!cD7By vxvF#N^a1(I=l=iR=3)G^IP?8dr@d_CF$G#pERuA*cI`~LKeVC1v=RO{RkuBU literal 0 HcmV?d00001 diff --git a/Content/Input/Actions/IA_Jump.uasset b/Content/Input/Actions/IA_Jump.uasset new file mode 100644 index 0000000000000000000000000000000000000000..78c440e7a6d4e3723f589560e75ed405240b1bf6 GIT binary patch literal 1613 zcma)7T}V_x6dr#oe=4NHKp*PG{M+khYf4z%-K(b7rS5 zmJBUKqtUiBLb6f``3@Q-1;*Eo(V0))YjfFe-NW)ky=xon4Q3Eh09tCGolNp;;Vw&( zRV%1#rsS7T?Ca_bgO!kVFes9Mj05i$&^2Cnjk3e7RLdT>vc1A5*Hn3BrBe3P*HyTE z%FZP)#&8~fz!yI}l+I1$4rmI!CdKj?d$9KLD4-Ey;1&|G?$iHdKy}M1DowsswzC5RX7bFd-=D z+rwwEjvDPAr5&_qaP<<&#@L)5QiJhiTLC9u-H+c;fc&=guD^> zkx%5bAza0CiMB*@mFN&9Wzh!t&HVeK@)vLbhh<%_q#YB@?nU92S%W}L&T z>+o`D+;<~%WH*a7M6JLnG?j~6i;{XP;x7kw9}2|2Oq@c;khtKDa3N-Mr8yozoBg!^ k-&;Hde++~3w|ZT>9==3J_^yc3Jzae${pnC$jm>3v70%;In1md?D8=ky$n(~GFmf<4D-EMjsKrv}n1_l`* zt?!G&Oc|bu%<{aW*lv013kt1JyI610BKw)vOL;0D(S`24Q<3_B(X;nixlb z_fpFRb6@);S()8CtMY17ljlaK*HxBLvm-%vgUkUrgq49A$o}WOpHT?N)7B1kHPsGE z%}GrxPSrKlGX~2uFs#y9ghL*v2@I-MWr%?o$w2!j0s{gW0K@PV*?KpI@Z z;RFe$u*96w)R4-8REED-FF%ySC2M8nSdm$5z89@djKwbL5$wiq3CHl_!MX90wNm;4MB@912b?rc&gUPw(WhCY$r>21Y z%5Zhv={KODaL!3AE@mhxub9XI^K1;z%*0uX?vXfPXH-5;PjZmvkdHO-=piQy zkPlE3E+`(LnFD0CA26ktr9#q~Es~K)X;lv_t4`1|b#RFTiyK&Qfm{Fruy}>=fF#I6 zAb=dv$ZU`tNDVLyz(5g55-bA`0t@8n-`kwMu#i$IoB`!x-qf*|z( D!!jfq literal 0 HcmV?d00001 diff --git a/Content/Input/Actions/IA_Move.uasset b/Content/Input/Actions/IA_Move.uasset new file mode 100644 index 0000000000000000000000000000000000000000..b0d4875bd01deadcd2cc23ab4adcfc2029bf9d50 GIT binary patch literal 1477 zcmX@utTpe)|Ns9Jm>C$jm>3v70%;In1md?D8=ky$n(~GFmf<4D-EMjsKrv}n1_l`* zt?!;td*5xMP{*)3xmqbWj(wgRe7bk0Y&)*sYNA~ z41w3@I)Lo(%g;+?_`-aYR~E<#NKDR7Oi%U6PfpCqtV#sMi61bMiVG5xQyGLxDm%D< ziV)T_U+yp<6qD~`Kl~8^>e3HRF3Kz@(Ra=-N)7c-%1TWxVff*xYX|ZiOwKhgBQY;I zH3jTfhO6sNzX1h>b53G$F+)jt#Y7Gu50*k+=P5|?fcT*F0|^%fA&CSYPN0}?YDuC? zVo4&ylZGvmL7JfcVkma+5EVf1;p*nWS{Kp_tUFumB!LskcJGYBB7`vQ@j*=h19J*L)LxKUWH}`uA8X># zLrxYTAD|{&P&`002gqtaU`j7bg`_iEBqNd1svcNYouFmv;1UNGH?ZIWxc~%U@e1Jq zNsxy?06C(O*&sQP8ekZJfg+G3SOy*h7Rb}TEp5=VK5`LcGboE9gR*-Tfh?!?YZ^cW GLFxgfKPArq literal 0 HcmV?d00001 diff --git a/Content/Input/Actions/IA_Run.uasset b/Content/Input/Actions/IA_Run.uasset new file mode 100644 index 0000000000000000000000000000000000000000..3c79f7ddcd4859c9ed3b222851ca29fe8134c199 GIT binary patch literal 1605 zcma)7T}TvB6u!FJk3Xf7Ayh>5V5RPA>#7h%qocM~YU)Z)>218MTkFg+GyZH(f)Kt* z6y!rnh(YxbQoad_U_DsS4@6+lL-|tFLnI+oZs**YvAfHf9hf=yp7Y)BoO|ZnJM%+F z$5&&qSf`7Sj8sCtfksJz=WF-W@~7&XE164W6Vgnb`!Lu>(h1oE+EY(^n8&Y1dQFd{ zm?2FyJbtO8rB?+fAv@veL=KQCpgjP(LMl5}CDm0{mdn*uUa#bOFud9(uE97$D zIv7(JfER?~i$~MAi%f#XXBu^m(fYKj`1I(-MY+QpXsR7~e!IZ@-Z1vMefiFy6v5cY zgNdZWD3z?8nM=uoSy54-)>qWR!i*ZM#OL;MKOql_CpPfIA}&GI^#})VA%5-_%jUeH zgfXlQ=A1A1cEDWHbsBBfwFuMADDh8y3?ZsfQyE!tJ;}xtn=V~uin)%F-aY=j56sO} zxk7{NtftU#=qklBH$vTw2vr!#Go!=X0o104fcMHB+wVSF6>*61oym|QS3+}5XObvsW{R7vx!p#2UeftB~vT%z1 zV6_9uE9lJ1b!>KyvevJXL$eLDnD;qmQkj~REDuiK*ailBx5TI)&d>QfU&oCVPco;p zh)4Mab;rmkcE9m)BJL;PGPq}RT;@M;*|rar6C+t%5r>6B5pipfk7c#qSP&G9ZJh+` ztZ`$K7jij#Ko!S@@ZW+Bamb4r<2dzNz&6}K9By1YOK9SRg zaFxg<`jU;2C$ZavX1oW-bI1;jP{DN&rcUd}wYOXBT-*cpN;?hrvbJc15$v{VO@k{# z<&hiVDE2YyD4Y;Dh2!Mr-oj0z74j ihabYNA9n}c#}{5T5dZvN{wt(Hs2&Q^O1;z0JB_H^y;C_%JxzN$$glNFFVEd&cePG}gkFSv zC=7ZjAEbhM2&vvmL@4Ml6j($;K^a)oLm(koUNhhA+UlL@!0ya9^ZRDzo1OV~;{4v> zxo9-nmO@BoG9f>KBPGG}qjPlnt9W@f>wVdX@Sw)A8+1?82q^&Wtfk$|>6g_W!zoBc zNRf4?UpU^m4rmf0>;Ud^d%Wd>$Ln&rDm-qVR}_8KqFA}# zS6aT$Q(95E2*zx#!V9AE%@0$#i97+0&pUX|s#Ey^e@4w<^VXB|P04-1vR7kOxi`h3 z$-BXi`PmmSHu}Lt(m+Zk3w7g3d9W%fYOQt`HM20IIxBHIT-;8`?c$LY?68SbL9lQJ zg>*=)ECY1XPQxW z`8UCK=TS)usfN?5Xsk7s2buGi9NJ>DRm+`JmRLLg^yJN*=il*&-Z0g5Vw^s63F{i) z2yX|^4QHbT8z$B-Brm@$8>4canR!5Cy3X3k%P)s7;DPFyL4DMqWV-+U&^l0`W*)zy~aS>(2I?FKU6lQJ{#XtYU&XG7Z^)H Aw*UYD literal 0 HcmV?d00001 diff --git a/Content/Input/IMC_CameraMode.uasset b/Content/Input/IMC_CameraMode.uasset new file mode 100644 index 0000000000000000000000000000000000000000..2ebeb941bb10c7a8b63ca04a8d926ac9559693e8 GIT binary patch literal 9268 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 U2y_Nsi>z+?^??@opbz~20MJ!NYXATM literal 0 HcmV?d00001 diff --git a/Content/Input/IMC_Player.uasset b/Content/Input/IMC_Player.uasset new file mode 100644 index 0000000000000000000000000000000000000000..6854026c3066480a8276c2be2d994931665191d1 GIT binary patch literal 9151 zcmeHN3vg7`8UB?Z3O*1^%R_6hB7~65zOx%Da`*0CW`O`^VVXL2;AV44)+D<-ckhOT zK2X{^6xyk;ilf3znRYsA+o4lttd9<*l^JYjwC#*`YFnpOthCjlNU0Vi{l9z9*({q) zvLP|fDF4je^ZM?8{_{W1`Oi%bes$5Fcl-PMH%=m&dLhxGBj<1!L+ z`y!EsnCA0^A`yScqelJipr!lM_*>l^f{kQ&dQS$I5rxM4HtUUdVC$w$V_qRPX@AZwC8+;(hWSYdh&#XLf!3=KI z)~?qAwarGCq34XcfXio(6Fs_k?-1ksl1;sH0yU_-$n)>~jMFE7S$+M`3-t5tqA{#V zpo`(^(*jrgB*}jH+8kd&cae z2cLcIBr8|;uVx$4mhb#Mg10ofdhS)5XQP(x(9=ny&5?Me(Fb8t>2|t*&k{dm(bD`QBe*W&I6+s&t#zTem|Mp_7vf3LVtw1&?u;D+wqH6*oaKppc9i0UB(VYYg%tJl2!qu z{OPCvyoS5i>d8*M-B^`L>RqWVI{XK`a#=lT&{kd<^I+TJtyepZ>`-5cPcR`E!}(Q1Qe8jKoQ-f#wQ>CE!LB;%zV*$ z-1P8iC}N$_JFv)S8m-6i@;Wos-VR;9vaI_N%=bCE@YIx})m$syWE|t?>e<%uv}Krj z(xRXJ{K1)54~<)q@6J-)_QN}e!PtKD{sYbKVKBBY9s9ytr{@kmS93m1dtQ3J<%Xdl z>+)t=W%HRj`;S3Kv-9J_?4*a@c>c^Mz$}q8Q(3EC&6vh|$4}_pc->OiO^(TcwYOt> z;m5yu<02kayYyU+tj)c5Bjk(qcFR47Yek&cI;weURvKFrW3Y~%YuDe2&4`;NGQarE zt$U_nWMIetZd=PXn?H^M5ur0?ZM+n++wzETQZsC|UW-nKZhCcKOa#(uqn)=Xy7TL; z+MuxnJ3qVD>b>?Qv;gf^Z2!>rf9yfH|F-Jp|DSNYca*Gh3WGQ zDt6TY?YN4na$8yGsd34=>+Ikak>?WIw!MjngOsOm2oky7N`n@4hy1D#(X}1II8%As?Q(vs*$LtA;J=cBW|x-QzN65$Tud5pef)`@%|qe*!W0sIBQAlceHM0tYc^HzX+hjG3NaK{;k*aa1@w{+gO8F!@v z8y5E#aoPKR4sbt3p+&n(`C`ziL4rg+W-i+#{wb!1mRKzLW*IN+}RMFp!rT=%PgwA zji4r985$vZ;UWQo$AP3IQZl;}_Xm&!N%jR0?1#GmN{}3o+~~jTokG0Isr+meZ0M6#7o=+ zdWUqrf_K0p5VRBI8So0wdCx$MjCh%zK+ljncfm7YrU~*2Y)_z%s8`7AO@*h)h#xM5 zSJ+=XWI#{kX@VqVGCxCl2ma0^a|(GPostProcessSettings.MotionBlurAmount = gameSettings->bUseMotionBlur ? 1.0f : 0.0f; } - if(gameSettings->bShowFps) - world->Exec(world, TEXT("show stats")); - - mouseInvert = gameSettings->bMouseInverted; - mouseSensetivity = gameSettings->GetMouseSensetivity(); - if(inputMapping) { if(auto player = Cast(GetController())) @@ -47,7 +43,7 @@ void APlayerBase::BeginPlay() if(auto inputSubsystem = ULocalPlayer::GetSubsystem(player->GetLocalPlayer())) { inputSubsystem->ClearAllMappings(); - inputSubsystem->AddMappingContext(inputMapping, 0); + inputSubsystem->AddMappingContext(inputMapping.LoadSynchronous(), 0); } } } @@ -65,7 +61,17 @@ void APlayerBase::Tick(float DeltaTime) void APlayerBase::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); +} +void APlayerBase::SwitchToCameraPawn() +{ + if(auto gamemode_base = UGameplayStatics::GetGameMode(GetWorld())) + { + if(auto gamemode = Cast(gamemode_base)) + { + gamemode->SwitchCameraMode(); + } + } } void APlayerBase::MoveCamera(FVector2D value) @@ -73,11 +79,6 @@ void APlayerBase::MoveCamera(FVector2D value) if(cameraLocked) return; - if(mouseInvert) - value.Y *= -1; - - value *= mouseSensetivity; - AddControllerYawInput(value.X); AddControllerPitchInput(value.Y); } diff --git a/Source/Lost_Edge/Private/APlayerBase.h b/Source/Lost_Edge/Private/APlayerBase.h index d337945..d66c6cf 100644 --- a/Source/Lost_Edge/Private/APlayerBase.h +++ b/Source/Lost_Edge/Private/APlayerBase.h @@ -2,7 +2,6 @@ #pragma once -#include "Camera/CameraComponent.h" #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "InputMappingContext.h" @@ -18,12 +17,14 @@ public: APlayerBase(); virtual void Tick(float DeltaTime) override; - virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; protected: virtual void BeginPlay() override; + UFUNCTION(BlueprintCallable, Category = CameraMode) + void SwitchToCameraPawn(); + UFUNCTION(BlueprintCallable, Category = Character) void MoveCamera(FVector2D value); UFUNCTION(BlueprintCallable, Category = Character) @@ -33,7 +34,7 @@ protected: void SwitchRun(bool run); UPROPERTY(EditDefaultsOnly) - UInputMappingContext* inputMapping; + TSoftObjectPtr inputMapping; UPROPERTY(EditDefaultsOnly) float moveSpeed = 200; @@ -55,9 +56,6 @@ protected: // not visible :( //UPROPERTY(EditDefaultsOnly) //UCameraComponent* camera; - - bool mouseInvert = false; - float mouseSensetivity = 1.0f; UPROPERTY(EditAnywhere) bool cameraLocked = false; diff --git a/Source/Lost_Edge/Private/CameraModeBase.cpp b/Source/Lost_Edge/Private/CameraModeBase.cpp new file mode 100644 index 0000000..de81cfa --- /dev/null +++ b/Source/Lost_Edge/Private/CameraModeBase.cpp @@ -0,0 +1,85 @@ +// Oleg Petruny proprietary. + + +#include "CameraModeBase.h" + +#include "Camera/CameraComponent.h" +#include "CustomGameUserSettings.h" +#include "EnhancedInputSubsystems.h" +#include "GameFramework/Character.h" +#include "GameFramework/PawnMovementComponent.h" +#include "Kismet/GameplayStatics.h" +#include "MainGameModeBase.h" + +ACameraModeBase::ACameraModeBase() +{ + PrimaryActorTick.bCanEverTick = true; + +} + +void ACameraModeBase::BeginPlay() +{ + Super::BeginPlay(); + + auto world = GetWorld(); + + //GetMovementComponent()->speed + // GetCharacterMovement()->MaxWalkSpeed = moveSpeed; + + auto gameSettings = UCustomGameUserSettings::GetCustomGameUserSettings(); + + if(auto camera = FindComponentByClass()) + { + camera->PostProcessSettings.MotionBlurAmount = gameSettings->bUseMotionBlur ? 1.0f : 0.0f; + } + + if(inputMapping) + { + if(auto player = Cast(GetController())) + { + if(auto inputSubsystem = ULocalPlayer::GetSubsystem(player->GetLocalPlayer())) + { + inputSubsystem->ClearAllMappings(); + inputSubsystem->AddMappingContext(inputMapping.LoadSynchronous(), 0); + } + } + } + +} + +void ACameraModeBase::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + + // stabilize move speed by fps + AddActorLocalOffset(ConsumeMovementInputVector() * DeltaTime); +} + +void ACameraModeBase::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); +} + +void ACameraModeBase::SwitchToPlayerPawn() +{ + if(auto gamemode_base = UGameplayStatics::GetGameMode(GetWorld())) + { + if(auto gamemode = Cast(gamemode_base)) + { + gamemode->SwitchCameraMode(); + } + } +} + +void ACameraModeBase::ElevatePawn(float value) +{ + AddMovementInput(FVector::UpVector, value); +} + +void ACameraModeBase::SwitchRun(bool run) +{ + //if(run) + // GetMovement()->MaxWalkSpeed = moveSpeed * runSpeedMultiplier; + //else + // GetCharacterMovement()->MaxWalkSpeed = moveSpeed; +} \ No newline at end of file diff --git a/Source/Lost_Edge/Private/CameraModeBase.h b/Source/Lost_Edge/Private/CameraModeBase.h new file mode 100644 index 0000000..71d61da --- /dev/null +++ b/Source/Lost_Edge/Private/CameraModeBase.h @@ -0,0 +1,43 @@ +// Oleg Petruny proprietary. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/SpectatorPawn.h" +#include "InputMappingContext.h" + +#include "CameraModeBase.generated.h" + +UCLASS() +class ACameraModeBase : public ASpectatorPawn +{ + GENERATED_BODY() + +public: + ACameraModeBase(); + + virtual void Tick(float DeltaTime) override; + virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; + +protected: + virtual void BeginPlay() override; + + UFUNCTION(BlueprintCallable, Category = CameraMode) + void SwitchToPlayerPawn(); + + UFUNCTION(BlueprintCallable, Category = Pawn) + void ElevatePawn(float value); + UFUNCTION(BlueprintCallable, Category = Pawn) + void SwitchRun(bool run); + + UPROPERTY(EditDefaultsOnly) + TSoftObjectPtr inputMapping; + + UPROPERTY(EditDefaultsOnly) + float moveSpeed = 200; + UPROPERTY(EditDefaultsOnly) + float runSpeedMultiplier = 4; + +private: + +}; diff --git a/Source/Lost_Edge/Private/CustomGameInstanceBase.cpp b/Source/Lost_Edge/Private/CustomGameInstanceBase.cpp new file mode 100644 index 0000000..034485c --- /dev/null +++ b/Source/Lost_Edge/Private/CustomGameInstanceBase.cpp @@ -0,0 +1,43 @@ +// Oleg Petruny proprietary. + + +#include "CustomGameInstanceBase.h" + +#include "CustomGameUserSettings.h" +#include "EnhancedInputLibrary.h" + +void UCustomGameInstanceBase::Init() +{ + //Super::Init(); + + ApplyMouseSettings(); +} + +void UCustomGameInstanceBase::ApplyMouseSettings() +{ + if(auto gameSettings = UCustomGameUserSettings::GetCustomGameUserSettings()) + { + for(auto context_it = defaultInputContexts.begin(); context_it != defaultInputContexts.end(); ++context_it) + { + auto& mappings = (*context_it).LoadSynchronous()->GetMappings(); + for(auto mapping_it = mappings.begin(); mapping_it != mappings.end(); ++mapping_it) + { + if((*mapping_it).Key == EKeys::Mouse2D) + { + for(auto modifiers_it = (*mapping_it).Modifiers.begin(); modifiers_it != (*mapping_it).Modifiers.end(); ++modifiers_it) + { + if(auto negate_modifier = Cast(*modifiers_it)) + { + negate_modifier->bY = !gameSettings->bMouseInverted; + } + if(auto scalar_modifier = Cast(*modifiers_it)) + { + scalar_modifier->Scalar = FVector{ gameSettings->GetMouseSensetivity() }; + } + } + } + } + UEnhancedInputLibrary::RequestRebuildControlMappingsUsingContext((*context_it).LoadSynchronous()); + } + } +} \ No newline at end of file diff --git a/Source/Lost_Edge/Private/CustomGameInstanceBase.h b/Source/Lost_Edge/Private/CustomGameInstanceBase.h new file mode 100644 index 0000000..6884b4f --- /dev/null +++ b/Source/Lost_Edge/Private/CustomGameInstanceBase.h @@ -0,0 +1,25 @@ +// Oleg Petruny proprietary. + +#pragma once + +#include "CoreMinimal.h" +#include "Engine/GameInstance.h" +#include "InputMappingContext.h" + +#include "CustomGameInstanceBase.generated.h" + +UCLASS() +class UCustomGameInstanceBase : public UGameInstance +{ + GENERATED_BODY() + +public: + virtual void Init() override; + + UFUNCTION(BlueprintCallable, Category = Settings) + void ApplyMouseSettings(); + +protected: + UPROPERTY(EditDefaultsOnly) + TArray> defaultInputContexts; +}; diff --git a/Source/Lost_Edge/Private/CustomGameUserSettings.cpp b/Source/Lost_Edge/Private/CustomGameUserSettings.cpp index f0e5d74..7f31e74 100644 --- a/Source/Lost_Edge/Private/CustomGameUserSettings.cpp +++ b/Source/Lost_Edge/Private/CustomGameUserSettings.cpp @@ -1,7 +1,11 @@ // Oleg Petruny proprietary. + #include "CustomGameUserSettings.h" +#include "CustomGameInstanceBase.h" +#include "Kismet/GameplayStatics.h" + UCustomGameUserSettings::UCustomGameUserSettings(const FObjectInitializer& ObjectInitializer) :Super(ObjectInitializer) { bUseMotionBlur = false; diff --git a/Source/Lost_Edge/Private/CustomGameUserSettings.h b/Source/Lost_Edge/Private/CustomGameUserSettings.h index a65fb5f..6400696 100644 --- a/Source/Lost_Edge/Private/CustomGameUserSettings.h +++ b/Source/Lost_Edge/Private/CustomGameUserSettings.h @@ -7,9 +7,6 @@ #include "CustomGameUserSettings.generated.h" -/** - * - */ UCLASS() class UCustomGameUserSettings : public UGameUserSettings { @@ -28,17 +25,17 @@ public: UFUNCTION(BlueprintCallable, Category = Settings) float GetMouseSensetivity() const; - UPROPERTY(config) + UPROPERTY(Config, BlueprintReadWrite) bool bUseMotionBlur; - UPROPERTY(config) + UPROPERTY(Config, BlueprintReadWrite) bool bShowFps; - UPROPERTY(config) + UPROPERTY(Config, BlueprintReadWrite) bool bMouseInverted; protected: - UPROPERTY(config) + UPROPERTY(Config) float fMouseSensetivity; }; diff --git a/Source/Lost_Edge/Private/MainGameModeBase.cpp b/Source/Lost_Edge/Private/MainGameModeBase.cpp new file mode 100644 index 0000000..cdd4fbf --- /dev/null +++ b/Source/Lost_Edge/Private/MainGameModeBase.cpp @@ -0,0 +1,41 @@ +// Oleg Petruny proprietary. + + +#include "MainGameModeBase.h" + +#include "Engine/World.h" +#include "GameFramework/SpectatorPawn.h" +#include "Kismet/GameplayStatics.h" + +void AMainGameModeBase::SwitchCameraMode() +{ + if(!_player_pawn) + { + if(auto controller = UGameplayStatics::GetPlayerController(GetWorld(), 0)) + { + if(auto pawn = controller->GetPawn()) + { + auto spawnLoc = pawn->GetActorLocation(); + auto spawnRot = pawn->GetActorRotation(); + if(auto cameraPawn = GetWorld()->SpawnActor(SpectatorClass, spawnLoc, spawnRot)) + { + _player_pawn = pawn; + controller->Possess(cameraPawn); + cameraPawn->BeginPlay(); + } + } + } + } + else + { + if(auto controller = UGameplayStatics::GetPlayerController(GetWorld(), 0)) + { + if(auto pawn = controller->GetPawn()) + { + controller->Possess(_player_pawn); + pawn->Destroy(); + } + } + } + +} \ No newline at end of file diff --git a/Source/Lost_Edge/Private/MainGameModeBase.h b/Source/Lost_Edge/Private/MainGameModeBase.h new file mode 100644 index 0000000..caf2255 --- /dev/null +++ b/Source/Lost_Edge/Private/MainGameModeBase.h @@ -0,0 +1,23 @@ +// Oleg Petruny proprietary. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/GameModeBase.h" +#include "GameFramework/Pawn.h" + +#include "MainGameModeBase.generated.h" + +UCLASS() +class AMainGameModeBase : public AGameModeBase +{ + GENERATED_BODY() + +public: + void SwitchCameraMode(); + +protected: + +private: + APawn* _player_pawn = nullptr; +};