public void processImpressionChange(AIEvent ev, Observer perspective) { foreach (Noun n in m_impressions) { n?.ReactToEvent(ev, perspective); } }
/// <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; } } }
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; }
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); } }
//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 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 }
public void exitCurrentEvent() { if (currentEvent != null) { currentEvent.OverrideExit(); } Debug.Log("Event Removed: " + currentEvent.getEventName()); currentEvent = null; //TODO add a nullObject Event script }
private void OnSound(AIEvent OnSound) { AIEVSound ev = (AIEVSound)OnSound; NoiseForTrigger nft = ev.Noise; if (nft != null && nft.noiseType == TriggerOnNoiseType) { TriggerTransition(); } }
public virtual void TriggerEvent(AIEvent aie) { foreach (Transition t in TransitionsFrom) { if (t.isActiveAndEnabled) { t.OnTriggerEvent(aie); } } }
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); } }
//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); } }
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); } }
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(); } }
/// <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() + "不存在于状态集列表中!"); }
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>()); }
/// <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); }
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(); }
//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); } }
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(); }
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(); }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
public void ChangeEvent(AIEvent newEvent) { aiEvent = newEvent; }
public void removeCurrentEvent() { Debug.Log("Event Removed: " + currentEvent.getEventName()); currentEvent = null; //TODO add a nullObject Event script }
/** * 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; }
public virtual void Think(AIEvent triggerEvent) { Mogo.Util.LoggerHelper.Debug("par:Think"); return; }
/** * 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; }