Linefy Documentation / Draw In Editor Window example

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using Linefy;
using Linefy.Primitives;
 
namespace LinefyExamples {
    public class DrawInEditorWindow : MonoBehaviour {
        public class CustomEditorWindow : EditorWindow {
 
            EditorGUIViewport viewport;
            CircularPolyline circle;
 
            [MenuItem("Window/Linefy Draw In Editor Window Example", false, 0)]
            public static void OpenCustomWindow() {
                EditorWindow.GetWindow(typeof(CustomEditorWindow), false, "Draw In Editor Window Example");
            }
 
            private void OnEnable() {
                viewport = new EditorGUIViewport();
                circle = new CircularPolyline(3, 1, new Linefy.Serialization.SerializationData_Polyline(2, Color.green, 1, true));
            }
 
            private void OnGUI() {
                Repaint();
                if (Event.current.type == EventType.Repaint) {
                    Rect r = new Rect(8, 8, position.width - 16, position.height - 16);
                    float maxSize = Mathf.Min(r.width, r.height) * 0.48f;
                    viewport.SetParams(r);
                    for (int i = 0; i < 36; i++) {
                        Matrix4x4 tm = Matrix4x4.TRS(viewport.GUItoLocalSpace(r.center), Quaternion.Euler(0, 0,  i * 120f / 36), Vector3.one * maxSize);
                        viewport.DrawLocalSpace(circle, tm);
                    }
                    viewport.backgroundColor = new Color(0.4f, 0.4f, 0.4f, 1f);
                    viewport.Render();
                }
            }
 
            private void OnDisable() {
                viewport.Dispose();
                circle.Dispose();
            }
        }
    }
}