private UiLaser CreateLaser()
        {
            GameObject laser = new GameObject("Ui Laser");

            laser.transform.SetParent(this.transform, false);

            UiLaser laserComponent = laser.AddComponent <UiLaser> ();

            laserComponent.CreateBeam(laserMaterial);

            return(laserComponent);
        }
        private void FindHands()
        {
            // Lazily create the wand input module

            if (wandInputModule == null)
            {
                GameObject eventSystemObj = new GameObject("Isolated Event System");
                eventSystemObj.transform.SetParent(this.transform, false);

                eventSystemObj.gameObject.AddComponent <IsolatedEventSystem> ();

                wandInputModule = eventSystemObj.gameObject.AddComponent <WandInputModule> ();
                wandInputModule.CursorSprite   = cursorSprite;
                wandInputModule.CursorMaterial = cursorMaterial;
            }

            // Lazily create the lasers

            if (leftLaser == null)
            {
                leftLaser = CreateLaser();
            }
            if (rightLaser == null)
            {
                rightLaser = CreateLaser();
            }

            // Do Api specific binding

            if (activeBinding == null)
            {
                // No active binding, try all known bindings to see what catches on

                if (steamVrBinding.FindHands() > 0)
                {
                    // SteamVR found hands, so use SteamVR from now on
                    activeBinding = steamVrBinding;
                }
                else if (manualBinding.FindHands() > 0)
                {
                    activeBinding = manualBinding;
                }
                // other api bindings here...
            }
            else
            {
                // We have an active binding, check it again to see if it found any more hands
                activeBinding.FindHands();
            }

            if (activeBinding != null)
            {
                // We have a new binding, so hook up all the things

                wandInputModule = GameObject.FindObjectOfType(typeof(WandInputModule)) as WandInputModule;
                if (wandInputModule != null)
                {
                    wandInputModule.OnHandsDetected(this);
                }

                leftLaser.OnHandDetected(activeBinding.LeftHandIndex, activeBinding.LeftHand, wandInputModule);
                rightLaser.OnHandDetected(activeBinding.RightHandIndex, activeBinding.RightHand, wandInputModule);

                VrDebugPanel[] panels = GameObject.FindObjectsOfType(typeof(VrDebugPanel)) as VrDebugPanel[];
                foreach (VrDebugPanel panel in panels)
                {
                    panel.OnHandsDetected(this, wandInputModule.GetControllerCamera());
                }
            }
        }