合并代码
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class IDesignBezier : UIInputDesignUnit {
|
||||
/// <summary> 板片资产 </summary>
|
||||
public ModuleAssets<DataPlate> AssetsPlate => ModuleCore.AssetsPlate;
|
||||
/// <summary> 查询点算法模块 </summary>
|
||||
public ModuleAlgorithm<DataFindBezier> AlgorithmFindBezier => ModuleCore.AlgorithmFindBezier;
|
||||
|
||||
private Vector3 mousePosition;
|
||||
private Vector3 originalPosition;
|
||||
private DataFindBezier findBezier;
|
||||
private void FindPoint(Vector3 localPosition) {
|
||||
findBezier = new DataFindBezier();
|
||||
findBezier.position = localPosition;
|
||||
findBezier.datas = AssetsPlate.Datas;
|
||||
AlgorithmFindBezier.Compute(findBezier);
|
||||
}
|
||||
|
||||
public override void MouseDown(DataUIMouseInput data) {
|
||||
FindPoint(data.WorldPosition);
|
||||
if (!findBezier.IsValid) { return; }
|
||||
mousePosition = data.ScreenPosition;
|
||||
originalPosition = findBezier.isFront ? findBezier.point.frontBezier : findBezier.point.afterBezier;
|
||||
}
|
||||
public override void MouseDrag(DataUIMouseInput data) {
|
||||
if (!findBezier.IsValid) { return; }
|
||||
Vector3 original = ViewCamera.ScreenToWorldPosition(mousePosition);
|
||||
Vector3 current = data.WorldPosition;
|
||||
Vector3 offset = current - original;
|
||||
if (findBezier.isFront) { findBezier.point.frontBezier = originalPosition + offset; }
|
||||
else { findBezier.point.afterBezier = originalPosition + offset; }
|
||||
findBezier.plate.UpdateVisual();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c4c272ae3cc78a54c819d6b6194a75a8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,26 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class IDesignInsert : UIInputDesignUnit {
|
||||
/// <summary> 板片资产 </summary>
|
||||
public ModuleAssets<DataPlate> AssetsPlate => ModuleCore.AssetsPlate;
|
||||
/// <summary> 插入点算法模块 </summary>
|
||||
public ModuleAlgorithm<DataInsertPoint> AlgorithmInsertPoint => ModuleCore.AlgorithmInsertPoint;
|
||||
/// <summary> 插入点数据转换板片上的点 </summary>
|
||||
public ModuleBuilder<DataInsertPoint, DataPoint> InsertPointToPoint => ModuleCore.InsertPointToPoint;
|
||||
|
||||
private DataInsertPoint insertPoint;
|
||||
private void FindPoint(Vector3 localPosition) {
|
||||
insertPoint = new DataInsertPoint();
|
||||
insertPoint.position = localPosition;
|
||||
insertPoint.datas = AssetsPlate.Datas;
|
||||
AlgorithmInsertPoint.Compute(insertPoint);
|
||||
}
|
||||
|
||||
public override void MouseDown(DataUIMouseInput data) {
|
||||
FindPoint(data.WorldPosition);
|
||||
if (!insertPoint.IsValid) { return; }
|
||||
InsertPointToPoint.To(insertPoint);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6572c7ebab448a94d880fca85c728132
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,65 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class IDesignMobile : UIInputDesignUnit {
|
||||
/// <summary> 板片资产 </summary>
|
||||
public ModuleAssets<DataPlate> AssetsPlate => ModuleCore.AssetsPlate;
|
||||
/// <summary> 查询点算法模块 </summary>
|
||||
public ModuleAlgorithm<DataFindPoint> AlgorithmFindPoint => ModuleCore.AlgorithmFindPoint;
|
||||
/// <summary> 广播查询数据模块 </summary>
|
||||
public ModuleSending<DataFindPoint> SendingFindPoint => ModuleCore.SendingFindPoint;
|
||||
|
||||
private Vector3 mousePosition;
|
||||
private Vector3 originalPosition;
|
||||
private DataFindPoint findPoint;
|
||||
private void FindPoint(Vector3 localPosition) {
|
||||
findPoint = new DataFindPoint();
|
||||
findPoint.position = localPosition;
|
||||
findPoint.datas = AssetsPlate.Datas;
|
||||
AlgorithmFindPoint.Compute(findPoint);
|
||||
}
|
||||
|
||||
public override void MouseDown(DataUIMouseInput data) {
|
||||
FindPoint(data.WorldPosition);
|
||||
SendingFindPoint.Change(findPoint);
|
||||
if (findPoint.IsValidPoint) { RecordPoint(data.ScreenPosition); return; }
|
||||
if (findPoint.IsValidPlate) { RecordPlate(data.ScreenPosition); return; }
|
||||
RecordCamera(data.ScreenPosition);
|
||||
}
|
||||
public override void MouseDrag(DataUIMouseInput data) {
|
||||
Vector3 original = ViewCamera.ScreenToWorldPosition(mousePosition);
|
||||
Vector3 current = data.WorldPosition;
|
||||
Vector3 offset = current - original;
|
||||
|
||||
if (findPoint.IsValidPoint) { MobilePoint(offset); return; }
|
||||
if (findPoint.IsValidPlate) { MobilePlate(offset); return; }
|
||||
MobileCamera(offset);
|
||||
}
|
||||
|
||||
private void RecordPoint(Vector3 screenPosition) {
|
||||
mousePosition = screenPosition;
|
||||
originalPosition = findPoint.point.position;
|
||||
}
|
||||
private void MobilePoint(Vector3 offset) {
|
||||
findPoint.point.position = originalPosition + offset;
|
||||
findPoint.plate.UpdateVisual();
|
||||
}
|
||||
|
||||
private void RecordPlate(Vector3 screenPosition) {
|
||||
mousePosition = screenPosition;
|
||||
originalPosition = findPoint.plate.position;
|
||||
}
|
||||
private void MobilePlate(Vector3 offset) {
|
||||
findPoint.plate.position = originalPosition + offset;
|
||||
findPoint.plate.UpdateVisual();
|
||||
}
|
||||
|
||||
private void RecordCamera(Vector3 screenPosition) {
|
||||
mousePosition = screenPosition;
|
||||
originalPosition = ViewCamera.position;
|
||||
}
|
||||
private void MobileCamera(Vector3 offset) {
|
||||
ViewCamera.position = originalPosition - offset;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ebe339780ad7e11478aefbb1a97b9b51
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,13 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class IDesignScaleCamera : UIInputDesignUnit {
|
||||
public readonly float Min = 0.1f;
|
||||
public readonly float Max = 4f;
|
||||
public override void ScrollWheel(DataUIMouseInput data) {
|
||||
float size = ViewCamera.scale + data.ScrollWheel;
|
||||
size = Mathf.Clamp(size, Min, Max);
|
||||
ViewCamera.scale = Mathf.Lerp(ViewCamera.scale, size, Time.deltaTime * 20);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7d241a760e6fc5d45bc735f6f3fbf881
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,25 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class IDesignSelect : UIInputDesignUnit {
|
||||
/// <summary> 板片资产 </summary>
|
||||
public ModuleAssets<DataPlate> AssetsPlate => ModuleCore.AssetsPlate;
|
||||
/// <summary> 查询点算法模块 </summary>
|
||||
public ModuleAlgorithm<DataFindPoint> AlgorithmFindPoint => ModuleCore.AlgorithmFindPoint;
|
||||
/// <summary> 广播查询数据模块 </summary>
|
||||
public ModuleSending<DataFindPoint> SendingFindPoint => ModuleCore.SendingFindPoint;
|
||||
|
||||
private DataFindPoint findPoint;
|
||||
private void FindPoint(Vector3 localPosition) {
|
||||
findPoint = new DataFindPoint();
|
||||
findPoint.position = localPosition;
|
||||
findPoint.datas = AssetsPlate.Datas;
|
||||
AlgorithmFindPoint.Compute(findPoint);
|
||||
}
|
||||
|
||||
public override void MouseDown(DataUIMouseInput data) {
|
||||
FindPoint(data.WorldPosition);
|
||||
SendingFindPoint.Change(findPoint);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ae4eed99f97b5e40a3ab2ee36fbd7ab
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,101 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
/// <summary>
|
||||
/// 设计输入模块
|
||||
/// </summary>
|
||||
public class UIInputDesign : ModuleUIInput<UIInputDesignUnit> {
|
||||
private bool isDownMouseLeft;
|
||||
private bool isDownMouseRight;
|
||||
private bool isDownMouseMiddle;
|
||||
private UIInputDesignUnit leftInputUnit;
|
||||
private UIInputDesignUnit rightInputUnit;
|
||||
private UIInputDesignUnit middleInputUnit;
|
||||
private UIInputDesignUnit scrollInputUnit;
|
||||
|
||||
/// <summary> 设计视图相机模块 </summary>
|
||||
protected ModuleViewCamera ViewCamera => ModuleCore.ViewCameraDesign;
|
||||
|
||||
public override UIInputDesignUnit Current => leftInputUnit;
|
||||
public override event Action<UIInputDesignUnit> OnChangeInput;
|
||||
public override void ChangeInput(UIInputDesignUnit input) {
|
||||
leftInputUnit = input;
|
||||
OnChangeInput?.Invoke(input);
|
||||
}
|
||||
|
||||
protected override void Awake() {
|
||||
ModuleCore.UIInputDesign = this;
|
||||
rightInputUnit = new IDesignMobile();
|
||||
middleInputUnit = new IDesignScaleCamera();
|
||||
scrollInputUnit = new IDesignScaleCamera();
|
||||
}
|
||||
|
||||
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) {
|
||||
DataUIMouseInput data = CreateData(evt.localMousePosition, 0);
|
||||
if (evt.button == 0) { leftInputUnit.MouseDown(data); isDownMouseLeft = true; }
|
||||
if (evt.button == 1) { rightInputUnit.MouseDown(data); isDownMouseRight = true; }
|
||||
if (evt.button == 2) { middleInputUnit.MouseDown(data); isDownMouseMiddle = true; }
|
||||
}
|
||||
private void MouseMove(MouseMoveEvent evt) {
|
||||
DataUIMouseInput data = CreateData(evt.localMousePosition, 0);
|
||||
if (isDownMouseLeft) { leftInputUnit.MouseDrag(data); }
|
||||
if (isDownMouseRight) { rightInputUnit.MouseDrag(data); }
|
||||
if (isDownMouseMiddle) { middleInputUnit.MouseDrag(data); }
|
||||
if (evt.button == 0) { leftInputUnit.MouseMove(data); }
|
||||
if (evt.button == 1) { rightInputUnit.MouseMove(data); }
|
||||
if (evt.button == 2) { middleInputUnit.MouseMove(data); }
|
||||
}
|
||||
private void MouseRelease(MouseUpEvent evt) {
|
||||
DataUIMouseInput data = CreateData(evt.localMousePosition, 0);
|
||||
leftInputUnit.MouseRelease(data); isDownMouseLeft = false;
|
||||
rightInputUnit.MouseRelease(data); isDownMouseRight = false;
|
||||
middleInputUnit.MouseRelease(data); isDownMouseMiddle = false;
|
||||
}
|
||||
private void MouseRelease(MouseOutEvent evt) {
|
||||
DataUIMouseInput data = CreateData(evt.localMousePosition, 0);
|
||||
leftInputUnit.MouseRelease(data); isDownMouseLeft = false;
|
||||
rightInputUnit.MouseRelease(data); isDownMouseRight = false;
|
||||
middleInputUnit.MouseRelease(data); isDownMouseMiddle = false;
|
||||
}
|
||||
private void ScrollWheel(WheelEvent evt) {
|
||||
DataUIMouseInput data = CreateData(evt.localMousePosition, evt.delta.y);
|
||||
scrollInputUnit.ScrollWheel(data);
|
||||
}
|
||||
|
||||
private DataUIMouseInput CreateData(Vector2 localMousePosition, float scrollWheel) {
|
||||
DataUIMouseInput data = new DataUIMouseInput();
|
||||
data.ScrollWheel = scrollWheel;
|
||||
data.ViewPosition = ViewCamera.ScreenToViewPosition(localMousePosition);
|
||||
data.WorldPosition = ViewCamera.ScreenToWorldPosition(localMousePosition);
|
||||
data.ScreenPosition = localMousePosition;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
public abstract class UIInputDesignUnit {
|
||||
/// <summary> 核心模块 </summary>
|
||||
protected virtual ModuleCore ModuleCore => ModuleCore.I;
|
||||
/// <summary> 设计视图相机模块 </summary>
|
||||
protected ModuleViewCamera ViewCamera => ModuleCore.ViewCameraDesign;
|
||||
|
||||
/// <summary> 按下鼠标 </summary>
|
||||
public virtual void MouseDown(DataUIMouseInput data) { }
|
||||
/// <summary> 拖拽鼠标 </summary>
|
||||
public virtual void MouseDrag(DataUIMouseInput data) { }
|
||||
/// <summary> 移动鼠标 </summary>
|
||||
public virtual void MouseMove(DataUIMouseInput data) { }
|
||||
/// <summary> 释放鼠标 </summary>
|
||||
public virtual void MouseRelease(DataUIMouseInput data) { }
|
||||
/// <summary> 鼠标滚轮 </summary>
|
||||
public virtual void ScrollWheel(DataUIMouseInput data) { }
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a9cf538c2c848fc4ca95d1f860f11acc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user