Пример #1
0
    private void UpdateNavigatorPosition()
    {
        try
        {
            _startPos = curveStart.transform.position;

            if (ReferenceEquals(null, _dickNavigator))
            {
                return;
            }
            var benisScale = transform.localScale.z;
            var position   = _dickNavigator.dickMidPoint.position;
            var distFactor = Vector3.Distance(position, _startPos) / (dockDistance * 1.25f * benisScale);
            var lerpFactor = 1f - Mathf.Clamp(distFactor - 1f, 0f, 1f);
            var up         = curveStart.transform.up;

            _midPos = Vector3.Lerp(_startPos + up * (1f * benisScale), position, lerpFactor);
            _endPos = Vector3.Lerp(_startPos + up * (2f * benisScale), _dickNavigator.dickEndPoint.position, lerpFactor);
        }
        catch (MissingReferenceException)
        {
            _dickNavigator = null;
        }
        catch (NullReferenceException)
        {
            _dickNavigator = null;
        }
    }
Пример #2
0
    private IEnumerator UpdateProxyInformation()
    {
        while (true)
        {
            if (useNearestNavigator)
            {
                if (DickNavigator.Instances.Count > 0)
                {
                    dickNavigator = DickNavigator.Instances
                                    .OrderBy(x => Vector3.Distance(x.dickMidPoint.position, StartPos))
                                    .First();
                }
            }

            if (useNearestProxy)
            {
                if (DickPuller.Instances.Count > 0)
                {
                    pullTransform = DickPuller.Instances
                                    .OrderBy(x => Vector3.Distance(x.transform.position, pullProxyRoot.transform.position))
                                    .First().gameObject.transform;
                }
                else
                {
                    pullTransform = pullProxy;
                }
            }

            // We don't need to find Nearest Proxies every single frame.
            yield return(new WaitForSeconds(.5f));
        }
    }
Пример #3
0
 private void AssignNearestDickNavigator()
 {
     if (!useNearestNavigator || DickNavigator.Instances.Count <= 0)
     {
         return;
     }
     _dickNavigator = DickNavigator.Instances
                      .OrderBy(x => (x.dickMidPoint.position - _startPos).sqrMagnitude)
                      .FirstOrDefault();
 }