Exemplo n.º 1
0
 void Start()
 {
     if (LookAtTargetType == VRM10ObjectLookAt.LookAtTargetTypes.CalcYawPitchToGaze)
     {
         if (Gaze == null)
         {
             LookAtTargetType = VRM10ObjectLookAt.LookAtTargetTypes.SetYawPitch;
         }
     }
 }
Exemplo n.º 2
0
        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);
        }