Exemple #1
0
 public void processImpressionChange(AIEvent ev, Observer perspective)
 {
     foreach (Noun n in m_impressions)
     {
         n?.ReactToEvent(ev, perspective);
     }
 }
Exemple #2
0
    /// <summary>
    /// 转换状态
    /// </summary>
    /// <param name="aiRule"></param>
    public void PerformRule(AIrule aiRule)
    {
        if (aiRule == AIrule.NullAIrule)
        {
            Debug.LogError("PerformRule Error:NullAIrule");
            return;
        }

        AIEvent aiEvent = currentAIFSM.GetOutputState(aiRule);

        if (aiEvent == AIEvent.NullEvent)
        {
            Debug.LogError("PerformRule Error:NullEvent");
            return;
        }

        currentAIEvent = aiEvent;
        for (int i = 0; i < aiFSMs.Count; i++)
        {
            if (aiFSMs[i].AiEvent == currentAIEvent)
            {
                currentAIFSM.DoBeforeLeaving();
                currentAIFSM = aiFSMs[i];
                currentAIFSM.DoBeforeEntering();
                return;
            }
        }
    }
Exemple #3
0
 public QueuedObservationCheck(AIEvent aiEvent, float timeDelay, Observer.ObservationCheck evalFunction, Observable obs)
 {
     m_event        = aiEvent;
     m_triggerTime  = Time.timeSinceLevelLoad + timeDelay;
     m_evalFunction = evalFunction;
     m_observable   = obs;
 }
Exemple #4
0
    public void triggerEvent(AIEvent newAIEvent)
    {
        if (newAIEvent.ToBroadCastSawEvent && !newAIEvent.IsObservationEvent)
        {
            newAIEvent.IsObservationEvent = true;
            GetComponent <Observable>()?.BroadcastToObserver(newAIEvent);
        }

        foreach (Goal g in GoalList)
        {
            g.triggerEvent(newAIEvent);
        }

        if (m_currentTask != null)
        {
            m_currentTask.TriggerEvent(newAIEvent);
            foreach (Transition t in GenericTransitions[m_currentTask.MyTaskType])
            {
                t.OnTriggerEvent(newAIEvent);
            }
        }

        if (!m_events.ContainsKey(newAIEvent.GetType()))
        {
            return;
        }
        foreach (AIEventCallback f in m_events[newAIEvent.GetType()])
        {
            f(newAIEvent);
        }
    }
Exemple #5
0
    //Internally sets the current event and initializes it
    void setCurrentEvent(AIEvent newEvent)
    {
        //If there is a currentEvent, we try and OverrideExit to detach it safely

        currentEvent = newEvent;
        currentEvent.StartAction();
    }
Exemple #6
0
    public void enqueue(AIEvent aiEvent)
    {
        EventNode node = new EventNode(aiEvent);

        priorityQueue.Enqueue(node, aiEvent.precedence);
        lifeSpanQueue.add(node, aiEvent.lifeSpan);
    }
 public AIEventQueue(AIEvent startEvent = null)
 {
     events = new List <AIEvent>();
     if (startEvent != null)
     {
         Enqueue(startEvent);
     }
 }
 public void exitCurrentEvent()
 {
     if(currentEvent != null){
         currentEvent.OverrideExit();
     }
     Debug.Log("Event Removed: " + currentEvent.getEventName());
     currentEvent = null; //TODO add a nullObject Event script
 }
Exemple #9
0
 public void exitCurrentEvent()
 {
     if (currentEvent != null)
     {
         currentEvent.OverrideExit();
     }
     Debug.Log("Event Removed: " + currentEvent.getEventName());
     currentEvent = null;         //TODO add a nullObject Event script
 }
Exemple #10
0
    private void OnSound(AIEvent OnSound)
    {
        AIEVSound       ev  = (AIEVSound)OnSound;
        NoiseForTrigger nft = ev.Noise;

        if (nft != null && nft.noiseType == TriggerOnNoiseType)
        {
            TriggerTransition();
        }
    }
