public static void AIMoveToGameObjectEnable( this Agent agent, UsableMissionObject usedObject, Agent.AIScriptedFrameFlags scriptedFrameFlags = Agent.AIScriptedFrameFlags.NoAttack) { agent.GetComponent <UseObjectAgentComponent>()?.MoveToUsableGameObject(usedObject, scriptedFrameFlags); }
public void MoveToUsableGameObject( UsableMissionObject usedObject, Agent.AIScriptedFrameFlags scriptedFrameFlags = Agent.AIScriptedFrameFlags.NoAttack) { this.Agent.AIStateFlags |= Agent.AIStateFlag.UseObjectMoving; this.CurrentlyMovingGameObject = usedObject; usedObject.OnAIMoveToUse(this.Agent); WorldFrame userFrameForAgent = usedObject.GetUserFrameForAgent(this.Agent); this.Agent.SetScriptedPositionAndDirection(ref userFrameForAgent.Origin, userFrameForAgent.Rotation.f.AsVec2.RotationInRadians, false, scriptedFrameFlags); }
private bool ConditionsAreMet(Agent agent, Agent.AIScriptedFrameFlags flags) => agent.IsAIControlled && agent.IsActive() && (agent.Team != null && agent.Team.Side == this._managedSide) && (agent.MovementLockedState == AgentMovementLockedState.None && !agent.IsUsingGameObject && (!agent.AIMoveToGameObjectIsEnabled() && (agent.AIStateFlags & (Agent.AIStateFlag.UseObjectMoving | Agent.AIStateFlag.UseObjectUsing)) == Agent.AIStateFlag.None)) && (!agent.IsDetachedFromFormation && !this._userAgents.Contains(agent) && agent.GetScriptedFlags() == flags) && agent.GetCurrentNavigationFaceId() != this.ManagedNavigationFaceId;