2025-01-02 12:15:45 +08:00
|
|
|
|
using CG.UTility;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using DG.Tweening;
|
|
|
|
|
|
using UnityEngine.Playables;
|
|
|
|
|
|
using CG.Framework;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using UnityEngine.UI;
|
2025-01-06 14:27:52 +08:00
|
|
|
|
using KinematicCharacterController;
|
|
|
|
|
|
using KinematicCharacterController.Examples;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
*Create By CG
|
|
|
|
|
|
*Function
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
namespace ZXK.LouDiXvMuNiu
|
|
|
|
|
|
{
|
|
|
|
|
|
public class NiuSceneMng : MonoBehaviour
|
|
|
|
|
|
{
|
|
|
|
|
|
public static NiuSceneMng _Instance = null;
|
|
|
|
|
|
//<2F><>Ʒչʾ
|
|
|
|
|
|
[SerializeField]
|
2025-01-04 19:56:41 +08:00
|
|
|
|
private Transform[] _toolContain = null;
|
2025-01-04 21:25:05 +08:00
|
|
|
|
[SerializeField]//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
private GameObject[] _signTrans = null;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
private List<Transform> _curModuleToolArray = new List<Transform>();//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-02 14:13:47 +08:00
|
|
|
|
public NiuData _CurSceneStep;//Ϊ<>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Աȣ<D4B1><C8A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>浱ǰ<E6B5B1><C7B0><EFBFBD><EFBFBD>
|
2025-01-04 21:25:05 +08:00
|
|
|
|
|
|
|
|
|
|
private Dictionary<bool, List<GameObject>> _curStepUseBTDic;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬true<75><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嶼Ҫ<E5B6BC>㣬false<73><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
public Dictionary<bool, List<GameObject>> _CurStepUseBtDic { get => _curStepUseBTDic; }
|
2025-01-02 12:15:45 +08:00
|
|
|
|
private List<OutLineRender> _currentHighlights = new List<OutLineRender>();
|
|
|
|
|
|
private PlayableDirector _curTimeLine = null;
|
|
|
|
|
|
private TimelineDirectorCtrl _curTimeLineCtrl = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _peoplePlanTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _CSPLCLTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _TQFQCLTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _JZLVJCTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _RGSJTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _CPTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _PTXZTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _PTYZTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _YYZDTimeLineClip = null;
|
|
|
|
|
|
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _TQFQTran = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _CSPLTran = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _RGSJTran = null;
|
2025-01-04 19:56:41 +08:00
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _CPTran = null;
|
2025-01-07 20:14:22 +08:00
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _YYZDTran = null;
|
2025-01-15 15:19:00 +08:00
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _PTYZTran = null;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-01-06 14:27:52 +08:00
|
|
|
|
private KinematicCharacterMotor kinematic = null;
|
|
|
|
|
|
private ExampleCharacterCamera characterCamera = null;
|
|
|
|
|
|
public bool _isNearCameraTR = false;
|
|
|
|
|
|
|
2025-01-02 12:15:45 +08:00
|
|
|
|
[ReadOnly]//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>Ŷ<EFBFBD><C5B6><EFBFBD>
|
|
|
|
|
|
public bool _IsPlayAnm = false;
|
|
|
|
|
|
|
|
|
|
|
|
private void Awake()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_Instance == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
_Instance = this;
|
|
|
|
|
|
}
|
|
|
|
|
|
_curTimeLine = GetComponent<PlayableDirector>();
|
|
|
|
|
|
_curTimeLineCtrl = GetComponent<TimelineDirectorCtrl>();
|
|
|
|
|
|
|
2025-01-06 14:27:52 +08:00
|
|
|
|
kinematic = Camera.main.GetComponent<CameraControl>()._CameraCtrl.transform.GetComponent<KinematicCharacterMotor>();
|
|
|
|
|
|
characterCamera = Camera.main.GetComponent<ExampleCharacterCamera>();
|
|
|
|
|
|
|
2025-01-02 12:15:45 +08:00
|
|
|
|
GameManager.Instance._EventManager.AddListener<ClickToolArgs>(OnClickToolEvent);
|
|
|
|
|
|
}
|
|
|
|
|
|
private void Start()
|
|
|
|
|
|
{
|
|
|
|
|
|
GetCurModuleTools();
|
2025-01-07 20:14:22 +08:00
|
|
|
|
InitFirstState();
|
2025-01-02 12:15:45 +08:00
|
|
|
|
StartCoroutine("InitScene");
|
|
|
|
|
|
}
|
|
|
|
|
|
private IEnumerator InitScene()
|
|
|
|
|
|
{
|
|
|
|
|
|
yield return new WaitForSeconds(0.1f);
|
|
|
|
|
|
List<NiuData> tempData = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < tempData.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (tempData[i].TaskType == ConstCtrl.TASKTYPE_ShowGeo)
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_CurSceneStep = tempData[i];
|
2025-01-02 12:15:45 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_CurSceneStep = tempData[0];
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-02 14:13:47 +08:00
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = _CurSceneStep;
|
2025-01-14 15:34:07 +08:00
|
|
|
|
|
|
|
|
|
|
if (GameManager.Instance._loopPopExplain)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject explainContainGeo = UI_Manage.Instance.ShowPanel("ExplainContainPanel", System.Type.GetType("ZXK.LouDiXvMuNiu.ExplainContainPanel"), UIGroup.Tip);
|
|
|
|
|
|
explainContainGeo.GetComponent<ExplainContainPanel>()._IsFirstEnter = true;
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
private void Update()
|
|
|
|
|
|
{
|
|
|
|
|
|
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
|
|
|
|
|
RaycastHit rayHit;
|
2025-01-06 14:27:52 +08:00
|
|
|
|
NiuData curdata = GameManager.Instance._DataNiuHandler.CurNiuHandler.Value;
|
2025-01-12 15:26:31 +08:00
|
|
|
|
if (PopUpMng._TriAble && _CurSceneStep != null && !string.IsNullOrEmpty(curdata.TaskType))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-12 15:26:31 +08:00
|
|
|
|
UI_Manage.Instance.HidePanel("TooltipBoxTip");
|
|
|
|
|
|
if (Physics.Raycast(ray, out rayHit, Mathf.Infinity))
|
|
|
|
|
|
{
|
|
|
|
|
|
RecognizeNewGeo(rayHit, "ţ<>ľ<EFBFBD>Һ", rayHit.transform.name);
|
|
|
|
|
|
RecognizeNewGeo(rayHit, "OpenZhuShe", "ע<><D7A2><EFBFBD><EFBFBD>");
|
|
|
|
|
|
|
|
|
|
|
|
if (_curModuleToolArray.Contains(rayHit.transform))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-12 15:26:31 +08:00
|
|
|
|
Vector3 worldPos = rayHit.point;
|
|
|
|
|
|
if (rayHit.transform.name == "baodingjiaJH")
|
|
|
|
|
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ܣ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒչʾ<D5B9>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʾ
|
|
|
|
|
|
if (curdata.TaskType.Equals(ConstCtrl.TASKTYPE_ShowGeo))
|
|
|
|
|
|
{
|
|
|
|
|
|
PopUpMng.ShowToolInfoTip(rayHit.transform.name, worldPos + Vector3.up * 0.05f, -1);
|
|
|
|
|
|
}
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
2025-01-12 15:26:31 +08:00
|
|
|
|
else
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
PopUpMng.ShowToolInfoTip(rayHit.transform.name, worldPos + Vector3.up * 0.05f, -1);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-12 15:26:31 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-08 11:09:54 +08:00
|
|
|
|
if (_CurSceneStep.TaskType.Equals(ConstCtrl.TASKTYPE_Anim))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{//timeline<6E><65><EFBFBD><EFBFBD>
|
2025-01-12 15:26:31 +08:00
|
|
|
|
if (Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out rayHit, Mathf.Infinity) && !_IsPlayAnm)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-12 15:26:31 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(curdata.CameraNearTR2) && _isNearCameraTR)
|
2025-01-06 14:27:52 +08:00
|
|
|
|
{
|
|
|
|
|
|
CameraSetNear2TR(curdata);
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
ClickToolCallInTrainState(rayHit.transform.gameObject, () =>
|
|
|
|
|
|
{
|
|
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(), false);
|
|
|
|
|
|
});
|
|
|
|
|
|
ClickToolCallInExamState(rayHit.transform.gameObject, () =>
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 14:13:47 +08:00
|
|
|
|
else if (_CurSceneStep.TaskType.Equals(ConstCtrl.TASKTYPE_Video))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-09 18:12:40 +08:00
|
|
|
|
if (Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out rayHit, Mathf.Infinity))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
ClickToolCallInTrainState(rayHit.transform.gameObject, () =>
|
|
|
|
|
|
{
|
2025-01-08 11:09:54 +08:00
|
|
|
|
GameObject videoGeo = UI_Manage.Instance.ShowPanel("VideoShowPanel", Type.GetType("ZXK.LouDiXvMuNiu.VideoShowPanel"), UIGroup.Tip);
|
2025-01-02 14:13:47 +08:00
|
|
|
|
videoGeo.GetComponent<VideoShowPanel>().PlayVideoClip(_CurSceneStep.VideoPath, () =>
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep();
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
2025-01-12 15:26:31 +08:00
|
|
|
|
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnDestroy()
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLineCtrl?.Stop();
|
|
|
|
|
|
GameManager.Instance._EventManager.RemoveListener<ClickToolArgs>(OnClickToolEvent);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnClickToolEvent(ClickToolArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
2025-01-04 19:56:41 +08:00
|
|
|
|
|
|
|
|
|
|
if (e.SelectTool == "ţ<>ľ<EFBFBD>Һ")
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] temp = new string[] { "ţ<>ľ<EFBFBD>ҺA", "ţ<>ľ<EFBFBD>ҺB", "ţ<>ľ<EFBFBD>ҺC" };
|
|
|
|
|
|
for (int a = 0; a < temp.Length; a++)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject toolTempGeo = UtilitiesMng.GetGeoByName(_toolContain, temp[a], true);
|
|
|
|
|
|
toolTempGeo.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject toolGeo = UtilitiesMng.GetGeoByName(_toolContain, e.SelectTool, true);
|
|
|
|
|
|
toolGeo?.SetActive(true);
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
/// </summary>
|
2025-01-07 20:14:22 +08:00
|
|
|
|
private void InitFirstState()
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
foreach (Transform t in _TQFQTran)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (Transform t in _CSPLTran)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (Transform t in _RGSJTran)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
2025-01-15 15:19:00 +08:00
|
|
|
|
foreach (Transform t in _PTYZTran)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
2025-01-07 20:14:22 +08:00
|
|
|
|
//Ĭ<>Ϲ<EFBFBD><CFB9><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
UseToolsActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
public void InitPlayAnmState(NiuData curObj, NiuData previousObj)
|
|
|
|
|
|
{
|
2025-01-07 11:21:54 +08:00
|
|
|
|
if (curObj == null) return;
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if (curObj.TaskName != previousObj.TaskName)
|
|
|
|
|
|
{
|
|
|
|
|
|
InitFirstState();
|
2025-01-08 17:11:04 +08:00
|
|
|
|
if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_TQFAQCL))
|
|
|
|
|
|
{
|
2025-01-09 14:34:36 +08:00
|
|
|
|
GameObject jiaziGeo = UtilitiesMng.GetGeoByName(_toolContain, "M_Jiazi_b", true);
|
|
|
|
|
|
jiaziGeo.transform.localPosition = new Vector3(-0.3f, 0.5998f, 2.47f);
|
|
|
|
|
|
jiaziGeo.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
|
|
|
|
|
|
2025-01-08 17:11:04 +08:00
|
|
|
|
_TQFQTran.Find("SM_Niu_CaShi_an01").gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_CSPLCL))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject jiaziGeo = UtilitiesMng.GetGeoByName(_toolContain, "M_Jiazi_b", true);
|
|
|
|
|
|
jiaziGeo.transform.localPosition = new Vector3(-0.3f, 0.5998f, 0.157f);
|
|
|
|
|
|
jiaziGeo.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
|
|
|
|
|
|
|
|
|
|
|
_CSPLTran.Find("SM_Niu_ZhusheB_Bozi_an02renG").gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_JZLVJC))
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_RGSJ))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject jiaziGeo = UtilitiesMng.GetGeoByName(_toolContain, "M_Jiazi_b", true);
|
|
|
|
|
|
jiaziGeo.transform.localPosition = new Vector3(-0.485f, 0.5997721f, 2.109f);
|
|
|
|
|
|
jiaziGeo.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
|
|
|
|
|
GameObject gjj2Geo = UtilitiesMng.GetGeoByName(_toolContain, "<22><><EFBFBD><EFBFBD>2", true);
|
|
|
|
|
|
gjj2Geo.gameObject.SetActive(true);
|
|
|
|
|
|
_RGSJTran.Find("SM_Niu_RenGongSouJing01").gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_CP))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject jiaziGeo = UtilitiesMng.GetGeoByName(_toolContain, "M_Jiazi_b", true);
|
|
|
|
|
|
jiaziGeo.transform.localPosition = new Vector3(-0.81f, 0.632f, 2.883f);
|
|
|
|
|
|
jiaziGeo.transform.localRotation = Quaternion.Euler(Vector3.up * -180.0f);
|
|
|
|
|
|
|
|
|
|
|
|
Transform toolTemp = jiaziGeo.transform.Find("<22><><EFBFBD>ѹ<EFBFBD>");
|
|
|
|
|
|
foreach (Transform item in toolTemp)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{//<2F><><EFBFBD><EFBFBD>ѵ<EFBFBD><D1B5>ģʽ<C4A3>£<EFBFBD><C2A3><EFBFBD>Ʒչʾʱ<CABE><CAB1>ʾ<EFBFBD><CABE>Ʒ
|
|
|
|
|
|
if (curObj.ThreeTaskName == ConstCtrl.ThreeTaskName_PrepareGeo)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (Transform item in toolTemp)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_CPTran.Find("SM_Niu_ChongPei01").gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_PTXZ))
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_PTYZ))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject jiaziGeo = UtilitiesMng.GetGeoByName(_toolContain, "M_Jiazi_b", true);
|
|
|
|
|
|
jiaziGeo.transform.localPosition = new Vector3(-0.485f, 0.5997721f, 2.109f);
|
|
|
|
|
|
jiaziGeo.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
2025-01-15 15:19:00 +08:00
|
|
|
|
_PTYZTran.Find("SM_PeiTaiYiZhi03").gameObject.SetActive(true);
|
2025-01-08 17:11:04 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_YYZD))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject jiaziGeo = UtilitiesMng.GetGeoByName(_toolContain, "M_Jiazi_b", true);
|
|
|
|
|
|
jiaziGeo.transform.localPosition = new Vector3(-0.81f, 0.632f, 2.883f);
|
|
|
|
|
|
jiaziGeo.transform.localRotation = Quaternion.Euler(Vector3.up * -180.0f);
|
|
|
|
|
|
|
2025-01-15 15:19:00 +08:00
|
|
|
|
_YYZDTran.Find("niu_yindaojiancha").gameObject.SetActive(true);
|
2025-01-08 17:11:04 +08:00
|
|
|
|
}
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (curObj.ThreeTaskName != previousObj.ThreeTaskName)
|
2025-01-07 11:21:54 +08:00
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{//<2F><><EFBFBD><EFBFBD>ѵ<EFBFBD><D1B5>ģʽ<C4A3>£<EFBFBD><C2A3><EFBFBD>Ʒչʾʱ<CABE><CAB1>ʾ<EFBFBD><CABE>Ʒ
|
|
|
|
|
|
if (curObj.ThreeTaskName == ConstCtrl.ThreeTaskName_PrepareGeo)
|
|
|
|
|
|
{
|
|
|
|
|
|
NiuSceneMng._Instance.UseToolsActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<D4B1><D7BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
if (curObj.ThreeTaskName == ConstCtrl.ThreeTaskName_PeoplePlan)
|
2025-01-07 11:21:54 +08:00
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
List<NiuData> curSteps = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
|
|
|
|
|
for (int i = 0; i < curSteps.Count; i++)
|
2025-01-07 11:21:54 +08:00
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if (curSteps[i].ThreeTaskName == ConstCtrl.ThreeTaskName_PeoplePlan)
|
|
|
|
|
|
{
|
|
|
|
|
|
string toolStr = curSteps[i].ModelBT;
|
|
|
|
|
|
GameObject toolGeo = UtilitiesMng.GetGeoByName(new Transform[1] { transform }, toolStr, true);
|
|
|
|
|
|
toolGeo.SetActive(true);
|
|
|
|
|
|
}
|
2025-01-07 11:21:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_TQFAQCL))
|
|
|
|
|
|
{
|
2025-01-08 17:11:04 +08:00
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _TQFQCLTimeLineClip, 0);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_CSPLCL))
|
|
|
|
|
|
{
|
2025-01-08 17:11:04 +08:00
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _CSPLCLTimeLineClip, 0);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_JZLVJC))
|
|
|
|
|
|
{
|
2025-01-08 17:11:04 +08:00
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _JZLVJCTimeLineClip, 0);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_RGSJ))
|
|
|
|
|
|
{
|
2025-01-08 17:11:04 +08:00
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{//<2F><><EFBFBD><EFBFBD>ѵ<EFBFBD><D1B5>ģʽ<C4A3>£<EFBFBD><C2A3><EFBFBD>Ʒչʾʱ<CABE><CAB1>ʾ<EFBFBD><CABE>Ʒ
|
|
|
|
|
|
if (curObj.ThreeTaskName == ConstCtrl.ThreeTaskName_PrepareGeo)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject geoTemp = UtilitiesMng.GetGeoByName(_toolContain, "baodingjiaJH", true);
|
|
|
|
|
|
geoTemp.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _RGSJTimeLineClip, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _RGSJTimeLineClip, 5 / 60.0f);
|
|
|
|
|
|
}
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_CP))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject jiaziGeo = UtilitiesMng.GetGeoByName(_toolContain, "M_Jiazi_b", true);
|
|
|
|
|
|
Transform toolTemp = jiaziGeo.transform.Find("<22><><EFBFBD>ѹ<EFBFBD>");
|
|
|
|
|
|
foreach (Transform item in toolTemp)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{//<2F><><EFBFBD><EFBFBD>ѵ<EFBFBD><D1B5>ģʽ<C4A3>£<EFBFBD><C2A3><EFBFBD>Ʒչʾʱ<CABE><CAB1>ʾ<EFBFBD><CABE>Ʒ
|
2025-01-09 14:34:36 +08:00
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _CPTimeLineClip, 0);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if (curObj.ThreeTaskName == ConstCtrl.ThreeTaskName_PrepareGeo)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (Transform item in toolTemp)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
2025-01-09 14:34:36 +08:00
|
|
|
|
GameObject geoTemp = UtilitiesMng.GetGeoByName(_toolContain, "baodingjiaJH", true);
|
|
|
|
|
|
geoTemp.SetActive(true);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
2025-01-08 17:11:04 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _CPTimeLineClip, 5 / 60.0f);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_PTXZ))
|
|
|
|
|
|
{
|
2025-01-08 17:11:04 +08:00
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _PTXZTimeLineClip, 0);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_PTYZ))
|
|
|
|
|
|
{
|
2025-01-08 17:11:04 +08:00
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _PTYZTimeLineClip, 0);
|
2025-01-14 17:32:11 +08:00
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{//<2F><><EFBFBD><EFBFBD>ѵ<EFBFBD><D1B5>ģʽ<C4A3>£<EFBFBD><C2A3><EFBFBD>Ʒչʾʱ<CABE><CAB1>ʾ<EFBFBD><CABE>Ʒ
|
|
|
|
|
|
if (curObj.ThreeTaskName == ConstCtrl.ThreeTaskName_PrepareGeo)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject bhyGeoTemp = UtilitiesMng.GetGeoByName(_toolContain, "<22><><EFBFBD><EFBFBD>Һ", true);
|
|
|
|
|
|
bhyGeoTemp.transform.localPosition = new Vector3(-0.0822f, 0.396500051f, 0.00615262985f);
|
|
|
|
|
|
bhyGeoTemp.transform.localRotation = new Quaternion(0,0.707106829f,0.707106829f,0);
|
|
|
|
|
|
GameObject ptygeoTemp = UtilitiesMng.GetGeoByName(_toolContain, "<22><>̥Һ", true);
|
|
|
|
|
|
ptygeoTemp.transform.localPosition = new Vector3(-0.0820000023f, 0.396499991f, -0.0887999982f);
|
|
|
|
|
|
ptygeoTemp.transform.localRotation = new Quaternion(0, 0.707106829f, 0.707106829f, 0);
|
|
|
|
|
|
GameObject ksqgeoTemp = UtilitiesMng.GetGeoByName(_toolContain, "<22><><EFBFBD><EFBFBD>ǹ", true);
|
|
|
|
|
|
ksqgeoTemp.transform.localPosition = new Vector3(0.25999999f, 0.409000009f, 0.381999999f);
|
|
|
|
|
|
ksqgeoTemp.transform.localRotation = new Quaternion(-0.00385814067f, 0.707096279f, 0.00385814067f, 0.707096279f);
|
|
|
|
|
|
GameObject blxggeoTemp = UtilitiesMng.GetGeoByName(_toolContain, "<22><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>", true);
|
|
|
|
|
|
blxggeoTemp.transform.localPosition = new Vector3(0.221799999f, 0.400900006f, -0.0782999992f);
|
|
|
|
|
|
blxggeoTemp.transform.localRotation = new Quaternion(0.5f, 0.5f, 0.5f, 0.5f);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_YYZD))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject jiaziGeo = UtilitiesMng.GetGeoByName(_toolContain, "M_Jiazi_b", true);
|
|
|
|
|
|
Transform toolTemp = jiaziGeo.transform.Find("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
|
foreach (Transform item in toolTemp)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{//<2F><><EFBFBD><EFBFBD>ѵ<EFBFBD><D1B5>ģʽ<C4A3>£<EFBFBD><C2A3><EFBFBD>Ʒչʾʱ<CABE><CAB1>ʾ<EFBFBD><CABE>Ʒ
|
|
|
|
|
|
if (curObj.ThreeTaskName == ConstCtrl.ThreeTaskName_PrepareGeo)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (Transform item in toolTemp)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-08 17:11:04 +08:00
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _YYZDTimeLineClip, 0);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD>ݲ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
2025-01-08 17:11:04 +08:00
|
|
|
|
private void SetTimeLineCtrl(NiuData curObj, NiuData previousObj, PlayableAsset timeAsset,double pauseTime)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if (curObj!=null&& previousObj!=null)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (curObj.TaskName.Equals(ConstCtrl.TaskName_ActualOperation))
|
|
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if (_curTimeLine.playableAsset != timeAsset)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLine.playableAsset = timeAsset;
|
|
|
|
|
|
_curTimeLineCtrl.SetDuration();
|
2025-01-08 17:11:04 +08:00
|
|
|
|
_curTimeLineCtrl.StopInTime(pauseTime);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (curObj.TaskName.Equals(ConstCtrl.TaskName_OperationPlan))
|
|
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if (_curTimeLine.playableAsset != _peoplePlanTimeLineClip)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLine.playableAsset = _peoplePlanTimeLineClip;
|
|
|
|
|
|
_curTimeLineCtrl.SetDuration();
|
|
|
|
|
|
_curTimeLineCtrl.Stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (curObj.ThreeTaskName == ConstCtrl.ThreeTaskName_PrepareGeo)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curTimeLine.playableAsset != timeAsset)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLine.playableAsset = timeAsset;
|
|
|
|
|
|
_curTimeLineCtrl.SetDuration();
|
2025-01-08 17:11:04 +08:00
|
|
|
|
_curTimeLineCtrl.StopInTime(pauseTime);
|
2025-01-07 20:14:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (curObj.ThreeTaskName == ConstCtrl.ThreeTaskName_PeoplePlan)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curTimeLine.playableAsset != _peoplePlanTimeLineClip)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLine.playableAsset = _peoplePlanTimeLineClip;
|
|
|
|
|
|
_curTimeLineCtrl.SetDuration();
|
|
|
|
|
|
_curTimeLineCtrl.Stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ȡ<EFBFBD><C8A1>ǰģ<C7B0><C4A3><EFBFBD><EFBFBD>Ҫ<EFBFBD>õ<EFBFBD><C3B5>Ĺ<EFBFBD><C4B9><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
private void GetCurModuleTools()
|
|
|
|
|
|
{
|
|
|
|
|
|
List<string> toolArray = new List<string>();
|
|
|
|
|
|
List<NiuData> tempData = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
|
|
|
|
|
for (int i = 0; i < tempData.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(tempData[i].ToolsName)) continue;
|
|
|
|
|
|
string[] tools = tempData[i].ToolsName.Split("|");
|
|
|
|
|
|
for (int j = 0; j < tools.Length; j++)
|
|
|
|
|
|
{
|
2025-01-04 19:56:41 +08:00
|
|
|
|
GameObject toolGeo = UtilitiesMng.GetGeoByName(_toolContain, tools[j], true);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
if (toolGeo&&!toolArray.Contains(tools[j]))
|
|
|
|
|
|
{
|
|
|
|
|
|
toolArray.Add(tools[j]);
|
|
|
|
|
|
_curModuleToolArray.Add(toolGeo.transform);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ģ<EFBFBD><C4A3><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>ʾ״̬
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="showAble"></param>
|
|
|
|
|
|
public void UseToolsActive(bool showAble)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < _curModuleToolArray.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curModuleToolArray[i].gameObject.SetActive(showAble);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ȡ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
2025-01-04 21:25:05 +08:00
|
|
|
|
public void GetNeedClickTools(NiuData step)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
_curStepUseBTDic = new Dictionary<bool, List<GameObject>>();
|
|
|
|
|
|
List<GameObject> toolTemp = new List<GameObject>();
|
2025-01-04 21:25:05 +08:00
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-04 21:25:05 +08:00
|
|
|
|
string[] tempBts = step.ModelBT.Split("|");
|
|
|
|
|
|
string[] tempSelects = tempBts[0].Split("+");
|
|
|
|
|
|
for (int i = 0; i < tempSelects.Length; i++)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-06 16:46:47 +08:00
|
|
|
|
GameObject tempGeo = UtilitiesMng.GetGeoByName(new Transform[1] { transform }, tempSelects[i], step.ThreeTaskName != ConstCtrl.ThreeTaskName_PeoplePlan);
|
2025-01-04 21:25:05 +08:00
|
|
|
|
if (tempGeo == null) continue;
|
|
|
|
|
|
tempGeo.SetActive(true);
|
|
|
|
|
|
toolTemp.Add(tempGeo);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
2025-01-04 21:25:05 +08:00
|
|
|
|
_curStepUseBTDic.Add(true, toolTemp);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] tempBts = step.ModelBT.Split("|");
|
|
|
|
|
|
if (!string.IsNullOrEmpty(step.ExamModelBT))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-04 21:25:05 +08:00
|
|
|
|
tempBts = step.ExamModelBT.Split("|");
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
2025-01-04 21:25:05 +08:00
|
|
|
|
for (int i = 0; i < tempBts.Length; i++)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-04 21:25:05 +08:00
|
|
|
|
string[] tempExamSelects = null;
|
|
|
|
|
|
if (tempBts[i].Contains("+"))
|
|
|
|
|
|
{
|
|
|
|
|
|
tempExamSelects = tempBts[i].Split("+");
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (tempBts[i].Contains("*"))
|
|
|
|
|
|
{
|
|
|
|
|
|
tempExamSelects = tempBts[i].Split("*");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-04 21:25:05 +08:00
|
|
|
|
tempExamSelects = new string[1] { tempBts[i] };
|
|
|
|
|
|
}
|
|
|
|
|
|
for (int j = 0; j < tempExamSelects.Length; j++)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject tempGeo = UtilitiesMng.GetGeoByName(new Transform[1] { transform }, tempExamSelects[j], true);
|
|
|
|
|
|
if (tempGeo == null) continue;
|
|
|
|
|
|
tempGeo.SetActive(true);
|
|
|
|
|
|
if (i == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
toolTemp.Add(tempGeo);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (tempBts[i].Contains("*"))
|
|
|
|
|
|
{
|
|
|
|
|
|
_curStepUseBTDic.Add(false, toolTemp);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2025-01-04 21:25:05 +08:00
|
|
|
|
_curStepUseBTDic.Add(true, toolTemp);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20>ô˲<C3B4><CBB2><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="model"><3E><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
public void OnlyShowBTGeo(GameObject[] modelBTsName)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < _currentHighlights.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
_currentHighlights[i].enabled = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
for (int i = 0; i < modelBTsName.Length; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
string modelBTName = modelBTsName[i].name;
|
|
|
|
|
|
if (!modelBTName.Contains("_sign"))
|
|
|
|
|
|
{
|
|
|
|
|
|
OutLineRender outlineRender;
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD>
|
|
|
|
|
|
if (!modelBTsName[i].TryGetComponent(out outlineRender))
|
|
|
|
|
|
{
|
|
|
|
|
|
outlineRender = modelBTsName[i].AddComponent<OutLineRender>();
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>ǿ<EFBFBD>Ⱥ<EFBFBD>Ĭ<EFBFBD>Ͻ<EFBFBD><CFBD>÷<EFBFBD><C3B7><EFBFBD>Ч<EFBFBD><D0A7>
|
|
|
|
|
|
outlineRender.OutLineStrength = 1;
|
|
|
|
|
|
outlineRender.enabled = true;
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
|
|
|
|
|
_currentHighlights.Add(outlineRender);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// ѵ<><D1B5>ģʽ<C4A3>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>崥<EFBFBD><E5B4A5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="triGeo"></param>
|
|
|
|
|
|
/// <param name="clickFinishCall"></param>
|
|
|
|
|
|
private void ClickToolCallInTrainState(GameObject triGeo,Action clickFinishCall)
|
|
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState")) return;
|
|
|
|
|
|
if (_curStepUseBTDic.ContainsKey(true))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
List<GameObject> useBts = _curStepUseBTDic[true];
|
|
|
|
|
|
if (useBts.Contains(triGeo))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (triGeo.GetComponent<OutLineRender>())
|
|
|
|
|
|
{
|
|
|
|
|
|
triGeo.GetComponent<OutLineRender>().enabled = false;
|
|
|
|
|
|
}
|
2025-01-07 11:21:54 +08:00
|
|
|
|
|
|
|
|
|
|
if (triGeo.tag != ConstCtrl.SceneTool_Tag)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
triGeo.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
useBts.Remove(triGeo);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (useBts.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var item in _curStepUseBTDic)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < item.Value.Count; i++)
|
|
|
|
|
|
{
|
2025-01-02 19:36:17 +08:00
|
|
|
|
if (item.Value[i].tag != ConstCtrl.SceneTool_Tag)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.Value[i].SetActive(false);
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
_curStepUseBTDic.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
clickFinishCall?.Invoke();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD>ģʽ<C4A3>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>崥<EFBFBD><E5B4A5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="triGeo"></param>
|
|
|
|
|
|
/// <param name="clickFinishCall"></param>
|
|
|
|
|
|
private void ClickToolCallInExamState(GameObject triGeo, Action clickFinishCall)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
bool addScoreTemp = true;
|
2025-01-04 21:25:05 +08:00
|
|
|
|
List<GameObject> useBts = new List<GameObject>();
|
|
|
|
|
|
if (_curStepUseBTDic.ContainsKey(false))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-04 21:25:05 +08:00
|
|
|
|
useBts = _curStepUseBTDic[false];
|
|
|
|
|
|
if (useBts.Contains(triGeo))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-04 21:25:05 +08:00
|
|
|
|
useBts.Clear();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(_curStepUseBTDic.ContainsKey(true))
|
|
|
|
|
|
{
|
|
|
|
|
|
useBts = _curStepUseBTDic[true];
|
|
|
|
|
|
if (useBts.Contains(triGeo))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (triGeo.GetComponent<OutLineRender>())
|
|
|
|
|
|
{
|
|
|
|
|
|
triGeo.GetComponent<OutLineRender>().enabled = false;
|
|
|
|
|
|
}
|
2025-01-07 11:21:54 +08:00
|
|
|
|
if (triGeo.tag != ConstCtrl.SceneTool_Tag)
|
2025-01-04 21:25:05 +08:00
|
|
|
|
{
|
|
|
|
|
|
triGeo.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
useBts.Remove(triGeo);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2025-01-04 21:25:05 +08:00
|
|
|
|
PopUpMng.PopChoseErrowToast(_CurSceneStep.ExamEvvr, 2.0f);
|
|
|
|
|
|
useBts.Clear();
|
|
|
|
|
|
addScoreTemp = false;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (useBts.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var item in _curStepUseBTDic)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < item.Value.Count; i++)
|
|
|
|
|
|
{
|
2025-01-04 19:56:41 +08:00
|
|
|
|
if (item.Value[i].tag != ConstCtrl.SceneTool_Tag)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.Value[i].SetActive(false);
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-07 20:14:22 +08:00
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < _signTrans.Length; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
_signTrans[i].SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-02 12:15:45 +08:00
|
|
|
|
_curStepUseBTDic.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
if (addScoreTemp)
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
GameManager.Instance._DataNiuHandler.AddScore(_CurSceneStep.ModuleName, _CurSceneStep.ThreeTaskName, _CurSceneStep.Score);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
clickFinishCall?.Invoke();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>͵Ĵ<CDB5><C4B4><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
|
|
|
|
|
public void AnswerSystemInStep(NiuData step)
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] answers = step.OptionsAll.Split("|");
|
|
|
|
|
|
PopUpMng.PopAnswerQuestions(step.Question, answers, GetOptionIndex(step.OptionRight), () =>
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ĵ<CDB5><C4B4><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
|
|
|
|
|
public void TimeTranInStep(NiuData step)
|
|
|
|
|
|
{
|
|
|
|
|
|
_IsPlayAnm = true;
|
|
|
|
|
|
string[] msg = step.ModelBT.Split("|");
|
|
|
|
|
|
string timeFixMsg = msg[0];
|
|
|
|
|
|
string[] timepoints = msg[1].Split("-");
|
|
|
|
|
|
int startTime = int.Parse(timepoints[0]);
|
|
|
|
|
|
int endTime = int.Parse(timepoints[1]);
|
|
|
|
|
|
PopUpMng.PopTimeIntCount(timeFixMsg, startTime, endTime, 3.0f, endTime >= startTime, () =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{
|
2025-01-09 18:12:40 +08:00
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(), false);
|
|
|
|
|
|
//GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep();
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
2025-01-09 18:12:40 +08:00
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
|
|
|
|
|
//GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
2025-01-08 11:09:54 +08:00
|
|
|
|
_IsPlayAnm = false;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ĵ<CDB5><C4B4><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
|
|
|
|
|
public void TimeTranAnmInStep(NiuData step)
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] msg = step.ModelBT.Split("|");
|
|
|
|
|
|
string timeFixMsg = msg[0];
|
|
|
|
|
|
string[] timepoints = msg[1].Split("-");
|
|
|
|
|
|
int startTime = int.Parse(timepoints[0]);
|
|
|
|
|
|
int endTime = int.Parse(timepoints[1]);
|
|
|
|
|
|
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(), false);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
float durTime = step.TimelineLength / 60.0f;
|
|
|
|
|
|
PopUpMng.PopTimeIntCount(timeFixMsg, startTime, endTime, durTime, endTime >= startTime, null);
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// ͼƬѡ<C6AC><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// Ŀǰֻ<C7B0><D6BB><EFBFBD><EFBFBD>̥ѡ<CCA5><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ҫ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="temp"></param>
|
2025-01-02 14:13:47 +08:00
|
|
|
|
public void ChoiceImgInStep(string[] temp)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject tempGeo = UtilitiesMng.GetGeoByName(new Transform[1] { transform }, temp[0], true);
|
|
|
|
|
|
tempGeo.SetActive(true);
|
|
|
|
|
|
tempGeo.GetComponent<Toggle>().isOn = false;
|
|
|
|
|
|
tempGeo.GetComponent<Toggle>().onValueChanged.AddListener((isOn) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (isOn)
|
|
|
|
|
|
{
|
2025-01-12 15:26:31 +08:00
|
|
|
|
//tempGeo.transform.GetChild(0).gameObject.SetActive(true);
|
|
|
|
|
|
//float a = 0.0f;
|
|
|
|
|
|
//DOTween.To(() => a, x => x = a, 1.0f, 2.0f).OnComplete(() =>
|
|
|
|
|
|
//{
|
|
|
|
|
|
// tempGeo.SetActive(false);
|
|
|
|
|
|
//});
|
2025-01-02 12:15:45 +08:00
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(), false);
|
2025-01-12 15:26:31 +08:00
|
|
|
|
tempGeo.SetActive(false);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
List<GameObject> togs = new List<GameObject>();
|
|
|
|
|
|
for (int i = 0; i < temp.Length; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject tempGeo = UtilitiesMng.GetGeoByName(new Transform[1] { transform }, temp[i], true);
|
|
|
|
|
|
tempGeo.transform.GetChild(0).gameObject.SetActive(false);
|
|
|
|
|
|
togs.Add(tempGeo);
|
|
|
|
|
|
tempGeo.SetActive(true);
|
|
|
|
|
|
tempGeo.GetComponent<Toggle>().isOn = false;
|
|
|
|
|
|
tempGeo.GetComponent<Toggle>().onValueChanged.AddListener((isOn) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (isOn)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < togs.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
togs[i].transform.GetChild(0).gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
float a = 0.0f;
|
|
|
|
|
|
DOTween.To(() => a, x => x = a, 1.0f, 2.0f).OnComplete(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < togs.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
togs[i].SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(), false);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 19:54:22 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Timeline<6E><65><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void TimelineContinue()
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLineCtrl.Continue();
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="partData"></param>
|
|
|
|
|
|
public void JumpTimeline(NiuData partData,bool jumpStepAble)
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (_CurSceneStep == null) _CurSceneStep = partData;
|
|
|
|
|
|
if (_CurSceneStep.id == partData.id)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{//<2F><>ͬ<EFBFBD><CDAC><EFBFBD>費<EFBFBD><E8B2BB>ת
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{//<2F><>ת<EFBFBD><D7AA>ͬ<EFBFBD><CDAC><EFBFBD>裬<EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>ÿ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><D2BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
_IsPlayAnm = true;
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (_CurSceneStep.id > partData.id)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (!jumpStepAble)
|
|
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
_curTimeLineCtrl.ContinuePlayBackwardByPausePoint(GetPlayTime(_CurSceneStep,partData, jumpStepAble), () =>
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
NegativeJumpStep(partData);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
_curTimeLineCtrl.StopInTime(GetPlayTime(_CurSceneStep, partData, jumpStepAble));
|
2025-01-02 12:15:45 +08:00
|
|
|
|
NegativeJumpStep(partData);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 14:13:47 +08:00
|
|
|
|
else if (_CurSceneStep.id < partData.id)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{//˳<><CBB3><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (!jumpStepAble)
|
|
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
_curTimeLineCtrl.ContinuePlayForwardByPausePoint(GetPlayTime(_CurSceneStep, partData, jumpStepAble), () =>
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
PositiveJumpStep(partData);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
_curTimeLineCtrl.StopInTime(GetPlayTime(_CurSceneStep, partData, jumpStepAble));
|
2025-01-02 12:15:45 +08:00
|
|
|
|
PositiveJumpStep(partData);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-09 18:12:40 +08:00
|
|
|
|
public void JumpToTime(float time)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLineCtrl.ContinuePlayBackwardByPausePoint(time, null);
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="partData"></param>
|
|
|
|
|
|
private void PositiveJumpStep(NiuData partData)
|
|
|
|
|
|
{
|
|
|
|
|
|
_IsPlayAnm = false;
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_CurSceneStep = partData;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = partData;
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="partData"></param>
|
|
|
|
|
|
private void NegativeJumpStep(NiuData partData)
|
|
|
|
|
|
{
|
|
|
|
|
|
_IsPlayAnm = false;
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_CurSceneStep = partData;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = partData;
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ȡ<EFBFBD><C8A1>ǰҪ<C7B0><D2AA><EFBFBD>ŵĶ<C5B5><C4B6><EFBFBD>Ƭ<EFBFBD>εĿ<CEB5>ʼʱ<CABC><CAB1>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-01-07 20:14:22 +08:00
|
|
|
|
private float GetPlayTime(NiuData perviousStep,NiuData step, bool jumpStepAble)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
int allFrame = 0;
|
|
|
|
|
|
List<NiuData> modelInfos = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
2025-01-02 14:13:47 +08:00
|
|
|
|
|
2025-01-02 12:15:45 +08:00
|
|
|
|
string addAbleTaskName = null;
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (jumpStepAble)
|
|
|
|
|
|
{
|
|
|
|
|
|
addAbleTaskName = step.TaskName;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
if(perviousStep.TaskName!= step.TaskName)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-07 20:14:22 +08:00
|
|
|
|
addAbleTaskName = perviousStep.TaskName;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
addAbleTaskName = step.TaskName;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for (int a = 0; a < modelInfos.Count; a++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (modelInfos[a].TaskName.Equals(addAbleTaskName) && modelInfos[a].id < step.id)
|
|
|
|
|
|
{
|
|
|
|
|
|
allFrame += modelInfos[a].TimelineLength;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return allFrame / 60.0f;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-02 14:13:47 +08:00
|
|
|
|
public int GetOptionIndex(string OptionMsg)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
switch (OptionMsg)
|
|
|
|
|
|
{
|
|
|
|
|
|
case "A":
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
case "B":
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
case "C":
|
|
|
|
|
|
return 2;
|
|
|
|
|
|
case "D":
|
|
|
|
|
|
return 3;
|
|
|
|
|
|
default:
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-06 14:27:52 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void CameraSetNearTR(NiuData obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(obj.CameraNearTR)) return;
|
|
|
|
|
|
_isNearCameraTR = true;
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] cameraDefaultTR = obj.CameraNearTR.Split("|");
|
|
|
|
|
|
string[] camDefPosStr = cameraDefaultTR[0].Split("_");
|
|
|
|
|
|
string[] camDefRotStr = cameraDefaultTR[1].Split("_");
|
|
|
|
|
|
Vector3 cameraDefPos = new Vector3(float.Parse(camDefPosStr[0]), float.Parse(camDefPosStr[1]), float.Parse(camDefPosStr[2]));
|
|
|
|
|
|
Vector3 cameraDefRot = new Vector3(float.Parse(camDefRotStr[0]), float.Parse(camDefRotStr[1]), float.Parse(camDefRotStr[2]));
|
|
|
|
|
|
|
|
|
|
|
|
ChangeCameraPos(cameraDefPos, cameraDefRot);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
WDebug.LogError($"<22><><EFBFBD>ݳ<EFBFBD><DDB3>ִ<EFBFBD><D6B4><EFBFBD>:{ex.Message}");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪĬ<CEAA><C4AC><EFBFBD>ӽ<EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
|
public void CameraSetDefaultTR(NiuData obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(obj.CameraDefaultTR)) return;
|
|
|
|
|
|
_isNearCameraTR = false;
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] cameraDefaultTR = obj.CameraDefaultTR.Split("|");
|
|
|
|
|
|
string[] camDefPosStr = cameraDefaultTR[0].Split("_");
|
|
|
|
|
|
string[] camDefRotStr = cameraDefaultTR[1].Split("_");
|
|
|
|
|
|
Vector3 cameraDefPos = new Vector3(float.Parse(camDefPosStr[0]), float.Parse(camDefPosStr[1]), float.Parse(camDefPosStr[2]));
|
|
|
|
|
|
Vector3 cameraDefRot = new Vector3(float.Parse(camDefRotStr[0]), float.Parse(camDefRotStr[1]), float.Parse(camDefRotStr[2]));
|
|
|
|
|
|
|
|
|
|
|
|
ChangeCameraPos(cameraDefPos, cameraDefRot);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
WDebug.LogError($"<22><><EFBFBD>ݳ<EFBFBD><DDB3>ִ<EFBFBD><D6B4><EFBFBD>:{ex.Message}");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private void CameraSetNear2TR(NiuData obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(obj.CameraNearTR2)) return;
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] cameraDefaultTR = obj.CameraNearTR2.Split("|");
|
|
|
|
|
|
string[] camDefPosStr = cameraDefaultTR[0].Split("_");
|
|
|
|
|
|
string[] camDefRotStr = cameraDefaultTR[1].Split("_");
|
|
|
|
|
|
Vector3 cameraDefPos = new Vector3(float.Parse(camDefPosStr[0]), float.Parse(camDefPosStr[1]), float.Parse(camDefPosStr[2]));
|
|
|
|
|
|
Vector3 cameraDefRot = new Vector3(float.Parse(camDefRotStr[0]), float.Parse(camDefRotStr[1]), float.Parse(camDefRotStr[2]));
|
|
|
|
|
|
|
|
|
|
|
|
ChangeCameraPos(cameraDefPos, cameraDefRot);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
WDebug.LogError($"<22><><EFBFBD>ݳ<EFBFBD><DDB3>ִ<EFBFBD><D6B4><EFBFBD>:{ex.Message}");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="pos"></param>
|
|
|
|
|
|
/// <param name="rot"></param>
|
|
|
|
|
|
public void ChangeCameraPos(Vector3 pos, Vector3 rot)
|
|
|
|
|
|
{
|
|
|
|
|
|
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>λ<EFBFBD><CEBB>
|
|
|
|
|
|
kinematic.SetPositionAndRotation(pos, Quaternion.Euler(0, rot.y, 0));///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>λ<EFBFBD><CEBB>
|
|
|
|
|
|
characterCamera.transform.rotation = Quaternion.Euler(rot.x, rot.y, 0);
|
|
|
|
|
|
characterCamera.transform.position = characterCamera.pos.transform.position;
|
|
|
|
|
|
characterCamera.ResetTR(rot);
|
|
|
|
|
|
}
|
2025-01-12 15:26:31 +08:00
|
|
|
|
private void RecognizeNewGeo(RaycastHit rayHit, string RecognizeName,string tranName)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (rayHit.transform.name.Contains(RecognizeName))
|
|
|
|
|
|
{
|
|
|
|
|
|
Vector3 worldPos = rayHit.point;
|
|
|
|
|
|
PopUpMng.ShowToolInfoTip(tranName, worldPos + Vector3.up * 0.05f, -1);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|