diff --git a/SkinHide.sln b/HideDress.sln
similarity index 87%
rename from SkinHide.sln
rename to HideDress.sln
index af85be7..5d836d5 100644
--- a/SkinHide.sln
+++ b/HideDress.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32407.343
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkinHide", "SkinHide\SkinHide.csproj", "{E5DD6484-115E-4104-AADF-E5610EE4F397}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HideDress", "HideDress\HideDress.csproj", "{E5DD6484-115E-4104-AADF-E5610EE4F397}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/SkinHide/SkinHide.csproj b/HideDress/HideDress.csproj
similarity index 88%
rename from SkinHide/SkinHide.csproj
rename to HideDress/HideDress.csproj
index 0796b49..7ce00be 100644
--- a/SkinHide/SkinHide.csproj
+++ b/HideDress/HideDress.csproj
@@ -7,8 +7,8 @@
{E5DD6484-115E-4104-AADF-E5610EE4F397}
Library
Properties
- SkinHide
- SkinHide
+ HideDress
+ HideDress
v4.7.2
512
true
@@ -55,6 +55,12 @@
False
R:\Battlestate Games\Client.0.12.12.15.17349\EscapeFromTarkov_Data\Managed\Comfort.dll
+
+ ..\..\EFTApi\Build\bin\Current\EFTApi.dll
+
+
+ ..\..\EFTApi\Build\bin\Current\EFTReflection.dll
+
@@ -78,11 +84,12 @@
-
-
-
+
+
+
+
+
-
diff --git a/HideDress/HideDress.csproj.DotSettings b/HideDress/HideDress.csproj.DotSettings
new file mode 100644
index 0000000..3c607d0
--- /dev/null
+++ b/HideDress/HideDress.csproj.DotSettings
@@ -0,0 +1,2 @@
+
+ True
\ No newline at end of file
diff --git a/HideDress/HideDressPlugin.cs b/HideDress/HideDressPlugin.cs
new file mode 100644
index 0000000..112fac7
--- /dev/null
+++ b/HideDress/HideDressPlugin.cs
@@ -0,0 +1,107 @@
+using System.Collections.Generic;
+using System.Linq;
+using BepInEx;
+using EFT;
+using EFT.Visual;
+using HideDress.Models;
+using static EFTApi.EFTHelpers;
+
+namespace HideDress
+{
+ [BepInPlugin("com.kmyuhkyuk.HideDress", "kmyuhkyuk-HideDress", "1.2.7")]
+ [BepInDependency("com.kmyuhkyuk.EFTApi", "1.2.0")]
+ public partial class HideDressPlugin : BaseUnityPlugin
+ {
+ private void Awake()
+ {
+ SettingsModel.Create(Config);
+ }
+
+ private void Start()
+ {
+ ReflectionModel.Instance.PlayerModelViewShow.Add(this, nameof(PlayerModelViewShow));
+ }
+
+ private void Update()
+ {
+ var player = _PlayerHelper.Player;
+ var world = _GameWorldHelper.GameWorld;
+ var settingsModel = SettingsModel.Instance;
+ var hideDressModel = HideDressModel.Instance;
+
+ if (settingsModel.KeyPlayerHideDressShortcut.Value.IsDown())
+ {
+ settingsModel.KeyPlayerHideDress.Value = !settingsModel.KeyPlayerHideDress.Value;
+ }
+
+ if (settingsModel.KeyOtherPlayerHideDressShortcut.Value.IsDown())
+ {
+ settingsModel.KeyOtherPlayerHideDress.Value = !settingsModel.KeyOtherPlayerHideDress.Value;
+ }
+
+ if (hideDressModel.PlayerModelViewBody != null)
+ {
+ EnabledPartDress(hideDressModel.PlayerModelViewBody, settingsModel.KeyPlayerHideDressPart.Value, !settingsModel.KeyPlayerHideDress.Value);
+ }
+
+ if (player != null)
+ {
+ EnabledPartDress(player.PlayerBody, settingsModel.KeyPlayerHideDressPart.Value, !settingsModel.KeyPlayerHideDress.Value);
+ }
+
+ if (world != null)
+ {
+ foreach (var otherPlayer in _GameWorldHelper.AllOtherPlayer)
+ {
+ EnabledPartDress(otherPlayer.PlayerBody, settingsModel.KeyOtherPlayerHideDressPart.Value, !settingsModel.KeyOtherPlayerHideDress.Value);
+ }
+ }
+ }
+
+ private static void EnabledPartDress(PlayerBody playerBody, HideDressModel.DressPart part, bool enabled)
+ {
+ var reflectionModel = ReflectionModel.Instance;
+
+ var slotViews = reflectionModel.RefSlotViews.GetValue(playerBody);
+
+ var slotList = reflectionModel.RefSlotList.GetValue(slotViews);
+
+ var dressList = new List();
+
+ foreach (var slot in slotList)
+ {
+ var dresses = reflectionModel.RefDresses.GetValue(slot);
+
+ if (dresses == null)
+ continue;
+
+ foreach (var dress in dresses)
+ {
+ dressList.Add(dress);
+ }
+ }
+
+ EnabledDress(dressList.Where(x => x.GetType() == typeof(Dress)), part == HideDressModel.DressPart.SkinDress || enabled);
+ EnabledSkinDress(dressList.Where(x => x is SkinDress || x is ArmBandView), part == HideDressModel.DressPart.Dress || enabled);
+ }
+
+ private static void EnabledDress(IEnumerable dressEnumerable, bool enabled)
+ {
+ foreach (var dress in dressEnumerable)
+ {
+ foreach (var renderer in ReflectionModel.Instance.RefRenderers.GetValue(dress))
+ {
+ renderer.enabled = enabled;
+ }
+ }
+ }
+
+ private static void EnabledSkinDress(IEnumerable skinDressEnumerable, bool enabled)
+ {
+ foreach (var skinDress in skinDressEnumerable)
+ {
+ skinDress.gameObject.SetActive(enabled);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/HideDress/Models/HideDressModel.cs b/HideDress/Models/HideDressModel.cs
new file mode 100644
index 0000000..13382e0
--- /dev/null
+++ b/HideDress/Models/HideDressModel.cs
@@ -0,0 +1,25 @@
+using System;
+using EFT;
+
+namespace HideDress.Models
+{
+ internal class HideDressModel
+ {
+ private static readonly Lazy Lazy = new Lazy(() => new HideDressModel());
+
+ public static HideDressModel Instance => Lazy.Value;
+
+ public PlayerBody PlayerModelViewBody;
+
+ public enum DressPart
+ {
+ Both,
+ Dress,
+ SkinDress
+ }
+
+ private HideDressModel()
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/HideDress/Models/ReflectionModel.cs b/HideDress/Models/ReflectionModel.cs
new file mode 100644
index 0000000..8b12235
--- /dev/null
+++ b/HideDress/Models/ReflectionModel.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using EFT;
+using EFT.UI;
+using EFT.Visual;
+using EFTReflection;
+using UnityEngine;
+
+namespace HideDress.Models
+{
+ internal class ReflectionModel
+ {
+ private static readonly Lazy Lazy = new Lazy(() => new ReflectionModel());
+
+ public static ReflectionModel Instance => Lazy.Value;
+
+ public readonly RefHelper.FieldRef RefSlotViews;
+
+ public readonly RefHelper.FieldRef