/// <summary> /// Event handler that fires whenever the CameraRaycaster layer hit changes. /// </summary> private void OnHitItemChanged(HitItemChangeEvent changeEvent) { if (!isInDirectMode) { HandleClickMovement(changeEvent.NewItem); } }
/// <summary> /// Handles ray casting. /// </summary> private void HandleRayCasting() { HitItemChangeEvent changeEvent = new HitItemChangeEvent(); if (this.currentHitItemMetadata != null) { changeEvent.OldItem = new HitItemMetadata { ItemHit = this.currentHitItemMetadata.ItemHit, LayerHit = this.currentHitItemMetadata.LayerHit }; } // cycle through the layer priorities to see if one of them was hit by priority order foreach (Layer layer in layerPriorities) { RaycastHit?hitInfo = RaycastForLayer(layer); if (hitInfo != null && hitInfo.HasValue) { changeEvent.NewItem = new HitItemMetadata { ItemHit = hitInfo.Value, LayerHit = layer }; break; } } // update state to the new value this.currentHitItemMetadata = changeEvent.NewItem; // notify listeners if (OnHitItemChangeObservers != null) { OnHitItemChangeObservers(changeEvent); } }
/// <summary> /// Event handler that fires whenever the CameraRaycaster layer hit changes. /// </summary> private void OnHitItemChanged(HitItemChangeEvent changeEvent) { if (changeEvent.DidLayerChange()) { if (changeEvent.NewItem == null) { UpdateCursor(Layer.RaycastEndStop); } else { UpdateCursor(changeEvent.NewItem.LayerHit); } } }