virtual void OnHUDEvent(const SHUDEvent& event) { // Since I only handle OnObjectiveChanged I only expect a void pointer and a boolean, fail in other cases. CHUDMissionObjective* pMissionObjective = NULL; bool bIsSilent = false; if(event.eventType == eHUDEvent_OnObjectiveChanged) { for(unsigned int i = 0; i < event.GetDataSize(); i++) { switch(event.GetData(i).m_type) { case SHUDEventData::eSEDT_voidptr: pMissionObjective = (CHUDMissionObjective*)event.GetData(i).GetPtr(); break; case SHUDEventData::eSEDT_bool: bIsSilent = event.GetData(i).GetBool(); break; case SHUDEventData::eSEDT_int: // not necessary now break; case SHUDEventData::eSEDT_float: // not necessary now break; case SHUDEventData::eSEDT_undef: default: CryWarning(VALIDATOR_MODULE_FLOWGRAPH, VALIDATOR_WARNING, "[CFlowNode_MissionStateListener] HudEvent data unknown."); break; } } if(pMissionObjective && !bIsSilent) { // activate outputport ActivateOutput(&m_pActInfo, eOP_StateChanged, 1); ActivateOutput<string>(&m_pActInfo, eOP_Desc, string(pMissionObjective->GetShortDescription())); ActivateOutput<string>(&m_pActInfo, eOP_Msg, string(pMissionObjective->GetMessage())); ActivateOutput<int>(&m_pActInfo, eOP_State, pMissionObjective->GetStatus()); ActivateOutput<bool>(&m_pActInfo, eOP_IsSecondary, pMissionObjective->IsSecondary()); } } }