示例#1
0
    public void Init()
    {
        this.muscleBodyGroupToggle = new bool[PSMuscleDefine.muscle.Length];
        for (int i = 0; i < PSMuscleDefine.muscle.Length; 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;
        }

        this.muscleMasterValue = new float[PSMuscleDefine.masterMuscle.Length];
        for (int m = 0; m < PSMuscleDefine.masterMuscle.Length; m++)
        {
            this.muscleMasterValue [m] = 0f;
        }

        rootValue     = new float[PSMuscleDefine.rootProperty.Length];
        rootToggle    = new bool[PSMuscleDefine.rootProperty.Length];
        rootValue [6] = 1.0f;

        Undo.undoRedoPerformed += UndoCallback;
    }
    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);
    }