示例#1
0
        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);
        }
示例#2
0
        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);
        }