예제 #1
0
    private static void ProcessFrameItems(XmlNodeList itemNodes, PPKeyFrameInfo keyFrameInfo, Dictionary <int, PPAnimNodeInfo> animNodeInfos)
    {
        for (int i = 0; i < itemNodes.Count; i++)
        {
            XmlNode         xmlNode       = itemNodes[i];
            PPFrameItemInfo frameItemInfo = new PPFrameItemInfo();

            XmlNode iniInfoNode = xmlNode.SelectSingleNode("init");
            iniInfoNode.GetPosInfo(out frameItemInfo.initPos)
            .GetAngleInfo(out frameItemInfo.initAngle);
            frameItemInfo.index    = i;
            frameItemInfo.targetId = int.Parse(xmlNode.Attributes["targetid"].Value);

            //根据targetId去处理
            XmlAttribute isunit = xmlNode.Attributes["isunit"];
            if (null == isunit)
            {
                frameItemInfo.IsUnit = animNodeInfos[frameItemInfo.targetId].Type == NodeType.Block;
            }
            else
            {
                frameItemInfo.IsUnit = !isunit.Value.Equals("0");
            }

            frameItemInfo.ParseMovements(xmlNode.SelectNodes("movement"));

            keyFrameInfo.AddFrameItemInfo(frameItemInfo);
        }
    }
예제 #2
0
        public virtual void Init(PPFrameItemInfo itemInfo, GameObject target)
        {
            mInfo   = itemInfo;
            mTarget = target;

            mDirNotChange = true;
            mPosNotChange = true;
            foreach (PPMovementInfo movement in mInfo.movements)
            {
                if (movement.type == PPMovementType.Normal)
                {
                    if (mInfo.initAngle != movement.destAngle)
                    {
                        mDirNotChange = false;
                    }
                    if (mInfo.initPos != movement.destPosition)
                    {
                        mPosNotChange = false;
                    }
                }
            }

            mHasNormalMove = mHasSplineMove = false;
            mNormalMoves.Clear();
            mSplineMoves.Clear();
            foreach (PPMovementInfo movement in mInfo.movements)
            {
                if (movement.type == PPMovementType.Normal)
                {
                    mHasNormalMove = true;
                    mNormalMoves.Add(movement);
                }
                else if (movement.type == PPMovementType.Spline)
                {
                    mHasSplineMove = true;
                    mSplineMoves.Add(movement);
                }
            }
        }
예제 #3
0
 public void AddFrameItemInfo(PPFrameItemInfo itemInfo)
 {
     itemInfos.Add(itemInfo);
 }