public void SetTarget(GameObject target) { this.target = target; selected = -1; if (target == null) { return; } Animator animator = target.GetComponent(typeof(Animator)) as Animator; if (animator == null) { return; } avatar = animator.avatar; if (avatar == null || !avatar.isValid || !avatar.isHuman) { return; } muscleMinMaxValues = PSMuscleDefine.GetMuscleMinMaxValues(); Array boneArray = Enum.GetValues(typeof(HumanBodyBones)); Array.Sort(boneArray); boneInfos = new BoneInfo[HumanTrait.BoneCount]; for (int i = 0; i < HumanTrait.BoneCount; i++) { BoneInfo info = new BoneInfo(); info.bone = animator.GetBoneTransform((HumanBodyBones)boneArray.GetValue(i)); info.humanBoneName = HumanTrait.BoneName [i]; info.boneId = i; info.muscleXId = HumanTrait.MuscleFromBone(info.boneId, 0); info.muscleYId = HumanTrait.MuscleFromBone(info.boneId, 1); info.muscleZId = HumanTrait.MuscleFromBone(info.boneId, 2); if (info.muscleXId != -1 || info.muscleYId != -1 || info.muscleZId != -1) { boneInfos [i] = info; } } // get avatar methods getAxisLength = avatar.GetType().GetMethod("GetAxisLength", flags); getPreRotation = avatar.GetType().GetMethod("GetPreRotation", flags); getPostRotation = avatar.GetType().GetMethod("GetPostRotation", flags); getZYRoll = avatar.GetType().GetMethod("GetZYRoll", flags); getLimitSign = avatar.GetType().GetMethod("GetLimitSign", flags); getZYPostQ = avatar.GetType().GetMethod("GetZYPostQ", flags); }
public void Init() { int len = PSMuscleDefine.muscle.Length; this.muscleBodyGroupToggle = new bool[len]; for (int i = 0; i < len; i++) { this.muscleBodyGroupToggle [i] = false; } this.muscleName = PSMuscleDefine.GetMuscleName(); this.propertyMuscleName = PSMuscleDefine.GetPropertyMuscleName(); this.muscleCount = HumanTrait.MuscleCount; this.muscleToggle = new bool[this.muscleCount]; this.muscleValue = new float[this.muscleCount]; for (int k = 0; k < this.muscleCount; k++) { this.muscleToggle [k] = false; this.muscleValue [k] = 0f; } len = PSMuscleDefine.masterMuscle.Length; this.muscleMasterValue = new float[len]; for (int m = 0; m < len; m++) { this.muscleMasterValue [m] = 0f; } len = PSMuscleDefine.fingerMuscle.Length; this.muscleFingerValue = new float[len]; for (int m = 0; m < len; m++) { this.muscleFingerValue [m] = 0f; } len = PSMuscleDefine.rootProperty.Length; rootValue = new float[len]; rootToggle = new bool[len]; Undo.undoRedoPerformed += UndoCallback; }