E_ElecCompetition/Electrical_inspectionCompet.../Assets/Script/Tools/KXScanOperator.cs

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);
}
}
}