Example #1
0
        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();
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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;
        }
Example #6
0
        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}");
        }
Example #7
0
 public DanAgent(ChaControl character, DanOptions options)
 {
     Initialize(character, options);
 }
Example #8
0
 internal void UpdateDanOptions(DanOptions danOptions)
 {
     m_danOptions = danOptions;
 }
Example #9
0
        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);
        }