From e19b92e762b445a890d21a3d2619d1a93c2fa6c9 Mon Sep 17 00:00:00 2001 From: Clo15 <289759498+Clo15@users.noreply.github.com> Date: Tue, 15 Sep 2026 21:39:34 +0300 Subject: [PATCH] Fix BP penis not following the Studio penis size slider The dan agent measured the penis length once, when it was built, so the size slider only made a BP penis thicker until something rebuilt the agent. A non-BP penis scales fully. --- Core_BetterPenetration/DanAgent.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Core_BetterPenetration/DanAgent.cs b/Core_BetterPenetration/DanAgent.cs index 7d1bc27..3f9fe46 100644 --- a/Core_BetterPenetration/DanAgent.cs +++ b/Core_BetterPenetration/DanAgent.cs @@ -46,6 +46,7 @@ class DanAgent #endif internal float m_baseDanLength = DefaultDanLength; + internal Vector3 m_danRestSegment; internal float lastDanDistance; internal Vector3 lastDanEndVector = Vector3.zero; internal Vector3 lastDanEnd = Vector3.zero; @@ -113,6 +114,7 @@ internal void InitializeDan() m_danPoints = new DanPoints(danTransforms, tamaTop, danEnd, virtualDanTransforms); m_danPointsFound = true; m_baseDanLength = Vector3.Distance(danTransforms[0].position, danTransforms[1].position) * (danTransforms.Count - 1); + m_danRestSegment = danTransforms[0].InverseTransformVector(danTransforms[1].position - danTransforms[0].position); lastDanDistance = m_baseDanLength; lastDanEndVector = Vector3.zero; @@ -230,6 +232,9 @@ internal void SetDanTarget(Vector3 enterTarget, Vector3 endTarget, CollisionAgen if (!m_danPointsFound) return; + // Re-measure in case the penis was resized after the agent was built + m_baseDanLength = m_danPoints.danPoints[0].transform.TransformVector(m_danRestSegment).magnitude * (m_danPoints.danPoints.Count - 1); + Vector3 danStartPosition = m_danPoints.GetDanStartPosition(); Vector3 danTargetVector = Vector3.Normalize(enterTarget - danStartPosition);