diff --git a/Content/EndlessHotel/Anomaly/Base/BP_GhostHand.uasset b/Content/EndlessHotel/Anomaly/Base/BP_GhostHand.uasset new file mode 100644 index 00000000..dc11fce8 Binary files /dev/null and b/Content/EndlessHotel/Anomaly/Base/BP_GhostHand.uasset differ diff --git a/Content/EndlessHotel/Anomaly/Base/BP_Hand.uasset b/Content/EndlessHotel/Anomaly/Base/BP_Hand.uasset deleted file mode 100644 index c66912fd..00000000 Binary files a/Content/EndlessHotel/Anomaly/Base/BP_Hand.uasset and /dev/null differ diff --git a/Content/EndlessHotel/Anomaly/Object/GhostHand/SM_Hand.uasset b/Content/EndlessHotel/Anomaly/Object/GhostHand/SM_Hand.uasset new file mode 100644 index 00000000..c7e784f0 Binary files /dev/null and b/Content/EndlessHotel/Anomaly/Object/GhostHand/SM_Hand.uasset differ diff --git a/Content/Test/Texture/BP_Dissolve_Main.uasset b/Content/Test/Texture/BP_Dissolve_Main.uasset new file mode 100644 index 00000000..2310d19c Binary files /dev/null and b/Content/Test/Texture/BP_Dissolve_Main.uasset differ diff --git a/Content/Test/Texture/MUSIC1.uasset b/Content/Test/Texture/MUSIC1.uasset new file mode 100644 index 00000000..2b0faf6d Binary files /dev/null and b/Content/Test/Texture/MUSIC1.uasset differ diff --git a/Content/Test/Texture/MUSIC1_basecolor.uasset b/Content/Test/Texture/MUSIC1_basecolor.uasset new file mode 100644 index 00000000..8fa620b6 Binary files /dev/null and b/Content/Test/Texture/MUSIC1_basecolor.uasset differ diff --git a/Content/Test/Texture/M_Dissolve.uasset b/Content/Test/Texture/M_Dissolve.uasset new file mode 100644 index 00000000..6fd89c1d Binary files /dev/null and b/Content/Test/Texture/M_Dissolve.uasset differ diff --git a/Content/Test/Texture/M_Dissolve_Inst.uasset b/Content/Test/Texture/M_Dissolve_Inst.uasset new file mode 100644 index 00000000..94794414 Binary files /dev/null and b/Content/Test/Texture/M_Dissolve_Inst.uasset differ diff --git a/Content/Test/Texture/M_Doll_Dissolve.uasset b/Content/Test/Texture/M_Doll_Dissolve.uasset new file mode 100644 index 00000000..9a410a36 Binary files /dev/null and b/Content/Test/Texture/M_Doll_Dissolve.uasset differ diff --git a/Content/Test/Texture/M_Dot_Main.uasset b/Content/Test/Texture/M_Dot_Main.uasset new file mode 100644 index 00000000..66b3b298 Binary files /dev/null and b/Content/Test/Texture/M_Dot_Main.uasset differ diff --git a/Content/Test/Texture/NS_Dissolve_main.uasset b/Content/Test/Texture/NS_Dissolve_main.uasset new file mode 100644 index 00000000..f03bd98d Binary files /dev/null and b/Content/Test/Texture/NS_Dissolve_main.uasset differ diff --git a/Content/Test/Texture/tripo_mat_0446a5d8.uasset b/Content/Test/Texture/tripo_mat_0446a5d8.uasset new file mode 100644 index 00000000..87dd2364 Binary files /dev/null and b/Content/Test/Texture/tripo_mat_0446a5d8.uasset differ diff --git a/Content/Vefects/Free_Fire/Blueprints/Vefects_Gamemode.uasset b/Content/Vefects/Free_Fire/Blueprints/Vefects_Gamemode.uasset new file mode 100644 index 00000000..22e0d07a Binary files /dev/null and b/Content/Vefects/Free_Fire/Blueprints/Vefects_Gamemode.uasset differ diff --git a/Content/Vefects/Free_Fire/Demo/Demo.umap b/Content/Vefects/Free_Fire/Demo/Demo.umap new file mode 100644 index 00000000..c79b6973 Binary files /dev/null and b/Content/Vefects/Free_Fire/Demo/Demo.umap differ diff --git a/Content/Vefects/Free_Fire/Demo/Materials/MI_GridMetrics.uasset b/Content/Vefects/Free_Fire/Demo/Materials/MI_GridMetrics.uasset new file mode 100644 index 00000000..7764b2a2 Binary files /dev/null and b/Content/Vefects/Free_Fire/Demo/Materials/MI_GridMetrics.uasset differ diff --git a/Content/Vefects/Free_Fire/Demo/Materials/MI_MetricsGridSphere.uasset b/Content/Vefects/Free_Fire/Demo/Materials/MI_MetricsGridSphere.uasset new file mode 100644 index 00000000..1ad35d65 Binary files /dev/null and b/Content/Vefects/Free_Fire/Demo/Materials/MI_MetricsGridSphere.uasset differ diff --git a/Content/Vefects/Free_Fire/Demo/Materials/MM_StandardGrid.uasset b/Content/Vefects/Free_Fire/Demo/Materials/MM_StandardGrid.uasset new file mode 100644 index 00000000..fc8e47f9 Binary files /dev/null and b/Content/Vefects/Free_Fire/Demo/Materials/MM_StandardGrid.uasset differ diff --git a/Content/Vefects/Free_Fire/Demo/Textures/GridMetrics/T_Metrics_Grid_basecolor.uasset b/Content/Vefects/Free_Fire/Demo/Textures/GridMetrics/T_Metrics_Grid_basecolor.uasset new file mode 100644 index 00000000..b1ae5cb3 Binary files /dev/null and b/Content/Vefects/Free_Fire/Demo/Textures/GridMetrics/T_Metrics_Grid_basecolor.uasset differ diff --git a/Content/Vefects/Free_Fire/Demo/Textures/GridMetrics/T_Metrics_Grid_normal.uasset b/Content/Vefects/Free_Fire/Demo/Textures/GridMetrics/T_Metrics_Grid_normal.uasset new file mode 100644 index 00000000..956bf080 Binary files /dev/null and b/Content/Vefects/Free_Fire/Demo/Textures/GridMetrics/T_Metrics_Grid_normal.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Audio/SA_FireBig.uasset b/Content/Vefects/Free_Fire/Shared/Audio/SA_FireBig.uasset new file mode 100644 index 00000000..75502820 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Audio/SA_FireBig.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Audio/SA_FireMedium.uasset b/Content/Vefects/Free_Fire/Shared/Audio/SA_FireMedium.uasset new file mode 100644 index 00000000..c24ea1bd Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Audio/SA_FireMedium.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Audio/SA_FireSmall.uasset b/Content/Vefects/Free_Fire/Shared/Audio/SA_FireSmall.uasset new file mode 100644 index 00000000..18a53364 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Audio/SA_FireSmall.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Audio/SFX_FireBig_L.uasset b/Content/Vefects/Free_Fire/Shared/Audio/SFX_FireBig_L.uasset new file mode 100644 index 00000000..7b59ed09 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Audio/SFX_FireBig_L.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Audio/SFX_FireMedium_L.uasset b/Content/Vefects/Free_Fire/Shared/Audio/SFX_FireMedium_L.uasset new file mode 100644 index 00000000..a366ea06 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Audio/SFX_FireMedium_L.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Audio/SFX_FireSmall_L.uasset b/Content/Vefects/Free_Fire/Shared/Audio/SFX_FireSmall_L.uasset new file mode 100644 index 00000000..a2eedf98 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Audio/SFX_FireSmall_L.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Ashes_01.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Ashes_01.uasset new file mode 100644 index 00000000..93f97635 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Ashes_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_FireQuad_01.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_FireQuad_01.uasset new file mode 100644 index 00000000..c148b4dd Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_FireQuad_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_FireQuad_02.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_FireQuad_02.uasset new file mode 100644 index 00000000..a9e6002d Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_FireQuad_02.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Fire_01.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Fire_01.uasset new file mode 100644 index 00000000..81c1c06f Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Fire_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Fire_02.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Fire_02.uasset new file mode 100644 index 00000000..a47b44c6 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Fire_02.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Glow_01.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Glow_01.uasset new file mode 100644 index 00000000..6dfaddac Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Glow_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_HeatDistortion_Light.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_HeatDistortion_Light.uasset new file mode 100644 index 00000000..e75dbfff Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_HeatDistortion_Light.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_HeatDistortion_Strong.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_HeatDistortion_Strong.uasset new file mode 100644 index 00000000..f486257a Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_HeatDistortion_Strong.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Smoke_01.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Smoke_01.uasset new file mode 100644 index 00000000..c09e032d Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Smoke_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Smoke_02.uasset b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Smoke_02.uasset new file mode 100644 index 00000000..a6baea21 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/MI_VFX_Smoke_02.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/M_VFX_Erosion.uasset b/Content/Vefects/Free_Fire/Shared/Materials/M_VFX_Erosion.uasset new file mode 100644 index 00000000..b86fb42c Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/M_VFX_Erosion.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Materials/M_VFX_HeatDistortion.uasset b/Content/Vefects/Free_Fire/Shared/Materials/M_VFX_HeatDistortion.uasset new file mode 100644 index 00000000..0cb3a9dc Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Materials/M_VFX_HeatDistortion.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/BP_Fire.uasset b/Content/Vefects/Free_Fire/Shared/Particles/BP_Fire.uasset new file mode 100644 index 00000000..03a95395 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/BP_Fire.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NE_FireFlame.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NE_FireFlame.uasset new file mode 100644 index 00000000..9a7f5b83 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NE_FireFlame.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NE_FireQuad.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NE_FireQuad.uasset new file mode 100644 index 00000000..72603c4c Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NE_FireQuad.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NE_Heat.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NE_Heat.uasset new file mode 100644 index 00000000..54a7f108 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NE_Heat.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NE_Lights.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NE_Lights.uasset new file mode 100644 index 00000000..986732f8 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NE_Lights.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NE_Smokes.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NE_Smokes.uasset new file mode 100644 index 00000000..68d03aad Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NE_Smokes.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NE_Sparkles.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NE_Sparkles.uasset new file mode 100644 index 00000000..7a8a4f9d Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NE_Sparkles.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Big.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Big.uasset new file mode 100644 index 00000000..5caa22a9 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Big.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Big_Simple.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Big_Simple.uasset new file mode 100644 index 00000000..eea4394a Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Big_Simple.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Big_Smoke.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Big_Smoke.uasset new file mode 100644 index 00000000..f45d8d26 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Big_Smoke.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_01.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_01.uasset new file mode 100644 index 00000000..9d4fad03 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_01_Simple.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_01_Simple.uasset new file mode 100644 index 00000000..3c99f430 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_01_Simple.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_01_Smoke.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_01_Smoke.uasset new file mode 100644 index 00000000..6d8e591d Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_01_Smoke.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_02.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_02.uasset new file mode 100644 index 00000000..ed691321 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_02.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_02_Simple.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_02_Simple.uasset new file mode 100644 index 00000000..62bcdfe5 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_02_Simple.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_02_Smoke.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_02_Smoke.uasset new file mode 100644 index 00000000..f04bbd90 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Floor_02_Smoke.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Medium.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Medium.uasset new file mode 100644 index 00000000..bab554e7 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Medium.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Medium_Smoke.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Medium_Smoke.uasset new file mode 100644 index 00000000..0128fb33 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Medium_Smoke.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Simple.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Simple.uasset new file mode 100644 index 00000000..1f4f1ffe Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Simple.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Small.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Small.uasset new file mode 100644 index 00000000..21f2947c Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Small.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Small_Simple.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Small_Simple.uasset new file mode 100644 index 00000000..a375fe68 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Small_Simple.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Small_Smoke.uasset b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Small_Smoke.uasset new file mode 100644 index 00000000..57ee0c9e Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Particles/NS_Fire_Small_Smoke.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Ash_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Ash_01.uasset new file mode 100644 index 00000000..680bd32b Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Ash_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Ashes_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Ashes_01.uasset new file mode 100644 index 00000000..37c8e4ad Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Ashes_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Directional_Dust_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Directional_Dust_01.uasset new file mode 100644 index 00000000..a91027ee Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Directional_Dust_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Dust_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Dust_01.uasset new file mode 100644 index 00000000..3bfcc33d Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Dust_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Fire_Ground_Mask_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Fire_Ground_Mask_01.uasset new file mode 100644 index 00000000..fbc92413 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Fire_Ground_Mask_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Fire_Mask_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Fire_Mask_01.uasset new file mode 100644 index 00000000..6bec19a2 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Fire_Mask_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Glow_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Glow_01.uasset new file mode 100644 index 00000000..fdbc04cf Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Glow_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Gradient_Up_Down_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Gradient_Up_Down_01.uasset new file mode 100644 index 00000000..fc3978d0 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Gradient_Up_Down_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_01.uasset new file mode 100644 index 00000000..87e69baf Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_03.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_03.uasset new file mode 100644 index 00000000..d09bc726 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_03.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_04.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_04.uasset new file mode 100644 index 00000000..b81cec2a Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_04.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_07.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_07.uasset new file mode 100644 index 00000000..240689ac Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_07.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_08.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_08.uasset new file mode 100644 index 00000000..7742e881 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_08.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_Normal_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_Normal_01.uasset new file mode 100644 index 00000000..f2400539 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_Normal_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_Normal_02.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_Normal_02.uasset new file mode 100644 index 00000000..29e4d366 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Noise_Normal_02.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Smoke_01.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Smoke_01.uasset new file mode 100644 index 00000000..8303e2f0 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_Smoke_01.uasset differ diff --git a/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_White.uasset b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_White.uasset new file mode 100644 index 00000000..f41acce2 Binary files /dev/null and b/Content/Vefects/Free_Fire/Shared/Textures/T_VFX_White.uasset differ diff --git a/Content/Vefects/Free_Fire/UI/UI.uasset b/Content/Vefects/Free_Fire/UI/UI.uasset new file mode 100644 index 00000000..36664d22 Binary files /dev/null and b/Content/Vefects/Free_Fire/UI/UI.uasset differ diff --git a/Content/__ExternalActors__/Test/Maps/FirstPersonMap/0/7A/DJ06X183WNWXUEMD29AEL6.uasset b/Content/__ExternalActors__/Test/Maps/FirstPersonMap/0/7A/DJ06X183WNWXUEMD29AEL6.uasset new file mode 100644 index 00000000..0d626ca1 Binary files /dev/null and b/Content/__ExternalActors__/Test/Maps/FirstPersonMap/0/7A/DJ06X183WNWXUEMD29AEL6.uasset differ diff --git a/Content/__ExternalActors__/Test/Maps/FirstPersonMap/1/UM/JH8YTD65UXZDZ4PCSE7QHK.uasset b/Content/__ExternalActors__/Test/Maps/FirstPersonMap/1/UM/JH8YTD65UXZDZ4PCSE7QHK.uasset new file mode 100644 index 00000000..ab2c865e Binary files /dev/null and b/Content/__ExternalActors__/Test/Maps/FirstPersonMap/1/UM/JH8YTD65UXZDZ4PCSE7QHK.uasset differ diff --git a/Content/__ExternalActors__/Test/Maps/FirstPersonMap/5/ZB/Q73CLT4136N8Z1QMRAOMD9.uasset b/Content/__ExternalActors__/Test/Maps/FirstPersonMap/5/ZB/Q73CLT4136N8Z1QMRAOMD9.uasset new file mode 100644 index 00000000..a87dfbf7 Binary files /dev/null and b/Content/__ExternalActors__/Test/Maps/FirstPersonMap/5/ZB/Q73CLT4136N8Z1QMRAOMD9.uasset differ diff --git a/Source/Endless_Hotel/Anomaly/EightExit/GhostHand/Anomaly_GhostHand.cpp b/Source/Endless_Hotel/Anomaly/EightExit/GhostHand/Anomaly_GhostHand.cpp new file mode 100644 index 00000000..7e13304b --- /dev/null +++ b/Source/Endless_Hotel/Anomaly/EightExit/GhostHand/Anomaly_GhostHand.cpp @@ -0,0 +1,147 @@ +// Copyright by 2025-2 WAP Game 2 team + + +#include "Anomaly/EightExit/GhostHand/Anomaly_GhostHand.h" +#include "Components/StaticMeshComponent.h" +#include "Kismet/GameplayStatics.h" +#include "GameFramework/Character.h" +#include "Components/SkeletalMeshComponent.h" +#include "GameFramework/CharacterMovementComponent.h" +#include "Player/Controller/EHPlayerController.h" +#include "TimerManager.h" + +#pragma region Base + +AAnomaly_GhostHand::AAnomaly_GhostHand(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer) +{ + PrimaryActorTick.bCanEverTick = false; + + SM_Hand = CreateDefaultSubobject(TEXT("SM_Hand")); + SM_Hand->SetupAttachment(RootComponent); + SM_Hand->SetVisibility(false); + SM_Hand->SetHiddenInGame(true); + SM_Hand->SetCollisionEnabled(ECollisionEnabled::NoCollision); +} + +void AAnomaly_GhostHand::BeginPlay() +{ + Super::BeginPlay(); +} + +void AAnomaly_GhostHand::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + ClearRunLock(); + Super::EndPlay(EndPlayReason); +} +#pragma endregion + +#pragma region Activity +void AAnomaly_GhostHand::ActivateAnomaly(uint8 Anomaly_ID) +{ + Super::ActivateAnomaly(Anomaly_ID); + ExecuteGhostHand(); +} +#pragma endregion + +#pragma region GhostHand +void AAnomaly_GhostHand::ExecuteGhostHand() +{ + ACharacter* Player = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0); + if (!Player) + { + return; + } + + USkeletalMeshComponent* PlayerMesh = Player->GetMesh(); + if (!PlayerMesh) + { + return; + } + + const FAttachmentTransformRules Rules(EAttachmentRule::SnapToTarget, true); + SM_Hand->AttachToComponent(PlayerMesh, Rules, AttachSocketName); + + SM_Hand->SetRelativeLocation(AttachLocationOffset); + SM_Hand->SetRelativeRotation(AttachRotationOffset); + SM_Hand->SetRelativeScale3D(AttachScale); + + SM_Hand->SetHiddenInGame(false); + SM_Hand->SetVisibility(true); + + if(bLockRun) + { + ApplyRunLock(); + } +} +#pragma endregion + +#pragma region RunLock +void AAnomaly_GhostHand::ApplyRunLock() +{ + ACharacter* Player = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0); + if (!Player) + { + return; + } + if (AEHPlayerController* PC = Cast(UGameplayStatics::GetPlayerController(GetWorld(),0))) + { + if (!bSaved) + { + SavedCanRun = PC->bCanRun; + } + PC->bCanRun = false; + } + UCharacterMovementComponent* Move = Player->GetCharacterMovement(); + if (!Move) + { + return; + } + if (!bSaved) + { + SavedMaxWalkSpeed = Move->MaxWalkSpeed; + bSaved = true; + } + + Move->MaxWalkSpeed = LockedWalkSpeed; + + GetWorld()->GetTimerManager().ClearTimer(ReapplySpeedHandle); + GetWorld()->GetTimerManager().SetTimer(ReapplySpeedHandle, FTimerDelegate::CreateLambda([this]() + { + ACharacter* P = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0); + if (!P) + { + return; + } + + if (UCharacterMovementComponent* M = P->GetCharacterMovement()) + { + M->MaxWalkSpeed = LockedWalkSpeed; + } + }), ReapplyInterval, true); +} + +void AAnomaly_GhostHand::ClearRunLock() +{ + if (GetWorld()) + { + GetWorld()->GetTimerManager().ClearTimer(ReapplySpeedHandle); + } + + if (bSaved) + { + if (ACharacter* Player = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0)) + { + if (UCharacterMovementComponent* Move = Player->GetCharacterMovement()) + { + Move->MaxWalkSpeed = SavedMaxWalkSpeed; + } + } + bSaved = false; + } + if (AEHPlayerController* PC = Cast(UGameplayStatics::GetPlayerController(GetWorld(), 0))) + { + PC->bCanRun = SavedCanRun; + } +} +#pragma endregion diff --git a/Source/Endless_Hotel/Anomaly/EightExit/GhostHand/Anomaly_GhostHand.h b/Source/Endless_Hotel/Anomaly/EightExit/GhostHand/Anomaly_GhostHand.h new file mode 100644 index 00000000..1a8588dd --- /dev/null +++ b/Source/Endless_Hotel/Anomaly/EightExit/GhostHand/Anomaly_GhostHand.h @@ -0,0 +1,72 @@ +// Copyright by 2025-2 WAP Game 2 team + +#pragma once + +#include "CoreMinimal.h" +#include "Anomaly/Base/Anomaly_Base_EightExit.h" +#include "Anomaly_GhostHand.generated.h" + +UCLASS() +class ENDLESS_HOTEL_API AAnomaly_GhostHand : public AAnomaly_Base_EightExit +{ + GENERATED_BODY() + +#pragma region Base +public: + AAnomaly_GhostHand(const FObjectInitializer& ObjectInitializer); + +protected: + virtual void BeginPlay() override; + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; +#pragma endregion + +#pragma region Activity +public: + virtual void ActivateAnomaly(uint8 Anomaly_ID) override; +#pragma endregion + +#pragma region GhostHand +protected: + UPROPERTY(VisibleAnywhere, Category="GhostHand|Component") + TObjectPtr SM_Hand; + + UPROPERTY(EditAnywhere, Category = "GhostHand|Attach") + FName AttachSocketName = TEXT("Hand_Leg"); + + UPROPERTY(EditAnywhere, Category = "GhostHand|Attach") + FVector AttachLocationOffset = FVector::ZeroVector; + + UPROPERTY(EditAnywhere, Category = "GhostHand|Attach") + FRotator AttachRotationOffset = FRotator::ZeroRotator; + + UPROPERTY(EditAnywhere, Category = "GhostHand|Attach") + FVector AttachScale = FVector(1.f, 1.f, 1.f); + + UPROPERTY(EditAnywhere, Category = "GhostHand|Time") + float StartDelay = 0.5f; + + void ExecuteGhostHand(); + + FTimerHandle StartDelayHandle; +#pragma endregion + +#pragma region RunLock + UPROPERTY(EditAnywhere, Category = "GhostHand|RunLock") + bool bLockRun = true; + + UPROPERTY(EditAnywhere, Category = "GhostHand|RunLock") + float LockedWalkSpeed = 300.f; + + UPROPERTY(EditAnywhere, Category = "GhostHand|RunLock") + float ReapplyInterval = 0.05f; + + FTimerHandle ReapplySpeedHandle; + + bool bSaved = false; + float SavedMaxWalkSpeed = 0.f; + bool SavedCanRun = true; + + void ApplyRunLock(); + void ClearRunLock(); +#pragma endregion +}; \ No newline at end of file diff --git a/Source/Endless_Hotel/Anomaly/Neapolitan/Painting/Anomaly_Painting.cpp b/Source/Endless_Hotel/Anomaly/Neapolitan/Painting/Anomaly_Painting.cpp index 6c6ea180..c6cf2b3e 100644 --- a/Source/Endless_Hotel/Anomaly/Neapolitan/Painting/Anomaly_Painting.cpp +++ b/Source/Endless_Hotel/Anomaly/Neapolitan/Painting/Anomaly_Painting.cpp @@ -34,6 +34,14 @@ void AAnomaly_Painting::ActivateAnomaly(uint8 Anomaly_ID) }); StartImmediate(); break; + + case 92: + AnomalyAction = ([](AAnomaly_Object_Base* Portrait) + { + Cast(Portrait)->FrameTilt(); + }); + ActiveTrigger(); + break; } } diff --git a/Source/Endless_Hotel/Anomaly/Object/Painting/Anomaly_Object_Painting.cpp b/Source/Endless_Hotel/Anomaly/Object/Painting/Anomaly_Object_Painting.cpp index e2a0d2b9..71b78426 100644 --- a/Source/Endless_Hotel/Anomaly/Object/Painting/Anomaly_Object_Painting.cpp +++ b/Source/Endless_Hotel/Anomaly/Object/Painting/Anomaly_Object_Painting.cpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include #pragma region Base AAnomaly_Object_Painting::AAnomaly_Object_Painting(const FObjectInitializer& ObjectInitializer) @@ -99,6 +101,111 @@ void AAnomaly_Object_Painting::BlurPaint() #pragma endregion +#pragma region FrameTilt + +void AAnomaly_Object_Painting::FrameTilt() +{ + UE_LOG(LogTemp, Warning, TEXT("[FrameTilt] Called")); + + if (!GetWorld()) + { + return; + } + + GetWorld()->GetTimerManager().ClearTimer(FrameTiltDelayHandle); + GetWorld()->GetTimerManager().ClearTimer(FrameTiltInterpHandle); + FrameInitialRotMap.Empty(); + + TArray AllActors; + UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::StaticClass(), AllActors); + + for (AActor* FrameActor : AllActors) + { + if (!FrameActor) + { + continue; + } + USceneComponent* TargetRoot = nullptr; + TArray SceneComps; + FrameActor->GetComponents(SceneComps); + + for (USceneComponent* SC : SceneComps) + { + if (SC && SC->ComponentHasTag(FName("FrameRoot"))) + { + TargetRoot = SC; + break; + } + } + + if (!TargetRoot) + { + TargetRoot = FrameActor->GetRootComponent(); + } + + if (!TargetRoot) + { + continue; + } + + TargetRoot->SetMobility(EComponentMobility::Movable); + + FrameInitialRotMap.Add(FrameActor, FrameActor->GetActorRotation()); + } + UE_LOG(LogTemp, Warning, TEXT("[FrameTilt] Targets: %d"), FrameInitialRotMap.Num()); + GetWorld()->GetTimerManager().SetTimer(FrameTiltDelayHandle, FTimerDelegate::CreateWeakLambda(this, [this]() + { + if (!GetWorld()) + { + return; + } + + FrameTiltStartTime = GetWorld()->GetTimeSeconds(); + FrameTiltDuration = FMath::FRandRange(FrameTiltInterpMin, FrameTiltInterpMax); + FrameTiltTargetRoll = FMath::FRandRange(FrameTiltRollMin, FrameTiltRollMax); + + GetWorld()->GetTimerManager().SetTimer(FrameTiltInterpHandle, FTimerDelegate::CreateWeakLambda(this, [this]() + { + if (!GetWorld()) + { + return; + } + + const float Now = GetWorld()->GetTimeSeconds(); + const float Alpha = FMath::Clamp((Now - FrameTiltStartTime) / FMath::Max(FrameTiltDuration, 0.001f), 0.f, 1.f); + for (auto& Pair : FrameInitialRotMap) + { + AActor* TargetActor = Pair.Key.Get(); + if (!TargetActor) + { + continue; + } + + const FRotator InitialRot = Pair.Value; + const float NewRoll = FMath::Lerp(InitialRot.Roll, InitialRot.Roll + FrameTiltTargetRoll, Alpha); + FRotator NewRot = InitialRot; + NewRot.Roll = NewRoll; + TargetActor->SetActorRotation(NewRot); + } + if (Alpha >= 1.f) + { + GetWorld()->GetTimerManager().ClearTimer(FrameTiltInterpHandle); + } + }), 0.02f, true); + }), FrameTiltDelay, false); +} +#pragma endregion + +void AAnomaly_Object_Painting::Interacted_Implementation() +{ + bSolved = !bSolved; +} + +void AAnomaly_Object_Painting::ShowInteractWidget_Implementation(bool bIsShow) +{ + UI_Interact->ShowDescription(bIsShow); +} +#pragma endregion #pragma region Interact void AAnomaly_Object_Painting::Interacted_Implementation() @@ -135,4 +242,4 @@ void AAnomaly_Object_Painting::InteractedMoveStep(int32 step) true, true, 0.2f, false, EMoveComponentAction::Type::Move, LatentInfo); } -#pragma endregion \ No newline at end of file +#pragma endregion diff --git a/Source/Endless_Hotel/Anomaly/Object/Painting/Anomaly_Object_Painting.h b/Source/Endless_Hotel/Anomaly/Object/Painting/Anomaly_Object_Painting.h index e9efa9a5..c4ee1561 100644 --- a/Source/Endless_Hotel/Anomaly/Object/Painting/Anomaly_Object_Painting.h +++ b/Source/Endless_Hotel/Anomaly/Object/Painting/Anomaly_Object_Painting.h @@ -17,6 +17,9 @@ class ENDLESS_HOTEL_API AAnomaly_Object_Painting : public AAnomaly_Object_Neapol AAnomaly_Object_Painting(const FObjectInitializer& ObjectInitializer); protected: + UPROPERTY(EditAnywhere, Category = "Painting") + TObjectPtr Root; + UPROPERTY(EditAnyWhere, Category = "Painting") TObjectPtr Mesh_Painting; @@ -61,6 +64,50 @@ class ENDLESS_HOTEL_API AAnomaly_Object_Painting : public AAnomaly_Object_Neapol #pragma endregion +#pragma region FrameTilt + +public: + void FrameTilt(); + +protected: + UPROPERTY() + TMap, FRotator> FrameInitialRotMap; + + UPROPERTY() + FTimerHandle FrameTiltDelayHandle; + + UPROPERTY() + FTimerHandle FrameTiltInterpHandle; + + UPROPERTY() + float FrameTiltStartTime = 0.f; + + UPROPERTY() + float FrameTiltDuration = 0.5f; + + UPROPERTY() + float FrameTiltTargetRoll = 0.f; + + UPROPERTY(EditAnywhere, Category = "FrameTilt") + float FrameTiltDelay = 10.f; + + UPROPERTY(EditAnywhere, Category = "FrameTilt") + float FrameTiltInterpMin = 0.2f; + + UPROPERTY(EditAnywhere, Category = "FrameTilt") + float FrameTiltInterpMax = 1.0f; + + UPROPERTY(EditAnywhere, Category = "FrameTilt") + float FrameTiltRollMin = -180.f; + + UPROPERTY(EditAnywhere, Category = "FrameTilt") + float FrameTiltRollMax = 180.f; + +#pragma endregion + +#pragma region Interact + virtual void Interacted_Implementation() override; + virtual void ShowInteractWidget_Implementation(bool bIsShow) override; #pragma region Interact protected: diff --git a/Source/Endless_Hotel/Data/Anomaly/AnomalyData.csv b/Source/Endless_Hotel/Data/Anomaly/AnomalyData.csv index d9f82c76..805601d4 100644 --- a/Source/Endless_Hotel/Data/Anomaly/AnomalyData.csv +++ b/Source/Endless_Hotel/Data/Anomaly/AnomalyData.csv @@ -15,5 +15,7 @@ 14,95,Portrait_Blur,/Game/EndlessHotel/Anomaly/Base/BP_Painting.BP_Painting_C,/Game/EndlessHotel/Anomaly/Object/Painting/BP_Object_Painting.BP_Object_Painting_C 15,9,ShelfBook,/Game/EndlessHotel/Anomaly/Base/BP_ShelfBook.BP_ShelfBook_C,/Game/EndlessHotel/Anomaly/Object/ShelfBook/BP_ShelfBook.BP_ShelfBook_C 16,98,ShelfDoll,/Game/EndlessHotel/Anomaly/Base/BP_ShelfDoll.BP_ShelfDoll_C,/Game/EndlessHotel/Anomaly/Object/ShelfDoll/BP_ShelfDoll.BP_ShelfDoll_C +17,92,FrameTilt,/Game/EndlessHotel/Anomaly/Base/BP_Painting.BP_Painting_C, +18,24,GhostHand,/Game/EndlessHotel/Anomaly/Base/BP_GhostHand.BP_GhostHand_C, 17,89,Clock,/Game/EndlessHotel/Anomaly/Base/BP_Clock.BP_Clock_C,/Game/EndlessHotel/Anomaly/Object/Clock/BP_Clock.BP_Clock_C 18,90,MusicBox,/Game/EndlessHotel/Anomaly/Base/BP_MusicBox.BP_MusicBox_C,/Game/EndlessHotel/Anomaly/Object/MusicBox/MyAnomaly_Object_MusicBox.MyAnomaly_Object_MusicBox_C diff --git a/license.txt b/license.txt new file mode 100644 index 00000000..1e26387a --- /dev/null +++ b/license.txt @@ -0,0 +1,11 @@ +Model Information: +* title: Timmy Doll - Reality Capture | #RCToyChallenge +* source: https://sketchfab.com/3d-models/timmy-doll-reality-capture-rctoychallenge-e74e61f660e84382956634b0e2a6d61c +* author: Sircher (https://sketchfab.com/Sircher) + +Model License: +* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) +* requirements: Author must be credited. Commercial use is allowed. + +If you use this 3D model in your project be sure to copy paste this credit wherever you share it: +This work is based on "Timmy Doll - Reality Capture | #RCToyChallenge" (https://sketchfab.com/3d-models/timmy-doll-reality-capture-rctoychallenge-e74e61f660e84382956634b0e2a6d61c) by Sircher (https://sketchfab.com/Sircher) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) \ No newline at end of file diff --git a/scene.bin b/scene.bin new file mode 100644 index 00000000..3cfccb0b Binary files /dev/null and b/scene.bin differ diff --git a/scene.gltf b/scene.gltf new file mode 100644 index 00000000..7fa9127c --- /dev/null +++ b/scene.gltf @@ -0,0 +1,272 @@ +{ + "accessors": [ + { + "bufferView": 2, + "componentType": 5126, + "count": 65532, + "max": [ + 152.55282592773438, + 136.64927673339844, + 234.95452880859375 + ], + "min": [ + -164.67239379882813, + -192.24110412597656, + -30.917190551757813 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 786384, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999968409538269, + 1.0, + 0.9999995827674866 + ], + "min": [ + -0.9999780058860779, + -0.9999921917915344, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9997550249099731, + 0.9929199814796448 + ], + "min": [ + 0.00024399999529123306, + 0.00024900000425986946 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "componentType": 5125, + "count": 281508, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 1572768, + "componentType": 5126, + "count": 5596, + "max": [ + 168.79739379882813, + 136.64927673339844, + 137.38473510742188 + ], + "min": [ + -164.6728057861328, + -192.24078369140625, + -30.917190551757813 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 1639920, + "componentType": 5126, + "count": 5596, + "max": [ + 0.9999992251396179, + 0.9998682141304016, + 0.9999974370002747 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 524256, + "componentType": 5126, + "count": 5596, + "max": [ + 0.9997119903564453, + 0.9958490133285522 + ], + "min": [ + 0.00024399999529123306, + 0.00025400001322850585 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 1126032, + "componentType": 5125, + "count": 18468, + "type": "SCALAR" + } + ], + "asset": { + "extras": { + "author": "Sircher (https://sketchfab.com/Sircher)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/timmy-doll-reality-capture-rctoychallenge-e74e61f660e84382956634b0e2a6d61c", + "title": "Timmy Doll - Reality Capture | #RCToyChallenge" + }, + "generator": "Sketchfab-12.66.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 1199904, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 569024, + "byteOffset": 1199904, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 1707072, + "byteOffset": 1768928, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + } + ], + "buffers": [ + { + "byteLength": 3476000, + "uri": "scene.bin" + } + ], + "extensionsUsed": [ + "KHR_materials_unlit" + ], + "images": [ + { + "uri": "textures/tex_u1_v1_baseColor.jpeg" + } + ], + "materials": [ + { + "doubleSided": true, + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "tex_u1_v1", + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0 + } + } + ], + "meshes": [ + { + "name": "Object_0", + "primitives": [ + { + "attributes": { + "NORMAL": 1, + "POSITION": 0, + "TEXCOORD_0": 2 + }, + "indices": 3, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_1", + "primitives": [ + { + "attributes": { + "NORMAL": 5, + "POSITION": 4, + "TEXCOORD_0": 6 + }, + "indices": 7, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "matrix": [ + 0.009098585695028305, + 0.0, + 0.0, + 0.0, + 0.0, + 2.0202918660291014e-18, + -0.009098585695028305, + 0.0, + 0.0, + 0.009098585695028305, + 2.0202918660291014e-18, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ], + "name": "Sketchfab_model" + }, + { + "children": [ + 2, + 3 + ], + "name": "model.obj.cleaner.materialmerger.gles" + }, + { + "mesh": 0, + "name": "Object_2" + }, + { + "mesh": 1, + "name": "Object_3" + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "Sketchfab_Scene", + "nodes": [ + 0 + ] + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + } + ] +}