Exemplo n.º 1
0
        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];
                }
            }
        }
Exemplo n.º 2
0
        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();
                }
            }
        }
Exemplo n.º 3
0
 private void OnKeyframePlayComplete(PBKeyFrame keyFrame)
 {
     mCompleteCount = keyFrame.Index + 1;
     if (mCompleteCount == mKeyFrames.Count)
     {
         OnPlayComplete.Invoke();
     }
 }
Exemplo n.º 4
0
 private void OnKeyframeStart(PBKeyFrame curKeyFrame)
 {
     SetKeyFrameLayer(curKeyFrame, true);
     isEnableCtrl = false;
     ResetView(mIsResetPinching);
     HideStepHighLighting(curKeyFrame.Previous);
     HideStepHighLighting(curKeyFrame);
     HideStepHighLighting(curKeyFrame.Next);
 }
Exemplo n.º 5
0
 private void OnKeyframeComplete(PBKeyFrame curKeyFrame)
 {
     if (curKeyFrame.Index > 0)
     {
         isEnableCtrl = true;
     }
     OnStepComplete();
     SetStepHighLighting(curKeyFrame);
     mCurRotateCenter = curKeyFrame.GetObjCenter();
 }
Exemplo n.º 6
0
 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);
         }
     }
 }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
 private void OnKeyframeReset(PBKeyFrame curKeyFrame)
 {
     SetKeyFrameLayer(curKeyFrame, false);
 }