UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
EngineTypes.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
10#include "Misc/EnumClassFlags.h"
12#include "UObject/Object.h"
13#include "UObject/Class.h"
15#include "Engine/TimerHandle.h"
17#include "UObject/StrProperty.h"
18#include "EngineTypes.generated.h"
19
20class AActor;
21class UDecalComponent;
24class UPrimitiveComponent;
25class USceneComponent;
28
34
36UENUM()
38{
39 AspectRatio_MaintainYFOV UMETA(DisplayName="Maintain Y-Axis FOV"),
40 AspectRatio_MaintainXFOV UMETA(DisplayName="Maintain X-Axis FOV"),
41 AspectRatio_MajorAxisFOV UMETA(DisplayName="Maintain Major Axis FOV"),
43};
44
47{
57}
58
60UENUM()
62{
65
68
71};
72
108
110UENUM()
112{
115
117 KeepWorld,
118};
119
160
162UENUM()
164{
165 enum Type : int
166 {
169
172
174 SnapToTarget UMETA(DisplayName = "Snap to Target, Keep World Scale"),
175
177 SnapToTargetIncludingScale UMETA(DisplayName = "Snap to Target, Including Scale"),
178 };
179}
180
185UENUM()
194
196UENUM()
206
208UENUM()
222
224UENUM()
237
243UENUM(BlueprintType)
245{
246 BLEND_Opaque UMETA(DisplayName="Opaque"),
247 BLEND_Masked UMETA(DisplayName="Masked"),
248 BLEND_Translucent UMETA(DisplayName="Translucent"),
249 BLEND_Additive UMETA(DisplayName="Additive"),
250 BLEND_Modulate UMETA(DisplayName="Modulate"),
251 BLEND_AlphaComposite UMETA(DisplayName = "AlphaComposite (Premultiplied Alpha)"),
252 BLEND_AlphaHoldout UMETA(DisplayName = "AlphaHoldout"),
253 BLEND_TranslucentColoredTransmittance UMETA(DisplayName = "SUBSTRATE_ONLY - Translucent - Colored Transmittance"), /*Substrate only */
255 // Renamed blend modes. These blend modes are remapped onto legacy ones and kept hidden for not confusing users in legacy mode, while allowing to use the new blend mode names into code.
256 BLEND_TranslucentGreyTransmittance = BLEND_Translucent UMETA(Hidden, DisplayName = "Translucent - Grey Transmittance"), /*Substrate only */
257 BLEND_ColoredTransmittanceOnly = BLEND_Modulate UMETA(Hidden, DisplayName = "Colored Transmittance Only"), /*Substrate only */
258};
259
260class FMaterial;
262
264UENUM()
266{
268 MFPM_Default UMETA(DisplayName = "Default"),
270 MFPM_Full_MaterialExpressionOnly UMETA(DisplayName = "Use Full-precision for MaterialExpressions only"),
272 MFPM_Full UMETA(DisplayName = "Use Full-precision for every float"),
274 MFPM_Half UMETA(DisplayName = "Use Half-precision"),
276};
277
279UENUM()
281{
283 SSM_FromTextureAsset UMETA(DisplayName="From texture asset"),
285 SSM_Wrap_WorldGroupSettings UMETA(DisplayName="Shared: Wrap"),
287 SSM_Clamp_WorldGroupSettings UMETA(DisplayName="Shared: Clamp"),
290};
291
293UENUM()
295{
296 /* Use hardware computed sample's mip level with automatic anisotropic filtering support. */
297 TMVM_None UMETA(DisplayName="None (use computed mip level)"),
298
299 /* Explicitly compute the sample's mip level. Disables anisotropic filtering. */
300 TMVM_MipLevel UMETA(DisplayName="MipLevel (absolute, 0 is full resolution)"),
301
302 /* Bias the hardware computed sample's mip level. Disables anisotropic filtering. */
303 TMVM_MipBias UMETA(DisplayName="MipBias (relative to the computed mip level)"),
304
305 /* Explicitly compute the sample's DDX and DDY for anisotropic filtering. */
306 TMVM_Derivative UMETA(DisplayName="Derivative (explicit derivative to compute mip level)"),
307
309};
310
312UENUM()
314{
319 TLM_VolumetricNonDirectional UMETA(DisplayName="Volumetric NonDirectional"),
320
325 TLM_VolumetricDirectional UMETA(DisplayName="Volumetric Directional"),
326
331 TLM_VolumetricPerVertexNonDirectional UMETA(DisplayName="Volumetric PerVertex NonDirectional"),
332
337 TLM_VolumetricPerVertexDirectional UMETA(DisplayName="Volumetric PerVertex Directional"),
338
344 TLM_Surface UMETA(DisplayName="Surface TranslucencyVolume"),
345
351 TLM_SurfacePerPixelLighting UMETA(DisplayName="Surface ForwardShading"),
352
354};
355
357UENUM()
359{
365 RM_IndexOfRefraction UMETA(DisplayName="Index Of Refraction"),
366
374 RM_PixelNormalOffset UMETA(DisplayName="Pixel Normal Offset"),
375
380 RM_2DOffset UMETA(DisplayName = "2D Offset"),
381
385 RM_None UMETA(DisplayName = "None"),
386
392 RM_IndexOfRefractionFromF0 UMETA(DisplayName = "Index Of Refraction From F0"),
393};
394
396UENUM()
398{
403 RCM_CoverageIgnored UMETA(DisplayName = "Coverage Ignored"),
404
410 RCM_CoverageAccountedFor UMETA(DisplayName = "Coverage Accounted For"),
411};
412
414UENUM()
416{
420 PDOM_Legacy UMETA(DisplayName = "Legacy"),
421
425 PDOM_AlongCameraVector UMETA(DisplayName = "Along Camera Vector"),
426};
427
431UENUM()
433{
434 enum Type : int
435 {
438
441
444 };
445}
446
447// Note: Must match r.DynamicGlobalIlluminationMethod, this is used in URendererSettings
448UENUM()
450{
451 enum Type : int
452 {
455
458
460 ScreenSpace UMETA(DisplayName="Screen Space (Beta)"),
461
463 Plugin UMETA(DisplayName="Plugin"),
464 };
465}
466
467// Note: Must match r.ReflectionMethod, this is used in URendererSettings
468UENUM()
470{
471 enum Type : int
472 {
475
478
480 ScreenSpace UMETA(DisplayName="Screen Space"),
481 };
482}
483
484// Note: Must match r.Shadow.Virtual.Enable, this is used in URendererSettings
485UENUM()
487{
488 enum Type : int
489 {
491 ShadowMaps UMETA(DisplayName = "Shadow Maps"),
492
494 VirtualShadowMaps UMETA(DisplayName = "Virtual Shadow Maps")
495 };
496}
497
499UENUM()
501{
511}
512
515UENUM()
528
530UENUM()
532{
533 SCS_SceneColorHDR UMETA(DisplayName="SceneColor (HDR) in RGB, Inv Opacity in A"),
534 SCS_SceneColorHDRNoAlpha UMETA(DisplayName="SceneColor (HDR) in RGB, 0 in A"),
535 SCS_FinalColorLDR UMETA(DisplayName="Final Color (LDR) in RGB"),
536 SCS_SceneColorSceneDepth UMETA(DisplayName="SceneColor (HDR) in RGB, SceneDepth in A"),
537 SCS_SceneDepth UMETA(DisplayName="SceneDepth in R"),
538 SCS_DeviceDepth UMETA(DisplayName = "DeviceDepth in RGB"),
539 SCS_Normal UMETA(DisplayName="Normal in RGB (Deferred Renderer only)"),
540 SCS_BaseColor UMETA(DisplayName = "BaseColor in RGB (Deferred Renderer only)"),
541 SCS_FinalColorHDR UMETA(DisplayName = "Final Color (HDR) in Linear Working Color Space"),
542 SCS_FinalToneCurveHDR UMETA(DisplayName = "Final Color (with tone curve) in Linear sRGB gamut"),
543
544 SCS_MAX
546
548UENUM()
550{
551 SCCM_Overwrite UMETA(DisplayName="Overwrite"),
552 SCCM_Additive UMETA(DisplayName="Additive"),
553 SCCM_Composite UMETA(DisplayName="Composite")
554};
555
557#define NUM_LIGHTING_CHANNELS 3
558
560USTRUCT(BlueprintType)
562{
564
566 bChannel0(true),
567 bChannel1(false),
568 bChannel2(false)
569 {}
570
572 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Channels)
573 uint8 bChannel0:1;
574
576 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Channels)
577 uint8 bChannel1:1;
578
580 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Channels)
581 uint8 bChannel2:1;
582};
583
586{
587 // Note: this is packed into 3 bits of a stencil channel
588 return (uint8)((Value.bChannel0 ? 1 : 0) | (Value.bChannel1 << 1) | (Value.bChannel2 << 2));
589}
590
593{
594 return 1;
595}
596
599{
600 return Mask ? FPlatformMath::CountTrailingZeros(Mask) : -1;
601}
602
604USTRUCT(BlueprintType)
606{
608
610 bViewChannel0(true),
611 bViewChannel1(false),
612 bViewChannel2(false),
613 bViewChannel3(false),
614 bViewChannel4(false)
615 {}
616
618 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Channels)
619 uint8 bViewChannel0:1;
620
622 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Channels)
623 uint8 bViewChannel1:1;
624
626 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Channels)
627 uint8 bViewChannel2:1;
628
630 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Channels)
631 uint8 bViewChannel3:1;
632
634 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Channels)
635 uint8 bViewChannel4:1;
636
638 inline uint8 GetMaskForStruct() const
639 {
640 return (uint8)((bViewChannel0 << 0) | (bViewChannel1 << 1) | (bViewChannel2 << 2) | (bViewChannel3 << 3) | (bViewChannel4 << 4));
641 }
642
643 static inline constexpr uint8 GetMaskDefault() { return 0x1; }
644};
645
650UENUM()
652{
653 enum Type : int
654 {
656 Force8BitsPerChannel = 0 UMETA(DisplayName = "Force 8 Bits Per Channel"),
662 Force16BitsPerChannel = 5 UMETA(DisplayName = "Force 16 Bits Per Channel"),
663 };
664}
665
666
671UENUM()
673{
674 LOCAL_LIGHTS_DISABLED UMETA(DisplayName = "Local Lights Disabled"),
675 LOCAL_LIGHTS_ENABLED UMETA(DisplayName = "Local Lights Enabled"),
676 LOCAL_LIGHTS_BUFFER UMETA(DisplayName = "Local Lights Buffer Enabled")
677};
678
680UENUM()
682{
683 ETrailWidthMode_FromCentre UMETA(DisplayName = "From Centre"),
684 ETrailWidthMode_FromFirst UMETA(DisplayName = "From First Socket"),
685 ETrailWidthMode_FromSecond UMETA(DisplayName = "From Second Socket"),
686};
687
689UENUM()
691{
692 enum Type : int
693 {
694 SceneDepth UMETA(DisplayName="Scene Depth"),
695 DistanceField UMETA(DisplayName="Distance Field")
696 };
697}
698
703UENUM()
705{
706 MSM_Unlit UMETA(DisplayName="Unlit"),
707 MSM_DefaultLit UMETA(DisplayName="Default Lit"),
708 MSM_Subsurface UMETA(DisplayName="Subsurface"),
709 MSM_PreintegratedSkin UMETA(DisplayName="Preintegrated Skin"),
710 MSM_ClearCoat UMETA(DisplayName="Clear Coat"),
711 MSM_SubsurfaceProfile UMETA(DisplayName="Subsurface Profile"),
712 MSM_TwoSidedFoliage UMETA(DisplayName="Two Sided Foliage"),
713 MSM_Hair UMETA(DisplayName="Hair"),
714 MSM_Cloth UMETA(DisplayName="Cloth"),
715 MSM_Eye UMETA(DisplayName="Eye"),
716 MSM_SingleLayerWater UMETA(DisplayName="SingleLayerWater"),
717 MSM_ThinTranslucent UMETA(DisplayName="Thin Translucent"),
718 MSM_Strata UMETA(DisplayName="Substrate", Hidden),
723 MSM_FromMaterialExpression UMETA(DisplayName="From Material Expression"),
724 MSM_MAX
726
727static_assert(MSM_NUM <= 16, "Do not exceed 16 shading models without expanding FMaterialShadingModelField to support uint32 instead of uint16!");
728
730USTRUCT()
732{
734
735public:
738
741 void ClearShadingModels() { ShadingModelField = 0; }
742
743 // Check if any of the given shading models are present
745 {
747 {
748 if (HasShadingModel(ShadingModel))
749 {
750 return true;
751 }
752 }
753 return false;
754 }
755
756 bool HasShadingModel(EMaterialShadingModel InShadingModel) const { return (ShadingModelField & (1 << (uint16)InShadingModel)) != 0; }
757 bool HasOnlyShadingModel(EMaterialShadingModel InShadingModel) const { return ShadingModelField == (1 << (uint16)InShadingModel); }
758 bool IsUnlit() const { return HasShadingModel(MSM_Unlit); }
759 bool IsLit() const { return !IsUnlit(); }
760 bool IsValid() const { return (ShadingModelField > 0) && (ShadingModelField < (1 << MSM_NUM)); }
761 uint16 GetShadingModelField() const { return ShadingModelField; }
763 int32 CountShadingModels() const { return FMath::CountBits(ShadingModelField); }
764 EMaterialShadingModel GetFirstShadingModel() const { check(IsValid()); return (EMaterialShadingModel)FMath::CountTrailingZeros(ShadingModelField); }
765
766 bool operator==(const FMaterialShadingModelField& Other) const { return ShadingModelField == Other.GetShadingModelField(); }
767 bool operator!=(const FMaterialShadingModelField& Other) const { return ShadingModelField != Other.GetShadingModelField(); }
768
769private:
770 UPROPERTY()
771 uint16 ShadingModelField = 0;
772};
773
777UENUM()
779{
780 enum Type : int
781 {
783 BlendableGBuffer = 0 UMETA(DisplayName = "Blendable GBuffer"),
784
786 AdaptiveBuffer = 1 UMETA(DisplayName = "Adaptive GBuffer"),
787 };
788}
789
793UENUM()
795{
796 enum Type : int
797 {
799 UseMinProjectAndPlatforClosuresPerPixel = 0 UMETA(DisplayName = "Min of project's and platfom's closure count"),
800
802 ForceProjectClosuresPerPixel = 1 UMETA(DisplayName = "Force Closure Count"),
803 };
804}
805
833static_assert(SSM_NUM <= 32, "Do not exceed 32 shading models without expanding FSubstrateMaterialInfo::ShadingModelField to support more bits!");
834
835// This used to track cyclic graph which we do not support. We only support acyclic graph and a depth of 128 is already too high for a realistic use case.
836#define SUBSTRATE_TREE_MAX_DEPTH 48
837
840{
841public:
842 FSubstrateMaterialInfo(bool bGatherGuids = false) { bGatherMaterialExpressionGuids = bGatherGuids; }
844
845 // Shading model
848 bool HasShadingModel(ESubstrateShadingModel InShadingModel) const { return (ShadingModelField & (1u << (uint32)InShadingModel)) != 0; }
849 bool HasOnlyShadingModel(ESubstrateShadingModel InShadingModel) const { return ShadingModelField == (1u << (uint32)InShadingModel); }
850 uint32 GetShadingModelField() const { return ShadingModelField; }
851 int32 CountShadingModels() const { return FMath::CountBits(ShadingModelField); }
852
853 // Subsurface profiles
855 int32 CountSubsurfaceProfiles() const { return SubsurfaceProfiles.Num(); }
856 USubsurfaceProfile* GetSubsurfaceProfile(int32 Index) const { return SubsurfaceProfiles.IsValidIndex(Index) ? SubsurfaceProfiles[Index] : nullptr; }
857
858 // Specular profiles
860 int32 CountSpecularProfiles() const { return SpecularProfiles.Num(); }
861 USpecularProfile* GetSpecularProfile(int32 Index) const { return SpecularProfiles.IsValidIndex(Index) ? SpecularProfiles[Index] : nullptr; }
862
863 // Shading model from expression
864 void SetShadingModelFromExpression(bool bIn) { bHasShadingModelFromExpression = bIn ? 1u : 0u; }
865 bool HasShadingModelFromExpression() const { return bHasShadingModelFromExpression > 0u; }
866
867 // Substrate material expression GUIDs
868 void AddGuid(const FGuid& In) { if (bGatherMaterialExpressionGuids) { MaterialExpressionGuids.Add(In); } }
869 const TArray<FGuid>& GetGuids() const { return MaterialExpressionGuids; }
870
871 uint64 GetPropertyConnected() const { return ConnectedPropertyMask; }
872 void AddPropertyConnected(uint64 In) { ConnectedPropertyMask |= (1ull << In); }
873 bool HasPropertyConnected(uint64 In) const { return !!(ConnectedPropertyMask & (1ull << In)); }
875
876 bool IsValid() const { return (ShadingModelField > 0) && (ShadingModelField < (1 << SSM_NUM)); }
877
878 bool operator==(const FSubstrateMaterialInfo& Other) const { return ShadingModelField == Other.GetShadingModelField(); }
879 bool operator!=(const FSubstrateMaterialInfo& Other) const { return ShadingModelField != Other.GetShadingModelField(); }
880
881#if WITH_EDITOR
882 // Returns true if everything went fine (not out of Substrate tree stack)
884 {
887 }
889 {
892 }
893 bool GetSubstrateTreeOutOfStackDepthOccurred()
894 {
896 }
897#endif
898
899private:
900 uint32 ShadingModelField = 0;
901
902 /* Indicates if the shading model is constant or data-driven from the shader graph */
903 uint8 bHasShadingModelFromExpression = 0;
904
905 /* Indicates which (legacy) inputs are connected */
906 uint64 ConnectedPropertyMask = 0;
907
908 TArray<TObjectPtr<USubsurfaceProfile>> SubsurfaceProfiles;
909
910 TArray<TObjectPtr<USpecularProfile>> SpecularProfiles;
911
912 /* Material expression GUIDs for all the traversed Substrate nodes */
913 bool bGatherMaterialExpressionGuids = false;
914 TArray<FGuid> MaterialExpressionGuids;
915
916#if WITH_EDITOR
917 // A simple way to detect and prevent node re-entry due to cycling graph; stop the compilation and avoid crashing.
918 bool bOutOfStackDepthWhenParsing = false;
920#endif
921};
922
923template<>
925{
926 enum
927 {
930 };
931};
932
934UENUM(BlueprintType)
936{
937 SAMPLERTYPE_Color UMETA(DisplayName="Color"),
938 SAMPLERTYPE_Grayscale UMETA(DisplayName="Grayscale"),
939 SAMPLERTYPE_Alpha UMETA(DisplayName="Alpha"),
940 SAMPLERTYPE_Normal UMETA(DisplayName="Normal"),
941 SAMPLERTYPE_Masks UMETA(DisplayName="Masks"),
942 SAMPLERTYPE_DistanceFieldFont UMETA(DisplayName="Distance Field Font"),
943 SAMPLERTYPE_LinearColor UMETA(DisplayName = "Linear Color"),
944 SAMPLERTYPE_LinearGrayscale UMETA(DisplayName = "Linear Grayscale"),
945 SAMPLERTYPE_Data UMETA(DisplayName = "Data"),
946 SAMPLERTYPE_External UMETA(DisplayName = "External"),
947
948 SAMPLERTYPE_VirtualColor UMETA(DisplayName = "Virtual Color"),
949 SAMPLERTYPE_VirtualGrayscale UMETA(DisplayName = "Virtual Grayscale"),
950 SAMPLERTYPE_VirtualAlpha UMETA(DisplayName = "Virtual Alpha"),
951 SAMPLERTYPE_VirtualNormal UMETA(DisplayName = "Virtual Normal"),
952 SAMPLERTYPE_VirtualMasks UMETA(DisplayName = "Virtual Mask"),
953 /*No DistanceFiledFont Virtual*/
954 SAMPLERTYPE_VirtualLinearColor UMETA(DisplayName = "Virtual Linear Color"),
955 SAMPLERTYPE_VirtualLinearGrayscale UMETA(DisplayName = "Virtual Linear Grayscale"),
956 /*No External Virtual*/
957
959};
960
965UENUM()
967{
968 MSC_Less UMETA(DisplayName = "Less Than"),
969 MSC_LessEqual UMETA(DisplayName = "Less Than or Equal"),
970 MSC_Greater UMETA(DisplayName = "Greater Than"),
971 MSC_GreaterEqual UMETA(DisplayName = "Greater Than or Equal"),
972 MSC_Equal UMETA(DisplayName = "Equal"),
973 MSC_NotEqual UMETA(DisplayName = "Not Equal"),
974 MSC_Never UMETA(DisplayName = "Never"),
975 MSC_Always UMETA(DisplayName = "Always"),
977};
978
979UENUM()
981{
982 MSR_1x1 UMETA(DisplayName = "1x1"),
983 MSR_2x1 UMETA(DisplayName = "2x1"),
984 MSR_1x2 UMETA(DisplayName = "1x2"),
985 MSR_2x2 UMETA(DisplayName = "2x2"),
986 MSR_4x2 UMETA(DisplayName = "4x2"),
987 MSR_2x4 UMETA(DisplayName = "2x4"),
988 MSR_4x4 UMETA(DisplayName = "4x4"),
990};
991
992
994UENUM(BlueprintType)
996{
997 Quality_Preview UMETA(DisplayName = "Preview"),
998 Quality_Medium UMETA(DisplayName = "Medium"),
999 Quality_High UMETA(DisplayName = "High"),
1000 Quality_Production UMETA(DisplayName = "Production"),
1002};
1003
1005UENUM(BlueprintType)
1007{
1009 MOVE_None UMETA(DisplayName="None"),
1010
1012 MOVE_Walking UMETA(DisplayName="Walking"),
1013
1019 MOVE_NavWalking UMETA(DisplayName="Navmesh Walking"),
1020
1022 MOVE_Falling UMETA(DisplayName="Falling"),
1023
1025 MOVE_Swimming UMETA(DisplayName="Swimming"),
1026
1028 MOVE_Flying UMETA(DisplayName="Flying"),
1029
1031 MOVE_Custom UMETA(DisplayName="Custom"),
1032
1034};
1035
1037UENUM(BlueprintType)
1039{
1041 Disabled UMETA(DisplayName="Disabled"),
1042
1044 Linear UMETA(DisplayName="Linear"),
1045
1047 Exponential UMETA(DisplayName="Exponential"),
1048
1049};
1050
1051// Number of bits used currently from FMaskFilter.
1053
1054// NOTE!!Some of these values are used to index into FCollisionResponseContainers and must be kept in sync.
1055// @see FCollisionResponseContainer::SetResponse().
1056
1057// @NOTE!!!! This DisplayName [DISPLAYNAME] SHOULD MATCH suffix of ECC_DISPLAYNAME
1058// Otherwise it will mess up collision profile loading
1059// If you change this, please also change FCollisionResponseContainers
1060//
1061// If you add any more TraceQuery="1", you also should change UCollisionProfile::LoadProfileConfig
1062// Metadata doesn't work outside of editor, so you'll need to add manually
1063
1064// @NOTE : when you add more here for predefined engine channel
1065// please change the max in the CollisionProfile
1066// search ECC_Destructible
1067
1068// in order to use this custom channels
1069// we recommend to define in your local file
1070// - i.e. #define COLLISION_WEAPON ECC_GameTraceChannel1
1071// and make sure you customize these it in INI file by
1072//
1073// in DefaultEngine.ini
1074//
1075// [/Script/Engine.CollisionProfile]
1076// GameTraceChannel1="Weapon"
1077//
1078// also in the INI file, you can override collision profiles that are defined by simply redefining
1079// note that Weapon isn't defined in the BaseEngine.ini file, but "Trigger" is defined in Engine
1080// +Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName=WorldDynamic, DefaultResponse=ECR_Overlap, CustomResponses=((Channel=Visibility, Response=ECR_Ignore), (Channel=Weapon, Response=ECR_Ignore)))
1081
1082
1086UENUM(BlueprintType)
1088{
1089
1090 ECC_WorldStatic UMETA(DisplayName="WorldStatic"),
1091 ECC_WorldDynamic UMETA(DisplayName="WorldDynamic"),
1092 ECC_Pawn UMETA(DisplayName="Pawn"),
1093 ECC_Visibility UMETA(DisplayName="Visibility" , TraceQuery="1"),
1094 ECC_Camera UMETA(DisplayName="Camera" , TraceQuery="1"),
1095 ECC_PhysicsBody UMETA(DisplayName="PhysicsBody"),
1096 ECC_Vehicle UMETA(DisplayName="Vehicle"),
1097 ECC_Destructible UMETA(DisplayName="Destructible"),
1098
1101
1107
1126
1130 // NOTE!!!! THESE ARE BEING DEPRECATED BUT STILL THERE FOR BLUEPRINT. PLEASE DO NOT USE THEM IN CODE
1131
1134};
1135
1137DECLARE_DELEGATE_ThreeParams(FOnConstraintViolated, int32 /*ConstraintIndex*/, float /*LinearViolation*/, float /*AngularViolation*/);
1139
1140#define COLLISION_GIZMO ECC_EngineTraceChannel1
1141
1146UENUM(BlueprintType)
1148{
1150 OverlapFilter_All UMETA(DisplayName="AllObjects"),
1152 OverlapFilter_DynamicOnly UMETA(DisplayName="AllDynamicObjects"),
1154 OverlapFilter_StaticOnly UMETA(DisplayName="AllStaticObjects"),
1155};
1156
1158UENUM(BlueprintType)
1196
1198UENUM(BlueprintType)
1236
1238UENUM(BlueprintType, meta=(ScriptName="CollisionResponseType"))
1240{
1241 ECR_Ignore UMETA(DisplayName="Ignore"),
1242 ECR_Overlap UMETA(DisplayName="Overlap"),
1243 ECR_Block UMETA(DisplayName="Block"),
1245};
1246
1248UENUM()
1250{
1251 BSIT_Average UMETA(DisplayName = "Averaged"),
1252 BSIT_Linear UMETA(DisplayName = "Linear"),
1253 BSIT_Cubic UMETA(DisplayName = "Cubic"),
1254 BSIT_EaseInOut UMETA(DisplayName = "Ease In/Out"),
1255 BSIT_ExponentialDecay UMETA(DisplayName = "Exponential"),
1256 BSIT_SpringDamper UMETA(DisplayName = "Spring Damper"),
1257 BSIT_MAX
1259
1261namespace EWorldType
1262{
1263 enum Type
1264 {
1267
1270
1273
1276
1279
1282
1285
1287 Inactive
1289}
1290
1292
1295{
1297 None,
1299 Full,
1301 Visibility,
1302};
1303
1305USTRUCT()
1307{
1309
1310
1313 UPROPERTY(EditAnywhere, Category = FResponseChannel)
1314 FName Channel;
1315
1317 UPROPERTY(EditAnywhere, Category = FResponseChannel)
1319
1322
1326
1328 {
1329 return Channel == Other.Channel && Response == Other.Response;
1330 }
1331};
1332
1333
1337USTRUCT(BlueprintType)
1339{
1341
1342#if !CPP //noexport property
1343
1345 // Reserved Engine Trace Channels
1346 //
1347 // Note - If you change this (add/remove/modify)
1348 // you should make sure it matches with ECollisionChannel (including DisplayName)
1349 // They has to be mirrored if serialized
1351 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer, meta=(DisplayName="WorldStatic"))
1353
1354 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer, meta=(DisplayName="WorldDynamic"))
1356
1357 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer, meta=(DisplayName="Pawn"))
1359
1360 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer, meta=(DisplayName="Visibility"))
1362
1363 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer, meta=(DisplayName="Camera"))
1365
1366 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer, meta=(DisplayName="PhysicsBody"))
1368
1369 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer, meta=(DisplayName="Vehicle"))
1371
1372 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer, meta=(DisplayName="Destructible"))
1374
1375
1377 // Unspecified Engine Trace Channels
1379 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1380 TEnumAsByte<enum ECollisionResponse> EngineTraceChannel1; // 8
1381
1382 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1383 TEnumAsByte<enum ECollisionResponse> EngineTraceChannel2; // 9
1384
1385 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1386 TEnumAsByte<enum ECollisionResponse> EngineTraceChannel3; // 10
1387
1388 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1389 TEnumAsByte<enum ECollisionResponse> EngineTraceChannel4; // 11
1390
1391 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1392 TEnumAsByte<enum ECollisionResponse> EngineTraceChannel5; // 12
1393
1394 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1395 TEnumAsByte<enum ECollisionResponse> EngineTraceChannel6; // 13
1396
1398 // in order to use this custom channels
1399 // we recommend to define in your local file
1400 // - i.e. #define COLLISION_WEAPON ECC_GameTraceChannel1
1401 // and make sure you customize these it in INI file by
1402 //
1403 // in DefaultEngine.ini
1404 //
1405 // [/Script/Engine.CollisionProfile]
1406 // GameTraceChannel1="Weapon"
1407 //
1408 // also in the INI file, you can override collision profiles that are defined by simply redefining
1409 // note that Weapon isn't defined in the BaseEngine.ini file, but "Trigger" is defined in Engine
1410 // +Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName=WorldDynamic, DefaultResponse=ECR_Overlap, CustomResponses=((Channel=Visibility, Response=ECR_Ignore), (Channel=Weapon, Response=ECR_Ignore)))
1412 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1413 TEnumAsByte<enum ECollisionResponse> GameTraceChannel1; // 14
1414
1415 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1416 TEnumAsByte<enum ECollisionResponse> GameTraceChannel2; // 15
1417
1418 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1419 TEnumAsByte<enum ECollisionResponse> GameTraceChannel3; // 16
1420
1421 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1422 TEnumAsByte<enum ECollisionResponse> GameTraceChannel4; // 17
1423
1424 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1425 TEnumAsByte<enum ECollisionResponse> GameTraceChannel5; // 18
1426
1427 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1428 TEnumAsByte<enum ECollisionResponse> GameTraceChannel6; // 19
1429
1430 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1431 TEnumAsByte<enum ECollisionResponse> GameTraceChannel7; // 20
1432
1433 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1434 TEnumAsByte<enum ECollisionResponse> GameTraceChannel8; // 21
1435
1436 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1437 TEnumAsByte<enum ECollisionResponse> GameTraceChannel9; // 22
1438
1439 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1440 TEnumAsByte<enum ECollisionResponse> GameTraceChannel10; // 23
1441
1442 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1443 TEnumAsByte<enum ECollisionResponse> GameTraceChannel11; // 24
1444
1445 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1446 TEnumAsByte<enum ECollisionResponse> GameTraceChannel12; // 25
1447
1448 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1449 TEnumAsByte<enum ECollisionResponse> GameTraceChannel13; // 26
1450
1451 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1452 TEnumAsByte<enum ECollisionResponse> GameTraceChannel14; // 27
1453
1454 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1455 TEnumAsByte<enum ECollisionResponse> GameTraceChannel15; // 28
1456
1457 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1458 TEnumAsByte<enum ECollisionResponse> GameTraceChannel16; // 28
1459
1460 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1461 TEnumAsByte<enum ECollisionResponse> GameTraceChannel17; // 30
1462
1463 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=CollisionResponseContainer)
1464 TEnumAsByte<enum ECollisionResponse> GameTraceChannel18; // 31
1465
1466#endif
1467
1468 union
1469 {
1470 struct
1471 {
1472 //Reserved Engine Trace Channels
1481
1482 // Unspecified Engine Trace Channels
1489
1490 // Unspecified Game Trace Channels
1509 };
1510 uint8 EnumArray[32];
1511 };
1512
1516
1519
1521 ENGINE_API bool SetAllChannels(ECollisionResponse NewResponse);
1522
1525
1527 inline ECollisionResponse GetResponse(ECollisionChannel Channel) const { return (ECollisionResponse)EnumArray[Channel]; }
1528
1532
1535
1537 static const struct FCollisionResponseContainer& GetDefaultResponseContainer() { return DefaultResponseContainer; }
1538
1540 {
1541 return FMemory::Memcmp(EnumArray, Other.EnumArray, sizeof(Other.EnumArray)) == 0;
1542 }
1544 {
1545 return FMemory::Memcmp(EnumArray, Other.EnumArray, sizeof(Other.EnumArray)) != 0;
1546 }
1547
1548private:
1549
1551 static ENGINE_API FCollisionResponseContainer DefaultResponseContainer;
1552
1553 friend class UCollisionProfile;
1554};
1555
1557UENUM()
1567
1569UENUM(BlueprintType)
1571{
1572 enum Type : int
1573 {
1575 NoCollision UMETA(DisplayName="No Collision"),
1577 QueryOnly UMETA(DisplayName="Query Only (No Physics Collision)"),
1579 PhysicsOnly UMETA(DisplayName="Physics Only (No Query Collision)"),
1581 QueryAndPhysics UMETA(DisplayName="Collision Enabled (Query and Physics)"),
1585 ProbeOnly UMETA(DisplayName="Probe Only (Contact Data, No Query or Physics Collision)"),
1589 QueryAndProbe UMETA(DisplayName="Query and Probe (Query Collision and Contact Data, No Physics Collision)")
1590 };
1591}
1592
1607
1612
1614{
1615 return (CollisionEnabled == ECollisionEnabled::PhysicsOnly) ||
1616 (CollisionEnabled == ECollisionEnabled::QueryAndPhysics);
1617}
1618
1620{
1621 return (CollisionEnabled == ECollisionEnabled::QueryOnly) ||
1622 (CollisionEnabled == ECollisionEnabled::QueryAndPhysics) ||
1623 (CollisionEnabled == ECollisionEnabled::QueryAndProbe);
1624}
1625
1627{
1628 return (CollisionEnabled == ECollisionEnabled::ProbeOnly) ||
1629 (CollisionEnabled == ECollisionEnabled::QueryAndProbe);
1630}
1631
1633{
1634 // Combine collision two enabled data.
1635 //
1636 // The intersection follows the following rules:
1637 //
1638 // * For the result to have Query, both data must have Query
1639 // * For the result to have Probe, either data must have Probe
1640 // * For the result to have Physics, both data must have Physics and the result must not have Probe
1641 //
1642 // This way if an object is query-only, for example, but one of its shapes is query-and-physics,
1643 // the object's settings win and the shape ends up being query-only. And if the object is marked
1644 // as physics, but the child is marked as probe (or vice versa), use probe.
1645 //
1646 // The following matrix represents the intersection relationship.
1647 // NOTE: The order of types must match the order declared in ECollisionEnabled!
1648 using namespace ECollisionEnabled;
1649 static constexpr ECollisionEnabled::Type IntersectionMatrix[5][5] = {
1650 /* | QueryOnly PhysicsOnly QueryAndPhysics ProbeOnly QueryAndProbe */
1651 /*-----------------+------------------------------------------------------------------------------------------*/
1652 /* QueryOnly | */ { QueryOnly, NoCollision, QueryOnly, NoCollision, QueryOnly },
1653 /* PhysicsOnly | */ { NoCollision, PhysicsOnly, PhysicsOnly, ProbeOnly, ProbeOnly },
1654 /* QueryAndPhysics | */ { QueryOnly, PhysicsOnly, QueryAndPhysics, ProbeOnly, QueryAndProbe },
1655 /* ProbeOnly | */ { NoCollision, ProbeOnly, ProbeOnly, ProbeOnly, ProbeOnly },
1656 /* QueryAndProbe | */ { QueryOnly, ProbeOnly, QueryAndProbe, ProbeOnly, QueryAndProbe }
1657 };
1658
1659 // Subtract 1 because the first index is NoCollision.
1660 // If both indices indicate _some_ collision setting (ie, greater than -1),
1661 // lookup their intersection setting in the matrix.
1662 const int32 IndexA = (int32)CollisionEnabledA - 1;
1663 const int32 IndexB = (int32)CollisionEnabledB - 1;
1664 if (IndexA >= 0 && IndexB >= 0)
1665 {
1666 return IntersectionMatrix[IndexA][IndexB];
1667 }
1668
1669 // Either of the two settings were set to NoCollision which trumps all
1670 return ECollisionEnabled::NoCollision;
1671}
1672
1674inline ECollisionEnabled::Type CollisionEnabledFromFlags(const bool bQuery, const bool bPhysics, const bool bProbe)
1675{
1676 // Convert to ints for bit manipulation
1677 const int32 QueryBit = static_cast<uint32>(bQuery);
1678 const int32 PhysicsBit = static_cast<uint32>(bPhysics);
1679 const int32 ProbeBit = static_cast<uint32>(bProbe);
1680
1681 // NOTE:
1682 // We use &~ between physics and probe because we cannot have a case with
1683 // both enabled, and in every case probe "beats" physics. See the collision
1684 // type rules outlined in the comments in CollisionEnabledIntersection.
1685 //
1686 // index type bits: probe/physics/query
1687 // ----------------------------------------------------
1688 // 0 NoCollision 000
1689 // 1 QueryOnly 001
1690 // 2 PhysicsOnly 010
1691 // 3 QueryAndPhysics 011
1692 // 4 ProbeOnly 100 (& 110)
1693 // 5 QueryAndProbe 101 (& 111)
1694 return static_cast<ECollisionEnabled::Type>(
1695 (QueryBit << 0) |
1696 (PhysicsBit & (~ProbeBit)) << 1 |
1697 (ProbeBit << 2));
1698}
1699
1702{
1703 const int32 Bits = static_cast<int32>(CollisionEnabled);
1704 bQuery = ((Bits & 0x1) != 0);
1705 bPhysics = ((Bits & 0x2) != 0);
1706 bProbe = ((Bits & 0x4) != 0);
1707}
1708
1710enum class ESleepEvent : uint8
1711{
1712 SET_Wakeup,
1713 SET_Sleep
1714};
1715
1717USTRUCT()
1719{
1721
1722
1724 UPROPERTY(EditAnywhere, Category = "Replication")
1725 float PingExtrapolation;
1726
1728 UPROPERTY(EditAnywhere, Category = "Replication")
1729 float PingLimit;
1730
1732 UPROPERTY(EditAnywhere, Category = "Replication")
1733 float ErrorPerLinearDifference;
1734
1736 UPROPERTY(EditAnywhere, Category = "Replication")
1737 float ErrorPerAngularDifference;
1738
1740 UPROPERTY(EditAnywhere, Category = "Replication")
1741 float MaxRestoredStateError;
1742
1743 UPROPERTY(EditAnywhere, Category = "Replication")
1744 float MaxLinearHardSnapDistance;
1745
1749 UPROPERTY(EditAnywhere, Category = "Replication")
1750 float PositionLerp;
1751
1753 UPROPERTY(EditAnywhere, Category = "Replication")
1754 float AngleLerp;
1755
1759 UPROPERTY(EditAnywhere, Category = "Replication")
1760 float LinearVelocityCoefficient;
1761
1763 UPROPERTY(EditAnywhere, Category = "Replication")
1764 float AngularVelocityCoefficient;
1765
1768 UPROPERTY(EditAnywhere, Category = "Replication")
1769 float ErrorAccumulationSeconds;
1770
1774 UPROPERTY(EditAnywhere, Category = "Replication")
1775 float ErrorAccumulationDistanceSq;
1776
1781 UPROPERTY(EditAnywhere, Category = "Replication")
1782 float ErrorAccumulationSimilarity;
1783
1785 : PingExtrapolation(0.1f)
1786 , PingLimit(100.f)
1787 , ErrorPerLinearDifference(1.0f)
1788 , ErrorPerAngularDifference(1.0f)
1789 , MaxRestoredStateError(1.0f)
1790 , MaxLinearHardSnapDistance(400.f)
1791 , PositionLerp(0.0f)
1792 , AngleLerp(0.4f)
1793 , LinearVelocityCoefficient(100.0f)
1794 , AngularVelocityCoefficient(10.0f)
1795 , ErrorAccumulationSeconds(0.5f)
1796 , ErrorAccumulationDistanceSq(15.0f)
1797 , ErrorAccumulationSimilarity(100.0f)
1798 { }
1799};
1800
1804USTRUCT()
1806{
1808
1809
1810 UPROPERTY()
1811 FVector ContactPosition;
1812
1814 UPROPERTY()
1815 FVector ContactNormal;
1816
1818 UPROPERTY()
1819 float ContactPenetration;
1820
1822 UPROPERTY()
1823 bool bContactProbe;
1824
1826 UPROPERTY()
1827 TObjectPtr<class UPhysicalMaterial> PhysMaterial[2];
1828
1829
1831 : ContactPosition(ForceInit)
1832 , ContactNormal(ForceInit)
1833 , ContactPenetration(0)
1834 , bContactProbe(false)
1835 {
1836 for (int32 ElementIndex = 0; ElementIndex < 2; ElementIndex++)
1837 {
1838 PhysMaterial[ElementIndex] = nullptr;
1839 }
1840 }
1841
1843 const FVector& InContactNormal,
1844 float InPenetration,
1845 bool bInProbe,
1848 : ContactPosition(InContactPosition)
1849 , ContactNormal(InContactNormal)
1850 , ContactPenetration(InPenetration)
1851 , bContactProbe(bInProbe)
1852 {
1853 PhysMaterial[0] = InPhysMat0;
1854 PhysMaterial[1] = InPhysMat1;
1855 }
1856
1858 ENGINE_API void SwapOrder();
1859};
1860
1861
1865USTRUCT()
1867{
1869
1870
1871 UPROPERTY()
1873
1875 UPROPERTY()
1876 FVector TotalNormalImpulse;
1877
1879 UPROPERTY()
1880 FVector TotalFrictionImpulse;
1881
1882 UPROPERTY()
1883 bool bIsVelocityDeltaUnderThreshold;
1884
1886 : TotalNormalImpulse(ForceInit)
1887 , TotalFrictionImpulse(ForceInit)
1888 , bIsVelocityDeltaUnderThreshold(true)
1889 {}
1890
1892 ENGINE_API void SwapContactOrders();
1893};
1894
1896USTRUCT(BlueprintType)
1898{
1900
1901
1902 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=FractureEffect)
1903 TObjectPtr<class UParticleSystem> ParticleSystem;
1904
1906 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=FractureEffect)
1908
1910 : ParticleSystem(nullptr)
1911 , Sound(nullptr)
1912 { }
1913};
1914
1916USTRUCT(BlueprintType)
1918{
1920
1921
1922 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BasedPosition)
1923 TObjectPtr<class AActor> Base;
1924
1926 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BasedPosition)
1928
1929 UPROPERTY()
1930 mutable FVector CachedBaseLocation;
1931
1932 UPROPERTY()
1933 mutable FRotator CachedBaseRotation;
1934
1935 UPROPERTY()
1936 mutable FVector CachedTransPosition;
1937
1939 ENGINE_API explicit FBasedPosition( class AActor *InBase, const FVector& InPosition );
1940
1942 ENGINE_API FVector operator*() const;
1943
1945 ENGINE_API void Set( class AActor* InBase, const FVector& InPosition );
1946
1948 ENGINE_API void Clear();
1949
1950 friend FArchive& operator<<( FArchive& Ar, FBasedPosition& T );
1951};
1952
1955{
1959
1962 {
1963 FPayload& Payload = GetOrCreatePayload();
1964 if (LIKELY(Payload.CachedRotator != InRotator))
1965 {
1966 Payload.CachedRotator = InRotator.GetNormalized();
1967 Payload.CachedQuat = Payload.CachedRotator.Quaternion();
1968 }
1969 return Payload.CachedQuat;
1970 }
1971
1974 {
1975 if (LIKELY(PayloadPtr.IsValid()))
1976 {
1977 FPayload& Payload = *PayloadPtr;
1978 if (LIKELY(Payload.CachedRotator == InRotator))
1979 {
1980 return Payload.CachedQuat;
1981 }
1982 }
1983 return InRotator.Quaternion();
1984 }
1985
1987 inline FRotator QuatToRotator(const FQuat& InQuat) const
1988 {
1989 FPayload& Payload = GetOrCreatePayload();
1990 if (LIKELY(Payload.CachedQuat != InQuat))
1991 {
1992 Payload.CachedQuat = InQuat.GetNormalized();
1993 Payload.CachedRotator = Payload.CachedQuat.Rotator();
1994 }
1995 return Payload.CachedRotator;
1996 }
1997
2000 {
2001 if (LIKELY(PayloadPtr.IsValid()))
2002 {
2003 FPayload& Payload = *PayloadPtr;
2004 if (LIKELY(Payload.CachedQuat == InQuat))
2005 {
2006 return Payload.CachedRotator;
2007 }
2008 }
2009 return InQuat.GetNormalized().Rotator();
2010 }
2011
2014 {
2015 FPayload& Payload = GetOrCreatePayload();
2016 if (LIKELY(Payload.CachedQuat != InNormalizedQuat))
2017 {
2018 Payload.CachedQuat = InNormalizedQuat;
2019 Payload.CachedRotator = InNormalizedQuat.Rotator();
2020 }
2021 return Payload.CachedRotator;
2022 }
2023
2026 {
2027 if (LIKELY(PayloadPtr.IsValid()))
2028 {
2029 FPayload& Payload = *PayloadPtr;
2030 if (LIKELY(Payload.CachedQuat == InNormalizedQuat))
2031 {
2032 return Payload.CachedRotator;
2033 }
2034 }
2035 return InNormalizedQuat.Rotator();
2036 }
2037
2039 inline FQuat GetCachedQuat() const
2040 {
2041 if (UNLIKELY(!PayloadPtr.IsValid()))
2042 {
2043 return FQuat::Identity;
2044 }
2045 return PayloadPtr->CachedQuat;
2046 }
2047
2050 {
2051 if (UNLIKELY(!PayloadPtr.IsValid()))
2052 {
2053 return FRotator::ZeroRotator;
2054 }
2055 return PayloadPtr->CachedRotator;
2056 }
2057
2059 {
2060 if (LIKELY(PayloadPtr.IsValid() || Other.PayloadPtr.IsValid()))
2061 {
2062 FPayload& Payload = GetOrCreatePayload();
2063 Payload.CachedQuat = Other.GetCachedQuat();
2064 Payload.CachedRotator = Other.GetCachedRotator();
2065 }
2066 return *this;
2067 }
2068
2069private:
2070
2071 struct FPayload
2072 {
2073 mutable FQuat CachedQuat; // FQuat matching CachedRotator such that CachedQuat.Rotator() == CachedRotator.
2074 mutable FRotator CachedRotator; // FRotator matching CachedQuat such that CachedRotator.Quaternion() == CachedQuat.
2075
2076 FPayload()
2077 : CachedQuat(FQuat::Identity)
2078 , CachedRotator(FRotator::ZeroRotator)
2079 {}
2080 };
2081
2082 inline FPayload& GetOrCreatePayload() const
2083 {
2084 if (UNLIKELY(!PayloadPtr.IsValid()))
2085 {
2086 PayloadPtr = MakeUnique<FPayload>();
2087 }
2088 return *PayloadPtr;
2089 }
2090
2091 mutable TUniquePtr<FPayload> PayloadPtr;
2092};
2093
2095USTRUCT(BlueprintType)
2097{
2099
2100
2101 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=SubtitleCue)
2103
2105 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=SubtitleCue)
2106 float Time;
2107
2109 : Time(0)
2110 { }
2111};
2112
2114USTRUCT()
2116{
2118
2119
2120 UPROPERTY(EditAnywhere, Category=Lightmass, meta=(UIMin = "0.0", UIMax = "4.0"))
2121 float IndirectLightingSaturation;
2122
2124 UPROPERTY(EditAnywhere, Category=Lightmass, meta=(UIMin = "0.1", UIMax = "4.0"))
2125 float ShadowExponent;
2126
2131 UPROPERTY(EditAnywhere, Category=Lightmass)
2132 bool bUseAreaShadowsForStationaryLight;
2133
2135 : IndirectLightingSaturation(1.0f)
2136 , ShadowExponent(2.0f)
2137 , bUseAreaShadowsForStationaryLight(false)
2138 { }
2139};
2140
2142USTRUCT()
2147
2149USTRUCT()
2151{
2153
2154
2155 UPROPERTY(EditAnywhere, Category=Lightmass, meta=(UIMin = ".0001", UIMax = "5"))
2156 float LightSourceAngle;
2157
2159 : LightSourceAngle(1.0f)
2160 {
2161 }
2162};
2163
2165USTRUCT()
2167{
2169
2170
2171 UPROPERTY(EditAnywhere, Category=Lightmass)
2172 uint32 bUseTwoSidedLighting:1;
2173
2175 UPROPERTY(EditAnywhere, Category=Lightmass)
2176 uint32 bShadowIndirectOnly:1;
2177
2179 UPROPERTY(EditAnywhere, Category=Lightmass)
2180 uint32 bUseEmissiveForStaticLighting:1;
2181
2186 UPROPERTY(EditAnywhere, Category=Lightmass)
2187 uint32 bUseVertexNormalForHemisphereGather:1;
2188
2190 UPROPERTY()
2191 float EmissiveLightFalloffExponent;
2192
2198 UPROPERTY()
2199 float EmissiveLightExplicitInfluenceRadius;
2200
2202 UPROPERTY(EditAnywhere, Category=Lightmass)
2203 float EmissiveBoost;
2204
2206 UPROPERTY(EditAnywhere, Category=Lightmass)
2207 float DiffuseBoost;
2208
2210 UPROPERTY(EditAnywhere, Category=Lightmass)
2211 float FullyOccludedSamplesFraction;
2212
2214 {
2215 bUseTwoSidedLighting = false;
2216 bShadowIndirectOnly = false;
2217 bUseEmissiveForStaticLighting = false;
2218 bUseVertexNormalForHemisphereGather = false;
2219 EmissiveLightFalloffExponent = 8.0f;
2220 EmissiveLightExplicitInfluenceRadius = 0.0f;
2221 EmissiveBoost = 1.0f;
2222 DiffuseBoost = 1.0f;
2223 FullyOccludedSamplesFraction = 1.0f;
2224 }
2225
2227 {
2228 //@todo Do we want a little 'leeway' in joining
2229 if ((A.bUseTwoSidedLighting != B.bUseTwoSidedLighting) ||
2230 (A.bShadowIndirectOnly != B.bShadowIndirectOnly) ||
2231 (A.bUseEmissiveForStaticLighting != B.bUseEmissiveForStaticLighting) ||
2232 (A.bUseVertexNormalForHemisphereGather != B.bUseVertexNormalForHemisphereGather) ||
2233 (fabsf(A.EmissiveLightFalloffExponent - B.EmissiveLightFalloffExponent) > UE_SMALL_NUMBER) ||
2234 (fabsf(A.EmissiveLightExplicitInfluenceRadius - B.EmissiveLightExplicitInfluenceRadius) > UE_SMALL_NUMBER) ||
2235 (fabsf(A.EmissiveBoost - B.EmissiveBoost) > UE_SMALL_NUMBER) ||
2236 (fabsf(A.DiffuseBoost - B.DiffuseBoost) > UE_SMALL_NUMBER) ||
2237 (fabsf(A.FullyOccludedSamplesFraction - B.FullyOccludedSamplesFraction) > UE_SMALL_NUMBER))
2238 {
2239 return false;
2240 }
2241 return true;
2242 }
2243
2244 // Functions.
2246};
2247
2249USTRUCT()
2251{
2253
2254
2258 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2259 uint32 bDebugMode:1;
2260
2262 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2263 uint32 bStatsEnabled:1;
2264
2266 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2267 uint32 bGatherBSPSurfacesAcrossComponents:1;
2268
2270 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2271 float CoplanarTolerance;
2272
2277 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2278 uint32 bUseImmediateImport:1;
2279
2284 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2285 uint32 bImmediateProcessMappings:1;
2286
2288 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2289 uint32 bSortMappings:1;
2290
2292 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2293 uint32 bDumpBinaryFiles:1;
2294
2299 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2300 uint32 bDebugMaterials:1;
2301
2303 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2304 uint32 bPadMappings:1;
2305
2310 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2311 uint32 bDebugPaddings:1;
2312
2317 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2318 uint32 bOnlyCalcDebugTexelMappings:1;
2319
2321 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2322 uint32 bUseRandomColors:1;
2323
2325 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2326 uint32 bColorBordersGreen:1;
2327
2332 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2333 uint32 bColorByExecutionTime:1;
2334
2336 UPROPERTY(EditAnywhere, Category=LightmassDebugOptions)
2337 float ExecutionTimeDivisor;
2338
2340};
2341
2345USTRUCT()
2347{
2349
2350
2354 UPROPERTY(EditAnywhere, Category=SwarmDebugOptions)
2355 uint32 bDistributionEnabled:1;
2356
2361 UPROPERTY(EditAnywhere, Category=SwarmDebugOptions)
2362 uint32 bForceContentExport:1;
2363
2364 UPROPERTY()
2365 uint32 bInitialized:1;
2366
2368 : bDistributionEnabled(true)
2369 , bForceContentExport(false)
2370 , bInitialized(false)
2371 {
2372 }
2373
2374 //@todo For some reason, the global instance is not initializing to the default settings...
2375 // Be sure to update this function to properly set the desired initial values!!!!
2376 void Touch();
2377};
2378
2380UENUM()
2387
2389UENUM()
2391{
2395 SMF_Streamed = 0x00000001
2397
2399UENUM()
2401{
2403 None,
2404
2407
2410};
2411
2414
2416USTRUCT()
2418{
2420
2421
2422 UPROPERTY()
2423 FVector Direction;
2424
2426 UPROPERTY()
2428
2430 {
2431 FMemory::Memzero(this, sizeof(FMTDResult));
2432 }
2433};
2434
2436USTRUCT()
2438{
2440
2441
2442 UPROPERTY()
2443 FName SlotName;
2444
2446 UPROPERTY()
2447 int32 NumChannels;
2448
2450 : NumChannels(0)
2451 { }
2452};
2453
2457UENUM()
2468
2471USTRUCT()
2473{
2475
2476public:
2482
2485
2487 UPROPERTY()
2489
2491 UPROPERTY()
2492 uint8 bInterpolateSkippedFrames : 1;
2493
2495 UPROPERTY()
2496 uint8 bShouldUseLodMap : 1;
2497
2499 UPROPERTY()
2500 uint8 bShouldUseMinLod : 1;
2501
2503 UPROPERTY()
2504 uint8 bSkipUpdate : 1;
2505
2507 UPROPERTY()
2508 uint8 bSkipEvaluation : 1;
2509
2511 UPROPERTY()
2512 int32 UpdateRate;
2513
2516 UPROPERTY()
2517 int32 EvaluationRate;
2518
2521 float TickedPoseOffestTime;
2522
2525 float AdditionalTime;
2526
2528 float ThisTickDelta;
2529
2532 UPROPERTY()
2533 int32 BaseNonRenderedUpdateRate;
2534
2536 UPROPERTY()
2537 int32 MaxEvalRateForInterpolation;
2538
2549 UPROPERTY()
2550 TArray<float> BaseVisibleDistanceFactorThesholds;
2551
2558 UPROPERTY()
2559 TMap<int32, int32> LODToFrameSkipMap;
2560
2562 UPROPERTY()
2563 int32 SkippedUpdateFrames;
2564
2566 UPROPERTY()
2567 int32 SkippedEvalFrames;
2568
2569public:
2570
2573 : OptimizeMode(TrailMode)
2574 , ShiftBucket(EUpdateRateShiftBucket::ShiftBucket0)
2575 , bInterpolateSkippedFrames(false)
2576 , bShouldUseLodMap(false)
2577 , bShouldUseMinLod(false)
2578 , bSkipUpdate(false)
2579 , bSkipEvaluation(false)
2580 , UpdateRate(1)
2581 , EvaluationRate(1)
2582 , TickedPoseOffestTime(0.f)
2583 , AdditionalTime(0.f)
2584 , ThisTickDelta(0.f)
2585 , BaseNonRenderedUpdateRate(4)
2586 , MaxEvalRateForInterpolation(4)
2587 , SkippedUpdateFrames(0)
2588 , SkippedEvalFrames(0)
2589 {
2590 BaseVisibleDistanceFactorThesholds.Add(0.24f);
2591 BaseVisibleDistanceFactorThesholds.Add(0.12f);
2592 }
2593
2601 void SetTrailMode(float DeltaTime, uint8 UpdateRateShift, int32 NewUpdateRate, int32 NewEvaluationRate, bool bNewInterpSkippedFrames);
2602
2608 void SetLookAheadMode(float DeltaTime, uint8 UpdateRateShift, float LookAheadAmount);
2609
2611 float GetInterpolationAlpha() const;
2612
2614 float GetRootMotionInterp() const;
2615
2618 {
2619 return OptimizeMode == LookAheadMode || EvaluationRate > 1;
2620 }
2621
2623 bool ShouldSkipUpdate() const
2624 {
2625 return bSkipUpdate;
2626 }
2627
2630 {
2631 return bSkipEvaluation;
2632 }
2633
2636 {
2637 return bInterpolateSkippedFrames;
2638 }
2639
2642 {
2643 return AdditionalTime;
2644 }
2645
2648 {
2649 if (OptimizeMode == TrailMode)
2650 {
2651 switch (UpdateRate)
2652 {
2653 case 1: return FColor::Red;
2654 case 2: return FColor::Green;
2655 case 3: return FColor::Blue;
2656 }
2657 return FColor::Black;
2658 }
2659 else
2660 {
2661 if (bSkipUpdate)
2662 {
2663 return FColor::Yellow;
2664 }
2665 return FColor::Green;
2666 }
2667 }
2668};
2669
2671USTRUCT(BlueprintType)
2673{
2675
2676
2677 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=POV)
2678 FVector Location;
2679
2681 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=POV)
2683
2685 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=POV)
2686 float FOV;
2687
2689 : Location(ForceInit),Rotation(ForceInit), FOV(90.0f)
2690 {}
2691
2695
2696 // Serializer.
2698 {
2699 return Ar << POV.Location << POV.Rotation << POV.FOV;
2700 }
2701};
2702
2706USTRUCT(BlueprintType)
2708{
2710
2711
2712 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2713 uint8 bUseMikkTSpace:1;
2714
2716 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2717 uint8 bRecomputeNormals:1;
2718
2720 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2721 uint8 bRecomputeTangents:1;
2722
2724 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2725 uint8 bComputeWeightedNormals : 1;
2726
2728 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2729 uint8 bRemoveDegenerates:1;
2730
2732 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2733 uint8 bBuildReversedIndexBuffer:1;
2734
2736 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2737 uint8 bUseHighPrecisionTangentBasis:1;
2738
2740 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2741 uint8 bUseFullPrecisionUVs:1;
2742
2744 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings, AdvancedDisplay)
2745 uint8 bUseBackwardsCompatibleF16TruncUVs:1;
2746
2747 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2748 uint8 bGenerateLightmapUVs:1;
2749
2754 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings, meta=(DisplayName="Two-Sided Distance Field Generation"))
2755 uint8 bGenerateDistanceFieldAsIfTwoSided:1;
2756
2757 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings, meta=(DisplayName="Enable Physical Material Mask"))
2758 uint8 bSupportFaceRemap : 1;
2759
2760 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2761 int32 MinLightmapResolution;
2762
2763 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings, meta=(DisplayName="Source Lightmap Index"))
2764 int32 SrcLightmapIndex;
2765
2766 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings, meta=(DisplayName="Destination Lightmap Index"))
2767 int32 DstLightmapIndex;
2768
2769 UPROPERTY()
2770 float BuildScale_DEPRECATED;
2771
2773 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings, meta=(DisplayName="Build Scale"))
2774 FVector BuildScale3D;
2775
2780 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2781 float DistanceFieldResolutionScale;
2782
2783#if WITH_EDITORONLY_DATA
2784 UPROPERTY(NotReplicated)
2786#endif
2787
2788 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2789 TObjectPtr<class UStaticMesh> DistanceFieldReplacementMesh;
2790
2797 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2798 int32 MaxLumenMeshCards;
2799
2802 : bUseMikkTSpace(true)
2803 , bRecomputeNormals(true)
2804 , bRecomputeTangents(true)
2805 , bComputeWeightedNormals(false)
2806 , bRemoveDegenerates(true)
2807 , bBuildReversedIndexBuffer(true)
2808 , bUseHighPrecisionTangentBasis(false)
2809 , bUseFullPrecisionUVs(false)
2810 , bUseBackwardsCompatibleF16TruncUVs(false)
2811 , bGenerateLightmapUVs(true)
2812 , bGenerateDistanceFieldAsIfTwoSided(false)
2813 , bSupportFaceRemap(false)
2814 , MinLightmapResolution(64)
2815 , SrcLightmapIndex(0)
2816 , DstLightmapIndex(1)
2817 , BuildScale_DEPRECATED(1.0f)
2818 , BuildScale3D(1.0f, 1.0f, 1.0f)
2819 , DistanceFieldResolutionScale(1.0f)
2820#if WITH_EDITORONLY_DATA
2822#endif
2823 , DistanceFieldReplacementMesh(nullptr)
2824 , MaxLumenMeshCards(12)
2825 { }
2826
2829 {
2830 return bRecomputeNormals == Other.bRecomputeNormals
2831 && bRecomputeTangents == Other.bRecomputeTangents
2832 && bComputeWeightedNormals == Other.bComputeWeightedNormals
2833 && bUseMikkTSpace == Other.bUseMikkTSpace
2834 && bRemoveDegenerates == Other.bRemoveDegenerates
2835 && bBuildReversedIndexBuffer == Other.bBuildReversedIndexBuffer
2836 && bUseHighPrecisionTangentBasis == Other.bUseHighPrecisionTangentBasis
2837 && bUseFullPrecisionUVs == Other.bUseFullPrecisionUVs
2838 && bUseBackwardsCompatibleF16TruncUVs == Other.bUseBackwardsCompatibleF16TruncUVs
2839 && bGenerateLightmapUVs == Other.bGenerateLightmapUVs
2840 && MinLightmapResolution == Other.MinLightmapResolution
2841 && SrcLightmapIndex == Other.SrcLightmapIndex
2842 && DstLightmapIndex == Other.DstLightmapIndex
2843 && BuildScale3D == Other.BuildScale3D
2844 && DistanceFieldResolutionScale == Other.DistanceFieldResolutionScale
2845 && bGenerateDistanceFieldAsIfTwoSided == Other.bGenerateDistanceFieldAsIfTwoSided
2846 && DistanceFieldReplacementMesh == Other.DistanceFieldReplacementMesh
2847 && MaxLumenMeshCards == Other.MaxLumenMeshCards;
2848 }
2849
2852 {
2853 return !(*this == Other);
2854 }
2855};
2856
2860USTRUCT(BlueprintType)
2862{
2864
2865
2866 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2867 uint8 bRecomputeNormals:1;
2868
2870 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2871 uint8 bRecomputeTangents:1;
2872
2874 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2875 uint8 bUseMikkTSpace:1;
2876
2878 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2879 uint8 bComputeWeightedNormals : 1;
2880
2882 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2883 uint8 bRemoveDegenerates:1;
2884
2886 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2887 uint8 bUseHighPrecisionTangentBasis:1;
2888
2890 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2891 uint8 bUseHighPrecisionSkinWeights:1;
2892
2894 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
2895 uint8 bUseFullPrecisionUVs:1;
2896
2898 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings, AdvancedDisplay)
2899 uint8 bUseBackwardsCompatibleF16TruncUVs:1;
2900
2902 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2903 float ThresholdPosition;
2904
2906 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2907 float ThresholdTangentNormal;
2908
2910 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2911 float ThresholdUV;
2912
2914 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2915 float MorphThresholdPosition;
2916
2924 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
2925 int32 BoneInfluenceLimit;
2926
2929 : bRecomputeNormals(true)
2930 , bRecomputeTangents(true)
2931 , bUseMikkTSpace(true)
2932 , bComputeWeightedNormals(false)
2933 , bRemoveDegenerates(true)
2934 , bUseHighPrecisionTangentBasis(false)
2935 , bUseHighPrecisionSkinWeights(false)
2936 , bUseFullPrecisionUVs(false)
2937 , bUseBackwardsCompatibleF16TruncUVs(false)
2938 , ThresholdPosition(0.00002f)
2939 , ThresholdTangentNormal(0.00002f)
2940 , ThresholdUV(0.0009765625f)
2941 , MorphThresholdPosition(0.015f)
2942 , BoneInfluenceLimit(0)
2943 {}
2944
2947 {
2948 return bRecomputeNormals == Other.bRecomputeNormals
2949 && bRecomputeTangents == Other.bRecomputeTangents
2950 && bUseMikkTSpace == Other.bUseMikkTSpace
2951 && bComputeWeightedNormals == Other.bComputeWeightedNormals
2952 && bRemoveDegenerates == Other.bRemoveDegenerates
2953 && bUseHighPrecisionTangentBasis == Other.bUseHighPrecisionTangentBasis
2954 && bUseHighPrecisionSkinWeights == Other.bUseHighPrecisionSkinWeights
2955 && bUseFullPrecisionUVs == Other.bUseFullPrecisionUVs
2956 && bUseBackwardsCompatibleF16TruncUVs == Other.bUseBackwardsCompatibleF16TruncUVs
2957 && ThresholdPosition == Other.ThresholdPosition
2958 && ThresholdTangentNormal == Other.ThresholdTangentNormal
2959 && ThresholdUV == Other.ThresholdUV
2960 && MorphThresholdPosition == Other.MorphThresholdPosition
2961 && BoneInfluenceLimit == Other.BoneInfluenceLimit;
2962 }
2963
2966 {
2967 return !(*this == Other);
2968 }
2969};
2970
2971UENUM()
2979
2980UENUM()
2990
2991USTRUCT(BlueprintType)
2993{
2995
2996 UPROPERTY(EditAnywhere, Category = Displacement)
2998
2999 UPROPERTY(EditAnywhere, Category = Displacement)
3000 float Magnitude = 0.0f;
3001
3002 UPROPERTY(EditAnywhere, Category = Displacement)
3003 float Center = 0.0f;
3004
3007
3009 {
3010 return Texture == Other.Texture
3011 && Magnitude == Other.Magnitude
3012 && Center == Other.Center;
3013 }
3014
3016 {
3017 return !(*this == Other);
3018 }
3019};
3020
3024UENUM()
3026{
3028 None,
3032 Voxelize
3033};
3034
3038USTRUCT(BlueprintType)
3040{
3042
3043
3044 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3045 uint8 bEnabled : 1;
3046
3048 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3049 uint8 bExplicitTangents : 1;
3050
3061 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3062 uint8 bLerpUVs : 1;
3063
3064 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3065 uint8 bSeparable : 1;
3066
3067 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3068 uint8 bVoxelNDF : 1;
3069
3070 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3071 uint8 bVoxelOpacity : 1;
3072
3073 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3075
3077 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3078 int32 PositionPrecision = MIN_int32;
3079
3081 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3082 int32 NormalPrecision = -1;
3083
3085 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3086 int32 TangentPrecision = -1;
3087
3089 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3090 int32 BoneWeightPrecision = -1;
3091
3093 UPROPERTY(EditAnywhere, Category = NaniteSettings)
3094 uint32 TargetMinimumResidencyInKB = 0;
3095
3097 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3098 float KeepPercentTriangles = 1.0f;
3099
3101 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3102 float TrimRelativeError = 0.0f;
3103
3105 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings, meta = (DisplayName = "Generate Fallback Mesh"))
3107
3109 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3111
3113 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3114 float FallbackPercentTriangles = 1.0f;
3115
3117 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3118 float FallbackRelativeError = 1.0f;
3119
3123 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3124 float MaxEdgeLengthFactor = 0.0f;
3125
3127 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3128 int32 NumRays = 64;
3129
3130 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3131 int32 VoxelLevel = 0;
3132
3133 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3134 float RayBackUp = 0.0f;
3135
3137 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = NaniteSettings)
3138 int32 DisplacementUVChannel = 0;
3139
3140 UPROPERTY(EditAnywhere, Category = NaniteSettings)
3141 TArray<FMeshDisplacementMap> DisplacementMaps;
3142
3144 UPROPERTY(VisibleAnywhere, Category = NaniteSettings)
3145 FNaniteAssemblyData NaniteAssemblyData;
3146
3148 : bEnabled(false)
3149 , bExplicitTangents(false) // TODO: Should this be the default?
3150 , bLerpUVs(true)
3151 , bSeparable(false)
3152 , bVoxelNDF(true)
3153 , bVoxelOpacity(false)
3154 {}
3155
3156
3159 {
3160 if( DisplacementMaps.Num() != Other.DisplacementMaps.Num() )
3161 return false;
3162
3163 for( int32 i = 0; i < DisplacementMaps.Num(); i++ )
3164 {
3165 if( DisplacementMaps[i] != Other.DisplacementMaps[i] )
3166 return false;
3167 }
3168
3169 return bEnabled == Other.bEnabled
3170 && bExplicitTangents == Other.bExplicitTangents
3171 && bLerpUVs == Other.bLerpUVs
3172 && ShapePreservation == Other.ShapePreservation
3173 && PositionPrecision == Other.PositionPrecision
3174 && NormalPrecision == Other.NormalPrecision
3175 && TangentPrecision == Other.TangentPrecision
3176 && BoneWeightPrecision == Other.BoneWeightPrecision
3177 && TargetMinimumResidencyInKB == Other.TargetMinimumResidencyInKB
3178 && KeepPercentTriangles == Other.KeepPercentTriangles
3179 && TrimRelativeError == Other.TrimRelativeError
3180 && GenerateFallback == Other.GenerateFallback
3181 && FallbackTarget == Other.FallbackTarget
3182 && FallbackPercentTriangles == Other.FallbackPercentTriangles
3183 && FallbackRelativeError == Other.FallbackRelativeError
3184 && MaxEdgeLengthFactor == Other.MaxEdgeLengthFactor
3185 && DisplacementUVChannel == Other.DisplacementUVChannel
3186 && NumRays == Other.NumRays
3187 && VoxelLevel == Other.VoxelLevel
3188 && RayBackUp == Other.RayBackUp
3189 && bSeparable == Other.bSeparable
3190 && bVoxelNDF == Other.bVoxelNDF
3191 && bVoxelOpacity == Other.bVoxelOpacity
3192 && NaniteAssemblyData == Other.NaniteAssemblyData;
3193 }
3194
3197 {
3198 return !(*this == Other);
3199 }
3200};
3201
3202USTRUCT(BlueprintType)
3204{
3206
3207 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Displacement, meta = (NoSpinbox = true, ClampMin = "0.0", UIMin = "0.0"))
3208 float Magnitude;
3209
3210 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Displacement, meta = (NoSpinbox = true, ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
3211 float Center;
3212
3213public:
3215 : Magnitude(4.0f)
3216 , Center(0.5f)
3217 {
3218 }
3219
3222 {
3223 return
3224 FMath::Abs(Magnitude - Other.Magnitude) <= UE_SMALL_NUMBER &&
3225 FMath::Abs(Center - Other.Center) <= UE_SMALL_NUMBER;
3226 }
3227
3230 {
3231 return !(*this == Other);
3232 }
3233};
3234
3235USTRUCT(BlueprintType)
3237{
3239
3240
3244 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Displacement, meta = (DisplayName="Start Fade Size (Pixels)", NoSpinbox=true, ClampMin="0.0001", UIMin="0.0001"))
3245 float StartSizePixels;
3246
3252 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Displacement, meta = (DisplayName="End Fade Size (Pixels)", NoSpinbox=true, ClampMin="0.0001", UIMin="0.0001"))
3253 float EndSizePixels;
3254
3255public:
3257 {
3258 return FDisplacementFadeRange(0.0f, 0.0f);
3259 }
3260
3262 : StartSizePixels(4.0f)
3263 , EndSizePixels(1.0f)
3264 {
3265 }
3266
3272
3275 {
3276 return FMath::IsNearlyEqual(StartSizePixels, Other.StartSizePixels) &&
3278 }
3279
3282 {
3283 return !(*this == Other);
3284 }
3285
3286 bool IsValid() const
3287 {
3288 return StartSizePixels > 0.0f && EndSizePixels > 0.0f;
3289 }
3290};
3291
3292USTRUCT(BlueprintType)
3294{
3296
3297
3298 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = RayTracing)
3299 uint8 bEnabled : 1;
3300
3302 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = RayTracing)
3304
3306 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = RayTracing)
3307 float FallbackPercentTriangles = 1.0f;
3308
3310 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = RayTracing)
3311 float FallbackRelativeError = 2.0f;
3312
3313 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = RayTracing, meta = (NoSpinbox = true, ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
3314 float LOD1PercentTriangles = 0.15f;
3315
3317 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = RayTracing, meta = (NoSpinbox = true, ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
3318 float FoliageOverOcclusionBias = 0.0f;
3319
3320public:
3322 : bEnabled(false)
3323 {}
3324
3327 {
3328 return bEnabled == Other.bEnabled &&
3329 Other.FallbackTarget == FallbackTarget &&
3330 Other.FallbackPercentTriangles == FallbackPercentTriangles &&
3331 Other.FallbackRelativeError == FallbackRelativeError &&
3332 Other.LOD1PercentTriangles == LOD1PercentTriangles &&
3333 Other.FoliageOverOcclusionBias == FoliageOverOcclusionBias;
3334 }
3335
3338 {
3339 return !(*this == Other);
3340 }
3341};
3342
3344UENUM(BlueprintType)
3346{
3348 ROLE_None UMETA(DisplayName = "None"),
3350 ROLE_SimulatedProxy UMETA(DisplayName = "Simulated Proxy"),
3352 ROLE_AutonomousProxy UMETA(DisplayName = "Autonomous Proxy"),
3354 ROLE_Authority UMETA(DisplayName = "Authority"),
3356};
3357
3359UENUM(BlueprintType)
3361{
3363 DORM_Never UMETA(DisplayName = "Never"),
3365 DORM_Awake UMETA(DisplayName = "Awake"),
3367 DORM_DormantAll UMETA(DisplayName = "Dormant All"),
3369 DORM_DormantPartial UMETA(DisplayName = "Dormant Partial"),
3371 DORM_Initial UMETA(DisplayName = "Initial"),
3372
3374};
3375
3376UENUM(BlueprintType)
3378{
3380 Default UMETA(DisplayName = "Default"),
3381
3385 PredictiveInterpolation UMETA(DisplayName = "Predictive Interpolation (WIP)"),
3386
3391 Resimulation UMETA(DisplayName = "Resimulation (WIP)"),
3392};
3393
3395UENUM()
3411
3413UENUM()
3415{
3417 Disabled,
3421 Spawned,
3424};
3425
3427UENUM(BlueprintType)
3444
3445
3451UENUM(BlueprintType)
3453{
3455 WalkableSlope_Default UMETA(DisplayName="Unchanged"),
3456
3462 WalkableSlope_Increase UMETA(DisplayName="Increase Walkable Slope"),
3463
3469 WalkableSlope_Decrease UMETA(DisplayName="Decrease Walkable Slope"),
3470
3475 WalkableSlope_Unwalkable UMETA(DisplayName="Unwalkable"),
3476
3478};
3479
3481USTRUCT(BlueprintType)
3483{
3485
3486
3490 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=WalkableSlopeOverride)
3491 TEnumAsByte<EWalkableSlopeBehavior> WalkableSlopeBehavior;
3492
3497 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=WalkableSlopeOverride, meta=(ClampMin="0", ClampMax="90", UIMin="0", UIMax="90"))
3498 float WalkableSlopeAngle;
3499
3500private:
3501
3502 // Cached angle for which we computed a cosine.
3503 mutable float CachedSlopeAngle;
3504 // Cached cosine of angle.
3505 mutable float CachedSlopeCos;
3506
3507public:
3508
3510 : WalkableSlopeBehavior(WalkableSlope_Default)
3511 , WalkableSlopeAngle(0.f)
3512 , CachedSlopeAngle(0.f)
3513 , CachedSlopeCos(1.f)
3514 { }
3515
3517 : WalkableSlopeBehavior(NewSlopeBehavior)
3518 , WalkableSlopeAngle(NewSlopeAngle)
3519 , CachedSlopeAngle(0.f)
3520 , CachedSlopeCos(1.f)
3521 {
3522 }
3523
3526 {
3527 return WalkableSlopeBehavior;
3528 }
3529
3531 inline float GetWalkableSlopeAngle() const
3532 {
3533 return WalkableSlopeAngle;
3534 }
3535
3538 {
3539 WalkableSlopeBehavior = NewSlopeBehavior;
3540 }
3541
3544 {
3545 WalkableSlopeAngle = FMath::Clamp(NewSlopeAngle, 0.f, 90.f);
3546 }
3547
3550 {
3551 switch(WalkableSlopeBehavior)
3552 {
3554 {
3555 return InWalkableFloorZ;
3556 }
3557
3559 {
3560 CheckCachedData();
3561 return FMath::Min(InWalkableFloorZ, CachedSlopeCos);
3562 }
3563
3565 {
3566 CheckCachedData();
3567 return FMath::Max(InWalkableFloorZ, CachedSlopeCos);
3568 }
3569
3571 {
3572 // Z component of a normal will always be less than this, so this will be unwalkable.
3573 return 2.0f;
3574 }
3575
3576 case WalkableSlope_Max:
3577 default:
3578 {
3579 return InWalkableFloorZ;
3580 }
3581 }
3582 }
3583
3584private:
3585
3586 void CheckCachedData() const
3587 {
3588 if (CachedSlopeAngle != WalkableSlopeAngle)
3589 {
3590 const float AngleRads = FMath::DegreesToRadians(WalkableSlopeAngle);
3591 CachedSlopeCos = FMath::Clamp(FMath::Cos(AngleRads), 0.f, 1.f);
3592 CachedSlopeAngle = WalkableSlopeAngle;
3593 }
3594 }
3595};
3596
3597template<> struct TIsPODType<FWalkableSlopeOverride> { enum { Value = true }; };
3598
3644
3645static_assert(sizeof(FReplicationFlags) == 4, "FReplicationFlags has invalid size.");
3646
3648USTRUCT()
3650{
3652
3653
3654 UPROPERTY(EditAnywhere, Category=Constraint)
3655 FName ComponentName;
3656};
3657
3661USTRUCT(BlueprintType)
3663{
3665
3667
3669 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Component, meta = (DisplayName = "Component Name"))
3670 FName ComponentProperty;
3671
3673 UPROPERTY(EditDefaultsOnly, Category=Component, meta =(EditCondition="false", EditConditionHides))
3674 FString PathToComponent;
3675
3677 TWeakObjectPtr<class UActorComponent> OverrideComponent;
3678
3680 ENGINE_API class UActorComponent* ExtractComponent(AActor* SearchActor) const;
3681
3683 bool operator== (const FBaseComponentReference& Other) const
3684 {
3685 return ComponentProperty == Other.ComponentProperty && PathToComponent == Other.PathToComponent && OverrideComponent == Other.OverrideComponent;
3686 }
3687};
3688
3690{
3691 return HashCombineFast(
3693 GetTypeHash(Reference.ComponentProperty),
3694 GetTypeHash(Reference.PathToComponent)),
3695 GetTypeHash(Reference.OverrideComponent));
3696}
3697
3702USTRUCT(BlueprintType)
3704{
3706
3707 FComponentReference() : OtherActor(nullptr) {}
3708
3713 UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category=Component, meta = (DisplayName = "Referenced Actor"))
3715
3717 ENGINE_API class UActorComponent* GetComponent(AActor* OwningActor) const;
3718
3720 bool operator== (const FComponentReference& Other) const
3721 {
3722 return (OtherActor == Other.OtherActor) && (FBaseComponentReference::operator==(Other));
3723 }
3724};
3725
3730USTRUCT(BlueprintType)
3732{
3734
3735 FSoftComponentReference() : OtherActor(nullptr) {}
3736
3741 UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category=Component, meta = (DisplayName = "Referenced Actor"))
3743
3745 ENGINE_API class UActorComponent* GetComponent(AActor* OwningActor) const;
3746
3748 bool operator== (const FSoftComponentReference& Other) const
3749 {
3750 return (OtherActor == Other.OtherActor) && (FBaseComponentReference::operator==(Other));
3751 }
3752
3753 ENGINE_API bool SerializeFromMismatchedTag(const FPropertyTag& Tag, FStructuredArchive::FSlot Slot);
3754};
3755
3756template<>
3758{
3759 enum
3760 {
3762 };
3763};
3764
3765
3767UENUM(BlueprintType)
3783
3785UENUM(BlueprintType)
3787{
3788 enum Type : int
3789 {
3796
3805
3812 Movable
3814}
3815
3817UCLASS(abstract, config=Engine, MinimalAPI)
3819{
3821
3822public:
3824 static ENGINE_API ECollisionChannel ConvertToCollisionChannel(ETraceTypeQuery TraceType);
3825
3827 static ENGINE_API ECollisionChannel ConvertToCollisionChannel(EObjectTypeQuery ObjectType);
3828
3830 static ENGINE_API EObjectTypeQuery ConvertToObjectType(ECollisionChannel CollisionChannel);
3831
3833 static ENGINE_API ETraceTypeQuery ConvertToTraceType(ECollisionChannel CollisionChannel);
3834};
3835
3837UENUM()
3839{
3840 enum Type : int
3841 {
3844
3847
3850 };
3851}
3852
3855{
3858
3861
3867
3869 : Name(SocketName)
3870 , Type(SocketType)
3871 {
3872 }
3873};
3874
3877
3880
3881
3885USTRUCT(BlueprintType)
3887{
3889
3890
3893 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=CollectionReference)
3894 FName CollectionName;
3895};
3896
3901USTRUCT()
3903{
3905
3906 UPROPERTY()
3907 FName OldName;
3908
3910 UPROPERTY()
3911 FName NewName;
3912
3914 : OldName(NAME_None)
3915 , NewName(NAME_None)
3916 { }
3917
3919 : OldName(InOldName)
3920 , NewName(InNewName)
3921 { }
3922};
3923
3927USTRUCT(BlueprintType)
3929{
3931
3932private:
3935 TArray<float> Samples;
3936
3937public:
3939 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="DebugFloatHistory")
3940 int32 MaxSamples;
3941
3943 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "DebugFloatHistory")
3944 float MinValue;
3945
3947 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "DebugFloatHistory")
3948 float MaxValue;
3949
3951 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "DebugFloatHistory")
3952 bool bAutoAdjustMinMax;
3953
3955 : MaxSamples(100)
3956 , MinValue(0.f)
3957 , MaxValue(0.f)
3958 , bAutoAdjustMinMax(true)
3959 { }
3960
3961 FDebugFloatHistory(int32 const & InMaxSamples, float const & InMinValue, float const & InMaxValue, bool const & InbAutoAdjustMinMax)
3962 : MaxSamples(InMaxSamples)
3963 , MinValue(InMinValue)
3964 , MaxValue(InMaxValue)
3965 , bAutoAdjustMinMax(InbAutoAdjustMinMax)
3966 { }
3967
3975 void AddSample(float const & FloatValue)
3976 {
3977 if (bAutoAdjustMinMax)
3978 {
3979 // Adjust bounds and record value.
3980 MinValue = FMath::Min(MinValue, FloatValue);
3981 MaxValue = FMath::Max(MaxValue, FloatValue);
3982 Samples.Insert(FloatValue, 0);
3983 }
3984 else
3985 {
3986 // Record clamped value.
3987 Samples.Insert(FMath::Clamp(FloatValue, MinValue, MaxValue), 0);
3988 }
3989
3990 // Do not exceed MaxSamples recorded.
3991 if( Samples.Num() > MaxSamples )
3992 {
3993 Samples.RemoveAt(MaxSamples, Samples.Num() - MaxSamples);
3994 }
3995 }
3996
3998 float GetMinMaxRange() const
3999 {
4000 return (MaxValue - MinValue);
4001 }
4002
4004 float GetMinValue() const
4005 {
4006 return MinValue;
4007 }
4008
4010 float GetMaxValue() const
4011 {
4012 return MaxValue;
4013 }
4014
4016 int GetNumSamples() const
4017 {
4018 return Samples.Num();
4019 }
4020
4023 {
4024 return Samples;
4025 }
4026};
4027
4029USTRUCT(BlueprintType)
4031{
4033
4034
4035 UPROPERTY(BlueprintReadWrite, Category="Glow")
4036 uint32 bEnableGlow:1;
4037
4039 UPROPERTY(BlueprintReadWrite, Category="Glow")
4040 FLinearColor GlowColor;
4041
4046 UPROPERTY(BlueprintReadWrite, Category="Glow")
4047 FVector2D GlowOuterRadius;
4048
4053 UPROPERTY(BlueprintReadWrite, Category="Glow")
4054 FVector2D GlowInnerRadius;
4055
4056
4058 : bEnableGlow(false)
4059 , GlowColor(ForceInit)
4060 , GlowOuterRadius(ForceInit)
4061 , GlowInnerRadius(ForceInit)
4062 { }
4063
4065 {
4066 if (Other.bEnableGlow != bEnableGlow)
4067 {
4068 return false;
4069 }
4070 else if (!bEnableGlow)
4071 {
4072 // if the glow is disabled on both, the other values don't matter
4073 return true;
4074 }
4075 else
4076 {
4077 return (Other.GlowColor == GlowColor && Other.GlowOuterRadius == GlowOuterRadius && Other.GlowInnerRadius == GlowInnerRadius);
4078 }
4079 }
4080
4082 {
4083 return !(*this == Other);
4084 }
4085};
4086
4088USTRUCT(BlueprintType)
4090{
4092
4093
4094 UPROPERTY(BlueprintReadWrite, Category="FontInfo")
4095 uint32 bClipText:1;
4096
4098 UPROPERTY(BlueprintReadWrite, Category="FontInfo")
4099 uint32 bEnableShadow:1;
4100
4102 UPROPERTY(BlueprintReadWrite, Category="FontInfo")
4104
4106 : bClipText(false), bEnableShadow(false)
4107 {}
4108};
4109
4111USTRUCT(BlueprintType)
4113{
4115
4116
4117 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CanvasUVTri)
4119
4121 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CanvasUVTri)
4123
4125 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CanvasUVTri)
4127
4129 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CanvasUVTri)
4131
4133 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CanvasUVTri)
4135
4137 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CanvasUVTri)
4139
4141 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CanvasUVTri)
4143
4145 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CanvasUVTri)
4147
4149 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CanvasUVTri)
4151
4153 : V0_Pos(ForceInit)
4154 , V0_UV(ForceInit)
4155 , V0_Color(ForceInit)
4156 , V1_Pos(ForceInit)
4157 , V1_UV(ForceInit)
4158 , V1_Color(ForceInit)
4159 , V2_Pos(ForceInit)
4160 , V2_UV(ForceInit)
4161 , V2_Color(ForceInit)
4162 { }
4163};
4164
4165template <> struct TIsZeroConstructType<FCanvasUVTri> { enum { Value = true }; };
4166
4168UENUM(BlueprintType)
4170{
4172 Undefined UMETA(DisplayName = "Default"),
4174 AlwaysSpawn UMETA(DisplayName = "Always Spawn, Ignore Collisions"),
4176 AdjustIfPossibleButAlwaysSpawn UMETA(DisplayName = "Try To Adjust Location, But Always Spawn"),
4178 AdjustIfPossibleButDontSpawnIfColliding UMETA(DisplayName = "Try To Adjust Location, Don't Spawn If Still Colliding"),
4180 DontSpawnIfColliding UMETA(DisplayName = "Do Not Spawn"),
4181};
4182
4185{
4187 Game,
4189 Editor,
4191 Other
4192};
4193
4197USTRUCT(BlueprintType)
4199{
4201
4202
4203 UPROPERTY(BlueprintReadWrite, Category = "Activity")
4204 FString ActionName;
4205
4208
4213
4216 : ActionName(InActionName)
4218 { }
4219
4222 : ActionName(InActionName)
4224 { }
4225};
4226
4228UENUM()
4230{
4232 Default,
4233
4236};
4237
4240{
4247
4253
4261
4262 MAX
4263};
4264
4266{
4268 None = 0,
4270 Transient = 1 << 0,
4272 Persistent = 1 << 1,
4275};
4277
4278#if WITH_EDITOR
4279
4282
4283#endif
#define check(expr)
Definition AssertionMacros.h:314
#define LIKELY(x)
Definition CityHash.cpp:107
@ ForceInit
Definition CoreMiscDefines.h:155
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UNLIKELY(x)
Definition Platform.h:857
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
#define DECLARE_DELEGATE_ThreeParams(DelegateName, Param1Type, Param2Type, Param3Type)
Definition DelegateCombinations.h:66
#define DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type, Param1Name)
Definition DelegateCombinations.h:53
ETeleportType
Definition EngineTypes.h:2401
ERefractionMode
Definition EngineTypes.h:359
ETimelineSigType
Definition EngineTypes.h:1559
@ ETS_EventSignature
Definition EngineTypes.h:1560
@ ETS_LinearColorSignature
Definition EngineTypes.h:1563
@ ETS_InvalidSignature
Definition EngineTypes.h:1564
@ ETS_MAX
Definition EngineTypes.h:1565
@ ETS_FloatSignature
Definition EngineTypes.h:1561
@ ETS_VectorSignature
Definition EngineTypes.h:1562
EMaterialFloatPrecisionMode
Definition EngineTypes.h:266
@ MFPM_MAX
Definition EngineTypes.h:275
EMaterialShadingRate
Definition EngineTypes.h:981
EAutoPossessAI
Definition EngineTypes.h:3415
uint32 GetTypeHash(const FBaseComponentReference &Reference)
Definition EngineTypes.h:3689
EUserActivityContext
Definition EngineTypes.h:4185
ENetRole
Definition EngineTypes.h:3346
ESamplerSourceMode
Definition EngineTypes.h:281
EFilterInterpolationType
Definition EngineTypes.h:1250
@ BSIT_MAX
Definition EngineTypes.h:1257
uint8 GetDefaultLightingChannelMask()
Definition EngineTypes.h:592
EObjectTypeQuery
Definition EngineTypes.h:1160
@ NumExtraFilterBits
Definition EngineTypes.h:1052
ENGINE_API const TCHAR * LexToString(const EWorldType::Type Value)
Definition EngineTypes.cpp:141
EBlendMode
Definition EngineTypes.h:245
@ BLEND_ColoredTransmittanceOnly
Definition EngineTypes.h:257
@ BLEND_TranslucentGreyTransmittance
Definition EngineTypes.h:256
EAttachmentRule
Definition EngineTypes.h:62
bool CollisionEnabledHasProbe(ECollisionEnabled::Type CollisionEnabled)
Definition EngineTypes.h:1626
ELevelCollectionType
Definition EngineTypes.h:4240
ENetDormancy
Definition EngineTypes.h:3361
ESceneCaptureCompositeMode
Definition EngineTypes.h:550
ENaniteGenerateFallback
Definition EngineTypes.h:2973
ETextureMipValueMode
Definition EngineTypes.h:295
@ TMVM_MAX
Definition EngineTypes.h:308
int32 GetFirstLightingChannelFromMask(uint8 Mask)
Definition EngineTypes.h:598
EMeshBufferAccess
Definition EngineTypes.h:4230
ECollisionEnabled::Type CollisionEnabledIntersection(ECollisionEnabled::Type CollisionEnabledA, ECollisionEnabled::Type CollisionEnabledB)
Definition EngineTypes.h:1632
ETraceTypeQuery
Definition EngineTypes.h:1200
ELightMapPaddingType
Definition EngineTypes.h:2382
@ LMPT_NoPadding
Definition EngineTypes.h:2385
@ LMPT_PrePadding
Definition EngineTypes.h:2384
@ LMPT_NormalPadding
Definition EngineTypes.h:2383
EShadowMapFlags
Definition EngineTypes.h:2391
@ SMF_Streamed
Definition EngineTypes.h:2395
@ SMF_None
Definition EngineTypes.h:2393
bool IsVirtualSamplerType(EMaterialSamplerType Value)
Definition EngineTypes.h:961
EPhysicsReplicationMode
Definition EngineTypes.h:3378
EOverlapFilterOption
Definition EngineTypes.h:1148
EFlushLevelStreamingType
Definition EngineTypes.h:1295
EMaterialStencilCompare
Definition EngineTypes.h:967
void CollisionEnabledToFlags(const ECollisionEnabled::Type CollisionEnabled, bool &bQuery, bool &bPhysics, bool &bProbe)
Definition EngineTypes.h:1701
ENaniteFallbackTarget
Definition EngineTypes.h:2982
ESpawnActorCollisionHandlingMethod
Definition EngineTypes.h:4170
EDetachmentRule
Definition EngineTypes.h:112
bool CollisionEnabledHasQuery(ECollisionEnabled::Type CollisionEnabled)
Definition EngineTypes.h:1619
FCollisionEnabledMask ENGINE_API operator&(const ECollisionEnabled::Type A, const ECollisionEnabled::Type B)
Definition PhysUtils.cpp:310
ETrailWidthMode
Definition EngineTypes.h:682
ERefractionCoverageMode
Definition EngineTypes.h:398
EOcclusionCombineMode
Definition EngineTypes.h:226
@ OCM_Minimum
Definition EngineTypes.h:228
@ OCM_MAX
Definition EngineTypes.h:235
@ OCM_Multiply
Definition EngineTypes.h:234
EMaterialSamplerType
Definition EngineTypes.h:936
@ SAMPLERTYPE_MAX
Definition EngineTypes.h:958
ESubstrateShadingModel
Definition EngineTypes.h:812
@ SSM_SubsurfaceThinTwoSided
Definition EngineTypes.h:819
@ SSM_Hair
Definition EngineTypes.h:821
@ SSM_SubsurfaceWrap
Definition EngineTypes.h:818
@ SSM_VolumetricFogCloud
Definition EngineTypes.h:820
@ SSM_DefaultLit
Definition EngineTypes.h:814
@ SSM_ThinTranslucent
Definition EngineTypes.h:815
@ SSM_SubsurfaceProfile
Definition EngineTypes.h:817
@ SSM_Eye
Definition EngineTypes.h:822
@ SSM_SingleLayerWater
Definition EngineTypes.h:825
@ SSM_Decal
Definition EngineTypes.h:828
@ SSM_SubsurfaceMFP
Definition EngineTypes.h:816
@ SSM_UI
Definition EngineTypes.h:829
@ SSM_Cloth
Definition EngineTypes.h:823
@ SSM_ClearCoat
Definition EngineTypes.h:824
@ SSM_LightFunction
Definition EngineTypes.h:826
@ SSM_NUM
Definition EngineTypes.h:831
@ SSM_Unlit
Definition EngineTypes.h:813
@ SSM_PostProcess
Definition EngineTypes.h:827
ESleepEvent
Definition EngineTypes.h:1711
ETranslucencyLightingMode
Definition EngineTypes.h:314
@ TLM_MAX
Definition EngineTypes.h:353
EMobileLocalLightSetting
Definition EngineTypes.h:673
bool CollisionEnabledHasPhysics(ECollisionEnabled::Type CollisionEnabled)
Definition EngineTypes.h:1613
FCollisionEnabledMask ENGINE_API operator|(const ECollisionEnabled::Type A, const ECollisionEnabled::Type B)
Definition PhysUtils.cpp:320
EMovementMode
Definition EngineTypes.h:1007
EUpdateRateShiftBucket
Definition EngineTypes.h:2459
ETeleportType TeleportFlagToEnum(bool bTeleport)
Definition EngineTypes.h:2412
ECollisionChannel
Definition EngineTypes.h:1088
@ ECC_MAX
Definition EngineTypes.h:1133
ENetworkSmoothingMode
Definition EngineTypes.h:1039
ELightingBuildQuality
Definition EngineTypes.h:996
ECollisionResponse
Definition EngineTypes.h:1240
@ ECR_MAX
Definition EngineTypes.h:1244
ECollisionEnabled::Type CollisionEnabledFromFlags(const bool bQuery, const bool bPhysics, const bool bProbe)
Definition EngineTypes.h:1674
ENaniteShapePreservation
Definition EngineTypes.h:3026
bool TeleportEnumToFlag(ETeleportType Teleport)
Definition EngineTypes.h:2413
ELightmapType
Definition EngineTypes.h:210
EPixelDepthOffsetMode
Definition EngineTypes.h:416
ESceneDepthPriorityGroup
Definition EngineTypes.h:187
@ SDPG_Foreground
Definition EngineTypes.h:191
@ SDPG_World
Definition EngineTypes.h:189
@ SDPG_MAX
Definition EngineTypes.h:192
ESceneCaptureSource
Definition EngineTypes.h:532
@ SCS_MAX
Definition EngineTypes.h:544
EMaterialShadingModel
Definition EngineTypes.h:705
@ MSM_MAX
Definition EngineTypes.h:724
uint8 GetLightingChannelMaskForStruct(FLightingChannels Value)
Definition EngineTypes.h:585
EAspectRatioAxisConstraint
Definition EngineTypes.h:38
@ AspectRatio_MAX
Definition EngineTypes.h:42
EPackageAutoSaveType
Definition EngineTypes.h:4266
EWalkableSlopeBehavior
Definition EngineTypes.h:3453
@ UMETA
Definition EngineTypes.h:39
@ NumInlinedActorComponents
Definition EngineTypes.h:33
EIndirectLightingCacheQuality
Definition EngineTypes.h:198
@ ILCQ_Point
Definition EngineTypes.h:202
@ ILCQ_Volume
Definition EngineTypes.h:204
@ ILCQ_Off
Definition EngineTypes.h:200
#define SUBSTRATE_TREE_MAX_DEPTH
Definition EngineTypes.h:836
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
return true
Definition ExternalRpcRegistry.cpp:601
auto Response
Definition ExternalRpcRegistry.cpp:598
const bool
Definition NetworkReplayStreaming.h:178
#define MIN_int32
Definition NumericLimits.h:16
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
@ Two
Definition PropertyPathHelpersTest.h:17
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
constexpr uint32 HashCombineFast(uint32 A, uint32 B)
Definition TypeHash.h:74
#define UE_SMALL_NUMBER
Definition UnrealMathUtility.h:130
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Engine.Build.cs:7
Definition Archive.h:1208
Definition MaterialShared.h:2058
Definition NameTypes.h:617
Definition StructuredArchiveSlots.h:52
Definition Text.h:385
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
Definition EnumAsByte.h:22
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition ActorComponent.h:152
Definition CollisionProfile.h:161
Definition EngineTypes.h:3819
Definition MaterialInterface.h:296
Definition Object.h:95
Definition ParticleSystem.h:160
Definition PhysicalMaterialMask.h:22
Definition PhysicalMaterial.h:104
Definition SoundBase.h:109
Definition SpecularProfile.h:74
Definition StaticMesh.h:593
Definition SubsurfaceProfile.h:170
Definition Texture2D.h:26
Definition BuildSettings.cpp:6
Definition DistanceFieldAtlas.h:36
Definition EngineTypes.h:164
Type
Definition EngineTypes.h:166
@ KeepWorldPosition
Definition EngineTypes.h:171
@ KeepRelativeOffset
Definition EngineTypes.h:168
Definition EngineTypes.h:3397
Type
Definition EngineTypes.h:3399
@ Player2
Definition EngineTypes.h:3403
@ Player1
Definition EngineTypes.h:3402
@ Player3
Definition EngineTypes.h:3404
@ Player7
Definition EngineTypes.h:3408
@ Player5
Definition EngineTypes.h:3406
@ Player4
Definition EngineTypes.h:3405
@ Player0
Definition EngineTypes.h:3401
@ Player6
Definition EngineTypes.h:3407
Definition EngineTypes.h:47
Type
Definition EngineTypes.h:49
@ Failure
Definition EngineTypes.h:53
@ Success
Definition EngineTypes.h:51
@ Pending
Definition EngineTypes.h:55
Definition EngineTypes.h:501
Type
Definition EngineTypes.h:503
Definition EngineTypes.h:1571
Type
Definition EngineTypes.h:1573
Definition EngineTypes.h:3787
Type
Definition EngineTypes.h:3789
Definition EngineTypes.h:3839
Type
Definition EngineTypes.h:3841
@ Socket
Definition EngineTypes.h:3849
Definition EngineTypes.h:450
Type
Definition EngineTypes.h:452
Definition EngineTypes.h:3429
Type
Definition EngineTypes.h:3431
@ EndPlayInEditor
Definition EngineTypes.h:3437
@ RemovedFromWorld
Definition EngineTypes.h:3439
@ Quit
Definition EngineTypes.h:3441
@ LevelTransition
Definition EngineTypes.h:3435
Definition EngineTypes.h:652
Type
Definition EngineTypes.h:654
@ HighPrecisionNormals
Definition EngineTypes.h:660
@ Force16BitsPerChannel
Definition EngineTypes.h:662
@ Force8BitsPerChannel
Definition EngineTypes.h:656
Definition EngineTypes.h:517
Type
Definition EngineTypes.h:519
@ VirtualShadowMap
Definition EngineTypes.h:525
Definition EngineTypes.h:691
Type
Definition EngineTypes.h:693
Definition EngineTypes.h:3769
Type
Definition EngineTypes.h:3771
@ Cyan
Definition EngineTypes.h:3775
@ Magenta
Definition EngineTypes.h:3776
Definition EngineTypes.h:470
Type
Definition EngineTypes.h:472
Definition EngineTypes.h:487
Type
Definition EngineTypes.h:489
Definition EngineTypes.h:795
Definition EngineTypes.h:779
Definition EngineTypes.h:433
Type
Definition EngineTypes.h:435
@ SortByDistance
Definition EngineTypes.h:437
@ SortAlongAxis
Definition EngineTypes.h:443
@ SortByProjectedZ
Definition EngineTypes.h:440
Definition EngineTypes.h:1262
Type
Definition EngineTypes.h:1264
@ GamePreview
Definition EngineTypes.h:1281
@ None
Definition EngineTypes.h:1266
@ Editor
Definition EngineTypes.h:1272
@ Game
Definition EngineTypes.h:1269
@ Inactive
Definition EngineTypes.h:1287
@ PIE
Definition EngineTypes.h:1275
@ EditorPreview
Definition EngineTypes.h:1278
@ GameRPC
Definition EngineTypes.h:1284
Definition FieldSystemNoiseAlgo.cpp:6
Definition DeferredShadingRenderer.cpp:316
Definition SceneManagement.h:73
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition EngineTypes.h:2438
Definition EngineTypes.h:2473
EOptimizeMode
Definition EngineTypes.h:2478
@ LookAheadMode
Definition EngineTypes.h:2480
@ TrailMode
Definition EngineTypes.h:2479
bool ShouldSkipUpdate() const
Definition EngineTypes.h:2623
bool DoEvaluationRateOptimizations() const
Definition EngineTypes.h:2617
FColor GetUpdateRateDebugColor() const
Definition EngineTypes.h:2647
float GetTimeAdjustment()
Definition EngineTypes.h:2641
EOptimizeMode OptimizeMode
Definition EngineTypes.h:2484
bool ShouldInterpolateSkippedFrames() const
Definition EngineTypes.h:2635
bool ShouldSkipEvaluation() const
Definition EngineTypes.h:2629
Definition EngineTypes.h:75
static ENGINE_API FAttachmentTransformRules KeepRelativeTransform
Definition EngineTypes.h:77
static ENGINE_API FAttachmentTransformRules KeepWorldTransform
Definition EngineTypes.h:78
EAttachmentRule LocationRule
Definition EngineTypes.h:97
FAttachmentTransformRules(EAttachmentRule InRule, bool bInWeldSimulatedBodies)
Definition EngineTypes.h:82
EAttachmentRule RotationRule
Definition EngineTypes.h:100
static ENGINE_API FAttachmentTransformRules SnapToTargetIncludingScale
Definition EngineTypes.h:80
static ENGINE_API FAttachmentTransformRules SnapToTargetNotIncludingScale
Definition EngineTypes.h:79
bool bWeldSimulatedBodies
Definition EngineTypes.h:106
FAttachmentTransformRules(EAttachmentRule InLocationRule, EAttachmentRule InRotationRule, EAttachmentRule InScaleRule, bool bInWeldSimulatedBodies)
Definition EngineTypes.h:89
EAttachmentRule ScaleRule
Definition EngineTypes.h:103
Definition EngineTypes.h:3663
bool operator==(const FBaseComponentReference &Other) const
Definition EngineTypes.h:3683
Definition EngineTypes.h:1918
Definition EngineTypes.h:4113
Definition EngineTypes.h:3887
Definition EngineTypes.h:1594
int8 Bits
Definition EngineTypes.h:1595
ENGINE_API FCollisionEnabledMask operator|(const FCollisionEnabledMask Other) const
Definition PhysUtils.cpp:300
ENGINE_API FCollisionEnabledMask operator&(const FCollisionEnabledMask Other) const
Definition PhysUtils.cpp:290
Definition EngineTypes.h:1867
Definition EngineTypes.h:1339
uint8 GameTraceChannel2
Definition EngineTypes.h:1492
uint8 GameTraceChannel8
Definition EngineTypes.h:1498
uint8 EngineTraceChannel2
Definition EngineTypes.h:1484
uint8 GameTraceChannel14
Definition EngineTypes.h:1504
uint8 GameTraceChannel10
Definition EngineTypes.h:1500
uint8 GameTraceChannel7
Definition EngineTypes.h:1497
uint8 EngineTraceChannel4
Definition EngineTypes.h:1486
uint8 GameTraceChannel9
Definition EngineTypes.h:1499
ECollisionResponse GetResponse(ECollisionChannel Channel) const
Definition EngineTypes.h:1527
uint8 GameTraceChannel18
Definition EngineTypes.h:1508
uint8 GameTraceChannel15
Definition EngineTypes.h:1505
uint8 WorldStatic
Definition EngineTypes.h:1473
uint8 Destructible
Definition EngineTypes.h:1480
ENGINE_API void UpdateResponsesFromArray(TArray< FResponseChannel > &ChannelResponses)
uint8 GameTraceChannel16
Definition EngineTypes.h:1506
uint8 EngineTraceChannel5
Definition EngineTypes.h:1487
bool operator!=(const FCollisionResponseContainer &Other) const
Definition EngineTypes.h:1543
uint8 Pawn
Definition EngineTypes.h:1475
uint8 Vehicle
Definition EngineTypes.h:1479
uint8 GameTraceChannel13
Definition EngineTypes.h:1503
ENGINE_API int32 FillArrayFromResponses(TArray< FResponseChannel > &ChannelResponses)
uint8 PhysicsBody
Definition EngineTypes.h:1478
uint8 EngineTraceChannel1
Definition EngineTypes.h:1483
uint8 GameTraceChannel5
Definition EngineTypes.h:1495
uint8 GameTraceChannel4
Definition EngineTypes.h:1494
uint8 GameTraceChannel11
Definition EngineTypes.h:1501
uint8 WorldDynamic
Definition EngineTypes.h:1474
static const struct FCollisionResponseContainer & GetDefaultResponseContainer()
Definition EngineTypes.h:1537
uint8 GameTraceChannel3
Definition EngineTypes.h:1493
uint8 EngineTraceChannel3
Definition EngineTypes.h:1485
uint8 GameTraceChannel17
Definition EngineTypes.h:1507
uint8 GameTraceChannel12
Definition EngineTypes.h:1502
uint8 EngineTraceChannel6
Definition EngineTypes.h:1488
uint8 Camera
Definition EngineTypes.h:1477
uint8 EnumArray[32]
Definition EngineTypes.h:1510
uint8 GameTraceChannel1
Definition EngineTypes.h:1491
uint8 GameTraceChannel6
Definition EngineTypes.h:1496
bool operator==(const FCollisionResponseContainer &Other) const
Definition EngineTypes.h:1539
uint8 Visibility
Definition EngineTypes.h:1476
Definition Color.h:486
static CORE_API const FColor Blue
Definition Color.h:754
static CORE_API const FColor Red
Definition Color.h:752
static CORE_API const FColor Yellow
Definition Color.h:755
static CORE_API const FColor Green
Definition Color.h:753
static CORE_API const FColor Black
Definition Color.h:750
Definition EngineTypes.h:3704
Definition EngineTypes.h:3855
FComponentSocketDescription(FName SocketName, EComponentSocketType::Type SocketType)
Definition EngineTypes.h:3868
TEnumAsByte< EComponentSocketType::Type > Type
Definition EngineTypes.h:3860
FName Name
Definition EngineTypes.h:3857
FComponentSocketDescription()
Definition EngineTypes.h:3862
Definition EngineTypes.h:3650
Definition EngineTypes.h:3929
float GetMinValue() const
Definition EngineTypes.h:4004
int GetNumSamples() const
Definition EngineTypes.h:4016
void AddSample(float const &FloatValue)
Definition EngineTypes.h:3975
float GetMinMaxRange() const
Definition EngineTypes.h:3998
float GetMaxValue() const
Definition EngineTypes.h:4010
FDebugFloatHistory(int32 const &InMaxSamples, float const &InMinValue, float const &InMaxValue, bool const &InbAutoAdjustMinMax)
Definition EngineTypes.h:3961
TArray< float > const & GetSamples() const
Definition EngineTypes.h:4022
Definition EngineTypes.h:4031
bool operator==(const FDepthFieldGlowInfo &Other) const
Definition EngineTypes.h:4064
bool operator!=(const FDepthFieldGlowInfo &Other) const
Definition EngineTypes.h:4081
Definition EngineTypes.h:122
FDetachmentTransformRules(EDetachmentRule InRule, bool bInCallModify)
Definition EngineTypes.h:127
FDetachmentTransformRules(const FAttachmentTransformRules &AttachmentRules, bool bInCallModify)
Definition EngineTypes.h:141
EDetachmentRule LocationRule
Definition EngineTypes.h:149
bool bCallModify
Definition EngineTypes.h:158
EDetachmentRule ScaleRule
Definition EngineTypes.h:155
EDetachmentRule RotationRule
Definition EngineTypes.h:152
static ENGINE_API FDetachmentTransformRules KeepRelativeTransform
Definition EngineTypes.h:124
static ENGINE_API FDetachmentTransformRules KeepWorldTransform
Definition EngineTypes.h:125
FDetachmentTransformRules(EDetachmentRule InLocationRule, EDetachmentRule InRotationRule, EDetachmentRule InScaleRule, bool bInCallModify)
Definition EngineTypes.h:134
Definition EngineTypes.h:3237
bool IsValid() const
Definition EngineTypes.h:3286
FDisplacementFadeRange(float InStartSizePixels, float InEndSizePixels)
Definition EngineTypes.h:3267
FDisplacementFadeRange()
Definition EngineTypes.h:3261
bool operator==(const FDisplacementFadeRange &Other) const
Definition EngineTypes.h:3274
bool operator!=(const FDisplacementFadeRange &Other) const
Definition EngineTypes.h:3281
Definition EngineTypes.h:3204
bool operator!=(const FDisplacementScaling &Other) const
Definition EngineTypes.h:3229
bool operator==(const FDisplacementScaling &Other) const
Definition EngineTypes.h:3221
Definition EngineTypes.h:4090
Definition EngineTypes.h:1898
Definition Guid.h:109
Definition EngineTypes.h:562
Definition EngineTypes.h:2251
Definition EngineTypes.h:2151
Definition EngineTypes.h:2116
Definition EngineTypes.h:2144
Definition EngineTypes.h:2167
friend bool operator==(const FLightmassPrimitiveSettings &A, const FLightmassPrimitiveSettings &B)
Definition EngineTypes.h:2226
Definition Color.h:48
Definition EngineTypes.h:2418
Definition EngineTypes.h:732
FMaterialShadingModelField()
Definition EngineTypes.h:736
void AddShadingModel(EMaterialShadingModel InShadingModel)
Definition EngineTypes.h:739
bool operator!=(const FMaterialShadingModelField &Other) const
Definition EngineTypes.h:767
bool IsUnlit() const
Definition EngineTypes.h:758
bool HasOnlyShadingModel(EMaterialShadingModel InShadingModel) const
Definition EngineTypes.h:757
bool operator==(const FMaterialShadingModelField &Other) const
Definition EngineTypes.h:766
void RemoveShadingModel(EMaterialShadingModel InShadingModel)
Definition EngineTypes.h:740
bool HasShadingModel(EMaterialShadingModel InShadingModel) const
Definition EngineTypes.h:756
bool IsLit() const
Definition EngineTypes.h:759
bool HasAnyShadingModel(const TArray< EMaterialShadingModel > &InShadingModels) const
Definition EngineTypes.h:744
void ClearShadingModels()
Definition EngineTypes.h:741
EMaterialShadingModel GetFirstShadingModel() const
Definition EngineTypes.h:764
void SetShadingModelField(uint16 InShadingModelField)
Definition EngineTypes.h:762
FMaterialShadingModelField(EMaterialShadingModel InShadingModel)
Definition EngineTypes.h:737
uint16 GetShadingModelField() const
Definition EngineTypes.h:761
int32 CountShadingModels() const
Definition EngineTypes.h:763
bool IsValid() const
Definition EngineTypes.h:760
static constexpr UE_FORCEINLINE_HINT auto DegreesToRadians(T const &DegVal) -> decltype(DegVal *(UE_PI/180.f))
Definition UnrealMathUtility.h:871
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
static UE_FORCEINLINE_HINT int32 Memcmp(const void *Buf1, const void *Buf2, SIZE_T Count)
Definition UnrealMemory.h:114
Definition EngineTypes.h:2708
bool operator==(const FMeshBuildSettings &Other) const
Definition EngineTypes.h:2828
bool operator!=(const FMeshBuildSettings &Other) const
Definition EngineTypes.h:2851
Definition EngineTypes.h:2993
bool operator!=(const FMeshDisplacementMap &Other) const
Definition EngineTypes.h:3015
bool operator==(const FMeshDisplacementMap &Other) const
Definition EngineTypes.h:3008
Definition EngineTypes.h:3040
bool operator==(const FMeshNaniteSettings &Other) const
Definition EngineTypes.h:3158
bool operator!=(const FMeshNaniteSettings &Other) const
Definition EngineTypes.h:3196
Definition EngineTypes.h:3294
bool operator!=(const FMeshRayTracingProxySettings &Other) const
Definition EngineTypes.h:3337
bool operator==(const FMeshRayTracingProxySettings &Other) const
Definition EngineTypes.h:3326
Definition NaniteAssemblyData.h:100
Definition EngineTypes.h:2673
FRotator Rotation
Definition EngineTypes.h:2682
FVector Location
Definition EngineTypes.h:2678
friend FArchive & operator<<(FArchive &Ar, FPOV &POV)
Definition EngineTypes.h:2697
float FOV
Definition EngineTypes.h:2686
FPOV(FVector InLocation, FRotator InRotation, float InFOV)
Definition EngineTypes.h:2692
Definition PropertyTag.h:38
Definition EngineTypes.h:3903
FRedirector(FName InOldName, FName InNewName)
Definition EngineTypes.h:3918
Definition EngineTypes.h:3601
uint32 bNetSimulated
Definition EngineTypes.h:3611
FReplicationFlags()
Definition EngineTypes.h:3639
uint32 bUseCustomSubobjectReplication
Definition EngineTypes.h:3627
uint32 bNetOwner
Definition EngineTypes.h:3607
uint32 Padding0
Definition EngineTypes.h:3631
uint32 bSkipRoleSwap
Definition EngineTypes.h:3619
uint32 bSerializePropertyNames
Definition EngineTypes.h:3625
uint32 Value
Definition EngineTypes.h:3637
uint32 bNetInitial
Definition EngineTypes.h:3609
uint32 bForceInitialDirty
Definition EngineTypes.h:3623
uint32 CondDynamicChangeCounter
Definition EngineTypes.h:3634
uint32 bReplay
Definition EngineTypes.h:3615
uint32 bRepPhysics
Definition EngineTypes.h:3613
uint32 bRolesOnly
Definition EngineTypes.h:3621
uint32 bIgnoreRPCs
Definition EngineTypes.h:3617
uint32 bClientReplay
Definition EngineTypes.h:3629
Definition EngineTypes.h:1307
bool operator==(const FResponseChannel &Other) const
Definition EngineTypes.h:1327
FResponseChannel(FName InChannel, ECollisionResponse InResponse)
Definition EngineTypes.h:1323
Definition EngineTypes.h:1806
FRigidBodyContactInfo(const FVector &InContactPosition, const FVector &InContactNormal, float InPenetration, bool bInProbe, UPhysicalMaterial *InPhysMat0, UPhysicalMaterial *InPhysMat1)
Definition EngineTypes.h:1842
Definition EngineTypes.h:1719
Definition EngineTypes.h:1955
FQuat GetCachedQuat() const
Definition EngineTypes.h:2039
FQuat RotatorToQuat(const FRotator &InRotator) const
Definition EngineTypes.h:1961
FRotationConversionCache()
Definition EngineTypes.h:1956
FRotator QuatToRotator(const FQuat &InQuat) const
Definition EngineTypes.h:1987
FRotator GetCachedRotator() const
Definition EngineTypes.h:2049
FRotator NormalizedQuatToRotator_ReadOnly(const FQuat &InNormalizedQuat) const
Definition EngineTypes.h:2025
FRotator NormalizedQuatToRotator(const FQuat &InNormalizedQuat) const
Definition EngineTypes.h:2013
FRotator QuatToRotator_ReadOnly(const FQuat &InQuat) const
Definition EngineTypes.h:1999
FRotationConversionCache & operator=(const FRotationConversionCache &Other)
Definition EngineTypes.h:2058
FQuat RotatorToQuat_ReadOnly(const FRotator &InRotator) const
Definition EngineTypes.h:1973
Definition EngineTypes.h:2862
bool operator!=(const FSkeletalMeshBuildSettings &Other) const
Definition EngineTypes.h:2965
bool operator==(const FSkeletalMeshBuildSettings &Other) const
Definition EngineTypes.h:2946
Definition EngineTypes.h:3732
Definition EngineTypes.h:840
void AddPropertyConnected(uint64 In)
Definition EngineTypes.h:872
void AddSubsurfaceProfile(USubsurfaceProfile *InProfile)
Definition EngineTypes.h:854
bool HasShadingModel(ESubstrateShadingModel InShadingModel) const
Definition EngineTypes.h:848
USpecularProfile * GetSpecularProfile(int32 Index) const
Definition EngineTypes.h:861
int32 CountShadingModels() const
Definition EngineTypes.h:851
int32 CountSpecularProfiles() const
Definition EngineTypes.h:860
void SetShadingModelFromExpression(bool bIn)
Definition EngineTypes.h:864
uint32 GetShadingModelField() const
Definition EngineTypes.h:850
USubsurfaceProfile * GetSubsurfaceProfile(int32 Index) const
Definition EngineTypes.h:856
bool HasShadingModelFromExpression() const
Definition EngineTypes.h:865
const TArray< FGuid > & GetGuids() const
Definition EngineTypes.h:869
bool HasOnlyShadingModel(ESubstrateShadingModel InShadingModel) const
Definition EngineTypes.h:849
bool HasPropertyConnected(uint64 In) const
Definition EngineTypes.h:873
bool IsValid() const
Definition EngineTypes.h:876
void SetSingleShadingModel(ESubstrateShadingModel InShadingModel)
Definition EngineTypes.h:847
bool operator==(const FSubstrateMaterialInfo &Other) const
Definition EngineTypes.h:878
int32 CountSubsurfaceProfiles() const
Definition EngineTypes.h:855
void AddGuid(const FGuid &In)
Definition EngineTypes.h:868
FSubstrateMaterialInfo(bool bGatherGuids=false)
Definition EngineTypes.h:842
void AddShadingModel(ESubstrateShadingModel InShadingModel)
Definition EngineTypes.h:846
static bool HasPropertyConnected(uint64 InConnectedPropertyMask, uint64 In)
Definition EngineTypes.h:874
FSubstrateMaterialInfo(ESubstrateShadingModel InShadingModel)
Definition EngineTypes.h:843
void AddSpecularProfile(USpecularProfile *InProfile)
Definition EngineTypes.h:859
bool operator!=(const FSubstrateMaterialInfo &Other) const
Definition EngineTypes.h:879
uint64 GetPropertyConnected() const
Definition EngineTypes.h:871
Definition EngineTypes.h:2097
Definition EngineTypes.h:2347
Definition EngineTypes.h:4199
FUserActivity(const FString &InActionName, EUserActivityContext InContext)
Definition EngineTypes.h:4221
FUserActivity(const FString &InActionName)
Definition EngineTypes.h:4215
Definition EngineTypes.h:606
static constexpr uint8 GetMaskDefault()
Definition EngineTypes.h:643
Definition EngineTypes.h:3483
void SetWalkableSlopeAngle(float NewSlopeAngle)
Definition EngineTypes.h:3543
FWalkableSlopeOverride(EWalkableSlopeBehavior NewSlopeBehavior, float NewSlopeAngle)
Definition EngineTypes.h:3516
float GetWalkableSlopeAngle() const
Definition EngineTypes.h:3531
float ModifyWalkableFloorZ(float InWalkableFloorZ) const
Definition EngineTypes.h:3549
void SetWalkableSlopeBehavior(EWalkableSlopeBehavior NewSlopeBehavior)
Definition EngineTypes.h:3537
EWalkableSlopeBehavior GetWalkableSlopeBehavior() const
Definition EngineTypes.h:3525
Definition IsPODType.h:12
@ Value
Definition IsPODType.h:13
Definition UnrealTypeTraits.h:172
Definition ObjectPtr.h:488
Definition SoftObjectPtr.h:174
Definition StructOpsTypeTraits.h:11
@ WithStructuredSerializeFromMismatchedTag
Definition StructOpsTypeTraits.h:29
@ WithSerializer
Definition StructOpsTypeTraits.h:23
@ WithPostSerialize
Definition StructOpsTypeTraits.h:25
Definition StructOpsTypeTraits.h:46
Definition WeakObjectPtrTemplates.h:25
static CORE_API const TQuat< double > Identity
Definition Quat.h:63
TRotator< T > GetNormalized() const
Definition Rotator.h:749
static CORE_API const TRotator< double > ZeroRotator
Definition Rotator.h:57