17#include "InstancedStaticMeshComponent.generated.h"
22class FStaticLightingTextureMapping_InstancedStaticMesh;
31class FStaticLightingTextureMapping_InstancedStaticMesh;
32class FInstancedLightMap2D;
33class FInstancedShadowMap2D;
43 UPROPERTY(EditAnywhere, Category=Instances)
70 FStaticLightingTextureMapping_InstancedStaticMesh* Mapping;
139 return !(*
this ==
InHash);
166 UPROPERTY(EditAnywhere, SkipSerialization, DisplayName=
"Instances", Category=Instances, meta=(MakeEditWidget=
true, EditFixedOrder))
179 UPROPERTY(EditAnywhere, Category=Instances, AdvancedDisplay)
186 int32 InstancingRandomSeed=0;
192 UPROPERTY(EditAnywhere, EditFixedSize, SkipSerialization, DisplayName=
"Custom data", Category=Instances, AdvancedDisplay, meta=(EditFixedOrder))
203 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Culling)
204 float InstanceLODDistanceScale = 1.f;
207 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Culling)
208 int32 InstanceMinDrawDistance;
211 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Culling)
212 int32 InstanceStartCullDistance;
215 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Culling)
216 int32 InstanceEndCullDistance;
219 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Culling)
220 uint8 bUseGpuLodSelection : 1;
224 uint8 bInheritPerInstanceData : 1;
228 uint8 bDisableCollision : 1;
234 uint8 bSupportRemoveAtSwap : 1;
240 uint8 bHasPreviousTransforms : 1;
243 uint8 bUseConservativeBounds : 1;
246 uint8 bIsUpdatingBounds : 1;
260 UFUNCTION(BlueprintCallable, Category=
"Components|InstancedStaticMesh")
264 UFUNCTION(BlueprintCallable, Category="Components|InstancedStaticMesh")
268 UE_DEPRECATED(5.0, "Use AddInstance or AddInstances with bWorldSpace set to
true.")
269 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh", meta=(DeprecatedFunction, DeprecationMessage="Use '
Add Instance' or '
Add Instances' with '
World Space' set to
true."))
272 return AddInstance(WorldTransform,
true);
312 UFUNCTION(BlueprintCallable, Category =
"Components|InstancedStaticMesh")
316 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
327 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
331 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
332 float GetLODDistanceScale()
const {
return InstanceLODDistanceScale; }
335 UFUNCTION(BlueprintCallable, Category =
"Components|InstancedStaticMesh")
364 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
377 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
400 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
406 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
410 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
420 UFUNCTION(BlueprintCallable, Category="Components|InstancedStaticMesh")
424 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
428 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
432 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
436 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
440 UFUNCTION(BlueprintCallable, Category =
"Components|InstancedStaticMesh")
444 UFUNCTION(BlueprintCallable, Category = "Components|InstancedStaticMesh")
454 void SetRemoveSwap() { bSupportRemoveAtSwap =
true; }
456 ENGINE_API virtual bool SupportsRemoveSwap()
const;
478 ENGINE_API FInstanceDataFlags MakeInstanceDataFlags(
bool bAnyMaterialHasPerInstanceRandom,
bool bAnyMaterialHasPerInstanceCustomData)
const;
482 FBox CachedConservativeInstanceBounds;
514 ENGINE_API virtual bool IsHLODRelevant()
const override;
515 ENGINE_API virtual void SendRenderInstanceData_Concurrent()
override;
522 ENGINE_API virtual void RecreateInstanceBody(
int32 InstanceBodyIndex)
override;
524 ENGINE_API virtual void OnCreatePhysicsState()
override;
525 ENGINE_API virtual void OnDestroyPhysicsState()
override;
527 ENGINE_API virtual void OnAsyncDestroyPhysicsStateBegin_GameThread()
override;
530 ENGINE_API virtual bool CanEditSimulatePhysics()
override;
533 ENGINE_API virtual void UpdateBounds()
override;
567 ENGINE_API virtual bool IsNavigationRelevant()
const override;
568 ENGINE_API virtual bool ShouldSkipDirtyAreaOnAddOrRemove()
const override;
574 ENGINE_API virtual void BeginDestroy()
override;
621 ENGINE_API virtual void PropagateLightingScenarioChange()
override;
626 UE_DEPRECATED(5.4,
"This function has been added only for the purposes of moving LWI code outside of the engine. Don't use it, it will be removed soon.")
627 void OnPostPopulatePerInstanceData() { OnPostLoadPerInstanceData(); }
645 ENGINE_API void SetBakedLightingDataChangedAll();
652 ENGINE_API void InvalidateInstanceDataTracking();
657 return UPrimitiveComponent::GetUsedMaterialPropertyDesc(ShaderPlatform);
661 UE_DEPRECATED(5.7,
"Please use GetUsedMaterialPropertyDesc with EShaderPlatform argument and not ERHIFeatureLevel::Type")
670 ENGINE_API bool ShouldInheritPerInstanceData()
const;
672 void PartialNavigateUpdateForCurrentInstances();
691 void InvalidateCachedBounds();
693 ENGINE_API void CalcAndCacheNavigationBounds();
724 virtual bool SupportsPartialNavigationUpdate()
const {
return true; }
740 FBox GetInstanceNavigationBounds()
const;
787 friend FStaticLightingTextureMapping_InstancedStaticMesh;
805 bool bNavigationCachedBoundsUpdated =
false;
865 Super::AddReferencedObjects(Collector);
892 bool bHasPerInstanceHitProxies =
false;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
EUpdateTransformFlags
Definition ActorComponent.h:95
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define ensure( InExpression)
Definition AssertionMacros.h:464
ECacheApplyPhase
Definition ComponentInstanceDataCache.h:18
@ BeginCacheForCookedPlatformData
@ IsCachedCookedPlatformDataLoaded
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInit
Definition CoreMiscDefines.h:155
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ETeleportType
Definition EngineTypes.h:2401
ECollisionChannel
Definition EngineTypes.h:1088
return true
Definition ExternalRpcRegistry.cpp:601
@ HPP_World
Definition HitProxies.h:28
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
const bool bTraceComplex
Definition PhysicsInterfaceUtils.h:19
EShaderPlatform GetFeatureLevelShaderPlatform(const FStaticFeatureLevel InFeatureLevel)
Definition RHIGlobals.h:961
ETextureStreamingBuildType
Definition TextureStreamingTypes.h:204
ETypedElementWorldType
Definition TypedElementWorldInterface.h:26
Definition Archive.h:1208
Definition ISMInstanceUpdateChangeSet.h:13
Definition LightingBuildOptions.h:14
Definition NameTypes.h:617
Definition ObjectSaveContext.h:244
Definition ISMInstanceDataManager.h:45
Definition PrimitiveSceneProxy.h:296
Definition UnrealType.h:174
Definition UObjectGlobals.h:2492
Definition StaticMeshResources.h:1031
Definition TextureStreamingTypes.h:223
Definition ObjectMacros.h:180
Definition HitProxies.h:135
Definition SMInstanceManager.h:26
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
Definition RefCounting.h:454
Definition SharedPointer.h:692
Definition StructOnScope.h:142
Definition ActorComponent.h:152
Definition BodySetup.h:128
Definition InstancedStaticMeshComponent.h:158
void SetUseConservativeBounds(bool bValue)
Definition InstancedStaticMeshComponent.h:463
FPrimitiveMaterialPropertyDescriptor GetUsedMaterialPropertyDesc(EShaderPlatform ShaderPlatform) const
Definition InstancedStaticMeshComponent.h:655
void SetCustomDataById(FPrimitiveInstanceId InstanceId, TArrayView< const float > CustomDataFloats)
Definition InstancedStaticMeshComponent.h:289
int32 GetInstanceIndexForId(FPrimitiveInstanceId InstanceId) const
Definition InstancedStaticMeshComponent.h:307
uint8 bIsInstanceDataApplyCompleted
Definition InstancedStaticMeshComponent.h:237
void RemoveInstanceById(FPrimitiveInstanceId InstanceId)
Definition InstancedStaticMeshComponent.h:295
virtual int32 GetNumRenderInstances() const
Definition InstancedStaticMeshComponent.h:619
virtual FVector GetTranslatedInstanceSpaceOrigin() const
Definition InstancedStaticMeshComponent.h:598
virtual bool SupportsStaticLighting() const override
Definition InstancedStaticMeshComponent.h:535
int32 GetNumInstances() const
Definition InstancedStaticMeshComponent.h:275
TArray< FBodyInstance * > InstanceBodies
Definition InstancedStaticMeshComponent.h:509
EBoundsCacheType
Definition InstancedStaticMeshComponent.h:705
Definition StaticMesh.h:593
int32 FPhysicsObjectId
Definition PhysicsObject.h:20
Definition DebugViewModeHelpers.h:17
Type
Definition ICursor.h:18
Definition SceneComponent.h:24
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition PhysicsObjectInternal.h:16
Definition BodyInstance.h:320
Definition InstancedStaticMeshComponent.h:99
void Invalidate()
Definition InstancedStaticMeshComponent.h:109
void CacheValue(const FBoxSphereBounds &InValue, uint32 InHash=0)
Definition InstancedStaticMeshComponent.h:119
bool IsValid() const
Definition InstancedStaticMeshComponent.h:114
const FBoxSphereBounds & GetValue(bool bCheckValid=true) const
Definition InstancedStaticMeshComponent.h:126
Definition CollisionQueryParams.h:430
static ENGINE_API FCollisionObjectQueryParams DefaultObjectQueryParam
Definition CollisionQueryParams.h:538
Definition CollisionQueryParams.h:43
Definition CollisionShape.h:21
Definition CollisionQueryParams.h:297
Definition ConvexVolume.h:44
Definition HitResult.h:21
Definition ISMInstanceDataManager.h:17
int32 NumCustomDataFloats
Definition ISMInstanceDataManager.h:29
Definition InstancedStaticMeshComponent.h:840
virtual void AddReferencedObjects(FReferenceCollector &Collector) override
Definition InstancedStaticMeshComponent.h:863
virtual bool ContainsData() const override
Definition InstancedStaticMeshComponent.h:850
virtual ~FInstancedStaticMeshComponentInstanceData()=default
FInstancedStaticMeshComponentInstanceData(const UInstancedStaticMeshComponent *InComponent)
Definition InstancedStaticMeshComponent.h:844
FInstancedStaticMeshComponentInstanceData()=default
virtual void ApplyToComponent(UActorComponent *Component, const ECacheApplyPhase CacheApplyPhase) override
Definition InstancedStaticMeshComponent.h:855
Definition InstancedStaticMeshComponent.h:40
friend FArchive & operator<<(FArchive &Ar, FInstancedStaticMeshInstanceData &InstanceData)
Definition InstancedStaticMeshComponent.h:56
FInstancedStaticMeshInstanceData(const FMatrix &InTransform)
Definition InstancedStaticMeshComponent.h:51
Definition InstancedStaticMeshComponent.h:825
Definition InstancedStaticMeshComponent.h:67
Definition InstancedStaticMeshComponent.h:80
Definition NavigationSystemHelpers.h:25
Definition NavigationRelevantData.h:40
Definition PSOPrecache.h:30
Definition InstanceDataTypes.h:19
Definition TextureStreamingTypes.h:188
Definition SceneTypes.h:237
Definition UnrealType.h:7001
Definition ResourceSize.h:31
Definition SMInstanceElementId.h:20
Definition SceneComponent.h:1743
Definition StaticLighting.h:506
Definition TextureStreamingTypes.h:37
Definition TypedElementHandle.h:18
Definition InstancedStaticMeshComponent.h:810
int32 InstanceIndex
Definition InstancedStaticMeshComponent.h:812
HInstancedStaticMeshInstance(UInstancedStaticMeshComponent *InComponent, int32 InInstanceIndex)
Definition InstancedStaticMeshComponent.h:815
DECLARE_HIT_PROXY(ENGINE_API)
TObjectPtr< UInstancedStaticMeshComponent > Component
Definition InstancedStaticMeshComponent.h:811
Definition NaniteSceneProxy.h:66
Definition ObjectPtr.h:488
Definition LightweightStats.h:416
Definition BoxSphereBounds.h:25
static TVector< double > Zero()
Definition Vector.h:112
Definition InstanceDataTypes.h:36