123 lines
2.9 KiB
C#
123 lines
2.9 KiB
C#
using AibisDream.Framework;
|
|
using Framework.Core;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream
|
|
{
|
|
public class GearController : MonoBehaviour, ISystem
|
|
{
|
|
#region 索引
|
|
|
|
private GameObject _gearPrefab;
|
|
[FindComponentsInChildren] private Shaft[] _shafts;
|
|
[FindComponentsInChildren] private Gear[] _gears;
|
|
|
|
#endregion
|
|
|
|
private ShaftGraph _shaftGraph;
|
|
private GearSysTemLevelData _levelData;
|
|
|
|
public RunType runType;
|
|
|
|
private void Awake()
|
|
{
|
|
Init();
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
Enable();
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
Disable();
|
|
}
|
|
|
|
#region 生命周期管理
|
|
|
|
public void Init()
|
|
{
|
|
this.FindComponents();
|
|
_gearPrefab = Resources.Load<GameObject>("Prefabs/Gear System/Gear");
|
|
}
|
|
|
|
public void Enable()
|
|
{
|
|
if (runType == RunType.Editor)
|
|
{
|
|
|
|
}
|
|
|
|
_shaftGraph = new ShaftGraph(_shafts);
|
|
}
|
|
|
|
public void Disable()
|
|
{
|
|
_shaftGraph = null;
|
|
}
|
|
|
|
public void Deinit()
|
|
{
|
|
throw new System.NotImplementedException();
|
|
}
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 判断吸附位置
|
|
/// </summary>
|
|
/// <param name="pos">齿轮当前位置</param>
|
|
/// <param name="gearRadius">齿轮半径</param>
|
|
/// <returns>能够被吸附的轴</returns>
|
|
public Shaft CheckClosestShaft(Vector3 pos, float gearRadius)
|
|
{
|
|
return _shaftGraph.QuerySnapShaft(pos, gearRadius);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生成齿轮
|
|
/// </summary>
|
|
/// <param name="pos">位置</param>
|
|
/// <param name="gearModel">齿轮数据</param>
|
|
/// <param name="speed">速度</param>
|
|
/// <returns>齿轮Obj</returns>
|
|
public GameObject InitGear(Vector3 pos, GearModel gearModel, float speed)
|
|
{
|
|
GameObject gear = Instantiate(_gearPrefab, pos, Quaternion.identity);
|
|
gear.transform.parent = transform.GetChild(0).transform;
|
|
gear.GetComponent<Gear>().Data = gearModel;
|
|
return gear;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 某个轴上齿轮发生变化时更新临接关系
|
|
/// </summary>
|
|
/// <param name="shaftId">轴ID</param>
|
|
public void ChangeGraphVertex(int shaftId)
|
|
{
|
|
_shaftGraph?.ChangeVertex(shaftId);
|
|
}
|
|
|
|
public void Succeed()
|
|
{
|
|
Debug.Log("达成目标");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载关卡配置
|
|
/// </summary>
|
|
public void LoadLevelData()
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存关卡配置
|
|
/// </summary>
|
|
public void SaveLevelData()
|
|
{
|
|
|
|
}
|
|
}
|
|
} |