public void Init(PlayerAnimAttribute.AnimAttr animAttr, IM.Number framerate, int beginFrameOffset = 0) { m_fBlockableBeginTime = IM.Number.zero; m_fBlockableEndTime = IM.Number.zero; PlayerAnimAttribute.KeyFrame_Blockable blockableFrame = animAttr.GetKeyFrame("blockable") as PlayerAnimAttribute.KeyFrame_Blockable; if (blockableFrame != null) { m_fBlockableBeginTime = (blockableFrame.frame - beginFrameOffset) / framerate; m_fBlockableEndTime = m_fBlockableBeginTime + blockableFrame.blockFrame / framerate; } }
void ReadAnimAttribute(XmlNode node) { Dictionary <string, PlayerAnimAttribute.AnimAttr> attrs = new Dictionary <string, PlayerAnimAttribute.AnimAttr>(); foreach (XmlNode animItem in node.ChildNodes) { PlayerAnimAttribute.AnimAttr animAttr = new PlayerAnimAttribute.AnimAttr(); XmlElement animItemElem = animItem as XmlElement; animAttr.strAnim = animItemElem.GetAttribute("name"); XmlNodeList lstNodes = animItemElem.SelectNodes("./KeyEvent"); animAttr.keyFrame = new List <PlayerAnimAttribute.KeyFrame>(); PlayerAnimAttribute.KeyFrame kf = new PlayerAnimAttribute.KeyFrame("null", 0); foreach (XmlNode keyEvent in lstNodes) { XmlElement keyEventElem = keyEvent as XmlElement; string id = keyEventElem.GetAttribute("id"); int frame = int.Parse(keyEventElem.GetAttribute("x")); if (id == "MoveToStartPos") { IM.Vector3 param = IM.Vector3.zero; XmlElement elem = keyEventElem.SelectSingleNode("./Param") as XmlElement; if (elem != null) { param = XmlUtils.XmlGetAttr_Vec3(elem); } kf = new PlayerAnimAttribute.KeyFrame_MoveToStartPos(id, frame, param); } else if (id == "OnLayupShot") { IM.Vector3 param = IM.Vector3.zero; XmlElement elem = keyEventElem.SelectSingleNode("./Param") as XmlElement; if (elem != null) { param = XmlUtils.XmlGetAttr_Vec3(elem); } kf = new PlayerAnimAttribute.KeyFrame_LayupShootPos(id, frame, param); } else if (id == "blockable") { int blockframe = 0; XmlElement elem = keyEventElem.SelectSingleNode("./Param") as XmlElement; if (elem != null) { blockframe = XmlUtils.XmlGetAttr_Int(elem, "x"); } kf = new PlayerAnimAttribute.KeyFrame_Blockable(id, frame, blockframe); } else if (id == "DefenderSpasticity") { int length = 0; XmlElement elem = keyEventElem.SelectSingleNode("./Param") as XmlElement; if (elem != null) { length = XmlUtils.XmlGetAttr_Int(elem, "x"); } kf = new PlayerAnimAttribute.KeyFrame_DefenderSpasticity(id, frame, length); } else if (id == "RotateToBasketAngle") { IM.Number angle = IM.Number.zero; XmlElement elem = keyEventElem.SelectSingleNode("./Param") as XmlElement; if (elem != null) { angle = XmlUtils.XmlGetAttr_Number(elem, "x"); } kf = new PlayerAnimAttribute.KeyFrame_RotateToBasketAngle(id, frame, angle); } else { kf = new PlayerAnimAttribute.KeyFrame(id, frame); } animAttr.keyFrame.Add(kf); } if (attrs.ContainsKey(animAttr.strAnim)) { Debug.LogError("AnimInfo same key: " + animAttr.strAnim); } attrs.Add(animAttr.strAnim, animAttr); } playerAttributes.animItemAttrs.Add(node.Name, attrs); }