From 4ce6b3260739e3917728aaec44ebded5b881012c Mon Sep 17 00:00:00 2001 From: koritsa Date: Tue, 19 May 2026 23:59:58 +0300 Subject: [PATCH] Define UItemInstance base UObject with stable GUID --- Source/NakedDesire/Items/ItemInstance.cpp | 17 +++++++++++++++++ Source/NakedDesire/Items/ItemInstance.h | 22 ++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 Source/NakedDesire/Items/ItemInstance.cpp create mode 100644 Source/NakedDesire/Items/ItemInstance.h diff --git a/Source/NakedDesire/Items/ItemInstance.cpp b/Source/NakedDesire/Items/ItemInstance.cpp new file mode 100644 index 00000000..a7939240 --- /dev/null +++ b/Source/NakedDesire/Items/ItemInstance.cpp @@ -0,0 +1,17 @@ +#include "ItemInstance.h" + +void UItemInstance::PostInitProperties() +{ + Super::PostInitProperties(); + + if (HasAnyFlags(RF_ClassDefaultObject | RF_ArchetypeObject | RF_NeedLoad)) + return; + if (!InstanceID.IsValid()) + InstanceID = FGuid::NewGuid(); +} + +void UItemInstance::PostDuplicate(EDuplicateMode::Type DuplicateMode) +{ + Super::PostDuplicate(DuplicateMode); + InstanceID = FGuid::NewGuid(); +} diff --git a/Source/NakedDesire/Items/ItemInstance.h b/Source/NakedDesire/Items/ItemInstance.h new file mode 100644 index 00000000..ccd34264 --- /dev/null +++ b/Source/NakedDesire/Items/ItemInstance.h @@ -0,0 +1,22 @@ +#pragma once + +#include "CoreMinimal.h" +#include "UObject/Object.h" +#include "ItemInstance.generated.h" + +UCLASS(Abstract) +class NAKEDDESIRE_API UItemInstance : public UObject +{ + GENERATED_BODY() + +public: + virtual void PostInitProperties() override; + virtual void PostDuplicate(EDuplicateMode::Type DuplicateMode) override; + + UFUNCTION(BlueprintPure, Category = "Item") + FGuid GetInstanceID() const { return InstanceID; } + +private: + UPROPERTY(VisibleAnywhere, SaveGame, BlueprintReadOnly, Category = "Item", meta = (AllowPrivateAccess = "true")) + FGuid InstanceID; +};