//======= Copyright (c) Valve Corporation, All rights reserved. ===============
|
|
//
|
|
// Purpose: Spawns and attaches an object to the hand after the controller has
|
|
// tracking
|
|
//
|
|
//=============================================================================
|
|
|
|
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
namespace Valve.VR.InteractionSystem
|
|
{
|
|
//-------------------------------------------------------------------------
|
|
public class SpawnAndAttachAfterControllerIsTracking : MonoBehaviour
|
|
{
|
|
private Hand hand;
|
|
public GameObject itemPrefab;
|
|
|
|
|
|
//-------------------------------------------------
|
|
void Start()
|
|
{
|
|
hand = GetComponentInParent<Hand>();
|
|
}
|
|
|
|
|
|
//-------------------------------------------------
|
|
void Update()
|
|
{
|
|
if ( itemPrefab != null )
|
|
{
|
|
if ( hand.controller != null )
|
|
{
|
|
if ( hand.controller.hasTracking )
|
|
{
|
|
GameObject objectToAttach = GameObject.Instantiate( itemPrefab );
|
|
objectToAttach.SetActive( true );
|
|
hand.AttachObject( objectToAttach );
|
|
hand.controller.TriggerHapticPulse( 800 );
|
|
Destroy( gameObject );
|
|
|
|
// If the player's scale has been changed the object to attach will be the wrong size.
|
|
// To fix this we change the object's scale back to its original, pre-attach scale.
|
|
objectToAttach.transform.localScale = itemPrefab.transform.localScale;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|