KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
luggage.h
이 파일의 문서화 페이지로 가기
1// Copyright (c) 2025 Doppleddiggong. All rights reserved. Unauthorized copying, modification, or distribution of this file, via any medium is strictly prohibited. Proprietary and confidential.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "NetworkData.h"
7#include "GameFramework/Actor.h"
8#include "luggage.generated.h"
9
13UCLASS()
14class ONEPIECE_API Aluggage : public AActor
15{
16 GENERATED_BODY()
17
18public:
19 Aluggage();
20
21 virtual void BeginPlay() override;
22 virtual void Tick(float DeltaTime) override;
23
24 virtual void GetLifetimeReplicatedProps(TArray<class FLifetimeProperty>& OutLifetimeProps) const override;
25
26public:
27 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
28 TObjectPtr<class UBoxComponent> BoxComp;
29
30 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
31 TObjectPtr<class UStaticMeshComponent> Mesh1Comp;
32 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
33 TObjectPtr<class UStaticMeshComponent> Mesh2Comp;
34 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
35 TObjectPtr<class UStaticMeshComponent> Mesh3Comp;
36
37 UPROPERTY(VisibleAnywhere)
38 TObjectPtr<class UInteractableComponent> InteractableComp;
39 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
40 TObjectPtr<class UWidgetComponent> WidgetComp;
41
42 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
43 TObjectPtr<class UHookComponent> HookComp;
44
45 //--------------------------------------------------------------//
46 // Hook State (for preventing duplicate hooks)
47 //--------------------------------------------------------------//
48
54 UPROPERTY(ReplicatedUsing=OnRep_IsBeingHooked, BlueprintReadOnly, Category = "Hook")
55 bool bIsBeingHooked = false;
56
61 UPROPERTY(Replicated, BlueprintReadOnly, Category = "Hook")
62 TObjectPtr<AActor> HookedBy = nullptr;
63
68 UFUNCTION()
69 void OnRep_IsBeingHooked();
70
71protected:
72 // Collision state replication (clients also disable physics when holder claims the luggage)
73 UPROPERTY(ReplicatedUsing=OnRep_CollisionEnabled)
74 bool bCollisionEnabled = true;
75
76 UFUNCTION()
77 void OnRep_CollisionEnabled();
78
79 void ApplyCollisionState(bool bEnable);
80
81 //--------------------------------------------------------------//
82 // Luggage Info
83 //--------------------------------------------------------------//
84
85 // @brief 캐리어의 인덱스
86 int32 SpawnIdx = -1;
87 // @brief 캐리어의 색상
88 FString Color = "";
89 // @brief 캐리어의 무늬
90 FString Pattern = "";
91
92public:
93 UFUNCTION(BlueprintCallable)
94 void SetLuggageInfo(int32 InIdx, FString InColor, FString InPattern);
95
96 FORCEINLINE int32 GetSpawnIdx() {return SpawnIdx;}
97 FORCEINLINE FString GetColor() {return Color;}
98 FORCEINLINE FString GetPattern() {return Pattern;}
99
100public:
101 // 색상의 인덱스값
102 UPROPERTY(ReplicatedUsing=OnRep_ColorIdx)
103 int32 ColorIdx = -1;
104 // 무늬의 인덱스값
105 UPROPERTY(ReplicatedUsing=OnRep_PatternIdx)
106 int32 PatternIdx = -1;
107
108 UFUNCTION()
109 void OnRep_ColorIdx();
110
111 UFUNCTION()
112 void OnRep_PatternIdx();
113
114 // 캐리어 색상 변경
115 void ApplyColorToMesh(int32 InColorIdx);
116 // 캐리어 무늬 변경
117 void ApplyPatternToMesh(int32 InPatternIdx);
118
119public:
123 UFUNCTION(BlueprintCallable, Category = "Collision")
124 void SetAllCollision(bool bEnable);
125
126private:
127 void UpdateWidget();
128 bool bWidgetInitialized = false;
129
130public:
131 //--------------------------------------------------------------//
132 // Read Quest Data
133 //--------------------------------------------------------------//
134
136 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Quest")
137 FString Target1;
138
140 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Quest")
141 FString Target2;
142
145 UFUNCTION(BlueprintCallable, Category = "Interaction")
146 void OnInteract(AActor* Interactor);
147
150 UFUNCTION(Server, Reliable, WithValidation)
151 void ServerNotifySelection(class APlayerState* Player);
152
155 UFUNCTION()
156 void OnOutlineStateChanged(bool bShouldShowOutline);
157
158 // Update Dissolve
159 bool UpdateDissolve();
160
161protected:
162 // Dissolve Value
163 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Dissolve")
164 TObjectPtr<class UMaterialInterface> cubeBodyMaterial;
165
166 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Dissolve")
167 TObjectPtr<class UMaterialInterface> cubeStickerMaterial;
168
169 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Dissolve")
170 TObjectPtr<class UMaterialInterface> cubeCoverMaterial;
171
172 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Dissolve")
173 TObjectPtr<class UMaterialInstanceDynamic> cubeBodyMID;
174
175 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Dissolve")
176 TObjectPtr<class UMaterialInstanceDynamic> cubeStickerMID;
177
178 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Dissolve")
179 TObjectPtr<class UMaterialInstanceDynamic> cubeCoverMID;
180
181 const float dissolveMaxVal = 3.2f;
182 float dissolveVal = -1.2f;
183 float dissolveSpeed = 0.08f;
184
185public:
186 void PlayTTSAudio();
187
188private:
189 bool bIsRequest;
190
191 void RequestListenAudio(const FString& AudioText);
192 void OnResponseListenAudio(FResponseListenAudio& ResponseData, bool bWasSuccessful);
193};
네트워크 요청과 응답에 사용되는 구조체 및 설정을 정의합니다.
상호작용 가능한 수하물 액터
Definition luggage.h:15
FORCEINLINE FString GetPattern()
Definition luggage.h:98
FORCEINLINE FString GetColor()
Definition luggage.h:97