154 lines
4.4 KiB
C#
154 lines
4.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using DG.Tweening;
|
|
using MyFrameworkPure;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
|
|
|
|
namespace CommonScript
|
|
{
|
|
public class KXScanOperator : MonoBehaviour
|
|
{
|
|
//public UnityAction onResetScanTarget;
|
|
|
|
|
|
//The speed of the "attach" process
|
|
|
|
|
|
//Controller in use
|
|
|
|
|
|
//The focus of the object's "attach" movement
|
|
|
|
|
|
//[SerializeField]
|
|
//private GameObject[] scanTargets;
|
|
|
|
//[SerializeField]
|
|
//private ToggleGroup toggleGroup;
|
|
|
|
//[SerializeField]
|
|
//private Button resetBtn;
|
|
|
|
[SerializeField]
|
|
private Bounds areaBounds;
|
|
|
|
private bool stayInScanPoint;
|
|
|
|
private Camera playercamera;
|
|
|
|
private GameObject curScanTarget;
|
|
|
|
private GestureTool gestureTool;
|
|
public float m_s = 1f;
|
|
public float m_r = 1f;
|
|
private const float MoveSpeed = 0.01f;
|
|
|
|
private const float RotSpeed = 1f;
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
|
|
curScanTarget = gameObject;
|
|
gestureTool = GestureTool.Instance;
|
|
gestureTool.onHorizontalMove.AddListener(HandleHorizontalGesture);
|
|
gestureTool.onVerticalMove.AddListener(HandleVerticalGesture);
|
|
}
|
|
|
|
void HandleHorizontalGesture(float delta)
|
|
{
|
|
|
|
|
|
curScanTarget.transform.Rotate(Vector3.down * delta * RotSpeed*m_r, Space.World);
|
|
|
|
}
|
|
|
|
void HandleVerticalGesture(float delta)
|
|
{
|
|
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
//RaycastHit hitInfo = new RaycastHit();
|
|
|
|
|
|
|
|
// Ray ray = playercamera.ScreenPointToRay(Input.mousePosition);
|
|
// bool isClickNewTarget = Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out hitInfo)
|
|
|
|
|
|
//if (isClickNewTarget)
|
|
//{
|
|
// if (curScanTarget == hitInfo.transform.gameObject)
|
|
// return;
|
|
// if (curScanTarget)
|
|
// ResetCurScanTarget();
|
|
|
|
// curScanTarget = hitInfo.transform.gameObject;
|
|
// GameObject targetPoint = GameObject.Find($"初始位置/观察/{curScanTarget.name}");
|
|
// if (!targetPoint)
|
|
// {
|
|
// targetPoint = GameObject.Find("初始位置/观察/默认");
|
|
// }
|
|
// Debug.Assert(targetPoint != null, "场景中不存在默认观察点!");
|
|
// DOTween.Kill(curScanTarget.transform);
|
|
// curScanTarget.transform.DOMove(targetPoint.transform.position, 1);
|
|
//}
|
|
|
|
//ClampScanTargetPos();
|
|
|
|
// OperatorToggleSwitcher.Switch(toggleGroup);
|
|
}
|
|
|
|
void OnDisable()
|
|
{
|
|
if(curScanTarget)
|
|
DOTween.Kill(curScanTarget);
|
|
curScanTarget = null;
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
if (gestureTool)
|
|
{
|
|
gestureTool.onHorizontalMove.RemoveListener(HandleHorizontalGesture);
|
|
gestureTool.onVerticalMove.RemoveListener(HandleVerticalGesture);
|
|
}
|
|
}
|
|
|
|
//public void ResetCurScanTarget()
|
|
//{
|
|
// DOTween.Kill(curScanTarget.transform);
|
|
// Transform point = GameObject.Find($"初始位置/材料/{curScanTarget.name}")?.transform;
|
|
// Debug.Assert(point != null, $"没有找到路径:初始位置/材料/{curScanTarget.name}");
|
|
// curScanTarget.transform.DOMove(point.position, 1);
|
|
// curScanTarget.transform.DORotate(point.eulerAngles, 1);
|
|
// curScanTarget = null;
|
|
//}
|
|
|
|
//void ClampScanTargetPos()
|
|
////{
|
|
//// if(!curScanTarget)
|
|
//// return;
|
|
//// if(areaBounds.extents == Vector3.zero)
|
|
//// return;
|
|
//// if (!areaBounds.Contains(curScanTarget.transform.position))
|
|
//// {
|
|
//// curScanTarget.transform.position = areaBounds.ClosestPoint(curScanTarget.transform.position);
|
|
//// }
|
|
//}
|
|
|
|
void OnDrawGizmosSelected()
|
|
{
|
|
Gizmos.color = Color.yellow;
|
|
Gizmos.DrawWireCube(areaBounds.center,areaBounds.size);
|
|
}
|
|
}
|
|
}
|
|
|