您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
77 行
2.4 KiB
77 行
2.4 KiB
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
#pragma warning disable 0414
|
|
#pragma warning disable 0219
|
|
|
|
namespace UnityEditor.Experimental.Graph.Examples
|
|
{
|
|
internal class IMGUICanvas2D : EditorWindow
|
|
{
|
|
[MenuItem("Window/Canvas2D/IMGUI Coexistence Example")]
|
|
public static void ShowWindow()
|
|
{
|
|
GetWindow(typeof(IMGUICanvas2D));
|
|
}
|
|
|
|
private Canvas2D m_Canvas = null;
|
|
private EditorWindow m_HostWindow = null;
|
|
private List<CanvasElement> m_Data = new List<CanvasElement>();
|
|
|
|
public void AddElement(CanvasElement e)
|
|
{
|
|
m_Data.Add(e);
|
|
m_Canvas.ReloadData();
|
|
|
|
var scaling = e.scale;
|
|
}
|
|
|
|
private void InitializeCanvas()
|
|
{
|
|
if (m_Canvas == null)
|
|
{
|
|
m_Canvas = new Canvas2D(this, m_HostWindow, new IMGUIDataSource(m_Data));
|
|
|
|
// draggable manipulator allows to move the canvas around. Note that individual elements can have the draggable manipulator on themselves
|
|
m_Canvas.AddManipulator(new Draggable(2, EventModifiers.None));
|
|
m_Canvas.AddManipulator(new Draggable(0, EventModifiers.Alt));
|
|
|
|
// make the canvas zoomable
|
|
m_Canvas.AddManipulator(new Zoomable());
|
|
|
|
// allow framing the selection when hitting "F" (frame) or "A" (all). Basically shows how to trap a key and work with the canvas selection
|
|
m_Canvas.AddManipulator(new Frame(Frame.FrameType.All));
|
|
m_Canvas.AddManipulator(new Frame(Frame.FrameType.Selection));
|
|
|
|
// The following manipulator show how to work with canvas2d overlay and background rendering
|
|
m_Canvas.AddManipulator(new RectangleSelect());
|
|
m_Canvas.AddManipulator(new ScreenSpaceGrid());
|
|
|
|
AddElement(new IMGUIExampleWidget(new Vector2(0.0f, 250.0f), 300.0f));
|
|
}
|
|
|
|
Rebuild();
|
|
}
|
|
|
|
private void Rebuild()
|
|
{
|
|
if (m_Canvas == null)
|
|
return;
|
|
|
|
m_Canvas.Clear();
|
|
m_Canvas.ReloadData();
|
|
m_Canvas.ZSort();
|
|
}
|
|
|
|
void OnGUI()
|
|
{
|
|
m_HostWindow = this;
|
|
if (m_Canvas == null)
|
|
{
|
|
InitializeCanvas();
|
|
}
|
|
|
|
m_Canvas.OnGUI(this, new Rect(0, 0, position.width, position.height));
|
|
}
|
|
}
|
|
}
|