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); } }
public void Init(PPKeyFrameInfo keyFrameInfo, Dictionary <int, GameObject> targets) { mInfo = keyFrameInfo; KeyFrameItems = new List <PBKeyFrameItem>(); foreach (PPFrameItemInfo itemInfo in mInfo.itemInfos) { #if !BLOCK_EDITOR PBKeyFrameItem frameItem = new PBKeyFrameItem(); #else PBKeyFrameItem frameItem = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name.Equals(BlockEditorGlobal.SCENE_PROSPECTUS) ? new PBKeyFrameItem_Prospectus() : new PBKeyFrameItem(); #endif frameItem.Init(itemInfo, targets[itemInfo.targetId]); frameItem.KeyframeIndex = Index; KeyFrameItems.Add(frameItem); } for (int i = 0; i < KeyFrameItems.Count; i++) { if (i > 0) { KeyFrameItems[i].Previous = KeyFrameItems[i - 1]; } if (i < KeyFrameItems.Count - 1) { KeyFrameItems[i].Next = KeyFrameItems[i + 1]; } } }
private static void ProcessKeyframes(XmlNode nodeKeys, List <PPKeyFrameInfo> keyframeInfos, Dictionary <int, PPAnimNodeInfo> animNodeInfos) { XmlNodeList keyframeNodes = nodeKeys.SelectNodes("keyframe"); for (int i = 0; i < keyframeNodes.Count; i++) { XmlNode keyFrameNode = keyframeNodes[i]; PPKeyFrameInfo keyFrameInfo = new PPKeyFrameInfo(); keyFrameInfo.index = int.Parse(keyFrameNode.Attributes["index"].Value); PBPointInfo pointInfo = null; if (keyFrameNode.Attributes["keyPointType"] != null) { PBPointType pointType = (PBPointType)int.Parse(keyFrameNode.Attributes["keyPointType"].Value); string pointInfoStr = null; if (pointType != PBPointType.None && keyFrameNode.Attributes["keyPointInfo"] != null) { pointInfoStr = keyFrameNode.Attributes["keyPointInfo"].Value; } string pointTipStr = null; if (pointType != PBPointType.None && keyFrameNode.Attributes["keyPointTip"] != null) { pointTipStr = keyFrameNode.Attributes["keyPointTip"].Value; } pointInfo = new PBPointInfo(keyFrameInfo.index, pointType, pointInfoStr, pointTipStr); } else if (keyFrameNode.Attributes["custom"] != null) { //兼容旧版本逻辑 pointInfo = new PBPointInfo(keyFrameInfo.index, PBPointType.GuidePoint, keyFrameNode.Attributes["custom"].Value, null); } keyFrameInfo.pointInfo = pointInfo; ProcessFrameItems(keyFrameNode.SelectNodes("item"), keyFrameInfo, animNodeInfos); keyframeInfos.Add(keyFrameInfo); } }