void Update()
    {
        RaycastHit hitInfo;

        if (Physics.Raycast(deviceRay.origin, deviceRay.direction, out hitInfo, Mathf.Infinity))
        {
            if (hitInfo.collider.gameObject.GetComponent <grabObject>())
            {
                activeBeamInterceptObj = hitInfo.collider.GetComponent <grabObject>();
                beamDist = hitInfo.distance;
            }
            else
            {
                activeBeamInterceptObj = null;
            }
        }
        else
        {
            activeBeamInterceptObj = null;
        }

        currPosition     = transform.position;
        currRightVec     = transform.right;
        currUpVec        = transform.up;
        currForwardVec   = transform.forward;
        currRotation     = transform.rotation;
        deviceRay.origin = currPosition;

        //Quaternion rayRotation = Quaternion.AngleAxis(currRayAngle, currRightVec);

        deviceRay.direction = currForwardVec;

        handleStateChanges();
    }
    void handleStateChanges()
    {
        bool stateIsValid = vrSystem.GetControllerState((uint)index, ref state,
                                                        (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRControllerState_t)));


        if (!stateIsValid)
        {
            Debug.Log("Invalid State for Idx: " + index);
        }

        if (stateIsValid && state.GetHashCode() != prevState.GetHashCode())
        {
            if ((state.ulButtonPressed & SteamVR_Controller.ButtonMask.Trigger) != 0 &&
                (prevState.ulButtonPressed & SteamVR_Controller.ButtonMask.Trigger) == 0)
            {
                if (activeBeamInterceptObj == null)
                {
                    return;
                }
                activeBeamInterceptObj.grab(this);
            }
            else if ((state.ulButtonPressed & SteamVR_Controller.ButtonMask.Trigger) == 0 &&
                     (prevState.ulButtonPressed & SteamVR_Controller.ButtonMask.Trigger) != 0)
            {
                if (activeBeamInterceptObj == null)
                {
                    return;
                }
                activeBeamInterceptObj.release(this);
                activeBeamInterceptObj = null;
            }

            prevState = state;
        }
    }
Exemplo n.º 3
0
 // Use this for initialization
 void Start()
 {
     my_self_grab = GetComponent <grabObject>();
     mc           = GetComponent <MeshCollider>();
 }
Exemplo n.º 4
0
 // Use this for initialization
 void Start()
 {
     weatherSys = GameObject.Find("UniStormSystemEditor").GetComponent <UniStormWeatherSystem_C>();
     m_grab     = GetComponent <grabObject>();
 }
Exemplo n.º 5
0
 void Start()
 {
     my_selfGrab = GetComponent <grabObject>();
 }
Exemplo n.º 6
0
 // Use this for initialization
 private void Awake()
 {
     my_grab     = GetComponent <grabObject>();
     iniposition = transform.position;
     inirotation = transform.rotation;
 }