/// t-->[0,1]
	public static Quaternion GetHermitePoint_Q(float t, YamlRotationData preData, YamlRotationData nexData, LerpType lerpType)
	{
		Quaternion rotation = new Quaternion();
		if(lerpType==LerpType.LineLerp)
		{
			rotation = Quaternion.Slerp(preData.value,nexData.value, t);
		}
		else
		{
			rotation.x = CalculateHermiteFloat(t,nexData.time-preData.time,preData.value.x,nexData.value.x,preData.outSlope.x,nexData.inSlope.x);
			rotation.y = CalculateHermiteFloat(t,nexData.time-preData.time,preData.value.y,nexData.value.y,preData.outSlope.y,nexData.inSlope.y);
			rotation.z = CalculateHermiteFloat(t,nexData.time-preData.time,preData.value.z,nexData.value.z,preData.outSlope.z,nexData.inSlope.z);
			rotation.w = CalculateHermiteFloat(t,nexData.time-preData.time,preData.value.w,nexData.value.w,preData.outSlope.w,nexData.inSlope.w);
		}
		return rotation;
	}
Exemple #2
0
    void ParseRotationDataToList(YamlSequenceNode node, string key)
    {
        IList <YamlNode>   nodeList = node.Children;
        List <YamlSQTData> list     = new List <YamlSQTData>();

        foreach (YamlMappingNode valueNode in nodeList)
        {
            YamlRotationData rotationData = new YamlRotationData();
            rotationData.time        = float.Parse(EasyYaml.FindMapNodeByKey("time", valueNode).ToString());
            rotationData.value       = GetQuaternion("value", valueNode);
            rotationData.inSlope     = GetQuaternion("inSlope", valueNode);
            rotationData.outSlope    = GetQuaternion("outSlope", valueNode);
            rotationData.tangentMode = float.Parse(EasyYaml.FindMapNodeByKey("tangentMode", valueNode).ToString());
            list.Add(rotationData);
        }
        rotationInfo.Add(key, list);
    }