Guest User

BuildingISMComponent.h

a guest
Jul 22nd, 2025
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include "CoreMinimal.h"
  4. #include "Components/InstancedStaticMeshComponent.h"
  5. #include "BuildingISMComponent.generated.h"
  6.  
  7.  
  8. UCLASS(ClassGroup = (Rendering, Common), hidecategories = (Object, Activation, "Components|Activation"),
  9.     ShowCategories = (Mobility), editinlinenew, meta = (BlueprintSpawnableComponent))
  10.     class LOFILIFESIM_API UBuildingISMComponent : public UInstancedStaticMeshComponent
  11. {
  12.     GENERATED_BODY()
  13.  
  14. public:
  15.  
  16.     DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnInstanceAdded, int32, InstanceIndex, FTransform, InstanceTransform);
  17.  
  18.     DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnInstanceRemoved, int32, InstanceIndex, FTransform, LastTransform);
  19.  
  20.     DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FOnInstanceMoved, int32, OldIndex, FTransform, OldTransform, int32, NewIndex, FTransform, NewTransform);
  21.  
  22.     UBuildingISMComponent(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
  23.  
  24.     UPROPERTY(BlueprintAssignable, Category = "Instance Events")
  25.     FOnInstanceAdded OnInstanceAdded;
  26.  
  27.     UPROPERTY(BlueprintAssignable, Category = "Instance Events")
  28.     FOnInstanceRemoved OnInstanceRemoved;
  29.  
  30.     UPROPERTY(BlueprintAssignable, Category = "Instance Events")
  31.     FOnInstanceMoved OnInstanceMoved;
  32.  
  33. protected:
  34.     virtual void BeginPlay() override;
  35.     virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
  36.  
  37. public:
  38.     void HandleInstanceIndexUpdated(UInstancedStaticMeshComponent* InComponent, TArrayView<const FInstancedStaticMeshDelegates::FInstanceIndexUpdateData> InIndexUpdates);
  39.  
  40.     bool IsValidInstanceIndex(int32 Index) const;
  41.  
  42. protected:
  43.     // Internal delegate binding
  44.     void BindToInternalDelegates();
  45.     void UnbindFromInternalDelegates();
  46.  
  47. private:
  48.     // Track if we've bound to internal delegates
  49.     bool bDelegatesBound;
  50.  
  51.     // Cache transforms to provide data for removal events
  52.     UPROPERTY()
  53.     TMap<int32, FTransform> CachedInstanceTransforms;
  54. };
Advertisement
Add Comment
Please, Sign In to add comment