private void RemoveItem(bool stillTouching = false)
 {
     if (stillTouching)
     {
         //when let got of adjustable object will still be touching it after
         controllerCarryState = CarryingState.Touching;
         pointCloudObjects.ReleaseObject();
         pointCloudObjects = null;
     }
     else
     {
         controllerCarryState = CarryingState.Empty;
         HeldItemDescription.ClearDescription();
         MarkerColor.ResetColor();
         currentObject = null;
         if (interactiveObject != null)
         {
             interactiveObject.ObjectReleased(); interactiveObject = null;
         }
         if (generalObject != null)
         {
             generalObject.ObjectReleased(); generalObject = null;
         }
     }
 }
    private void OnEnable()
    {
        controller = GetComponent <SteamVR_TrackedController>();
        controller.TriggerClicked   += HandleTriggerClicked;
        controller.TriggerUnclicked += HandleTriggerUnclicked;

        HeldItemDescription = GetComponentInChildren <DesciptionTextController>();
        MarkerColor         = GetComponentInChildren <MarkerController>();

        controllerCarryState = CarryingState.Empty;

        Physics.IgnoreCollision(DataSetManager.GetComponent <Collider>(), GetComponent <Collider>());
    }
 void OnTriggerEnter(Collider obj)
 {
     if (controllerCarryState != CarryingState.Holding)
     {
         StartCoroutine(HapticPulse(3000, 0.15f, true));
         currentObject        = obj.gameObject;
         controllerCarryState = CarryingState.Touching;
         if (obj.GetComponent <ObjectDescriptionScript>() != null)  //null reference error for description when starts up
         {
             HeldItemDescription.SetDescription(obj.GetComponent <ObjectDescriptionScript>().description);
         }
     }
 }
    private void HandleTriggerClicked(object sender, ClickedEventArgs e)
    {
        if (controllerCarryState == CarryingState.Touching)
        {
            //find which object it is
            if (currentObject.tag == "CollectableItem")
            {
                interactiveObject = currentObject.GetComponent <InteractiveObject>();
            }
            if (currentObject.tag == "GeneralItem")
            {
                generalObject = currentObject.GetComponent <GeneralObjectInteractivity>();
            }

            controllerCarryState = CarryingState.Holding;
            //is held by other controller
            if (currentObject.transform.parent.tag == "GameController")
            {
                if (interactiveObject != null)
                {
                    interactiveObject.ObjectTransferred(transform);
                }
                else if (generalObject != null)
                {
                    generalObject.ObjectTransferred(transform);
                }
            }
            else //can be picked up, TODO: see about playing each objects audio clip once if required
            {
                if (interactiveObject != null)
                {
                    interactiveObject.ObjectPickedUp(transform);
                    AudioPlayer.PlayAudioClip(interactiveObject.voiceOver);
                }
                else if (generalObject != null)
                {
                    generalObject.ObjectPickedUp(transform);
                    AudioPlayer.PlayAudioClip(generalObject.voiceOver);
                }
            }
        }
    }