您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
135 行
4.0 KiB
135 行
4.0 KiB
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Unity.UIWidgets.editor2;
|
|
using Unity.UIWidgets.engine2;
|
|
using Unity.UIWidgets.foundation;
|
|
using Unity.UIWidgets.ui;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using Rect = UnityEngine.Rect;
|
|
|
|
namespace Unity.UIWidgets.Editor {
|
|
public class UIWidgetsEditorPanel : EditorWindow, IUIWidgetsWindow {
|
|
UIWidgetsPanelWrapper _wrapper;
|
|
|
|
public UIWidgetsWindowType getWindowType() {
|
|
return UIWidgetsWindowType.EditorWindowPanel;
|
|
}
|
|
|
|
public bool isActive() {
|
|
return true;
|
|
}
|
|
|
|
public void startCoroutine(IEnumerator routing) {
|
|
this.StartCoroutine(routing);
|
|
}
|
|
|
|
public void onNewFrameScheduled() {
|
|
Repaint();
|
|
}
|
|
|
|
public Offset windowPosToScreenPos(Offset offset) {
|
|
return offset;
|
|
}
|
|
|
|
int _currentWidth {
|
|
get { return Mathf.RoundToInt(position.size.x); }
|
|
}
|
|
|
|
int _currentHeight {
|
|
get { return Mathf.RoundToInt(position.size.y); }
|
|
}
|
|
|
|
float _currentDevicePixelRatio {
|
|
get { return EditorGUIUtility.pixelsPerPoint; }
|
|
}
|
|
|
|
void OnDestroy() {
|
|
D.assert(_wrapper != null);
|
|
_wrapper?.Destroy();
|
|
_wrapper = null;
|
|
|
|
Input_OnDisable();
|
|
}
|
|
|
|
void OnEnable() {
|
|
D.assert(_wrapper == null);
|
|
_wrapper = new UIWidgetsPanelWrapper();
|
|
_wrapper.Initiate(this, _currentWidth, _currentHeight, _currentDevicePixelRatio, new Dictionary<string, object>());
|
|
|
|
Input_OnEnable();
|
|
}
|
|
|
|
void Update() {
|
|
_wrapper.onEditorUpdate();
|
|
}
|
|
|
|
void OnGUI()
|
|
{
|
|
if (_wrapper != null) {
|
|
if (_wrapper.didDisplayMetricsChanged(_currentWidth, _currentHeight, _currentDevicePixelRatio)) {
|
|
_wrapper.OnDisplayMetricsChanged(_currentWidth, _currentHeight, _currentDevicePixelRatio);
|
|
}
|
|
|
|
GUI.DrawTexture(new Rect(0.0f, 0.0f, position.width, position.height), _wrapper.renderTexture);
|
|
Input_OnGUIEvent(Event.current);
|
|
}
|
|
}
|
|
|
|
Vector2? _getPointerPosition(Vector2 position) {
|
|
return new Vector2(position.x, position.y);
|
|
}
|
|
|
|
int _buttonToPointerId(int buttonId) {
|
|
if (buttonId == 0) {
|
|
return -1;
|
|
}
|
|
else if (buttonId == 1) {
|
|
return -2;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void Input_OnGUIEvent(Event evt) {
|
|
if (evt.type == EventType.MouseDown) {
|
|
var pos = _getPointerPosition(evt.mousePosition);
|
|
_wrapper.OnPointerDown(pos, _buttonToPointerId(evt.button));
|
|
}
|
|
else if (evt.type == EventType.MouseUp || evt.rawType == EventType.MouseUp) {
|
|
var pos = _getPointerPosition(evt.mousePosition);
|
|
_wrapper.OnPointerUp(pos, _buttonToPointerId(evt.button));
|
|
}
|
|
else if (evt.type == EventType.MouseDrag) {
|
|
var pos = _getPointerPosition(evt.mousePosition);
|
|
_wrapper.OnMouseMove(pos);
|
|
}
|
|
else if (evt.type == EventType.MouseMove) {
|
|
var pos = _getPointerPosition(evt.mousePosition);
|
|
_wrapper.OnMouseMove(pos);
|
|
}
|
|
else if (evt.type == EventType.ScrollWheel && evt.delta.magnitude != 0) {
|
|
var delta = evt.delta;
|
|
delta.y /= 3f;
|
|
var pos = _getPointerPosition(evt.mousePosition);
|
|
_wrapper.OnMouseScroll(delta, pos);
|
|
}
|
|
|
|
}
|
|
|
|
public void mainEntry() {
|
|
main();
|
|
}
|
|
|
|
protected virtual void main() {
|
|
}
|
|
|
|
void Input_OnDisable() {
|
|
|
|
}
|
|
|
|
void Input_OnEnable() {
|
|
|
|
}
|
|
}
|
|
}
|