예제 #1
0
 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;