UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ISMPartitionActor.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
10#include "Templates/Tuple.h"
13#include "ISMPartitionActor.generated.h"
14
16
19UCLASS(Abstract, MinimalAPI)
21{
23
24public:
25#if WITH_EDITOR
26 //~ Begin AActor Interface
27 ENGINE_API virtual void PreEditUndo() override;
28 ENGINE_API virtual void PostEditUndo() override;
29 //~ End AActor Interface
30
33
36
38 const FISMComponentDescriptor& GetISMComponentDescriptor(int32 DescriptorIndex) const { return Descriptors[DescriptorIndex]; }
39
41 ENGINE_API void RemoveISMInstance(const FISMClientHandle& Handle, int32 InstanceIndex, bool* bOutIsEmpty = nullptr);
45 ENGINE_API int32 GetISMInstanceIndex(const FISMClientHandle& Handle, const UInstancedStaticMeshComponent* ISMComponent, int32 ComponentIndex) const;
48
49 ENGINE_API bool IsISMComponent(const UPrimitiveComponent* Component) const;
50 ENGINE_API void BeginUpdate();
51 ENGINE_API void EndUpdate();
52 ENGINE_API void UpdateHISMTrees(bool bAsync, bool bForce);
55 ENGINE_API void ForEachClientSMInstance(const FISMClientHandle& Handle, int32 InstanceIndex, TFunctionRef<bool(FSMInstanceId)> Callback) const;
56 ENGINE_API void OutputStats() const;
57
58protected:
59
60private:
62
64 ENGINE_API int32 AddInstanceToComponent(FISMComponentData& ComponentData, const FTransform& WorldTransform);
65 ENGINE_API void UpdateInstanceTransform(FISMComponentData& ComponentData, int32 ComponentInstanceIndex, const FTransform& WorldTransform, bool bTeleport);
68 ENGINE_API void ModifyComponent(FISMComponentData& ComponentData);
69 ENGINE_API void CreateComponent(const FISMComponentDescriptor& Descriptor, FISMComponentData& ComponentData);
71#endif
72
73private:
74 //~ ISMInstanceManager interface
75 ENGINE_API virtual FText GetSMInstanceDisplayName(const FSMInstanceId& InstanceId) const override final;
76 ENGINE_API virtual FText GetSMInstanceTooltip(const FSMInstanceId& InstanceId) const override final;
77 ENGINE_API virtual bool CanEditSMInstance(const FSMInstanceId& InstanceId) const override final;
78 ENGINE_API virtual bool CanMoveSMInstance(const FSMInstanceId& InstanceId, const ETypedElementWorldType WorldType) const override final;
79 ENGINE_API virtual bool GetSMInstanceTransform(const FSMInstanceId& InstanceId, FTransform& OutInstanceTransform, bool bWorldSpace = false) const override final;
80 ENGINE_API virtual bool SetSMInstanceTransform(const FSMInstanceId& InstanceId, const FTransform& InstanceTransform, bool bWorldSpace = false, bool bMarkRenderStateDirty = false, bool bTeleport = false) override final;
81 ENGINE_API virtual void NotifySMInstanceMovementStarted(const FSMInstanceId& InstanceId) override final;
82 ENGINE_API virtual void NotifySMInstanceMovementOngoing(const FSMInstanceId& InstanceId) override final;
83 ENGINE_API virtual void NotifySMInstanceMovementEnded(const FSMInstanceId& InstanceId) override final;
84 ENGINE_API virtual void NotifySMInstanceSelectionChanged(const FSMInstanceId& InstanceId, const bool bIsSelected) override final;
85 ENGINE_API virtual void ForEachSMInstanceInSelectionGroup(const FSMInstanceId& InstanceId, TFunctionRef<bool(FSMInstanceId)> Callback) override final;
86 ENGINE_API virtual bool CanDeleteSMInstance(const FSMInstanceId& InstanceId) const override final;
87 ENGINE_API virtual bool DeleteSMInstances(TArrayView<const FSMInstanceId> InstanceIds) override final;
88 ENGINE_API virtual bool CanDuplicateSMInstance(const FSMInstanceId& InstanceId) const override final;
89 ENGINE_API virtual bool DuplicateSMInstances(TArrayView<const FSMInstanceId> InstanceIds, TArray<FSMInstanceId>& OutNewInstanceIds) override final;
90
91#if WITH_EDITOR
92 ENGINE_API FISMPartitionInstanceManager GetISMPartitionInstanceManager(const FSMInstanceId& InstanceId) const;
94#endif
95
96protected:
97 //~ ISMInstanceManagerProvider interface
98 ENGINE_API virtual ISMInstanceManager* GetSMInstanceManager(const FSMInstanceId& InstanceId) override /*final*/; // Note: This should also be final and private, but AInstancedFoliageActor needs to override it to support ISMC foliage
99
100private:
101#if WITH_EDITORONLY_DATA
102 UPROPERTY()
104
105 UPROPERTY()
107
108 UPROPERTY()
110
111 UPROPERTY()
113
116
118 bool bWasModifyCalled;
119#endif
120};
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
ETypedElementWorldType
Definition TypedElementWorldInterface.h:26
Definition ISMPartitionActor.h:21
Definition PartitionActor.h:17
Definition Text.h:385
Definition ISMPartitionInstanceManager.h:135
Definition ISMPartitionInstanceManager.h:24
Definition SMInstanceManager.h:177
Definition SMInstanceManager.h:26
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SortedMap.h:20
Definition InstancedStaticMeshComponent.h:158
Definition Guid.h:109
Definition ISMComponentData.h:59
Definition ISMPartitionClient.h:10
Definition ISMComponentData.h:70
Definition ISMComponentDescriptor.h:257
Definition ISMPartitionInstanceManager.h:150
Definition SMInstanceElementId.h:20