LEAP Documentation 40220
Documentation for the LEAP project
CosmeticsComponent.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4
5#include "CosmeticsManager.h"
6#include "Engine/StreamableManager.h"
7#include "CosmeticsComponent.generated.h"
8
9USTRUCT(Blueprintable)
11{
12 GENERATED_USTRUCT_BODY()
14 FKeyChain(const TSoftObjectPtr<USkeletalMesh> KeyChainMeshIn, const TArray<TSoftObjectPtr<UMaterialInstance>>& KeyChainMaterailsIn)
15 {
16 KeyChainMesh = KeyChainMeshIn;
17 KeyChainMaterials = KeyChainMaterailsIn;
18 }
19
20 TSoftObjectPtr<USkeletalMesh> KeyChainMesh;
21 TArray<TSoftObjectPtr<UMaterialInstance>> KeyChainMaterials;
22};
23
24USTRUCT(BlueprintType)
26{
27 GENERATED_BODY()
29 {
30 Materials = TArray<TSoftObjectPtr<UMaterialInstance>>();
31 VehicleMesh = NULL;
32 ParticleSystem = NULL;
33 }
34 FVehicleSkin(const TArray<TSoftObjectPtr<UMaterialInstance>>& NewMaterials, const TSoftObjectPtr<USkeletalMesh>& NewVehicleMesh,const TSoftObjectPtr<UParticleSystem> NewParticleSystem)
35 {
36 Materials = NewMaterials;
37 VehicleMesh = NewVehicleMesh;
38 ParticleSystem = NewParticleSystem;
39 }
40
41 UPROPERTY()
42 TArray<TSoftObjectPtr<UMaterialInstance>> Materials = TArray<TSoftObjectPtr<UMaterialInstance>>();
43 UPROPERTY()
44 TSoftObjectPtr<UParticleSystem> ParticleSystem = NULL;
45 UPROPERTY()
46 TSoftObjectPtr<USkeletalMesh> VehicleMesh = NULL;
47};
48
49USTRUCT(BlueprintType)
51{
52 GENERATED_BODY()
54 {
55 Materials = TArray<TSoftObjectPtr<UMaterialInstance>>();
56 WeaponMesh1P = NULL;
57 WeaponMesh3P = NULL;
58 ParticleSystem = NULL;
59 }
60 FWeaponSkin(const TArray<TSoftObjectPtr<UMaterialInstance>>& NewMaterials, const TSoftObjectPtr<USkeletalMesh>& NewWeaponMesh1P, const TSoftObjectPtr<USkeletalMesh>& NewWeaponMesh3P, const TSoftObjectPtr<UParticleSystem> NewParticleSystem)
61 {
62 Materials = NewMaterials;
63 WeaponMesh1P = NewWeaponMesh1P;
64 WeaponMesh3P = NewWeaponMesh3P;
65 ParticleSystem = NewParticleSystem;
66 }
67
68 UPROPERTY()
69 TArray<TSoftObjectPtr<UMaterialInstance>> Materials = TArray<TSoftObjectPtr<UMaterialInstance>>();
70 UPROPERTY()
71 TSoftObjectPtr<UParticleSystem> ParticleSystem = NULL;
72 UPROPERTY()
73 TSoftObjectPtr<USkeletalMesh> WeaponMesh1P = NULL;
74 UPROPERTY()
75 TSoftObjectPtr<USkeletalMesh> WeaponMesh3P = NULL;
76};
77
78USTRUCT(BlueprintType)
80{
81 GENERATED_BODY()
83
84 void UpdatedLoadedMaterial(UMaterialInstance* NewLoadedMaterial)
85 {
86 Material = NewLoadedMaterial;
87 bLoaded = true;
88 }
89 UPROPERTY()
90 UMaterialInstance* Material = NULL;
91 bool bLoaded = false;
92};
93
94USTRUCT(BlueprintType)
96{
97 GENERATED_BODY()
98
100
102 {
103 return bLoadedMesh && bLoadedMaterials;
104 }
105 UPROPERTY()
106 TArray<FSkinMaterial> Materials = TArray<FSkinMaterial>();
107 UPROPERTY()
108 USkeletalMesh* Mesh = NULL;
109 bool bLoadedMesh = false;
110 bool bLoadedMaterials = false;
111};
112
113UENUM(BlueprintType, meta = (Bitflags))
114enum class EPlayerSkinPart : uint8
115{
116 None = 0,
117 Head = 0x00000001,
118 Body1P = 0x00000002,
119 Body3P = 0x00000004,
120 Equipment = 0x00000008
121};
122ENUM_CLASS_FLAGS(EPlayerSkinPart)
123
124USTRUCT(BlueprintType)
126{
127 GENERATED_BODY()
128
130 {
135 }
136
137 USkeletalMesh* const GetLoadedMesh(EPlayerSkinPart Part)
138 {
139 if (!PlayerSkin.Contains(Part))
140 {
141 return NULL;
142 }
143
144 return PlayerSkin[Part].Mesh;
145 }
146
148 {
149 for (const TPair<EPlayerSkinPart, FPlayerSkinPortion>& SkinPortion : PlayerSkin)
150 {
151 if (!SkinPortion.Value.bLoadedMaterials || !SkinPortion.Value.bLoadedMesh)
152 {
153 return false;
154 }
155 }
156
157 return true;
158 }
159
160 void UpdateLoadedSkinMesh(EPlayerSkinPart Part, USkeletalMesh* Mesh)
161 {
162 if(PlayerSkin.Contains(Part))
163 {
164 PlayerSkin[Part].Mesh = Mesh;
165 PlayerSkin[Part].bLoadedMesh = true;
166 }
167 }
168
170 {
171 if (!PlayerSkin.Contains(Part))
172 {
173 return;
174 }
175 PlayerSkin[Part].Materials.Init(FSkinMaterial(), Size);
176 if (!Size)
177 {
178 PlayerSkin[Part].bLoadedMaterials = true;
179 }
180 }
181
182 void UpdateLoadedMaterial(EPlayerSkinPart Part, UMaterialInstance* Material, int i)
183 {
184 if (!PlayerSkin.Contains(Part) || PlayerSkin[Part].Materials.Num() <= i)
185 {
186 return;
187 }
188
189 PlayerSkin[Part].Materials[i].UpdatedLoadedMaterial(Material);
190 for (const FSkinMaterial& MaterialInstance : PlayerSkin[Part].Materials)
191 {
192 if (!MaterialInstance.bLoaded)
193 {
194 return;
195 }
196 }
197
198 PlayerSkin[Part].bLoadedMaterials = true;
199 }
200
201 void SetSkipLoadingPortion(EPlayerSkinPart LoadSkippingPortion)
202 {
203 if(!PlayerSkin.Contains(LoadSkippingPortion))
204 {
205 return;
206 }
207 PlayerSkin[LoadSkippingPortion].bLoadedMesh = true;
208 PlayerSkin[LoadSkippingPortion].bLoadedMaterials = true;
209 }
210
211 UPROPERTY()
213};
214
215
216UENUM(BlueprintType)
217enum class EItemType : uint8
218{
219 Inventory = 0,
220 Hats = 1,
221 Shirts = 2,
222 Weapon = 3,
223 Pants = 4,
224 Shoes = 5,
225 Trinket = 6,
226 Consumable = 7,
227 None = 254
228};
229
230class UMeshComponent;
231class USkeletalMesh;
232class UStaticMeshComponent;
233class USkeletalMeshComponent;
234class UParticleSystemComponent;
235class APlayerState;
236class UMaterialInstance;
237class UWeaponInstance;
238class UMaterial;
241class AProjectXVehicle;
242
243DECLARE_DELEGATE(FDelegateBinding);
244DECLARE_DELEGATE_TwoParams(FDelegateMaterialBinding,UMaterial*, int);
245DECLARE_DELEGATE_TwoParams(FDelegateMaterialInstanceBinding,UMaterialInstance*, int);
246DECLARE_DELEGATE_OneParam(FDelegateTextureBinding, UTexture*);
247DECLARE_DELEGATE_OneParam(FDelegateParticleBinding, UParticleSystem*);
248DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnCosmeticLoadedSignature);
249DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPlayerSkinLoadedSignature, const UCosmeticPlayerSkinAsset*, SkinAsset);
250DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnCosmeticMeshLoadingSignature, USkeletalMeshComponent*, MeshComponent, bool, bLoaded);
251
252UCLASS()
253class PROJECTX_API UCosmeticsComponent : public UActorComponent
254{
255 GENERATED_BODY()
256
257public:
259
260 virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
261 virtual void BeginPlay() override;
262 /* FirstPerson Mesh Scale*/
263 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Cosmetics)
264 FVector Scale1P = FVector(1.0f,1.0f,1.0f);
265 /* Starting mesh offsets */
266 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Cosmetics)
267 FVector Position1P = FVector(-45.0f, 0.0f, -155.0f);
268 /* Starting mesh offsets */
269 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Cosmetics)
270 FVector Rotation1P = FVector(8.0f, 0.0f, -90.0f);
271 /* Starting mesh offsets */
272 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Cosmetics)
273 FVector Position3P = FVector(0.0f, 0.0f, -96.0f);
274 /* Starting mesh offsets */
275 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Cosmetics)
276 FRotator Rotation3P = FRotator(0.0f, -90.0f, 0.0f);
277
278 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
279 bool bPreview = false;
280
282 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
283 UClass* AnimationBlendTree1P;
284 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
285 UClass* AnimationBlendTree3P;
286
288 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
289 USkeletalMesh* BodyMesh1P;
290 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
291 USkeletalMesh* BodyMesh3P;
292 /* Class-specific clothing Skeletal Mesh */
293 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
294 USkeletalMesh* ClassClothingMesh3P;
295 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
296 USkeletalMesh* HeadVariant3P;
297
299 UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = Mesh)
300 USkeletalMeshComponent* Mesh1P;
301 UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = Mesh)
303
305 UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = Mesh)
306 USkeletalMeshComponent* Gun1P;
307
308 UFUNCTION(BlueprintCallable)
309 UTexture* GetPattern() const { return PatternMaterial; }
310 UFUNCTION(BlueprintCallable)
311 void SetPattern(UTexture* const NewPattern) { PatternMaterial = NewPattern; }
312 UFUNCTION(BlueprintCallable, BlueprintPure)
313 const TArray<UMeshComponent*>& Get3pMeshComponents() const { return AllMeshes3P; }
314 /*Particle Trail behind the player for allies*/
315 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
316 class UParticleSystem* AllyPlayerTrailParticle;
317 /*Particle Trail behind the player for enemies*/
318 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
319 class UParticleSystem* EnemyPlayerTrailParticle;
320
321 /*Weapon Skins*/
322 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
324 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
326 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Mesh)
327 TMap<FString, FKeyChain> KeyChains;
328 UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = Mesh)
329 UBISSkeletalMeshComponent* Head3P = nullptr;
330
332 UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = Mesh)
333 UBISSkeletalMeshComponent* ClassClothing3P = nullptr;
334 UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = Mesh)
336
338 TArray<UMeshComponent*> AllMeshes3P;
339 TArray<UMeshComponent*> AllMeshes1P;
340 TArray<UMeshComponent*> AllMeshes;
341
342 void SetStaticMesh(UStaticMeshComponent* MeshComponent, UStaticMesh* Mesh);
343 void SetSkeletalMesh(USkeletalMeshComponent* MeshComponent, USkeletalMesh* Mesh);
344 void SetFirstPersonMesh();
345
346 UFUNCTION(BlueprintCallable, Category = Cosmetics)
347 void SetScalarParameterForAllMeshes(const FName& ParameterName, float ScalarParameter);
348 UFUNCTION(BlueprintCallable, Category = Cosmetics)
349 void SetVectorParameterForAllMeshes(const FName& ParameterName, FVector VectorParameter);
350 UFUNCTION(BlueprintCallable, Category = Cosmetics)
351 void SetTextureParameterForAllMeshes(const FName& ParameterName, UTexture* TextureParameter);
352 UFUNCTION(BlueprintCallable, Category = Cosmetics)
353 void SetMaterialLayer(UMaterialInterface* Material);
354 UFUNCTION(BlueprintCallable, Category = Cosmetics)
355 void ClearMaterialLayer();
356 void CacheAllMaterials();
357 void CacheMaterial(UMeshComponent* Mesh);
358 void RestoreAllMaterials();
359 void SetMaterialLayerForAllMeshes();
360 void SetMaterialLayerForMesh(UMeshComponent* Mesh);
361
362 void ApplyVehicleSkins(AProjectXVehicle* Vehicle);
363
364 UFUNCTION(BlueprintCallable)
365 bool IsLoadedCosmetic(ECosmeticType Type, UCosmeticAssetBase* Asset) const;
366 TWeakObjectPtr<UMaterialInterface> MaterialLayer = nullptr;
367 TMap<TWeakObjectPtr<UMeshComponent>, TArray<TWeakObjectPtr<UMaterialInterface>>> MaterialCache;
368
369 UFUNCTION(BlueprintCallable, Category = Cosmetics)
370 void LoadDefaultCosmetics();
371
372 UFUNCTION(BlueprintCallable, Category = Cosmetics)
373 void ToggleKeyChainVisiblity(bool bHideKeyChain);
374
376 UFUNCTION(BlueprintCallable, Category = Cosmetics)
377 void ToggleView(bool toggle);
378 UFUNCTION(BlueprintCallable)
379 virtual void OnWeaponChanged(UWeaponInstance* Weapon);
380 UFUNCTION(BlueprintCallable)
381 virtual void OnVehicleChanged(AProjectXCharacter* Driver,AProjectXVehicle* CurrentVehicle, AProjectXVehicle* PreviousVehicle);
382 UFUNCTION(BlueprintCallable)
383 virtual void PersonalVehicleChanged(UWeaponInstanceSpawnableVehicle* PVWeapon);
384 UFUNCTION()
385 void OnTightAimStart() { ToggleKeyChainVisiblity(true); }
386 UFUNCTION()
387 void OnTightAimEnd() { ToggleKeyChainVisiblity(false); }
388 void OnCosmeticsLoaded();
389 UFUNCTION(BlueprintCallable)
390 void LoadCosmeticsForClass(const FEquips& Equips, ECosmeticType Type,const TSubclassOf<AProjectXCharacter> CharacterClass, const TSubclassOf<UWeaponInstance> WeaponClass = NULL);
391 UFUNCTION()
392 void OnEquipsUpdated(ECosmeticType Type,const FString& ShortCode, const FString& Key);
393
394 bool IsLocallyControlled();
395
396 void ToggleRagdoll(bool toggle);
397 void ManageClothPhysics();
398
399 UFUNCTION(BlueprintCallable,BlueprintPure)
400 class UParticleSystem* GetPlayerTrail(bool bIsAlly) const;
401
402 UFUNCTION(BlueprintCallable)
403 UAnimMontage* GetTauntMontage() const { return TauntMontage; }
404
405 void InitializeMesh1P(USkeletalMeshComponent*& Mesh, FName Name);
406 void InitializeMesh3P(USkeletalMeshComponent*& Mesh, FName Name, bool bUseAttachedParentsBounds = false);
407 UFUNCTION(BlueprintCallable)
408 void InitializeFromCosmeticComponent(UCosmeticsComponent* CosmeticComponent);
409 void AsyncLoadSkeletalMesh(TSoftObjectPtr<USkeletalMesh> AssetPointer, TWeakObjectPtr<USkeletalMeshComponent> MeshComponent);
410 void AsyncLoadSkeletalMesh(TSoftObjectPtr<USkeletalMesh> AssetPointer, TWeakObjectPtr<USkeletalMeshComponent> MeshComponent, FDelegateBinding Callback);
411 void AsyncLoadStaticMesh(TSoftObjectPtr<UStaticMesh> AssetPointer, TWeakObjectPtr<UStaticMeshComponent> MeshComponent);
412 void AsyncLoadMaterialInstance(TSoftObjectPtr<UMaterialInstance> AssetPointer, int MaterialIndex, FDelegateMaterialInstanceBinding Callback);
413 void AsyncLoadMaterial(TSoftObjectPtr<UMaterial> AssetPointer, int MaterialIndex, FDelegateMaterialBinding Callback);
414 void AsyncLoadTexture(TSoftObjectPtr<UTexture> AssetPointer, FDelegateTextureBinding Callback);
415 void AsyncLoadParticle(TSoftObjectPtr<UParticleSystem> AssetPointer, FDelegateParticleBinding Callback);
416
417 void SpawnSkeletalMeshAttached(USkeletalMesh* Mesh, USceneComponent* AttachTo, FName Socket);
418 void SpawnStaticMeshAttached(UStaticMesh* Mesh, USceneComponent* AttachTo, FName Socket);
419 void SpawnKeyChainAttached(USkeletalMesh* Mesh, USceneComponent* AttachTo,TSubclassOf<UWeaponInstance> WeaponClass, FName Socket);
420
421 template <class T>
422 void AsyncLoadAsset(TSoftObjectPtr<T> AssetPointer, FDelegateBinding Callback);
423
424 bool CanApplyCosmeticChanges() const;
425
426 UFUNCTION(BlueprintCallable, Category = "Cosmetic")
427 void RenderCustomDepth3P(const uint8 StencilValue, const bool bUseCustomDepth);
428
429 UPROPERTY(BlueprintAssignable)
430 FOnPlayerSkinLoadedSignature OnPlayerSkinLoaded;
431 UPROPERTY(BlueprintAssignable)
432 FOnCosmeticLoadedSignature OnPlayerTrailChangedEvent;
433 UPROPERTY(BlueprintAssignable)
434 FOnCosmeticMeshLoadingSignature On3PWeaponLoadedEvent;
435 UPROPERTY(BlueprintAssignable)
436 FOnCosmeticLoadedSignature OnPatternLoadedEvent;
437
438protected:
439 UFUNCTION(BlueprintCallable)
440 void LoadPlayerSkin(class UCosmeticPlayerSkinAsset* SkinAsset);
441 UFUNCTION(BlueprintCallable)
442 void LoadParticleTrail(class UCosmeticTrailAsset* TrailAsset);
443 UFUNCTION(BlueprintCallable)
444 void LoadVehicleWeaponSkins(UCosmeticVehicleSkinAsset* VehicleSkinAsset, const FString& WeaponID);
445 UFUNCTION(BlueprintCallable)
446 void LoadWeaponSkins(class UCosmeticWeaponSkinAsset* WeaponSkinAsset,const FString& WeaponID);
447 UFUNCTION(BlueprintCallable)
448 void LoadDeathExplosion(class UCosmeticExplosionAsset* ExplosionAsset);
449 UFUNCTION(BlueprintCallable)
450 void LoadTaunt(class UCosmeticTauntAsset* TauntAsset);
451 UFUNCTION(BlueprintCallable)
452 void LoadKeyChain(class UCosmeticKeyChainAsset* KeyChainAsset, const FString& WeaponID);
453 UFUNCTION()
454 void OnPlayerStateUpdated(APlayerState* PlayerState);
455
456 void LoadPlayerSkinPiece(UCosmeticPlayerSkinAsset* SkinAsset,TSoftObjectPtr<USkeletalMesh> MeshAsset, const TArray<TSoftObjectPtr<UMaterialInstance>>& Materials, EPlayerSkinPart SkinLoadedPortion);
457 bool SkinLoadedResponse(UCosmeticPlayerSkinAsset* SkinAsset);
458 void ApplyPlayerSkin(USkeletalMeshComponent* MeshComponent, EPlayerSkinPart Part, UCosmeticPlayerSkinAsset* SkinAsset);
459
460 TWeakObjectPtr<UWeaponInstance> CachedActiveWeapon = nullptr;
461 TWeakObjectPtr<UWeaponInstanceSpawnableVehicle> CachedVehicleWeapon = nullptr;
462 TArray<USceneComponent*> Attachments;
464 UAnimMontage* TauntMontage = nullptr;
465 UTexture* PatternMaterial = nullptr;
466
467 TMap<FString,TMap<uint8, UMaterialInstance*>> VehicleLoadedSkins;
468 UPROPERTY()
469 TMap<UCosmeticPlayerSkinAsset*,FPlayerSkin> LoadedPlayerSkin;
470 UPROPERTY()
471 TMap<ECosmeticType, UCosmeticAssetBase*> CachedLoadedCosmetics;
472
473private:
474 FTimerHandle RagdollTimerHandle;
475 class AProjectXCharacter* Character = nullptr;
476 class APlayerController* PlayerController = nullptr;
477 class UCameraComponent* FPCamera = nullptr;
478
479 bool bIsFirstPerson = true;
480};
ECosmeticType
Definition: CosmeticAssetBase.h:21
DECLARE_DELEGATE_OneParam(FDelegateTextureBinding, UTexture *)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnCosmeticLoadedSignature)
EPlayerSkinPart
Definition: CosmeticsComponent.h:115
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPlayerSkinLoadedSignature, const UCosmeticPlayerSkinAsset *, SkinAsset)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnCosmeticMeshLoadingSignature, USkeletalMeshComponent *, MeshComponent, bool, bLoaded)
EItemType
Definition: CosmeticsComponent.h:218
DECLARE_DELEGATE_TwoParams(FDelegateMaterialBinding, UMaterial *, int)
DECLARE_DELEGATE(FDelegateBinding)
Definition: ProjectXCharacter.h:128
Definition: ProjectXVehicle.h:56
TWeakObjectPtr< AProjectXCharacter > Driver
Definition: ProjectXVehicle.h:628
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override
Definition: ProjectXVehicle.cpp:268
virtual void BeginPlay() override
Definition: ProjectXVehicle.cpp:182
Definition: BISSkeletalMeshComponent.h:11
Definition: CosmeticAssetBase.h:106
Definition: CosmeticAssetBase.h:265
Definition: CosmeticAssetBase.h:245
Definition: CosmeticAssetBase.h:141
Definition: CosmeticAssetBase.h:256
Definition: CosmeticAssetBase.h:277
Definition: CosmeticAssetBase.h:217
Definition: CosmeticAssetBase.h:230
Definition: CosmeticsComponent.h:254
Definition: WeaponInstance.h:220
Definition: WeaponInstanceSpawnableVehicle.h:15
Definition: CosmeticsManager.h:105
Definition: CosmeticsComponent.h:11
TSoftObjectPtr< USkeletalMesh > KeyChainMesh
Definition: CosmeticsComponent.h:20
TArray< TSoftObjectPtr< UMaterialInstance > > KeyChainMaterials
Definition: CosmeticsComponent.h:21
FKeyChain(const TSoftObjectPtr< USkeletalMesh > KeyChainMeshIn, const TArray< TSoftObjectPtr< UMaterialInstance > > &KeyChainMaterailsIn)
Definition: CosmeticsComponent.h:14
Definition: CosmeticsComponent.h:126
void InitializeMaterialsList(EPlayerSkinPart Part, int32 Size)
Definition: CosmeticsComponent.h:169
bool IsSkinLoaded()
Definition: CosmeticsComponent.h:147
void SetSkipLoadingPortion(EPlayerSkinPart LoadSkippingPortion)
Definition: CosmeticsComponent.h:201
USkeletalMesh *const GetLoadedMesh(EPlayerSkinPart Part)
Definition: CosmeticsComponent.h:137
void UpdateLoadedMaterial(EPlayerSkinPart Part, UMaterialInstance *Material, int i)
Definition: CosmeticsComponent.h:182
void UpdateLoadedSkinMesh(EPlayerSkinPart Part, USkeletalMesh *Mesh)
Definition: CosmeticsComponent.h:160
Definition: CosmeticsComponent.h:96
bool IsSkinPortionLoaded()
Definition: CosmeticsComponent.h:101
Definition: CosmeticsComponent.h:80
void UpdatedLoadedMaterial(UMaterialInstance *NewLoadedMaterial)
Definition: CosmeticsComponent.h:84
Definition: CosmeticsComponent.h:26
FVehicleSkin(const TArray< TSoftObjectPtr< UMaterialInstance > > &NewMaterials, const TSoftObjectPtr< USkeletalMesh > &NewVehicleMesh, const TSoftObjectPtr< UParticleSystem > NewParticleSystem)
Definition: CosmeticsComponent.h:34
Definition: CosmeticsComponent.h:51
FWeaponSkin(const TArray< TSoftObjectPtr< UMaterialInstance > > &NewMaterials, const TSoftObjectPtr< USkeletalMesh > &NewWeaponMesh1P, const TSoftObjectPtr< USkeletalMesh > &NewWeaponMesh3P, const TSoftObjectPtr< UParticleSystem > NewParticleSystem)
Definition: CosmeticsComponent.h:60