/// <summary>
        /// Casts a world ray using _raycastParams
        /// </summary>
        protected void CastWorldRay()
        {
            if (_isReady)
            {
                _isReady = false;

                #if PLATFORM_LUMIN
                _raycastParams.Position              = Position;
                _raycastParams.Direction             = Direction;
                _raycastParams.UpVector              = Up;
                _raycastParams.Width                 = worldRayProperties.width;
                _raycastParams.Height                = worldRayProperties.height;
                _raycastParams.HorizontalFovDegrees  = worldRayProperties.horizontalFovDegrees;
                _raycastParams.CollideWithUnobserved = worldRayProperties.collideWithUnobserved;

                _ray.origin    = _raycastParams.Position;
                _ray.direction = _raycastParams.Direction;
                #endif

                _modeOnWorldRaycast = mode;

                #if PLATFORM_LUMIN
                if (!MLRaycast.Raycast(_raycastParams, HandleOnReceiveRaycast).IsOk)
                {
                    _isReady = true;
                }
                #endif
            }
        }
Пример #2
0
 /// <summary>
 /// Stops MLRaycast if it has been started
 /// </summary>
 public static void Stop()
 {
     #if PLATFORM_LUMIN
     if (MLRaycast.IsStarted)
     {
         MLRaycast.Stop();
     }
     #endif
 }
        /// <summary>
        // Raycast using full QueryParams object
        /// </summary>
        public static MLResult Raycast(MLRaycast.QueryParams parameters, MLRaycast.OnRaycastResultDelegate callback)
        {
            _result = MLRaycast.Raycast(parameters, callback);

            if (!_result.IsOk)
            {
                Debug.LogErrorFormat("Error: MLRaycastStarterKit.Raycast failed. Reason: {0}", _result);
            }

            return(_result);
        }
Пример #4
0
        #pragma warning restore 649

        /// <summary>
        /// Starts up MLRaycast
        /// </summary>
        public static MLResult Start()
        {
            #if PLATFORM_LUMIN
            _result = MLRaycast.Start();
            if (!_result.IsOk)
            {
                Debug.LogErrorFormat("Error: MLRaycastStarterKit failed starting MLRaycast. Reason: {0}", _result);
            }
            #endif

            return(_result);
        }
        private void OnDestroy()
        {
            if (MLInput.IsStarted)
            {
                MLInput.OnTriggerDown -= MLInput_OnTriggerDown;
                MLInput.OnTriggerDown -= MLInput_OnTriggerUp;

                MLInput.Stop();
            }

            if (MLRaycast.IsStarted)
            {
                MLRaycast.Stop();
            }
        }
Пример #6
0
 // Update is called once per frame
 void Update()
 {
     // Create a raycast parameters variable
     MLRaycast.QueryParams _raycastParams = new MLRaycast.QueryParams
     {
         // Update the parameters with our Camera's transform
         Position  = ctransform.position,
         Direction = ctransform.forward,
         UpVector  = ctransform.up,
         // Provide a size of our raycasting array (1x1)
         Width  = 1,
         Height = 1
     };
     // Feed our modified raycast parameters and handler to our raycast request
     MLRaycast.Raycast(_raycastParams, HandleOnReceiveRaycast);
 }
Пример #7
0
        /// <summary>
        // Raycast using full QueryParams object
        /// </summary>
        public static MLResult Raycast(MLRaycast.QueryParams parameters, MLRaycast.OnRaycatResultDelegate callback)
        {
            if (MLRaycast.IsStarted)
            {
                _result = MLRaycast.Raycast(parameters, callback);

                if (!_result.IsOk)
                {
                    Debug.LogErrorFormat("Error: MLRaycastStarterKit.Raycast failed. Reason: {0}", _result);
                }
            }

            else
            {
                Debug.LogError("Error: MLRaycastStarterKit.Raycast failed because MLRaycast was not started.");
                _result = MLResult.Create(MLResult.Code.UnspecifiedFailure, "MLRaycast was not started");
            }

            return(_result);
        }
        public void OnRaycastResult(MLRaycast.ResultState state, Vector3 hitpoint, Vector3 normal, float confidence)
        {

            if (MLRaycast.IsStarted)
            {
                switch (state)
                {
                    case MLRaycast.ResultState.RequestFailed:
                        // Do nothing
                        break;
                    case MLRaycast.ResultState.HitUnobserved:
                        break;
                    case MLRaycast.ResultState.NoCollision:
                        // World Mesh miss
                        mlRaycastHitNormal = -(transform.forward);
                        mlRaycastHitPoint = transform.position + (transform.forward * 10.0f);
                        this.actsAsControllerRay.startColor = Color.red;
                        this.actsAsControllerRay.endColor = Color.red;
                        break;
                    case MLRaycast.ResultState.HitObserved:
                        // World Mesh Hit
                        this.actsAsControllerRay.startColor = Color.green;
                        this.actsAsControllerRay.endColor = Color.green;
                        mlRaycastHitNormal = normal;
                        mlRaycastHitPoint = hitpoint;
                        break;
                    default:
                        break;
                }


                queryParams.Position = transform.position;
                queryParams.UpVector = transform.up;
                queryParams.Direction = transform.forward;

                MLRaycast.Raycast(queryParams, OnRaycastResult);
            }
        }
        private void commonStart()
        {
            MLInput.OnTriggerDown += MLInput_OnTriggerDown;
            MLInput.OnTriggerUp += MLInput_OnTriggerUp;

            if (!MLRaycast.IsStarted)
            {
                MLResult raycastStart = MLRaycast.Start();
                switch (raycastStart.Result)
                {
                    case MLResult.Code.Ok:
                        startRayCasting();
                        break;
                    case MLResult.Code.UnspecifiedFailure:
                        throw new System.NotImplementedException();
                    default:
                        break;
                }
            }
            else
            {
                startRayCasting();
            }
        }
 private void startRayCasting()
 {
     this.queryParams = new MLRaycast.QueryParams()
     {
         CollideWithUnobserved = false,
         Direction = transform.forward,
         Height = 1,
         HorizontalFovDegrees = 0,
         Position = transform.position,
         UpVector = transform.up,
         Width = 1
     };
     MLResult raycastResult = MLRaycast.Raycast(queryParams, OnRaycastResult);
     switch (raycastResult.Result)
     {
         case MLResult.Code.Ok:
             //
             break;
         case MLResult.Code.InvalidParam:
             throw new System.NotImplementedException();
         case MLResult.Code.PrivilegeDenied:
             throw new System.NotImplementedException();
     }
 }
Пример #11
0
 private void OnDestroy()
 {
     MLRaycast.Stop();
 }
Пример #12
0
    public GameObject prefab;    // Cube prefab

    // Use this for initialization
    void Start()
    {
        ctransform = transform; // Camera's transform

        MLRaycast.Start();
    }