using System.Collections; using System.Collections.Generic; using UnityEngine; using XFramework; using System; using UnityEngine.Events; //VR人物同步数据发送类 public class VRPersonSyncSender : MonoBehaviour,IStateSyncSend { Transform headTrans; Transform leftHandTrans; Transform rightHandTrans; [SerializeField] string soleName; public event UnityAction SyncActionEvent; // Start is called before the first frame update void Awake() { headTrans = this.transform.FindChildTrans("Camera (eye)"); leftHandTrans = this.transform.FindChildTrans("Controller (left)"); rightHandTrans = this.transform.FindChildTrans("Controller (right)"); soleName = $"VRPerson_{GroupLearnHelper.ThisIP}"; //JoinSendList(); } public void JoinSendList() { SyncGOManager.Instance.AddSender(this); } public void ExitSendList() { SyncGOManager.Instance.RemoveSender(this); } //隐藏时 赋值Vector3.zero public object GetSyncMsg() { PersonSyncData syncData = new PersonSyncData(); syncData.personName =GetSoleName();//名称使用类型+IP组合 if (headTrans != null && headTrans.gameObject.activeSelf) { syncData.head = new TransGesture(headTrans.position, headTrans.rotation.eulerAngles); } else { syncData.head = new TransGesture(Vector3.zero, Vector3.zero); } if (leftHandTrans != null && leftHandTrans.gameObject.activeSelf) { syncData.LH = new TransGesture(leftHandTrans.position, leftHandTrans.rotation.eulerAngles); } else { syncData.LH = new TransGesture(Vector3.zero, Vector3.zero); } if (rightHandTrans != null && rightHandTrans.gameObject.activeSelf) { syncData.RH = new TransGesture(rightHandTrans.position, rightHandTrans.rotation.eulerAngles); } else { syncData.RH = new TransGesture(Vector3.zero, Vector3.zero); } return syncData; } //获取同步数据类型 public Type GetMsgType() { return typeof(PersonSyncData); } //获取该物体唯一名称 public string GetSoleName() { return soleName; } } [Serializable] public class PersonSyncData { //名称 public string personName; //头 public TransGesture head; //左手 public TransGesture LH; //右手 public TransGesture RH; }