public void Init(List <PPKeyFrameInfo> keyFrameInfos, Dictionary <int, GameObject> targets) { mKeyFrames.Clear(); mKeyFrameIndex = 0; mCompleteCount = 0; OnPlayComplete.RemoveAllListeners(); foreach (PPKeyFrameInfo info in keyFrameInfos) { PBKeyFrame keyFrame = new PBKeyFrame(); mKeyFrames.Add(keyFrame); keyFrame.Init(info, targets); keyFrame.OnComplete.AddListener(OnKeyframePlayComplete); } for (int i = mKeyFrames.Count - 1; i >= 0; i--) { //倒着reset,确保reset到最初的状态,否则后面的会覆盖掉前面的(针对target出现在多个frame中) mKeyFrames[i].Reset(); if (i > 0) { mKeyFrames[i].Previous = mKeyFrames[i - 1]; } if (i < mKeyFrames.Count - 1) { mKeyFrames[i].Next = mKeyFrames[i + 1]; } } }
public void HideStepHighLighting(PBKeyFrame curKeyFrame) { if (!mIsShowStepHighlight || curKeyFrame == null) { return; } foreach (PBKeyFrameItem item in curKeyFrame.KeyFrameItems) { if (item.PosNotChange || item.Target.name == "section_0") { continue; } PBBlock[] blocks = item.Target.GetComponentsInChildren <PBBlock>(); for (int i = 0; i < blocks.Length; ++i) { if (blocks[i].hide) { continue; } Highlighter high = blocks[i].gameObject.AddSingleComponent <Highlighter>(); high.ConstantOffImmediate(); } } }
private void OnKeyframePlayComplete(PBKeyFrame keyFrame) { mCompleteCount = keyFrame.Index + 1; if (mCompleteCount == mKeyFrames.Count) { OnPlayComplete.Invoke(); } }
private void OnKeyframeStart(PBKeyFrame curKeyFrame) { SetKeyFrameLayer(curKeyFrame, true); isEnableCtrl = false; ResetView(mIsResetPinching); HideStepHighLighting(curKeyFrame.Previous); HideStepHighLighting(curKeyFrame); HideStepHighLighting(curKeyFrame.Next); }
private void OnKeyframeComplete(PBKeyFrame curKeyFrame) { if (curKeyFrame.Index > 0) { isEnableCtrl = true; } OnStepComplete(); SetStepHighLighting(curKeyFrame); mCurRotateCenter = curKeyFrame.GetObjCenter(); }
private void SetSingleFrameData(PBKeyFrame frame) { if (!mFrameData.ContainsKey(frame.Index)) { mFrameData.Add(frame.Index, new List <GameObject>()); } foreach (var item in frame.KeyFrameItems) { if (item.Target.GetComponent <PBBlock>() != null) { mFrameData[frame.Index].Add(item.Target); } } }
private void SetKeyFrameLayer(PBKeyFrame curKeyFrame, bool isShow) { if (!mIsEnableSetLayer) { return; } int layer = LayerMask.NameToLayer(isShow ? mCurLayer : "Ignore" + mCurLayer); if (!mFrameData.ContainsKey(curKeyFrame.Index)) { Debug.Log("Init KeyFrameData Error!"); return; } var curIndex = curKeyFrame.Index; var preObjs = new List <GameObject>(); if (isShow) { foreach (var key in mFrameData.Keys) { if (key <= curIndex) { preObjs.AddRange(mFrameData[key]); } } } else { foreach (var key in mFrameData.Keys) { if (key == curIndex) { preObjs.AddRange(mFrameData[key]); } } } preObjs.ForEach(t => t.transform.SetLayer(layer)); }
private void OnKeyframeReset(PBKeyFrame curKeyFrame) { SetKeyFrameLayer(curKeyFrame, false); }