diff --git a/Assets/_Scripts/Application/DataModel/AZBSData/DataNiuHandler.cs b/Assets/_Scripts/Application/DataModel/AZBSData/DataNiuHandler.cs index 872476a..f562b82 100644 --- a/Assets/_Scripts/Application/DataModel/AZBSData/DataNiuHandler.cs +++ b/Assets/_Scripts/Application/DataModel/AZBSData/DataNiuHandler.cs @@ -88,6 +88,7 @@ namespace ZXK.LouDiXvMuNiu { if (tempData[i].id == nextID) { + NiuSceneMng._Instance.StepSetCameraTR(CurNiuHandler.Value, tempData[i]); return tempData[i]; } } diff --git a/Assets/_Scripts/Application/SceneCtrls/NiuSceneMng.cs b/Assets/_Scripts/Application/SceneCtrls/NiuSceneMng.cs index 73235d6..2063608 100644 --- a/Assets/_Scripts/Application/SceneCtrls/NiuSceneMng.cs +++ b/Assets/_Scripts/Application/SceneCtrls/NiuSceneMng.cs @@ -1083,5 +1083,60 @@ namespace ZXK.LouDiXvMuNiu PopUpMng.ShowToolInfoTip(tranName, worldPos + Vector3.up * 0.05f, -1); } } + + public void StepSetCameraTR(NiuData curStep,NiuData NextStep) + { + int curID = curStep.id; + int nextID = NextStep.id; + if (nextID - curID > 1&& curStep.ThreeTaskName!=ConstCtrl.ThreeTaskName_PeoplePlan) + { + Debug.Log("绑定事件:" + curID); + int allFrame = 0; + List modelInfos = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType]; + for (int a = 0; a < modelInfos.Count; a++) + { + if (modelInfos[a].TaskName.Equals(curStep.TaskName)) + { + allFrame += modelInfos[a].TimelineLength; + } + if (modelInfos[a].id == curID) + { + for (int i = 0; i < nextID-curID-1; i++) + { + Debug.Log("插入key:" + allFrame / 60.0f); + if (!_curTimeLineCtrl.OnTriDic.ContainsKey(allFrame / 60.0f)) + { + _curTimeLineCtrl.OnTriDic.Add(allFrame / 60.0f, (time) => + { + OperationStepPanel operationStep = UI_Manage.Instance.GetPanel("OperationStepPanel").GetComponent(); + List modelInfos = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType]; + int allFrameTemp = 0; + NiuData curTempStep = null; + for (int i = 0; i < modelInfos.Count; i++) + { + if (modelInfos[i].TaskName.Equals(ConstCtrl.TaskName_ActualOperation)) + { + allFrameTemp += modelInfos[i].TimelineLength; + } + if (Math.Abs(allFrameTemp / 60.0f - time) < 0.01f) + { + curTempStep = modelInfos[i+1]; + if (curTempStep.TaskType == ConstCtrl.TASKTYPE_Tran) + curTempStep = modelInfos[i + 2]; + break; + } + } + operationStep.UodateCameraTRID(curTempStep); + Debug.Log(curID+i+1); + }); + } + + allFrame += modelInfos[a + i+1].TimelineLength; + } + break; + } + } + } + } } } \ No newline at end of file diff --git a/Assets/_Scripts/Application/UI/OperationStepPanel.cs b/Assets/_Scripts/Application/UI/OperationStepPanel.cs index 857b15c..d073684 100644 --- a/Assets/_Scripts/Application/UI/OperationStepPanel.cs +++ b/Assets/_Scripts/Application/UI/OperationStepPanel.cs @@ -435,7 +435,7 @@ namespace ZXK.LouDiXvMuNiu PopUpMng.PopAlert("提示", "当前模块已完成", "确认", null); } } - private void UodateCameraTRID(NiuData obj) + public void UodateCameraTRID(NiuData obj) { if (string.IsNullOrEmpty(obj.CameraNearTR)) diff --git a/Assets/_Scripts/Framework/Utilities/TimelineDirectorCtrl.cs b/Assets/_Scripts/Framework/Utilities/TimelineDirectorCtrl.cs index c30d13d..d88ed19 100644 --- a/Assets/_Scripts/Framework/Utilities/TimelineDirectorCtrl.cs +++ b/Assets/_Scripts/Framework/Utilities/TimelineDirectorCtrl.cs @@ -62,6 +62,8 @@ namespace CG.UTility /// public Action OnContinue; + public Dictionary> OnTriDic = new Dictionary>(); + /// /// Timeline长度 /// @@ -209,6 +211,14 @@ namespace CG.UTility if (m_playableDirector != null) { m_playableDirector.time = CurrentTime; + foreach (float item in OnTriDic.Keys) + { + if(Math.Abs(item-CurrentTime)<0.01f) + { + OnTriDic[item]?.Invoke(item); + break; + } + } m_playableDirector.Evaluate(); } });