You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.8 KiB
66 lines
1.8 KiB
using UnityEngine; |
|
|
|
namespace UDE_HAND_INTERACTION |
|
{ |
|
public class HandInteraction : MonoBehaviour |
|
{ |
|
[SerializeField] |
|
[Tooltip("Transform used as a reference to measure the local data of the HandGrabPose")] |
|
public Transform _relativeTo; |
|
|
|
public Transform RelativeTo => _relativeTo; |
|
|
|
public HandPose _handPose = new(); |
|
|
|
[HideInInspector] |
|
public HandPose HandPose => _handPose; |
|
|
|
public enum Handness |
|
{ |
|
Left, |
|
Right |
|
} |
|
|
|
public Handness handness => (Handness)_handPose.Handedness; |
|
|
|
public HandPerfabResource _HPResource; |
|
private Vector3 TipPos; |
|
public Pose RelativePose |
|
{ |
|
get |
|
{ |
|
if (_relativeTo != null) |
|
{ |
|
return PoseManager.DeltaScaled(_relativeTo, transform); |
|
} |
|
else |
|
{ |
|
return transform.GetPose(Space.Self); |
|
} |
|
} |
|
} |
|
|
|
[HideInInspector] |
|
public bool UseInteract { get; private set; } |
|
|
|
void Awake() |
|
{ |
|
if(transform.Find("PivotPoint") == null) |
|
{ |
|
var virtualHand = Instantiate(_HPResource.GetHand(HandPose.Handedness), transform); |
|
Pose pose = PoseManager.GlobalPoseScaled(RelativeTo, RelativePose); |
|
virtualHand.SetPose(HandPose, pose); |
|
TipPos = virtualHand.TipPos.position; |
|
DestroyImmediate(virtualHand.gameObject); |
|
var Pivot = new GameObject("PivotPoint"); |
|
Pivot.transform.parent = transform; |
|
Pivot.transform.position = TipPos; |
|
} |
|
} |
|
|
|
public void SetUseInteract() |
|
{ |
|
UseInteract = true; |
|
} |
|
} |
|
}
|
|
|