Example #1
0
        public void ProcessAnimation(AnimationStream stream)
        {
            float weight;

            if (m_UseAnimatorProperty)
            {
                weight  = m_AnimatorWeight.GetFloat(stream);
                weight += m_AnimatorWeightOffset.GetFloat(stream);
                weight  = Mathf.Clamp01(weight);
                //m_WeightHandle.SetFloat(stream, weight);
            }
            else
            {
                weight = m_WeightHandle.GetFloat(stream);
            }

            weight = 1f;

            Vector3    effectorPosition;
            Quaternion effectorRotation;

            if (m_UseStreamEffector)
            {
                effectorPosition = m_EffectorStreamHandle.GetPosition(stream);
                effectorRotation = m_EffectorStreamHandle.GetRotation(stream);
            }
            else
            {
                effectorPosition = m_EffectorSceneHandle.GetPosition(stream);
                effectorRotation = m_EffectorSceneHandle.GetRotation(stream);
            }

            effectorRotation *= Quaternion.Euler(m_TargetOffset);

            if (m_IkType == IkType.Generic)
            {
                SolveTwoBoneIK(stream, m_StartHandle, m_MidHandle, m_EndHandle, effectorPosition, effectorRotation, weight, weight);
            }

            else if (m_IkType == IkType.Humanoid)
            {
                if (stream.isHumanStream)
                {
                    var humanStream = stream.AsHuman();

                    humanStream.SetGoalPosition(m_HumanLimb, effectorPosition);
                    humanStream.SetGoalRotation(m_HumanLimb, effectorRotation);
                    humanStream.SetGoalWeightPosition(m_HumanLimb, weight);
                    humanStream.SetGoalWeightRotation(m_HumanLimb, weight);
                    humanStream.SolveIK();
                }
            }
        }
Example #2
0
 public void ProcessAnimation(AnimationStream stream)
 {
     value = property.GetFloat(stream);
 }
Example #3
0
    public void ProcessAnimation(AnimationStream stream)
    {
        float weight;

        if (m_UseAnimatorProperty)
        {
            weight  = m_AnimatorWeight.GetFloat(stream);
            weight += m_AnimatorWeightOffset.GetFloat(stream);
            weight  = Mathf.Clamp01(weight);
            m_WeightHandle.SetFloat(stream, weight);
        }
        else
        {
            weight = m_WeightHandle.GetFloat(stream);
        }

        weight = 1f;

        Vector3    effectorPosition;
        Quaternion effectorRotation;

        if (m_UseStreamEffector)
        {
            effectorPosition = m_EffectorStreamHandle.GetPosition(stream);
            effectorRotation = m_EffectorStreamHandle.GetRotation(stream);
        }
        else
        {
            effectorPosition = m_EffectorSceneHandle.GetPosition(stream);
            effectorRotation = m_EffectorSceneHandle.GetRotation(stream);
        }

        effectorRotation *= Quaternion.Euler(m_TargetOffset);

        // Changes to the stream seems to kill the foot ik data in the stream.
        // TODO: (sunek) Get rid of this workaround once fixed in release
        if (stream.isHumanStream)
        {
            var humanStream = stream.AsHuman();
            humanStream.SetGoalPosition(AvatarIKGoal.LeftFoot, humanStream.GetGoalPosition(AvatarIKGoal.LeftFoot));
            humanStream.SetGoalRotation(AvatarIKGoal.LeftFoot, humanStream.GetGoalRotation(AvatarIKGoal.LeftFoot));
            humanStream.SetGoalPosition(AvatarIKGoal.RightFoot, humanStream.GetGoalPosition(AvatarIKGoal.RightFoot));
            humanStream.SetGoalRotation(AvatarIKGoal.RightFoot, humanStream.GetGoalRotation(AvatarIKGoal.RightFoot));
        }


        if (m_IkType == IkType.Generic)
        {
            AnimJobUtilities.SolveTwoBoneIK(stream, m_StartHandle, m_MidHandle, m_EndHandle, effectorPosition, effectorRotation, weight, weight);
        }

        else if (m_IkType == IkType.Humanoid)
        {
            if (stream.isHumanStream)
            {
                var humanStream = stream.AsHuman();

                humanStream.SetGoalPosition(m_HumanLimb, effectorPosition);
                humanStream.SetGoalRotation(m_HumanLimb, effectorRotation);
                humanStream.SetGoalWeightPosition(m_HumanLimb, weight);
                humanStream.SetGoalWeightRotation(m_HumanLimb, weight);
                humanStream.SolveIK();
            }
        }
    }
Example #4
0
 public float Get(AnimationStream stream) => value.GetFloat(stream);
Example #5
0
 public Vector4 Get(AnimationStream stream) =>
 new Vector4(x.GetFloat(stream), y.GetFloat(stream), z.GetFloat(stream), w.GetFloat(stream));
Example #6
0
 public Vector2 Get(AnimationStream stream) =>
 new Vector2(x.GetFloat(stream), y.GetFloat(stream));