Пример #1
0
 /// <summary>
 /// Event handler that fires whenever the CameraRaycaster layer hit changes.
 /// </summary>
 private void OnHitItemChanged(HitItemChangeEvent changeEvent)
 {
     if (!isInDirectMode)
     {
         HandleClickMovement(changeEvent.NewItem);
     }
 }
Пример #2
0
    /// <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);
        }
    }
Пример #3
0
 /// <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);
         }
     }
 }