Ejemplo n.º 1
0
        public bool SetupPreset(string poseName, GameObject avatar, PosePresetMode mode)
        {
            if (!avatar)
            {
                return(false);
            }

            if (mode == PosePresetMode.TransformRotations)
            {
                Transform[] trans = avatar.GetComponentsInChildren <Transform>();

                transformPaths     = new List <string>(trans.Length);
                transformRotations = new List <Vector3>(trans.Length);

                for (int i = 0; i < trans.Length; i++)
                {
                    var    t    = trans[i];
                    string path = Helpers.GetTransformPath(t, avatar.transform, true);

                    if (t && !string.IsNullOrEmpty(path))
                    {
                        transformPaths.Add(path);
                        transformRotations.Add(t.localEulerAngles);
                    }
                }
                return(true);
            }
            else
            {
                Animator anim = avatar.GetComponent <Animator>();

                if (!anim)
                {
                    return(false);
                }

                SerialTransform tr = avatar.transform;
                avatar.transform.SetPositionAndRotation(Vector3.zero, Quaternion.identity);
                HumanPose hp = new HumanPose();
                try
                {
                    HumanPoseHandler hph = new HumanPoseHandler(anim.avatar, anim.transform);
                    hph.GetHumanPose(ref hp);
                }
                catch
                {
                    avatar.transform.SetPositionAndRotation(tr.position, tr.rotation);
                    return(false);
                }
                finally
                {
                    avatar.transform.SetPositionAndRotation(tr.position, tr.rotation);
                    SetupPreset(poseName, hp);
                }
                return(true);
            }
        }
Ejemplo n.º 2
0
        public bool SetupPreset(string poseName, float[] muscles)
        {
            if (muscles == null)
            {
                muscles = new float[HumanTrait.MuscleCount];
            }
            else
            {
                Array.Resize(ref muscles, HumanTrait.MuscleCount);
            }

            name         = poseName;
            presetMode   = PosePresetMode.HumanPose;
            this.muscles = muscles;
            return(true);
        }
Ejemplo n.º 3
0
        public bool SetupPreset(string poseName, HumanPose p)
        {
            name         = poseName;
            presetMode   = PosePresetMode.HumanPose;
            muscles      = p.muscles;
            bodyPosition = p.bodyPosition;
            bodyRotation = p.bodyRotation;

            if (muscles == null)
            {
                muscles = new float[HumanTrait.MuscleCount];
            }
            else
            {
                Array.Resize(ref muscles, HumanTrait.MuscleCount);
            }

            return(true);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Creates and returns a PosePreset based on transform rotations only
        /// </summary>
        public static PumkinsPosePreset CreatePreset(string poseName, GameObject avatar, PosePresetMode mode)
        {
            PumkinsPosePreset pose = CreateInstance <PumkinsPosePreset>();

            pose.SetupPreset(poseName, avatar, mode);
            return(pose);
        }