public override void StateThink(float delta) { Vector3 vector3; Vector3 vector31; base.StateThink(delta); if (this.area) { if (this.isTraversing) { this.area.SetBusyFor(delta * 2f); } else if (!this.area.CanTraverse(base.GetEntity())) { AITraversalWaitPoint entryPointNear = this.area.GetEntryPointNear(base.GetEntity().ServerPosition); if (entryPointNear) { entryPointNear.Occupy(1f); base.GetEntity().SetStationaryAimPoint(this.area.GetClosestEntry(base.GetEntity().ServerPosition).position); } vector3 = (entryPointNear == null ? base.GetEntity().ServerPosition : entryPointNear.transform.position); base.GetEntity().SetDestination(vector3); this.waiting = true; this.isTraversing = false; } else { this.waiting = false; this.isTraversing = true; AITraversalWaitPoint aITraversalWaitPoint = this.area.GetEntryPointNear(this.area.GetFarthestEntry(base.GetEntity().ServerPosition).position); if (aITraversalWaitPoint) { aITraversalWaitPoint.Occupy(delta * 2f); } vector31 = (aITraversalWaitPoint == null ? this.desiredDestination : aITraversalWaitPoint.transform.position); base.GetEntity().SetDestination(vector31); this.area.SetBusyFor(delta * 2f); } } if (this.isTraversing && Vector3.Distance(base.GetEntity().ServerPosition, base.GetEntity().finalDestination) < 0.25f) { this.finished = true; this.isTraversing = false; this.waiting = false; } }
public override void StateThink(float delta) { base.StateThink(delta); if (Object.op_Implicit((Object)this.area)) { if (this.isTraversing) { this.area.SetBusyFor(delta * 2f); } else if (this.area.CanTraverse((BaseEntity)this.GetEntity())) { this.waiting = false; this.isTraversing = true; AITraversalWaitPoint entryPointNear = this.area.GetEntryPointNear(this.area.GetFarthestEntry(this.GetEntity().ServerPosition).get_position()); if (Object.op_Implicit((Object)entryPointNear)) { entryPointNear.Occupy(delta * 2f); } this.GetEntity().SetDestination(Object.op_Equality((Object)entryPointNear, (Object)null) ? this.desiredDestination : ((Component)entryPointNear).get_transform().get_position()); this.area.SetBusyFor(delta * 2f); } else { AITraversalWaitPoint entryPointNear = this.area.GetEntryPointNear(this.GetEntity().ServerPosition); if (Object.op_Implicit((Object)entryPointNear)) { entryPointNear.Occupy(1f); this.GetEntity().SetStationaryAimPoint(this.area.GetClosestEntry(this.GetEntity().ServerPosition).get_position()); } this.GetEntity().SetDestination(Object.op_Equality((Object)entryPointNear, (Object)null) ? this.GetEntity().ServerPosition : ((Component)entryPointNear).get_transform().get_position()); this.waiting = true; this.isTraversing = false; } } if (!this.isTraversing || (double)Vector3.Distance(this.GetEntity().ServerPosition, this.GetEntity().finalDestination) >= 0.25) { return; } this.finished = true; this.isTraversing = false; this.waiting = false; }