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); } }
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); }
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); }
/// <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); }