This commit is contained in:
MuHua-123
2024-11-25 18:32:05 +08:00
parent 72d1f89b54
commit 84243e75a8
353 changed files with 17666 additions and 3206 deletions
@@ -0,0 +1,26 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
/// <summary>
/// UI输入模块
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class ModuleUIInput<T> : MonoBehaviour {
/// <summary> 必须要初始化 </summary>
protected abstract void Awake();
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
/// <summary> 当前输入单元 </summary>
public abstract T Current { get; }
/// <summary> 改变输入单元时触发 </summary>
public abstract event Action<T> OnChangeInput;
/// <summary> 改变输入单元 </summary>
public abstract void ChangeInput(T input);
/// <summary> 绑定UI </summary>
public abstract void Binding(VisualElement element);
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 41107ff888d44274e9593642528ccdd6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,76 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
/// <summary>
/// 烘焙输入模块
/// </summary>
public class UIInputBaking : ModuleUIInput<UnitMouseInput> {
private bool isDownMouseLeft;
private bool isDownMouseRight;
private UnitMouseInput leftInputUnit;
private UnitMouseInput rightInputUnit;
/// <summary> 设计视图相机模块 </summary>
protected ModuleViewCamera ViewCamera => ModuleCore.ViewCameraBaking;
public override UnitMouseInput Current => leftInputUnit;
public override event Action<UnitMouseInput> OnChangeInput;
public override void ChangeInput(UnitMouseInput input) {
leftInputUnit = input;
OnChangeInput?.Invoke(input);
}
protected override void Awake() {
ModuleCore.UIInputBaking = this;
rightInputUnit = new BakingRotate();
}
public override void Binding(VisualElement element) {
element.RegisterCallback<MouseDownEvent>(MouseDown);
element.RegisterCallback<MouseMoveEvent>(MouseMove);
element.RegisterCallback<MouseUpEvent>(MouseRelease);
element.RegisterCallback<MouseOutEvent>(MouseRelease);
element.RegisterCallback<WheelEvent>(ScrollWheel);
}
private void MouseDown(MouseDownEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, 0);
if (evt.button == 0) { leftInputUnit.MouseDown(data); isDownMouseLeft = true; }
if (evt.button == 1) { rightInputUnit.MouseDown(data); isDownMouseRight = true; }
}
private void MouseMove(MouseMoveEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, 0);
if (isDownMouseLeft) { leftInputUnit.MouseDrag(data); }
if (isDownMouseRight) { rightInputUnit.MouseDrag(data); }
if (evt.button == 0) { leftInputUnit.MouseMove(data); }
if (evt.button == 1) { rightInputUnit.MouseMove(data); }
}
private void MouseRelease(MouseUpEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, 0);
leftInputUnit.MouseRelease(data); isDownMouseLeft = false;
rightInputUnit.MouseRelease(data); isDownMouseRight = false;
}
private void MouseRelease(MouseOutEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, 0);
leftInputUnit.MouseRelease(data); isDownMouseLeft = false;
rightInputUnit.MouseRelease(data); isDownMouseRight = false;
}
private void ScrollWheel(WheelEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, evt.delta.y);
float size = ViewCamera.Scale + data.ScrollWheel;
size = Mathf.Clamp(size, -10f, -1f);
ViewCamera.Scale = Mathf.Lerp(ViewCamera.Scale, size, Time.deltaTime * 50);
}
private DataMouseInput CreateData(Vector2 localMousePosition, float scrollWheel) {
DataMouseInput data = new DataMouseInput();
data.ScrollWheel = scrollWheel;
data.ViewPosition = ViewCamera.ScreenToViewPosition(localMousePosition);
data.WorldPosition = ViewCamera.ScreenToWorldPosition(localMousePosition);
data.ScreenPosition = localMousePosition;
return data;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2f4e648fd2afac64eb1a2a9fa2f82246
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,76 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
/// <summary>
/// 设计输入模块
/// </summary>
public class UIInputDesign : ModuleUIInput<UnitMouseInput> {
private bool isDownMouseLeft;
private bool isDownMouseRight;
private UnitMouseInput leftInputUnit;
private UnitMouseInput rightInputUnit;
/// <summary> 设计视图相机模块 </summary>
protected ModuleViewCamera ViewCamera => ModuleCore.ViewCameraDesign;
public override UnitMouseInput Current => leftInputUnit;
public override event Action<UnitMouseInput> OnChangeInput;
public override void ChangeInput(UnitMouseInput input) {
leftInputUnit = input;
OnChangeInput?.Invoke(input);
}
protected override void Awake() {
ModuleCore.UIInputDesign = this;
rightInputUnit = new DesignMobile();
}
public override void Binding(VisualElement element) {
element.RegisterCallback<MouseDownEvent>(MouseDown);
element.RegisterCallback<MouseMoveEvent>(MouseMove);
element.RegisterCallback<MouseUpEvent>(MouseRelease);
element.RegisterCallback<MouseOutEvent>(MouseRelease);
element.RegisterCallback<WheelEvent>(ScrollWheel);
}
private void MouseDown(MouseDownEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, 0);
if (evt.button == 0) { leftInputUnit.MouseDown(data); isDownMouseLeft = true; }
if (evt.button == 1) { rightInputUnit.MouseDown(data); isDownMouseRight = true; }
}
private void MouseMove(MouseMoveEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, 0);
if (isDownMouseLeft) { leftInputUnit.MouseDrag(data); }
if (isDownMouseRight) { rightInputUnit.MouseDrag(data); }
leftInputUnit.MouseMove(data);
rightInputUnit.MouseMove(data);
}
private void MouseRelease(MouseUpEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, 0);
leftInputUnit.MouseRelease(data); isDownMouseLeft = false;
rightInputUnit.MouseRelease(data); isDownMouseRight = false;
}
private void MouseRelease(MouseOutEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, 0);
leftInputUnit.MouseRelease(data); isDownMouseLeft = false;
rightInputUnit.MouseRelease(data); isDownMouseRight = false;
}
private void ScrollWheel(WheelEvent evt) {
DataMouseInput data = CreateData(evt.localMousePosition, evt.delta.y);
float size = ViewCamera.Scale + data.ScrollWheel;
size = Mathf.Clamp(size, 0.1f, 4);
ViewCamera.Scale = Mathf.Lerp(ViewCamera.Scale, size, Time.deltaTime * 20);
}
private DataMouseInput CreateData(Vector2 localMousePosition, float scrollWheel) {
DataMouseInput data = new DataMouseInput();
data.ScrollWheel = scrollWheel;
data.ViewPosition = ViewCamera.ScreenToViewPosition(localMousePosition);
data.WorldPosition = ViewCamera.ScreenToWorldPosition(localMousePosition);
data.ScreenPosition = localMousePosition;
return data;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a9cf538c2c848fc4ca95d1f860f11acc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: