using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XRTool.Util;
namespace ShadowStudio.Model
{
///
/// 用户角色控制器
///
public class PlayerAnimatorController : MonoBehaviour
{
private Animator playerAni;
public Transform playerHead;
private Transform t_renMAN;
private Transform leftHand;
private Transform rightHand;
private Transform handLeft;
private Transform handRight;
private Animator leftHandAnim;
private Animator rightHandAnim;
private int leftState;
private int rightState;
public void SetHands(Transform leftHand, Transform rightHand)
{
this.leftHand = leftHand;
this.rightHand = rightHand;
}
private void Start()
{
if (HandLeft)
{
HandLeft.gameObject.SetActive(false);
}
if (HandRight)
{
HandRight.gameObject.SetActive(false);
}
if(CScript.App.AppManager.Instance.isRunHolographic)
{
HandLeft.gameObject.SetActive(false);
HandRight.gameObject.SetActive(false);
T_renMAN.gameObject.SetActive(false);
}
}
public Animator PlayerAni
{
get
{
if (!playerAni)
{
playerAni = GetComponent();
}
return playerAni;
}
}
public Transform T_renMAN
{
get
{
if (!t_renMAN)
{
t_renMAN = UnityUtil.GetBreadthChild(transform, "T_renMAN");
}
return T_renMAN;
}
}
public Transform HandLeft
{
get
{
if (!handLeft)
{
handLeft = UnityUtil.GetBreadthChild(transform, "HandLeft");
}
return handLeft;
}
}
public Transform HandRight
{
get
{
if (!handRight)
{
handRight = UnityUtil.GetBreadthChild(transform, "HandRight");
}
return handRight;
}
}
public Animator LeftHandAnim
{
get
{
if (!leftHandAnim && HandLeft)
{
leftHandAnim = HandLeft.GetComponent();
}
return leftHandAnim;
}
}
public Animator RightHandAnim
{
get
{
if (!rightHandAnim && HandRight)
{
rightHandAnim = HandRight.GetComponent();
}
return rightHandAnim;
}
}
///
/// 角色IK动画设置
///
///
//private void OnAnimatorIK(int layerIndex)
//{
// if (PlayerAni)
// {
// if (leftHand)
// {
// SetPlayerIKWeight(AvatarIKGoal.LeftHand);
// SetPlayerIK(AvatarIKGoal.LeftHand, leftHand);
// }
// if (rightHand)
// {
// SetPlayerIKWeight(AvatarIKGoal.RightHand);
// SetPlayerIK(AvatarIKGoal.RightHand, rightHand);
// }
// }
//}
public void SetPlayerIK(AvatarIKGoal goal, Vector3 pos, Quaternion rotation)
{
PlayerAni.SetIKPosition(goal, pos);
PlayerAni.SetIKRotation(goal, rotation);
}
public void SetPlayerIK(AvatarIKGoal goal, Transform target)
{
SetPlayerIK(goal, target.position, target.rotation);
}
///
/// 设置头部信息
///
///
public void SetPlayerIKWeight(AvatarIKGoal goal)
{
PlayerAni.SetIKPositionWeight(goal, 1f);
PlayerAni.SetIKRotationWeight(goal, 1f);
}
public void SetAnimInt(Animator animator, string stateName, int state)
{
if (animator)
{
animator.SetInteger(stateName, state);
}
}
public int LeftHandState
{
get
{
return leftState;
}
set
{
if (LeftHandAnim)
{
SetAnimInt(LeftHandAnim, "State", leftState = value);
}
}
}
public int RightHandState
{
get
{
return rightState;
}
set
{
if (RightHandAnim)
{
SetAnimInt(RightHandAnim, "State", rightState = value);
}
}
}
}
}