Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
118 lines
2.6 KiB
C#
118 lines
2.6 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class ArrowControl : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private GameObject ArrowHead;
|
|
|
|
[SerializeField]
|
|
private GameObject ArrowEfc;
|
|
|
|
[SerializeField]
|
|
private int DivideCnt = 10;
|
|
|
|
[SerializeField]
|
|
private bool isEvo;
|
|
|
|
private IList<GameObject> ArrowEfcList;
|
|
|
|
private GameObject FromObj;
|
|
|
|
private GameObject ToObj;
|
|
|
|
private bool isOn;
|
|
|
|
private bool _isTargettingEnemy;
|
|
|
|
private float ChangeTime;
|
|
|
|
private IList<int> ArrowTarList;
|
|
|
|
private void Start()
|
|
{
|
|
ArrowEfcList = new List<GameObject>();
|
|
ArrowEfcList.Add(ArrowEfc);
|
|
for (int i = 1; i < DivideCnt; i++)
|
|
{
|
|
GameObject gameObject = Object.Instantiate(ArrowEfc);
|
|
if (!(null == gameObject))
|
|
{
|
|
gameObject.transform.parent = base.transform;
|
|
ArrowEfcList.Add(gameObject);
|
|
}
|
|
}
|
|
ArrowTarList = new List<int>();
|
|
for (int j = 0; j < DivideCnt; j++)
|
|
{
|
|
ArrowTarList.Add(j);
|
|
}
|
|
HideArrow();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (isOn)
|
|
{
|
|
SetArrowLine();
|
|
}
|
|
}
|
|
|
|
public void ShowArrow(GameObject fromObj, GameObject toObj, bool isTargettingEnemy)
|
|
{
|
|
FromObj = fromObj;
|
|
ToObj = toObj;
|
|
_isTargettingEnemy = isTargettingEnemy;
|
|
isOn = true;
|
|
base.gameObject.SetActive(value: true);
|
|
}
|
|
|
|
public void HideArrow()
|
|
{
|
|
isOn = false;
|
|
for (int i = 0; i < DivideCnt; i++)
|
|
{
|
|
ArrowEfcList[i].SetActive(value: false);
|
|
}
|
|
base.gameObject.SetActive(value: false);
|
|
}
|
|
|
|
private void SetArrowLine()
|
|
{
|
|
if (isEvo)
|
|
{
|
|
ChangeTime -= Time.deltaTime * 5f;
|
|
}
|
|
else
|
|
{
|
|
ChangeTime -= Time.deltaTime;
|
|
}
|
|
if (ChangeTime <= 0f)
|
|
{
|
|
ChangeTime = 1f;
|
|
ArrowTarList.Add(ArrowTarList[0]);
|
|
ArrowTarList.RemoveAt(0);
|
|
}
|
|
ArrowHead.transform.position = ToObj.transform.position;
|
|
Vector3 position = FromObj.transform.position;
|
|
Vector3 position2 = ToObj.transform.position;
|
|
Vector3 p = (_isTargettingEnemy ? position : position2) + Vector3.back * Vector3.Distance(position, position2) + Vector3.down * Vector3.Distance(position, position2) * -0.5f;
|
|
Vector3[] array = new Vector3[DivideCnt];
|
|
array = MotionUtils.GetBezierQuad(position, p, position2, DivideCnt);
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
float num = 1f - ChangeTime;
|
|
if (ArrowTarList[i] != 0)
|
|
{
|
|
ArrowEfcList[i].SetActive(value: true);
|
|
ArrowEfcList[i].transform.position = (array[ArrowTarList[i]] - array[ArrowTarList[i] - 1]) * num + array[ArrowTarList[i] - 1];
|
|
}
|
|
else
|
|
{
|
|
ArrowEfcList[i].SetActive(value: false);
|
|
ArrowEfcList[i].transform.position = array[0];
|
|
}
|
|
}
|
|
}
|
|
}
|