// 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; }
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; }
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); }
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); }