Exemple #11
0
 public virtual void TriggerEvent(AIEvent aie)
 {
     foreach (Transition t in TransitionsFrom)
     {
         if (t.isActiveAndEnabled)
         {
             t.OnTriggerEvent(aie);
         }
     }
 }
Exemple #12
0
 public void BroadcastToObserver(AIEvent newEvent)
 {
     foreach (Observer o in observers)
     {
         processImpressionChange(newEvent, o);
         newEvent.IsObservationEvent  = true;
         newEvent.ToBroadCastSawEvent = false;
         newEvent.ObservedObj         = gameObject;
         o.GetComponent <AITaskManager>()?.triggerEvent(newEvent);
     }
 }
Exemple #13
0
 //public virtual void triggerEvent(string eventName, List<System.Object> args)
 //{
 //    if (!m_events.ContainsKey(eventName))
 //        return;
 //    foreach (AITaskCallback f in m_events[eventName])
 //    {
 //        f(args);
 //    }
 //}
 public virtual void triggerEvent(AIEvent aie)
 {
     if (!m_events.ContainsKey(aie.GetType()))
     {
         return;
     }
     foreach (AIEventCallback f in m_events[aie.GetType()])
     {
         f(aie);
     }
 }
Exemple #14
0
 protected void generalDangerDisguiseFactors(AIEvent newEvent, Observer observer)
 {
     System.Type t = newEvent.GetType();
     if (t == typeof(AIEVItemGet))
     {
         OnItemGet((AIEVItemGet)newEvent, observer);
     }
     else if (t == typeof(AIEVSeenByObserver))
     {
         OnSight((AIEVSeenByObserver)newEvent, observer);
     }
 }
Exemple #15
0
    public override void OnTriggerEvent(AIEvent aie)
    {
        if (aie.GetType() != typeof(AIEVSawRelationshipUpdate))
        {
            return;
        }
        AIEVSawRelationshipUpdate newAIE = (AIEVSawRelationshipUpdate)aie;
        bool b = LogicManager.IsA(newAIE.ObservedObj, SawItemOfTypes, GetComponent <Observer>());

        if (b)
        {
            TriggerTransition();
        }
    }
Exemple #16
0
 /// <summary>
 /// 删除一个状态
 /// </summary>
 /// <param name="aiEvent"></param>
 public void DeleteAIFSM(AIEvent aiEvent)
 {
     if (aiEvent == AIEvent.NullEvent)
     {
         Debug.LogError("DeleteAIFSM Error:NullEvent");
         return;
     }
     for (int i = 0; i < aiFSMs.Count; i++)
     {
         if (aiFSMs[i].AiEvent == aiEvent)
         {
             aiFSMs.RemoveAt(i);
             return;
         }
     }
     Debug.LogError("DeleteAIFSM Error:" + aiEvent.ToString() + "不存在于状态集列表中!");
 }
Exemple #17
0
    public override void TriggerEvent(AIEvent aie)
    {
        AIEVStatementReceived aiev = aie as AIEVStatementReceived;

        if (aiev == null)
        {
            return;
        }
        RHStatement newStatement = aiev.statement.GenerateStandardResponse(aiev.speaker, MasterAI.GetComponent <RHListener>());

        if (newStatement != null)
        {
            aiev.conversation.QueueStatement(newStatement, MasterAI.GetComponent <RHSpeaker>());
        }
        //RHStatement statementReceived = aiev.statement;
        //RHStatement response = statementReceived.GenerateResponse( MasterAI.GetComponent<RHListener>());

        //aiev.conversation.QueueStatement(response, MasterAI.GetComponent<RHSpeaker>());
    }
