public retData CheckBones(AniClip clip) { retData ret = new retData(); ret.info = string.Format("人物骨骼数:{0},动作骨骼数:{1}", allBones.Count, clip.boneinfo.Count); var count = Mathf.Min(clip.boneinfo.Count, allBones.Count); // for (int i = 0; i < count; i++) { if (allBones[i] != clip.boneinfo[i]) { ret.errorBones.Add(allBones[i]); ret.errorBones.Add(clip.boneinfo[i]); } //丢失节点 if (ani.transform.Find(clip.boneinfo[i]) == null) { ret.notExsitBones.Add(clip.boneinfo[i]); } } return(ret); }
// NOTE: this function is adapted to be run in a thread static retData CreateOneReport(Dictionary <string, List <Data.SymbolDayData> > sdds, Data.SymbolInfo symbolInfo) { string report = ""; if (SymbolsDrawingsToSerialize.ContainsKey(symbolInfo.FullName) == false) { return(new retData()); } var sdd = GetSymbolData(sdds, symbolInfo); foreach (var line in SymbolsDrawingsToSerialize[symbolInfo.FullName].chartLines) { if (line.Color != "Lime" && line.Color != "Red") { continue; } DateTime lineStartDate = DateTime.ParseExact(line.StartPointDV.Split('+')[0], Data.dateTimeFormat, CultureInfo.InvariantCulture); DateTime lineEndDate = DateTime.ParseExact(line.EndPointDV.Split('+')[0], Data.dateTimeFormat, CultureInfo.InvariantCulture); double extraDaysFromStart = double.Parse(line.StartPointDV.Split('+')[1].Split(';')[0], Data.numberFormat); double extraDaysToEnd = double.Parse(line.EndPointDV.Split('+')[1].Split(';')[0], Data.numberFormat); if (lineEndDate.AddDays(extraDaysToEnd) < sdd[0].Date) { continue; } // find sdd at start of line var sddIt = 0; while (sdd[sddIt].Date > lineStartDate) { sddIt++; } double numDays = sddIt - extraDaysFromStart + extraDaysToEnd; double startVal = double.Parse(line.StartPointDV.Split(';')[1], Data.numberFormat); double endVal = double.Parse(line.EndPointDV.Split(';')[1], Data.numberFormat); double step = (endVal - startVal) / numDays; double lineValAtSdd0 = startVal + step * sddIt; if (sdd[0].Low < lineValAtSdd0 && lineValAtSdd0 < sdd[0].Hi) { string e = ""; report += "NAME: " + symbolInfo.FullName + " with "; if (step > 0) { e += "ASCENDING line "; } else { e += "DESCENDING line "; } e += "crossed at value " + lineValAtSdd0.ToString("F2", Data.numberFormat); ReportItem ri = new ReportItem(); ri.Symbol = symbolInfo.FullName; ri.Date = sdd[0].Date; ri.Event = e; ReportItems.Add(ri); report += e + "\n"; } } var rd = new retData(); rd.reportString = report; return(rd); }