private List <PartData> GetData(List <Transform> children) { var list = new List <PartData>(); for (int i = 0; i < children.Count; i++) { var child = children[i]; string customValue; var partUnit = ModelFBXParser.ParseUnit(child.name, out customValue); var data = ParsePartData(child, partUnit, customValue); list.Add(data); } return(list); }
private PartData ParsePartData(Transform trans, PartUnit partUnit, string customValue) { PartData partData; switch (partUnit.type) { case PartType.Bone: { var data = new BoneData(); for (int i = 0; i < trans.childCount; i++) { var t = trans.GetChild(i); if (!t.name.StartsWith(ModelFBXParser.GroupMark)) { continue; } var group = t; for (int j = 0; j < @group.childCount; j++) { var child = @group.GetChild(j); data.num = customValue; var childName = ModelFBXParser.ToLegalName(child.name); data.items.Add(childName); } break; } partData = data; break; } case PartType.MC: { var data = new MCData(); data.type = 1; partData = data; break; } case PartType.Wire: { var data = new WireData(); data.num = customValue; partData = data; break; } case PartType.Servo: { var data = new ServoData(); data.id = int.Parse(customValue); data.type = 1; data.angle = 120; partData = data; break; } case PartType.Motor: { var data = new MotorData(); data.id = int.Parse(customValue); partData = data; break; } case PartType.Sensor: { var data = new SensorData(); data.id = int.Parse(customValue); partData = data; break; } default: { partData = new PartData(); break; } } partData.name = trans.name; partData.source = partUnit.source; partData.transform = new DTransform(); partData.transform.position = trans.localPosition; partData.transform.angle = trans.localEulerAngles; partData.transform.scale = GetScale(trans, partData.partType); partData.parent = GetParentName(trans); return(partData); }