mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-03 06:49:22 +00:00
move bunch of things to depricated folder
This commit is contained in:
parent
86828a94e2
commit
21f8893095
156 changed files with 193 additions and 93 deletions
108
.DepricatedMods/InteractionTest/GrabbingAvatar.cs
Normal file
108
.DepricatedMods/InteractionTest/GrabbingAvatar.cs
Normal file
|
@ -0,0 +1,108 @@
|
|||
using UnityEngine;
|
||||
using RootMotion.FinalIK;
|
||||
using ABI_RC.Core.Player;
|
||||
using ABI_RC.Core.Savior;
|
||||
|
||||
namespace NAK.InteractionTest;
|
||||
|
||||
internal class GrabbingAvatar : MonoBehaviour
|
||||
{
|
||||
VRIK m_vrik;
|
||||
|
||||
private bool m_isGrabbingLeft = false;
|
||||
private bool m_isGrabbingRight = false;
|
||||
|
||||
private Transform m_grabbedTransform = null;
|
||||
private Vector3 m_localOffset;
|
||||
private Quaternion m_localRotation;
|
||||
|
||||
public float m_grabRadius = 0.1f;
|
||||
public LayerMask m_grabLayerMask;
|
||||
|
||||
void Start()
|
||||
{
|
||||
m_vrik = GetComponent<VRIK>();
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
bool isGrabLeft = CVRInputManager.Instance.gripLeftValue >= 0.5f;
|
||||
bool isGrabRight = CVRInputManager.Instance.gripRightValue >= 0.5f;
|
||||
|
||||
if (isGrabLeft && !m_isGrabbingLeft)
|
||||
{
|
||||
m_isGrabbingLeft = true;
|
||||
OnGrab(Hand.Left);
|
||||
}
|
||||
else if (!isGrabLeft && m_isGrabbingLeft)
|
||||
{
|
||||
m_isGrabbingLeft = false;
|
||||
OnRelease(Hand.Left);
|
||||
}
|
||||
|
||||
if (isGrabRight && !m_isGrabbingRight)
|
||||
{
|
||||
m_isGrabbingRight = true;
|
||||
OnGrab(Hand.Right);
|
||||
}
|
||||
else if (!isGrabRight && m_isGrabbingRight)
|
||||
{
|
||||
m_isGrabbingRight = false;
|
||||
OnRelease(Hand.Right);
|
||||
}
|
||||
|
||||
if (m_isGrabbingLeft)
|
||||
{
|
||||
UpdateGrabbedHand(Hand.Left);
|
||||
}
|
||||
|
||||
if (m_isGrabbingRight)
|
||||
{
|
||||
UpdateGrabbedHand(Hand.Right);
|
||||
}
|
||||
}
|
||||
|
||||
void OnGrab(Hand hand)
|
||||
{
|
||||
// Find the closest grabbable object using a sphere cast
|
||||
Collider[] colliders = Physics.OverlapSphere(transform.position, m_grabRadius, m_grabLayerMask);
|
||||
if (colliders.Length > 0)
|
||||
{
|
||||
Collider closestCollider = colliders[0];
|
||||
float closestDistance = float.MaxValue;
|
||||
foreach (Collider collider in colliders)
|
||||
{
|
||||
float distance = (collider.transform.position - transform.position).magnitude;
|
||||
if (distance < closestDistance)
|
||||
{
|
||||
closestCollider = collider;
|
||||
closestDistance = distance;
|
||||
}
|
||||
}
|
||||
|
||||
// Cache the grabbed transform and local position/rotation offset
|
||||
m_grabbedTransform = closestCollider.transform;
|
||||
m_localOffset = transform.InverseTransformVector(m_grabbedTransform.position - transform.position);
|
||||
m_localRotation = Quaternion.Inverse(transform.rotation) * m_grabbedTransform.rotation;
|
||||
}
|
||||
}
|
||||
|
||||
void OnRelease(Hand hand)
|
||||
{
|
||||
// Reset the grabbed transform and local position/rotation offset
|
||||
m_grabbedTransform = null;
|
||||
m_localOffset = Vector3.zero;
|
||||
m_localRotation = Quaternion.identity;
|
||||
}
|
||||
|
||||
void UpdateGrabbedHand(Hand hand)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public enum Hand
|
||||
{
|
||||
Left,
|
||||
Right
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue