summaryrefslogtreecommitdiff
path: root/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Transform/RotateTo.cs
blob: 8b44479a8e3a250d58934d9e850a4d52dd299a65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using UnityEngine;

namespace UnityEngine.Graphs.LogicGraph
{
	public partial class TransformNodes
	{
		[Logic (typeof (Transform))]
		public sealed class RotateTo : YieldedTransformNodeBase
		{
			private readonly IRotateToRotationCalculator m_RotationCalculator;
			private Quaternion m_InitialRotation;
			private Quaternion m_TargetRelativeRotation;

			public override Transform target { set { m_Target = value; } }
			public Quaternion targetOffset { set { m_TargetRelativeRotation = value; } }

			public RotateTo ()
			{
				m_RotationCalculator = StandardRotateToRotationCalculator.s_Instance;
			}

			public RotateTo (Transform self, Transform target, Quaternion targetRelativeRotation, float time, IRotateToRotationCalculator rotationCalculator)
				: base (self, target, time)
			{
				m_TargetRelativeRotation = targetRelativeRotation;
				m_RotationCalculator = rotationCalculator;
			}

			protected override void OnStart ()
			{
				m_InitialRotation = self.rotation;
			}

			protected override void OnUpdate ()
			{
				self.rotation = m_RotationCalculator.CalculateRotation (m_Target, m_TargetRelativeRotation, m_InitialRotation, m_Percentage, m_Curve);
			}

			protected override void OnDone ()
			{
				self.rotation = m_RotationCalculator.CalculateRotation (m_Target, m_TargetRelativeRotation, m_InitialRotation, 1.0f, m_Curve);
			}
		}
	}
}