Exemple #18
0
 /// <summary>
 /// 添加键值AI规则与事件对应关系
 /// </summary>
 /// <param name="aIrule"></param>
 /// <param name="aIEvent"></param>
 public void AddAIEventAndEvent(AIrule aIrule, AIEvent aIEvent)
 {
     if (aIrule == AIrule.NullAIrule)
     {
         Debug.LogError("AIFSM ERROR: NullAIrule 不允许对应 AIrule");
         return;
     }
     if (aIEvent == AIEvent.NullEvent)
     {
         Debug.LogError("AIFSM ERROR: NullEvent 不允许对应 AIEvent");
         return;
     }
     if (AI_RE_FSM.ContainsKey(aIrule))
     {
         Debug.LogError("AIFSM ERROR: 已经存在相同AIrule." + aIrule.ToString() + "作为Key");
         return;
     }
     AI_RE_FSM.Add(aIrule, aIEvent);
 }
Exemple #19
0
        public override void Think(AIEvent triggerEvent)
        {
            LastThinkTick = GetTickCount();
            //return;
            blackBoard.ChangeEvent(triggerEvent);

            int canThinkError = CanThink();

            if (canThinkError != 0)
            {
                //Mogo.Util.LoggerHelper.Error("canThinkError:" + canThinkError + " AIEvent" + triggerEvent + " ID:" + ID);
                return;
            }

            //Mogo.Util.LoggerHelper.Debug("aiId" + m_monsterData.aiId + "  event:" + triggerEvent);

            ThinkBefore();
            m_aiRoot.Proc(this);
            ThinkAfter();
        }
Exemple #20
0
    //Tries to find Event of eventName and set it as the current event
    //Returns true/false if event was found
    public bool addEventOfName(string eventName)
    {
        if (currentEvent != null)
        {
            exitCurrentEvent();
        }

        AIEvent tempEvent = GetComponent(eventName) as AIEvent;

        if (tempEvent == null)
        {
            Debug.LogError("No Event Found with name: " + eventName);
            return(false);
        }
        else
        {
            setCurrentEvent(tempEvent);
            Debug.Log("Event Attached: " + eventName);
            return(true);
        }
    }
Exemple #21
0
        public override void Think(AIEvent triggerEvent)
        {
            LastThinkTick = GetTickCount();

            blackBoard.ChangeEvent(triggerEvent);

            int canThinkError = CanThink();

            if (canThinkError != 0)
            {
                Debug.Log("canThinkError:" + canThinkError + " AIEvent" + triggerEvent + " ID:" + ID);
                return;
            }

            Debug.Log("aiId" + m_monsterData.aiId + "  event:" + triggerEvent);
            m_aiRoot = AIContainer.container.Get((uint)m_monsterData.aiId);//kevintest

            ThinkBefore();
            m_aiRoot.Proc(this);
            ThinkAfter();
        }
Exemple #22
0
        public override void Think(AIEvent triggerEvent)
        {
            //LoggerHelper.Debug("Think");

            blackBoard.ChangeEvent(triggerEvent);

            int canThinkError = CanThink();

            if (canThinkError != 0)
            {
                //Mogo.Util.LoggerHelper.Debug("canThinkError:" + canThinkError + " AIEvent" + triggerEvent + " ID:" + ID);
                return;
            }

            //LastThinkTick = GetTickCount();

            //Mogo.Util.LoggerHelper.Debug("aiId:" + m_iAiId + "  event:" + triggerEvent);
            //m_aiRoot = AIContainer.container.Get((uint)30002);//kevintest
            ThinkBefore();
            m_aiRoot.Proc(this);
            ThinkAfter();
        }
Exemple #23
0
 /**
  * Convert an AIEvent to the real instance.
  * @param instance The instance to convert.
  * @returns The converted instance.
  */
 static public AIEventAircraftDestTooFar Convert(AIEvent instance)
 {
     throw null;
 }
