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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
protected abstract bool IsAnyMatchedAbsorberNearby(out IAbsorber nearestAbsorber);
public AbsorbTargetEventArgs(GameObject grabbingHand, IAbsorber absorber) { m_grabbingHand = grabbingHand; m_absorber = absorber; }