You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
 | 
						|
//
 | 
						|
// Purpose: Can be attached to the controller to collide with the balloons
 | 
						|
//
 | 
						|
//=============================================================================
 | 
						|
 | 
						|
using UnityEngine;
 | 
						|
using System.Collections;
 | 
						|
 | 
						|
namespace Valve.VR.InteractionSystem
 | 
						|
{
 | 
						|
	//-------------------------------------------------------------------------
 | 
						|
	public class BalloonColliders : MonoBehaviour
 | 
						|
	{
 | 
						|
		public GameObject[] colliders;
 | 
						|
		private Vector3[] colliderLocalPositions;
 | 
						|
		private Quaternion[] colliderLocalRotations;
 | 
						|
 | 
						|
		private Rigidbody rb;
 | 
						|
 | 
						|
		//-------------------------------------------------
 | 
						|
		void Awake()
 | 
						|
		{
 | 
						|
			rb = GetComponent<Rigidbody>();
 | 
						|
 | 
						|
			colliderLocalPositions = new Vector3[colliders.Length];
 | 
						|
			colliderLocalRotations = new Quaternion[colliders.Length];
 | 
						|
 | 
						|
			for ( int i = 0; i < colliders.Length; ++i )
 | 
						|
			{
 | 
						|
				colliderLocalPositions[i] = colliders[i].transform.localPosition;
 | 
						|
				colliderLocalRotations[i] = colliders[i].transform.localRotation;
 | 
						|
 | 
						|
				colliders[i].name = gameObject.name + "." + colliders[i].name;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
 | 
						|
		//-------------------------------------------------
 | 
						|
		void OnEnable()
 | 
						|
		{
 | 
						|
			for ( int i = 0; i < colliders.Length; ++i )
 | 
						|
			{
 | 
						|
				colliders[i].transform.SetParent( transform );
 | 
						|
 | 
						|
				colliders[i].transform.localPosition = colliderLocalPositions[i];
 | 
						|
				colliders[i].transform.localRotation = colliderLocalRotations[i];
 | 
						|
 | 
						|
				colliders[i].transform.SetParent( null );
 | 
						|
 | 
						|
				FixedJoint fixedJoint = colliders[i].AddComponent<FixedJoint>();
 | 
						|
				fixedJoint.connectedBody = rb;
 | 
						|
				fixedJoint.breakForce = Mathf.Infinity;
 | 
						|
				fixedJoint.breakTorque = Mathf.Infinity;
 | 
						|
				fixedJoint.enableCollision = false;
 | 
						|
				fixedJoint.enablePreprocessing = true;
 | 
						|
 | 
						|
				colliders[i].SetActive( true );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
 | 
						|
		//-------------------------------------------------
 | 
						|
		void OnDisable()
 | 
						|
		{
 | 
						|
			for ( int i = 0; i < colliders.Length; ++i )
 | 
						|
			{
 | 
						|
				if ( colliders[i] != null )
 | 
						|
				{
 | 
						|
					Destroy( colliders[i].GetComponent<FixedJoint>() );
 | 
						|
 | 
						|
					colliders[i].SetActive( false );
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
 | 
						|
		//-------------------------------------------------
 | 
						|
		void OnDestroy()
 | 
						|
		{
 | 
						|
			for ( int i = 0; i < colliders.Length; ++i )
 | 
						|
			{
 | 
						|
				Destroy( colliders[i] );
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |