campfire/Assets/SteamVR/InteractionSystem/Core/Scripts/ModalThrowable.cs
2020-04-29 20:40:05 +03:00

53 lines
1.8 KiB
C#

//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: Basic throwable object
//
//=============================================================================
using UnityEngine;
using UnityEngine.Events;
using System.Collections;
namespace Valve.VR.InteractionSystem
{
public class ModalThrowable : Throwable
{
[Tooltip("The local point which acts as a positional and rotational offset to use while held with a grip type grab")]
public Transform gripOffset;
[Tooltip("The local point which acts as a positional and rotational offset to use while held with a pinch type grab")]
public Transform pinchOffset;
protected override void HandHoverUpdate(Hand hand)
{
GrabTypes startingGrabType = hand.GetGrabStarting();
if (startingGrabType != GrabTypes.None)
{
if (startingGrabType == GrabTypes.Pinch)
{
hand.AttachObject(gameObject, startingGrabType, attachmentFlags, pinchOffset);
}
else if (startingGrabType == GrabTypes.Grip)
{
hand.AttachObject(gameObject, startingGrabType, attachmentFlags, gripOffset);
}
else
{
hand.AttachObject(gameObject, startingGrabType, attachmentFlags, attachmentOffset);
}
hand.HideGrabHint();
}
}
protected override void HandAttachedUpdate(Hand hand)
{
if (interactable.skeletonPoser != null)
{
interactable.skeletonPoser.SetBlendingBehaviourEnabled("PinchPose", hand.currentAttachedObjectInfo.Value.grabbedWithType == GrabTypes.Pinch);
}
base.HandAttachedUpdate(hand);
}
}
}