From ccbe3cf6aea0087955a7fc31922156f93a4d7e0f Mon Sep 17 00:00:00 2001 From: ousttrue Date: Fri, 13 Apr 2018 20:50:54 +0900 Subject: [PATCH] add preview for VRMLookAtHeadEditor --- Scripts/LookAt/Editor/VRMLookAtHeadEditor.cs | 38 ++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/Scripts/LookAt/Editor/VRMLookAtHeadEditor.cs b/Scripts/LookAt/Editor/VRMLookAtHeadEditor.cs index 409006e72..663b3c833 100644 --- a/Scripts/LookAt/Editor/VRMLookAtHeadEditor.cs +++ b/Scripts/LookAt/Editor/VRMLookAtHeadEditor.cs @@ -8,10 +8,48 @@ namespace VRM public class VRMLookAtHeadEditor : Editor { VRMLookAtHead m_target; + PreviewRenderUtility m_previewRenderUtility; void OnEnable() { m_target = (VRMLookAtHead)target; + m_previewRenderUtility = new PreviewRenderUtility(true); + } + + private void OnDisable() + { + m_previewRenderUtility.Cleanup(); + m_previewRenderUtility = null; + } + + static void SetPreviewCamera(Camera camera, Vector3 target, Vector3 forward) + { + camera.fieldOfView = 30f; + camera.farClipPlane = 100; + camera.nearClipPlane = 0.1f; + + camera.transform.position = target + forward * 0.8f; + camera.transform.LookAt(target); + camera.Render(); + } + + public override bool HasPreviewGUI() + { + return true; + } + + public override void OnPreviewGUI(Rect r, GUIStyle background) + { + m_previewRenderUtility.BeginPreview(r, background); + var target = m_target.Head.Transform; + if (target != null) + { + SetPreviewCamera(m_previewRenderUtility.m_Camera, + target.position + new Vector3(0, 0.1f, 0), + target.forward + ); + } + m_previewRenderUtility.EndAndDrawPreview(r); } const float RADIUS = 0.5f;