public static string ToAttributeString(this HumanoidMuscleType _this) { if (_this < HumanoidMuscleType.Root) { int delta = _this - HumanoidMuscleType.Motion; return(nameof(HumanoidMuscleType.Motion) + GetTransformPostfix(delta % 7)); } if (_this < HumanoidMuscleType.Limbs) { int delta = _this - HumanoidMuscleType.Root; return(nameof(HumanoidMuscleType.Root) + GetTransformPostfix(delta % 7)); } if (_this < HumanoidMuscleType.Muscles) { int delta = _this - HumanoidMuscleType.Limbs; LimbType limb = (LimbType)(delta / 7); return(limb.ToBoneType().ToAttributeString() + GetTransformPostfix(delta % 7)); } if (_this < HumanoidMuscleType.Fingers) { int delta = _this - HumanoidMuscleType.Muscles; MuscleType muscle = (MuscleType)delta; return(muscle.ToAttributeString()); } if (_this < HumanoidMuscleType.TDoFBones) { const int armSize = (int)FingerType.Last * (int)FingerDoFType.Last; const int dofSize = (int)FingerDoFType.Last; int delta = _this - HumanoidMuscleType.Fingers; ArmType arm = (ArmType)(delta / armSize); delta = delta % armSize; FingerType finger = (FingerType)(delta / dofSize); delta = delta % dofSize; FingerDoFType dof = (FingerDoFType)delta; return($"{arm.ToBoneType().ToAttributeString()}.{finger.ToAttributeString()}.{dof.ToAttributeString()}"); } if (_this < HumanoidMuscleType.Last) { const int TDoFSize = (int)TDoFBoneType.Last; int delta = _this - HumanoidMuscleType.TDoFBones; TDoFBoneType tdof = (TDoFBoneType)(delta / TDoFSize); return($"{tdof.ToBoneType().ToAttributeString()}{GetTDoFTransformPostfix(delta % TDoFSize)}"); } throw new ArgumentException(_this.ToString()); }
public static HumanoidMuscleType Update(this HumanoidMuscleType _this, Version version) { if (_this < HumanoidMuscleType.Muscles) { return(_this); } MuscleType muscle = (MuscleType)(_this - HumanoidMuscleType.Muscles); MuscleType fixedMuscle = muscle.Update(version); _this = HumanoidMuscleType.Muscles + (int)fixedMuscle; if (_this < HumanoidMuscleType.TDoFBones) { return(_this); } TDoFBoneType tdof = (TDoFBoneType)(_this - HumanoidMuscleType.TDoFBones); TDoFBoneType fixedTdof = tdof.Update(version); _this = HumanoidMuscleType.TDoFBones + (int)fixedTdof; return(_this); }