public void InitializeDanAgent() { ClearDanAgent(); danEntryChild = Tools.GetTransformOfChaControl(ChaControl, BoneNames.BPDanEntryTarget); danEndChild = Tools.GetTransformOfChaControl(ChaControl, BoneNames.BPDanEndTarget); if (danEntryChild == null || danEndChild == null) { return; } if (controllerOptions == null) { controllerOptions = new ControllerOptions(DefaultDanAutoTarget); } if (danOptions == null) { danOptions = new DanOptions(DefaultColliderRadiusScale, DefaultColliderLengthScale, DefaultLengthSquish, DefaultGirthSquish, DefaultSquishThreshold, false, 2.0f); } if (collisionOptions == null) { collisionOptions = new CollisionOptions(DefaultMaxOralPush, DefaultMaxOralPull, DefaultOralPullRate, DefaultReturnRate, false, 1.0f); } danAgent = new DanAgent(ChaControl, danOptions); danTargetsValid = true; InitializeTama(); }
protected override void OnReload(GameMode currentGameMode, bool maintainState) { PluginData data = GetExtendedData(); float lengthSquish = DefaultLengthSquish; float girthSquish = DefaultGirthSquish; float squishThreshold = DefaultSquishThreshold; float colliderRadius = DefaultColliderRadius; float colliderLength = DefaultColliderLength; float colliderVertical = DefaultColliderVertical; if (data != null) { if (data.data.TryGetValue("Enabled", out var Enabled)) { enabled = (bool)Enabled; } if (data.data.TryGetValue("LengthSquish", out var LengthSquish)) { lengthSquish = (float)LengthSquish; } if (data.data.TryGetValue("GirthSquish", out var GirthSquish)) { girthSquish = (float)GirthSquish; } if (data.data.TryGetValue("SquishThreshold", out var SquishThreshold)) { squishThreshold = (float)SquishThreshold; } if (data.data.TryGetValue("ColliderRadius", out var ColliderRadius)) { colliderRadius = (float)ColliderRadius; } if (data.data.TryGetValue("ColliderLength", out var ColliderLength)) { colliderLength = (float)ColliderLength; } if (data.data.TryGetValue("ColliderVertical", out var ColliderVertical)) { colliderVertical = (float)ColliderVertical; } } danOptions = new DanOptions(colliderVertical, colliderRadius, colliderLength, lengthSquish, girthSquish, squishThreshold); cardReloaded = true; base.OnReload(currentGameMode, maintainState); }
private void Initialize(ChaControl character, DanOptions options) { ClearDanAgent(); if (character == null) { return; } m_danOptions = options; m_danCharacter = character; Transform danTop = m_danCharacter.GetComponentsInChildren <Transform>().FirstOrDefault(x => x.name != null && x.name.Contains(BoneNames.DanTop)); List <Transform> danTransforms = new List <Transform>(); foreach (var boneName in BoneNames.DanBones) { Transform danBone = m_danCharacter.GetComponentsInChildren <Transform>().FirstOrDefault(x => x.name != null && x.name.Contains(boneName)); if (danBone != null) { danTransforms.Add(danBone); } } if (danTop == null || danTransforms.Count < 2) { return; } if (danTransforms.Count == BoneNames.DanBones.Count) { m_bpDanPointsFound = true; } m_danPoints = new DanPoints(danTransforms, danTop); m_danPointsFound = true; m_baseDanLength = DefaultDanLength * m_danPoints.GetDanLossyScale(); m_baseSectionHalfLength = m_baseDanLength / (2 * (m_danPoints.danPoints.Count - 1)); for (int danPoint = 1; danPoint < m_danPoints.danPoints.Count; danPoint++) { m_danColliders.Add(InitializeCollider(m_danPoints.danPoints[danPoint - 1].transform, m_danOptions.danRadius * m_danPoints.danPoints[danPoint].defaultLossyScale.x, ((m_baseSectionHalfLength + m_danOptions.danHeadLength) * 2), DynamicBoneCollider.Direction.Z, m_danOptions.danVerticalCenter, m_baseSectionHalfLength)); } #if !HS2_STUDIO && !AI_STUDIO UpdateFingerColliders(m_danOptions.fingerRadius, m_danOptions.fingerLength); #endif Console.WriteLine("Dan Found " + m_danPointsFound); Console.WriteLine("BP Dan Found " + m_bpDanPointsFound); }
internal void UpdateDanCollider(DanOptions danOptions) { if (!m_danPointsFound || m_danColliders.Count < 1 || m_danColliders.Count >= m_danPoints.danPoints.Count) { return; } m_danOptions.danRadius = danOptions.danRadius; m_danOptions.danHeadLength = danOptions.danHeadLength; m_danOptions.danVerticalCenter = danOptions.danVerticalCenter; for (int danCollider = 0; danCollider < m_danColliders.Count; danCollider++) { m_danColliders[danCollider] = InitializeCollider(m_danPoints.danPoints[danCollider].transform, m_danOptions.danRadius * m_danPoints.danPoints[danCollider + 1].defaultLossyScale.x, ((m_baseSectionHalfLength + m_danOptions.danHeadLength) * 2), DynamicBoneCollider.Direction.Z, m_danOptions.danVerticalCenter, m_baseSectionHalfLength); } }
public void InitializeDanAgent() { ClearDanAgent(); danEntryTarget = ChaControl.GetComponentsInChildren <Transform>().FirstOrDefault(x => x.name != null && x.name.Equals("k_f_dan_entry")); danEndTarget = ChaControl.GetComponentsInChildren <Transform>().FirstOrDefault(x => x.name != null && x.name.Equals("k_f_dan_end")); if (danEntryTarget == null || danEndTarget == null) { return; } if (danOptions == null) { danOptions = new DanOptions(DefaultColliderVertical, DefaultColliderRadius, DefaultColliderLength, DefaultLengthSquish, DefaultGirthSquish, DefaultSquishThreshold); } danAgent = new DanAgent(ChaControl, danOptions); danTargetsValid = true; }
private void Initialize(ChaControl character, DanOptions options) { ClearDanAgent(); if (character == null) { return; } m_danOptions = options; m_danCharacter = character; InitializeDan(); InitializeTama(); #if !HS2_STUDIO && !AI_STUDIO && !KK_STUDIO UpdateFingerColliders(m_danOptions.fingerRadius, m_danOptions.fingerLength); #endif Debug.Log($"BP Dan Found { m_bpDanPointsFound}; BP Tama Found {m_bpTamaFound}"); }
public DanAgent(ChaControl character, DanOptions options) { Initialize(character, options); }
internal void UpdateDanOptions(DanOptions danOptions) { m_danOptions = danOptions; }
protected override void OnReload(GameMode currentGameMode, bool maintainState) { danTargetsValid = false; PluginData data = GetExtendedData(); float lengthSquish = DefaultLengthSquish; float girthSquish = DefaultGirthSquish; float squishThreshold = DefaultSquishThreshold; float colliderRadiusScale = DefaultColliderRadiusScale; float colliderLengthScale = DefaultColliderLengthScale; ControllerOptions.AutoTarget autoTarget = DefaultDanAutoTarget; float maxPush = DefaultMaxOralPush; float maxPull = DefaultMaxOralPull; float pullRate = DefaultOralPullRate; float returnRate = DefaultReturnRate; bool enableBellyBulge = false; float bellyBulgeScale = 1.0f; if (data != null) { if (data.data.TryGetValue("Enabled", out var Enabled)) { enabled = (bool)Enabled; } if (data.data.TryGetValue("LengthSquish", out var LengthSquish)) { lengthSquish = (float)LengthSquish; } if (data.data.TryGetValue("GirthSquish", out var GirthSquish)) { girthSquish = (float)GirthSquish; } if (data.data.TryGetValue("SquishThreshold", out var SquishThreshold)) { squishThreshold = (float)SquishThreshold; } if (data.data.TryGetValue("ColliderRadiusScale", out var ColliderRadiusScale)) { colliderRadiusScale = (float)ColliderRadiusScale; } if (data.data.TryGetValue("ColliderLengthScale", out var ColliderLengthScale)) { colliderLengthScale = (float)ColliderLengthScale; } if (data.data.TryGetValue("DanAutoTarget", out var DanAutoTarget)) { autoTarget = (ControllerOptions.AutoTarget)DanAutoTarget; } if (data.data.TryGetValue("MaxPush", out var MaxPush)) { maxPush = (float)MaxPush; } if (data.data.TryGetValue("MaxPull", out var MaxPull)) { maxPull = (float)MaxPull; } if (data.data.TryGetValue("PullRate", out var PullRate)) { pullRate = (float)PullRate; } if (data.data.TryGetValue("ReturnRate", out var ReturnRate)) { returnRate = (float)ReturnRate; } if (data.data.TryGetValue("EnableBellyBulge", out var EnableBellyBulge)) { enableBellyBulge = (bool)EnableBellyBulge; } if (data.data.TryGetValue("BellyBulgeScale", out var BellyBulgeScale)) { bellyBulgeScale = (float)BellyBulgeScale; } } danOptions = new DanOptions(colliderRadiusScale, colliderLengthScale, lengthSquish, girthSquish, squishThreshold, false, 10.0f); collisionOptions = new CollisionOptions(maxPush, maxPull, pullRate, returnRate, enableBellyBulge, bellyBulgeScale); controllerOptions = new ControllerOptions(autoTarget); cardReloaded = true; base.OnReload(currentGameMode, maintainState); }