Example #1
0
 	void Start()
 	{
 		LayerMask mask = LayerMaskExtensions.Create("Ignore Raycast", "TransparentFX", "Water");
 		Debug.Log(mask.MaskToString()); //prints out Ignore Raycast, TransparentFX, Water
  
 		mask = mask.RemoveFromMask("TransparentFX");
 		Debug.Log(mask.MaskToString()); //prints out Ignore Raycast, Water
  
 		mask = mask.AddToMask("TransparentFX");
 		Debug.Log(mask.MaskToString()); //prints out Ignore Raycast, TransparentFX, Water
  
 		Debug.Log(mask.Inverse().MaskToString()); //prints out everything except Ignore Raycast, TransparentFX, Water
 	}
Example #2
0
    public override void onTarget()
    {
        Vector2 target2 = getTarget ();
        Vector3 target = new Vector3(target2.x,0,target2.y);

        path = grid.findPath (this.getLegs().transform.position,target);

        if (path != null)
        {
            current = path.First;
            LayerMask mask = new LayerMask();
            mask.AddToMask("Buildings");
            while(current != null && !Physics.Linecast(getLegs().transform.position, current.Value.toVector3()))
            {
                //Debug.Log("BLAH");
                //Debug.DrawLine(getLegs().transform.position, current.Value.toVector3(), Color.green);
                current = current.Next;
            }
        } else {
            current = null;
        }
    }
Example #3
0
    public override Vector2 _getDesiredVelocity()
    {
        onTarget ();

        if (current == null)
        {
            //Debug.Log ("Using aux steering!");
            auxiliarySteering.setTarget(this.getTarget());
            return auxiliarySteering.getDesiredVelocity();
        }

        if (grid.gridSquareFromVector3(this.getLegs ().transform.position) == current.Value) {
            if (current.Next == null) {
                current = null;
                this.setInternalWeight(1.0f);
                return Vector2.zero;
            }
            current = current.Next;
            LayerMask mask = new LayerMask();
            mask.AddToMask("Buildings");
            while(current != null && !Physics.Linecast(getLegs().transform.position, current.Value.toVector3()))
            {
                if (current.Next == null) {
                    current = null;
                    this.setInternalWeight(1.0f);
                    return Vector2.zero;
                }
                current = current.Next;
            }
        }

        Vector3 target3 = current.Value.toVector3();
        Vector2 target = new Vector2(target3.x,target3.z);
        Vector2 myPos = new Vector2(this.getLegs().transform.position.x,this.getLegs().transform.position.z);
        return (target - myPos).normalized * this.getLegs().equilibrium;
    }
Example #4
0
 public virtual void SetDestination()
 {
     if (!rigid.useGravity)
     {
         destination = initPosition + Random.onUnitSphere * Random.value * patrolRange;
         return;
     }
     do
     {
         destination = initPosition + (Random.insideUnitCircle * patrolRange).XYToXZ();
         RaycastHit hit;
         if (Physics.Raycast(destination.SetY(trs.position.y + patrolRange), Vector3.down, out hit, Mathf.Infinity, whatIsLand.AddToMask(whatIsWater)))
         {
             bool shouldReturn = true;
             if (!patrolLand && LayerMaskExtensions.MaskContainsLayer(whatIsLand, hit.collider.gameObject.layer))
             {
                 shouldReturn = false;
             }
             else if (!patrolWater && LayerMaskExtensions.MaskContainsLayer(whatIsWater, hit.collider.gameObject.layer))
             {
                 shouldReturn = false;
             }
             if (shouldReturn)
             {
                 return;
             }
         }
     } while (true);
 }
Example #5
0
 public static LayerMask RemoveFromMask(this LayerMask layerMask, params int[] layerNumbers)
 {
     layerMask = layerMask.Inverse();
     layerMask = layerMask.AddToMask(layerNumbers);
     return(layerMask.Inverse());
 }
Example #6
0
 public static LayerMask RemoveFromMask(this LayerMask layerMask, params string[] layerNames)
 {
     layerMask = layerMask.Inverse();
     layerMask = layerMask.AddToMask(layerNames);
     return(layerMask.Inverse());
 }
Example #7
0
 public static LayerMask AddToMask(this LayerMask original, LayerMask layerMask)
 {
     return(original.AddToMask(layerMask.MaskToNames()));
 }