14 [Tooltip(
"Distance along the center line the object will be located. 0.5 is halfway, 1.0 is at the second transform, 0.0 is at the first transform.")]
16 private float partwayOffset = 0.5f;
21 public float PartwayOffset
23 get {
return partwayOffset; }
24 set { partwayOffset = Mathf.Clamp(value, 0.0f, 1.0f); }
28 [Tooltip(
"Tracked object to calculate position and orientation for the second object. If you want to manually override and use a scene object, use the TransformTarget field.")]
37 get {
return trackedObjectForSecondTransform; }
40 trackedObjectForSecondTransform = value;
41 if (secondSolverHandler != null)
43 secondSolverHandler.TrackedObjectToReference = value;
49 [Tooltip(
"This transform overrides any Tracked Object as the second point in the In Between.")]
51 private Transform secondTransformOverride = null;
55 private void OnValidate()
57 UpdateSecondSolverHandler();
63 secondSolverHandler = gameObject.AddComponent<
SolverHandler>();
65 UpdateSecondSolverHandler();
70 if (solverHandler != null && secondSolverHandler != null)
72 if (solverHandler.TransformTarget != null && secondSolverHandler.
TransformTarget != null)
74 AdjustPositionForOffset(solverHandler.TransformTarget, secondSolverHandler.
TransformTarget);
79 private void AdjustPositionForOffset(Transform targetTransform, Transform secondTransform)
81 if (targetTransform != null && secondTransform != null)
83 Vector3 centerline = targetTransform.position - secondTransform.position;
84 GoalPosition = secondTransform.position + (centerline * partwayOffset);
85 UpdateWorkingPosToGoal();
89 private void UpdateSecondSolverHandler()
91 if (secondSolverHandler != null)
93 if (secondTransformOverride != null)
109 UpdateSecondSolverHandler();