Beispiel #1
0
 private void deselectLastZone()
 {
     //If any zone was selected
     if (SelectedZone != null)
     {
         //Delelect it
         SelectedZone.GetComponent <ZoneSelection>().Deselect();
     }
     SelectedZone = null;
 }
Beispiel #2
0
    void TrySelectZone()
    {
        RaycastHit hitResult;
        LayerMask  layerMask = LayerMask.GetMask("Continent", "Planet");

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hitResult, Mathf.Infinity, layerMask))
        {
            ZoneSelection newSelectedZone = hitResult.transform.GetComponent <ZoneSelection>();


            // If Clicked on a zone and it is different from already Selected Zone
            if (newSelectedZone != null && newSelectedZone != SelectedPlanet)
            {
                // Make sure the user does not select zone From Another Planet
                if (SelectedPlanet == null || newSelectedZone.GetComponentInParent <Planet>() != SelectedPlanet)
                {
                    return;
                }

                //Deselect Previous Zone
                if (SelectedZone != null)
                {
                    SelectedZone.GetComponent <ZoneSelection>().Deselect();
                }


                //If clicking on the selected zone
                if (SelectedZone == newSelectedZone)
                {
                    deselectLastZone();
                    return;
                }


                SelectedZone = newSelectedZone;

                newSelectedZone.GetComponent <ZoneSelection>().Select();

                //hitResult.normal
                ZoomToRegion(hitResult);
                OnSelectZone?.Invoke();
            }
            else if (newSelectedZone == null)
            {
                deselectLastZone();
            }
        }
    }