25 static const float MAX_NAVMESH_REBUILD_SIZE = 100 * 100;
29 static bool s_bDiagRegistered;
32 ref array<ref SCR_AIMessageGoal> m_aGoalMessages;
33 ref array<ref SCR_AIMessageGoal> m_aGoalMessagesPacked =
new array<ref SCR_AIMessageGoal>();
36 ref array<ref SCR_AIMessageInfo> m_aInfoMessages;
37 ref array<ref SCR_AIMessageInfo> m_aInfoMessagesPacked =
new array<ref SCR_AIMessageInfo>();
40 ref array<ref SCR_AIOrderBase> m_aOrders;
41 ref array<ref SCR_AIOrderBase> m_aOrdersPacked =
new array<ref SCR_AIOrderBase>();
45#ifdef DEBUG_NAVMESH_REBUILD_AREAS
46 protected ref array<ref Shape> m_DebugNavmeshRebuildAreas =
new array<ref Shape>;
68 DiagMenu.RegisterItem(
SCR_DebugMenuID.DEBUGUI_AI_DEBUG_CATEGORY,
"",
"AI Debug Category",
"AIScript", categories);
77 if (!s_bDiagRegistered)
98 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_AI_SHOW_GRENADE_POSITIONS,
"",
"Show grenade positions",
"AIScript");
100 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_AI_SHOW_ILLUM_FLARES_POSITIONS,
"",
"Show illum flares positions",
"AIScript");
102 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_AI_SHOW_SECTOR_THREAT_FILTER,
"",
"Show sector threat filter",
"AIScript");
103 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_AI_SHOW_SEARCH_AND_DESTROY,
"",
"Show search and destroy points of interest",
"AIScript");
112 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_AI_SHOW_TARGET_PROJECTED_SIZE,
"",
"Show target projected size",
"Aiming");
118 s_bDiagRegistered =
true;
125 m_aGoalMessagesPacked.Resize(type_EMessageType_Goal.GetVariableCount());
129 m_aGoalMessagesPacked[message.m_eUIType] = message;
132 m_aInfoMessagesPacked.Resize(type_EMessageType_Info.GetVariableCount());
136 m_aInfoMessagesPacked[message.m_eUIType] = message;
139 m_aOrdersPacked.Resize(type_EOrderType_Character.GetVariableCount());
143 m_aOrdersPacked[order.m_eUIType] = order;
157 IEntity agentEntity = agent.GetControlledEntity();
158 if (!agentEntity)
return;
161 if (editorCameraManager)
167 if (teleportComponent)
181 if (editorCameraManager)
187 if (teleportComponent)
189 teleportComponent.TeleportCamera(pos);
198 s_OnAgentSpawned.Invoke(agent);
204 s_OnAgentRemoved.Invoke(agent);
210 return m_aGoalMessagesPacked[eventType].Type();
215 return m_aInfoMessagesPacked[eventType].Type();
220 return m_aOrdersPacked[eventType].Type();
229#ifdef DEBUG_NAVMESH_REBUILD_AREAS
231 m_DebugNavmeshRebuildAreas.Clear();
234 foreach (Tuple2<vector, vector> area: areas)
239#ifdef DEBUG_NAVMESH_REBUILD_AREAS
240 SCR_Shape.GetBoundsPoints(area.param1, area.param2, points);
241 m_DebugNavmeshRebuildAreas.Insert(
Shape.CreateLines(
Color.BLUE,
ShapeFlags.NOZBUFFER, points, 19));
252 array<ref Tuple2<vector, vector>> areas =
new array<ref Tuple2<vector, vector>>;
253 array<bool> redoRoads =
new array<bool>;
271 if (!(entity.
GetPhysics().GetInteractionLayer() & (EPhysicsLayerDefs.Navmesh | EPhysicsLayerDefs.NavmeshVehicle)))
275 vector boundMin, boundMax;
281 foreach (Tuple2<vector, vector> area: outAreas)
285 area.param1 =
SCR_Math3D.Min(area.param1, boundMin);
286 area.param2 =
SCR_Math3D.Max(area.param2, boundMax);
298 outAreas.Insert(
new Tuple2<vector, vector>(boundMin, boundMax));
313 return min + (max - min) / 2;
319 return link.HasLinkOfNavmeshType(
"BTRlike");
SCR_AIGroupInfoComponentClass LAST
ScriptInvokerBase< ScriptInvoker_AIWorldControlModeChangedMethod > ScriptInvoker_AIWorldControlModeChanged
func ScriptInvoker_AIWorldControlModeChangedMethod
proto external Managed FindComponent(typename typeName)
proto external Physics GetPhysics()
proto external vector GetWorldTransformAxis(int axis)
See IEntity::GetTransformAxis.
proto external IEntity GetChildren()
proto external void GetWorldBounds(out vector mins, out vector maxs)
proto external IEntity GetSibling()
proto external VObject GetVObject()
Returns visual object set to this Entity. No reference is added.
void GetNavmeshRebuildAreas(IEntity entity, out notnull array< ref Tuple2< vector, vector > > outAreas, out notnull array< bool > redoRoads)
override void OnDebugAgentTeleport(AIAgent agent)
void RequestNavmeshRebuildAreas(notnull array< ref Tuple2< vector, vector > > areas, notnull array< bool > redoRoads)
GetOrderMessageOfType(EOrderType_Character eventType)
vector GetAreaCenter(vector min, vector max)
bool HasVehicleNavlink(IEntity entity)
GetGoalMessageOfType(EMessageType_Goal eventType)
void RegisterDbgCategory()
ScriptInvoker_AIWorldControlModeChanged GetOnControlModeChanged()
void RequestNavmeshRebuildEntity(IEntity entity)
override void AddedAIAgent(AIAgent agent)
override void EOnInit(IEntity owner)
ref ScriptInvoker_AIWorldControlModeChanged m_OnControlModeChanged
override void RemovingAIAgent(AIAgent agent)
GetInfoMessageOfType(EMessageType_Info eventType)
override void OnDebugCameraTeleport(vector pos)
SCR_ManualCamera GetCamera()
SCR_BaseManualCameraComponent FindCameraComponent(typename type)
Contains various scripted 3D math functions.
Teleport the camera to the cursor's world position.
Instance of created debug visualizer.
proto external void RequestRoadNetworkRebuild(vector min, vector max)
proto external void RequestNavmeshRebuild(vector min, vector max)
proto void PrintFormat(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL, LogLevel level=LogLevel.NORMAL)
@ NONE
When Shape is created and not initialized yet.
SCR_FieldOfViewSettings Attribute