Exemple #24
0
 /**
  * Convert an AIEvent to the real instance.
  * @param instance The instance to convert.
  * @returns The converted instance.
  */
 static public AIEventTownFounded Convert(AIEvent instance)
 {
     throw null;
 }
Exemple #25
0
 /**
  * Convert an AIEvent to the real instance.
  * @param instance The instance to convert.
  * @returns The converted instance.
  */
 static public AIEventDisasterZeppelinerCleared Convert(AIEvent instance)
 {
     throw null;
 }
Exemple #26
0
 /**
  * Convert an AIEvent to the real instance.
  * @param instance The instance to convert.
  * @returns The converted instance.
  */
 static public AIEventStationFirstVehicle Convert(AIEvent instance)
 {
     throw null;
 }
Exemple #27
0
 /**
  * Convert an AIEvent to the real instance.
  * @param instance The instance to convert.
  * @returns The converted instance.
  */
 static public AIEventEngineAvailable Convert(AIEvent instance)
 {
     throw null;
 }
Exemple #28
0
 public void ChangeEvent(AIEvent newEvent)
 {
     aiEvent = newEvent;
 }
Exemple #29
0
        public override void Think(AIEvent triggerEvent)
        {
            //LoggerHelper.Debug("Think");

            blackBoard.ChangeEvent(triggerEvent);

            int canThinkError = CanThink();
            if (canThinkError != 0)
            {
                //Mogo.Util.LoggerHelper.Debug("canThinkError:" + canThinkError + " AIEvent" + triggerEvent + " ID:" + ID);
                return;
            }

            //LastThinkTick = GetTickCount();

            //Mogo.Util.LoggerHelper.Debug("aiId:" + m_iAiId + "  event:" + triggerEvent);
            //m_aiRoot = AIContainer.container.Get((uint)30002);//kevintest
            ThinkBefore();
            m_aiRoot.Proc(this);
            ThinkAfter();
        }
Exemple #30
0
 public void ChangeEvent(AIEvent newEvent)
 {
     aiEvent = newEvent;
 }
    //Internally sets the current event and initializes it
    void setCurrentEvent(AIEvent newEvent)
    {
        //If there is a currentEvent, we try and OverrideExit to detach it safely

        currentEvent = newEvent;
        currentEvent.StartAction();
    }
 public void removeCurrentEvent()
 {
     Debug.Log("Event Removed: " + currentEvent.getEventName());
     currentEvent = null; //TODO add a nullObject Event script
 }
Exemple #33
0
 /**
  * Convert an AIEvent to the real instance.
  * @param instance The instance to convert.
  * @returns The converted instance.
  */
 static public AIEventCompanyTown Convert(AIEvent instance)
 {
     throw null;
 }
Exemple #34
0
        public override void Think(AIEvent triggerEvent)
        {
            LastThinkTick = GetTickCount();
            //return;
            blackBoard.ChangeEvent(triggerEvent);

            int canThinkError = CanThink();
            if (canThinkError != 0)
            {
                //Mogo.Util.LoggerHelper.Error("canThinkError:" + canThinkError + " AIEvent" + triggerEvent + " ID:" + ID);
                return;
            }

            //Mogo.Util.LoggerHelper.Debug("aiId" + m_monsterData.aiId + "  event:" + triggerEvent);

            ThinkBefore();
            m_aiRoot.Proc(this);
            ThinkAfter();
        }
Exemple #35
0
 public virtual void Think(AIEvent triggerEvent) { Mogo.Util.LoggerHelper.Debug("par:Think"); return; }
Exemple #36
0
 public virtual void Think(AIEvent triggerEvent)
 {
     Mogo.Util.LoggerHelper.Debug("par:Think"); return;
 }
Exemple #37
0
 /**
  * Convert an AIEvent to the real instance.
  * @param instance The instance to convert.
  * @returns The converted instance.
  */
 static public AIEventIndustryClose Convert(AIEvent instance)
 {
     throw null;
 }