コード例 #1
0
    public AITraversalArea GetTraversalArea()
    {
        AITraversalArea aITraversalArea;

        if (this.triggers == null)
        {
            return(null);
        }
        List <TriggerBase> .Enumerator enumerator = this.triggers.GetEnumerator();
        try
        {
            while (enumerator.MoveNext())
            {
                AITraversalArea component = enumerator.Current.GetComponent <AITraversalArea>();
                if (component == null)
                {
                    continue;
                }
                aITraversalArea = component;
                return(aITraversalArea);
            }
            return(null);
        }
        finally
        {
            ((IDisposable)enumerator).Dispose();
        }
        return(aITraversalArea);
    }
コード例 #2
0
        public override float GetWeight()
        {
            if (this.finished)
            {
                return(0.0f);
            }
            AITraversalArea traversalArea = this.GetEntity().GetTraversalArea();

            if (this.isTraversing || this.waiting)
            {
                return(10000f);
            }
            if (this.GetEntity().IsInTraversalArea())
            {
                NavMeshPath path  = this.GetEntity().NavAgent.get_path();
                bool        flag1 = false;
                bool        flag2 = false;
                foreach (Vector3 corner in path.get_corners())
                {
                    if ((double)Vector3.Distance(corner, traversalArea.entryPoint1.get_position()) <= 2.0)
                    {
                        flag1 = true;
                    }
                    else if ((double)Vector3.Distance(corner, traversalArea.entryPoint2.get_position()) <= 2.0)
                    {
                        flag2 = true;
                    }
                    if (((Bounds) ref traversalArea.movementArea).Contains(corner) || flag1 & flag2)
                    {
                        return(10000f);
                    }
                }
            }
            return(0.0f);
        }
コード例 #3
0
 public override void StateLeave()
 {
     base.StateLeave();
     this.finished     = false;
     this.area         = null;
     this.isTraversing = false;
     this.waiting      = false;
     base.GetEntity().SetDestination(this.desiredDestination);
 }
コード例 #4
0
 public override void StateEnter()
 {
     base.StateEnter();
     base.GetEntity().SetDesiredSpeed(HumanNPC.SpeedType.Walk);
     this.finished           = false;
     this.isTraversing       = false;
     this.waiting            = false;
     this.desiredDestination = base.GetEntity().finalDestination;
     this.area = base.GetEntity().GetTraversalArea();
     if (this.area && this.area.CanTraverse(base.GetEntity()))
     {
         this.area.SetBusyFor(2f);
     }
 }
コード例 #5
0
 public override void StateEnter()
 {
     base.StateEnter();
     this.GetEntity().SetDesiredSpeed(HumanNPC.SpeedType.Walk);
     this.finished           = false;
     this.isTraversing       = false;
     this.waiting            = false;
     this.desiredDestination = this.GetEntity().finalDestination;
     this.area = this.GetEntity().GetTraversalArea();
     if (!Object.op_Implicit((Object)this.area) || !this.area.CanTraverse((BaseEntity)this.GetEntity()))
     {
         return;
     }
     this.area.SetBusyFor(2f);
 }
コード例 #6
0
ファイル: HumanNPC.cs プロジェクト: Ailtop/RustDocuments
 public AITraversalArea GetTraversalArea()
 {
     if (triggers == null)
     {
         return(null);
     }
     foreach (TriggerBase trigger in triggers)
     {
         AITraversalArea component = trigger.GetComponent <AITraversalArea>();
         if (component != null)
         {
             return(component);
         }
     }
     return(null);
 }
コード例 #7
0
 public AITraversalArea GetTraversalArea()
 {
     if (this.triggers == null)
     {
         return((AITraversalArea)null);
     }
     foreach (Component trigger in this.triggers)
     {
         AITraversalArea component = (AITraversalArea)trigger.GetComponent <AITraversalArea>();
         if (Object.op_Inequality((Object)component, (Object)null))
         {
             return(component);
         }
     }
     return((AITraversalArea)null);
 }
コード例 #8
0
        public override float GetWeight()
        {
            if (this.finished)
            {
                return(0f);
            }
            AITraversalArea traversalArea = base.GetEntity().GetTraversalArea();

            if (this.isTraversing || this.waiting)
            {
                return(10000f);
            }
            if (base.GetEntity().IsInTraversalArea())
            {
                bool      flag     = false;
                bool      flag1    = false;
                Vector3[] navAgent = base.GetEntity().NavAgent.path.corners;
                for (int i = 0; i < (int)navAgent.Length; i++)
                {
                    Vector3 vector3 = navAgent[i];
                    if (Vector3.Distance(vector3, traversalArea.entryPoint1.position) <= 2f)
                    {
                        flag = true;
                    }
                    else if (Vector3.Distance(vector3, traversalArea.entryPoint2.position) <= 2f)
                    {
                        flag1 = true;
                    }
                    if (traversalArea.movementArea.Contains(vector3))
                    {
                        return(10000f);
                    }
                    if (flag & flag1)
                    {
                        return(10000f);
                    }
                }
            }
            return(0f);
        }