IMHOTEP Framework
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Pages
BalloonColliders.cs
1 //======= Copyright (c) Valve Corporation, All rights reserved. ===============
2 //
3 // Purpose: Can be attached to the controller to collide with the balloons
4 //
5 //=============================================================================
6 
7 using UnityEngine;
8 using System.Collections;
9 
10 namespace Valve.VR.InteractionSystem
11 {
12  //-------------------------------------------------------------------------
13  public class BalloonColliders : MonoBehaviour
14  {
15  public GameObject[] colliders;
16  private Vector3[] colliderLocalPositions;
17  private Quaternion[] colliderLocalRotations;
18 
19  private Rigidbody rb;
20 
21  //-------------------------------------------------
22  void Awake()
23  {
24  rb = GetComponent<Rigidbody>();
25 
26  colliderLocalPositions = new Vector3[colliders.Length];
27  colliderLocalRotations = new Quaternion[colliders.Length];
28 
29  for ( int i = 0; i < colliders.Length; ++i )
30  {
31  colliderLocalPositions[i] = colliders[i].transform.localPosition;
32  colliderLocalRotations[i] = colliders[i].transform.localRotation;
33 
34  colliders[i].name = gameObject.name + "." + colliders[i].name;
35  }
36  }
37 
38 
39  //-------------------------------------------------
40  void OnEnable()
41  {
42  for ( int i = 0; i < colliders.Length; ++i )
43  {
44  colliders[i].transform.SetParent( transform );
45 
46  colliders[i].transform.localPosition = colliderLocalPositions[i];
47  colliders[i].transform.localRotation = colliderLocalRotations[i];
48 
49  colliders[i].transform.SetParent( null );
50 
51  FixedJoint fixedJoint = colliders[i].AddComponent<FixedJoint>();
52  fixedJoint.connectedBody = rb;
53  fixedJoint.breakForce = Mathf.Infinity;
54  fixedJoint.breakTorque = Mathf.Infinity;
55  fixedJoint.enableCollision = false;
56  fixedJoint.enablePreprocessing = true;
57 
58  colliders[i].SetActive( true );
59  }
60  }
61 
62 
63  //-------------------------------------------------
64  void OnDisable()
65  {
66  for ( int i = 0; i < colliders.Length; ++i )
67  {
68  if ( colliders[i] != null )
69  {
70  Destroy( colliders[i].GetComponent<FixedJoint>() );
71 
72  colliders[i].SetActive( false );
73  }
74  }
75  }
76 
77 
78  //-------------------------------------------------
79  void OnDestroy()
80  {
81  for ( int i = 0; i < colliders.Length; ++i )
82  {
83  Destroy( colliders[i] );
84  }
85  }
86  }
87 }