void UpdateTarget(PathMagicAnimator pathMagicAnimator) { Vector3 position = Vector3.zero; Quaternion rotation = Quaternion.identity; float velocity = 1.0f; int waypoint = 0; if (pathMagicAnimator.pathMagic.presampledPath) { pathMagicAnimator.pathMagic.sampledPositionAndRotationAndVelocityAndWaypointAtPos(pathMagicAnimator.currentPos, out position, out rotation, out velocity, out waypoint); } else { position = pathMagicAnimator.pathMagic.computePositionAtPos(pathMagicAnimator.currentPos); rotation = pathMagicAnimator.pathMagic.computeRotationAtPos(pathMagicAnimator.currentPos); velocity = pathMagicAnimator.pathMagic.computeVelocityAtPos(pathMagicAnimator.currentPos); waypoint = pathMagicAnimator.pathMagic.GetWaypointFromPos(pathMagicAnimator.currentPos); } if (pathMagicAnimator.globalFollowPath) { // Global follow path override rotation = pathMagicAnimator.pathMagic.GetFaceForwardForPos(pathMagicAnimator.currentPos); } else if (pathMagicAnimator.globalLookAt != null) { // Global look at override rotation = Quaternion.LookRotation(pathMagicAnimator.pathMagic.transform.InverseTransformPoint(pathMagicAnimator.globalLookAt.position) - position); } pathMagicAnimator.UpdateTarget(position, rotation); }