/// <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 } }
/// <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); }
#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(); } }
// 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); }
/// <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(); } }
private void OnDestroy() { MLRaycast.Stop(); }
public GameObject prefab; // Cube prefab // Use this for initialization void Start() { ctransform = transform; // Camera's transform MLRaycast.Start(); }