Пример #1
0
        protected override bool IsAnyMatchedAbsorberNearby(out IAbsorber nearestAbsorber)
        {
            nearestAbsorber = null;
            float nearestDistance = Mathf.Infinity;

            for (int i = 0; i < KaiTool_BasicAbsorber.s_absorberList.Count; i++)
            {
                var absorber_Temp = KaiTool_Absorber.s_absorberList[i];
                var dis_Temp      = (absorber_Temp.transform.position - transform.position).magnitude;
                if (dis_Temp < m_absorptionRadius)
                {
                    if (absorber_Temp.AbsorbType == AbsorbType)
                    {
                        if (AbsorbName == absorber_Temp.AbsorbName)
                        {
                            if (dis_Temp < nearestDistance)
                            {
                                nearestAbsorber = absorber_Temp;
                                nearestDistance = dis_Temp;
                            }
                        }
                    }
                }
            }
            if (nearestAbsorber == null)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Пример #2
0
        protected override bool IsAnyMatchedAbsorberNearby(out IAbsorber nearestAbsorber)
        {
            nearestAbsorber = null;
            float nearestDistance = Mathf.Infinity;

            for (int i = 0; i < KaiTool_VR_BasicAbsorber.s_absorberList.Count; i++)
            {
                var absorber_Temp = KaiTool_VR_BasicAbsorber.s_absorberList[i];
                var dis           = (absorber_Temp.transform.position - transform.position).magnitude;
                var angle         = Vector3.Angle(absorber_Temp.transform.forward, transform.forward);
                if (dis < m_distanceLimit && angle < m_angularLimit && absorber_Temp.AbsorbType == AbsorbType)
                {
                    if (AbsorbName == absorber_Temp.AbsorbName)
                    {
                        if (dis < nearestDistance)
                        {
                            nearestAbsorber = absorber_Temp;
                            nearestDistance = dis;
                        }
                    }
                }
            }
            if (nearestAbsorber == null)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Пример #3
0
 private void OnHoveredOut(UnityEngine.Object sender, AbsorbTargetEventArgs e)
 {
     m_isHovered = false;
     m_hoveringAbsorber.OnHoveringOut(this, new AbsorberEventArgs(this));
     m_hoveringAbsorber = null;
     if (m_hoveredOut != null)
     {
         m_hoveredOut(sender, e);
     }
 }
Пример #4
0
 private void OnHoveredIn(UnityEngine.Object sender, AbsorbTargetEventArgs e)
 {
     m_isHovered        = true;
     m_hoveringAbsorber = e.m_absorber;
     m_hoveringAbsorber.OnHoveringIn(this, new AbsorberEventArgs(this));
     if (m_hoveredIn != null)
     {
         m_hoveredIn(sender, e);
     }
 }
Пример #5
0
 private void OnReleased(UnityEngine.Object sender, AbsorbTargetEventArgs e)
 {
     m_isAbsorbed = false;
     m_currentAbsorber.OnReleasing(this, new AbsorberEventArgs(this));
     m_currentAbsorber = null;
     if (m_released != null)
     {
         m_released(sender, e);
     }
 }
Пример #6
0
 private void OnAbsorbbed(UnityEngine.Object sender, AbsorbTargetEventArgs e)
 {
     m_isAbsorbed      = true;
     m_currentAbsorber = e.m_absorber;
     m_currentAbsorber.OnAbsorbbing(this, new AbsorberEventArgs(this));
     if (m_absorbbed != null)
     {
         m_absorbbed(sender, e);
     }
 }
Пример #7
0
        private void OnAbsorbbed(UnityEngine.Object sender, AbsorbTargetEventArgs e)
        {
            m_isAbsorbed      = true;
            m_isCanbeAbsorbed = false;
            m_currentAbsorber = e.m_absorber;
            transform.SetParent(m_currentAbsorber.Anchor);
            m_currentAbsorber.OnAbsorbbing(this, new AbsorberEventArgs(this));

            if (m_absorbbed != null)
            {
                m_absorbbed(sender, e);
            }
        }
Пример #8
0
        private void OnReleased(UnityEngine.Object sender, AbsorbTargetEventArgs e)
        {
            m_isAbsorbed      = false;
            m_isCanbeAbsorbed = true;
            var x = 0f;

            if (m_judgeAbsorbable != null)
            {
                m_judgeAbsorbable.Kill();
            }
            m_judgeAbsorbable = DOTween.To(() => x, (value) => x = value, 0, CANBEABSORBED_DURATION).OnComplete(() =>
            {
                m_isCanbeAbsorbed = false;
            });
            transform.SetParent(m_parent_Origin);
            m_currentAbsorber.OnReleasing(this, new AbsorberEventArgs(this));
            m_currentAbsorber = null;
            if (m_released != null)
            {
                m_released(sender, e);
            }
        }
Пример #9
0
 protected abstract bool IsAnyMatchedAbsorberNearby(out IAbsorber nearestAbsorber);
Пример #10
0
 public AbsorbTargetEventArgs(GameObject grabbingHand, IAbsorber absorber)
 {
     m_grabbingHand = grabbingHand;
     m_absorber     = absorber;
 }