void Start() { if (LookAtTargetType == VRM10ObjectLookAt.LookAtTargetTypes.CalcYawPitchToGaze) { if (Gaze == null) { LookAtTargetType = VRM10ObjectLookAt.LookAtTargetTypes.SetYawPitch; } } }
static void OnSceneGUILookAt(VRM10ObjectLookAt lookAt, Transform head, VRM10ObjectLookAt.LookAtTargetTypes lookAtTargetType, Transform gaze) { if (head == null) { return; } if (gaze != null) { { EditorGUI.BeginChangeCheck(); var newTargetPosition = Handles.PositionHandle(gaze.position, Quaternion.identity); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(gaze, "Change Look At Target Position"); gaze.position = newTargetPosition; } } Handles.color = new Color(1, 1, 1, 0.6f); Handles.DrawDottedLine(lookAt.GetLookAtOrigin(head).position, gaze.position, 4.0f); } var(yaw, pitch) = lookAt.GetLookAtYawPitch(head, lookAtTargetType, gaze); var lookAtOriginMatrix = lookAt.GetLookAtOrigin(head).localToWorldMatrix; Handles.matrix = lookAtOriginMatrix; var p = lookAt.OffsetFromHead; Handles.Label(Vector3.zero, $"FromHead: [{p.x:0.00}, {p.y:0.00}, {p.z:0.00}]\nYaw: {yaw:0.}degree\nPitch: {pitch:0.}degree"); Handles.color = new Color(0, 1, 0, 0.2f); Handles.DrawSolidArc(Vector3.zero, Matrix4x4.identity.GetColumn(1), Matrix4x4.identity.GetColumn(2), yaw, RADIUS); var yawQ = Quaternion.AngleAxis(yaw, Vector3.up); var yawMatrix = default(Matrix4x4); yawMatrix.SetTRS(Vector3.zero, yawQ, Vector3.one); Handles.matrix = lookAtOriginMatrix * yawMatrix; Handles.color = new Color(1, 0, 0, 0.2f); Handles.DrawSolidArc(Vector3.zero, Matrix4x4.identity.GetColumn(0), Matrix4x4.identity.GetColumn(2), -pitch, RADIUS); }