Пример #1
0
        // Update is called once per frame
        private void Update()
        {
            if (ToPoint == null || FromPoint == null)
            {
                return;
            }

            if (fromTransform == null || toTransform == null)
            {
                var fromDest = FromPoint.GetComponent <DestinationPointAnchor>();
                fromTransform = fromDest != null ? fromDest.InnerObjectTransform: FromPoint.transform;

                var toDest = ToPoint.GetComponent <DestinationPointAnchor>();
                toTransform = toDest != null ? toDest.InnerObjectTransform : ToPoint.transform;
            }

            transform.position = fromTransform.position;

            var pos       = toTransform.position - fromTransform.position;
            var deltaX    = pos.x * 1f / 3f;
            var deltaZ    = pos.z * 1f / 3f;
            var posDelta1 = new Vector3(deltaX, curv, deltaZ);
            var posDelta2 = new Vector3(deltaX * 2f, curv, deltaZ * 2f);

            dataProvider.ControlPoints[1].Position = posDelta1;
            dataProvider.ControlPoints[2].Position = posDelta2;
            dataProvider.ControlPoints[3].Position = pos;
        }
Пример #2
0
        private FromPoint GetFromPoint(LegPosition homeLegPosition, int startPosition, Leg leg)
        {
            FromPoint point;
            switch ((step + startPosition) % 6)
            {
                case 0:
                case 5:
                    point = new FromPoint(homeLegPosition.X, homeLegPosition.Z, homeLegPosition.Y);
                    break;
                default:
                    point = new FromPoint(leg.X, leg.Z, homeLegPosition.Y);
                    break;
            }

            return point;
        }
Пример #3
0
        private void CalculateNextStepRotation(Leg leg, double degrees, double yDistance, FromPoint fromPoint, double centerX, double centerZ)
        {
            double newX;
            double newZ;
            double newY;

            Leg.CalculateNewCoordinatesForRotation(leg.DistanceToX + fromPoint.FromX, leg.DistanceToZ + fromPoint.FromZ, centerX, centerZ, degrees, out newX, out newZ);

            newY = fromPoint.FromY - yDistance;
            leg.SetRealXYZ(newX, newZ, newY);
        }
Пример #4
0
        private void CalculateNextStep(Leg leg, double direction, double distance, double yDistance, FromPoint fromPoint)
        {
            double newX;
            double newZ;
            double newY;

            Leg.CalculateXandZ(direction, distance, leg.Side, fromPoint.FromX, fromPoint.FromZ, out newX, out newZ);
            newY = fromPoint.FromY - yDistance;
            leg.SetXYZ(newX, newZ, newY);
        }