Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_NotificationDisplayData.c
Go to the documentation of this file.
1 
8 {
9  [Attribute("0", UIWidgets.SearchComboBox, "Notification", "", ParamEnumArray.FromEnum(ENotification) )]
10  ENotification m_NotificationKey;
11 
12  [Attribute()]
13  bool m_bPriorityNotification;
14 
15  [Attribute(desc: "Holds the display information of the notification, Fill in Name and Color. Optional: Icon")]
16  ref SCR_UINotificationInfo m_info;
17 
18  //Max amount of Characters a username can be. (Xbox = 12, Playstation = 16, Steam = 32)
19  const int MAX_USERNAME_CHARACTERS = 32;
20 
21  //------------------------------------------------------------------------------------------------
26  void SetInitialDisplayData(SCR_NotificationData data)
27  {
28  //Save Initial positions
29  if (m_info.GetEditorSetPositionData() != ENotificationSetPositionData.NEVER_AUTO_SET_POSITION)
30  SetPosition(data);
31 
32  //Save faction related color. Is ignored if no faction related color type is assigned
33  SetFactionRelatedColor(data);
34  }
35 
36  //------------------------------------------------------------------------------------------------
43  void GetDisplayVisualizationData(SCR_NotificationData data, out SCR_UINotificationInfo info = null, out ENotificationColor colorEnum = ENotificationColor.NEUTRAL)
44  {
45  info = m_info;
46 
47  colorEnum = m_info.GetNotificationColor();
48 
49  if (colorEnum >= ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE)
50  colorEnum = data.GetFactionRelatedColor();
51  }
52 
53  //------------------------------------------------------------------------------------------------
60  {
62  if (!coloredTextInfo)
63  return ENotificationColor.NEUTRAL;
64 
65  ENotificationColor colorEnum = coloredTextInfo.GetNotificationTextColor();
66 
67  if (colorEnum >= ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE)
68  colorEnum = data.GetFactionRelatedTextColor();
69 
70  return colorEnum;
71  }
72 
73  //------------------------------------------------------------------------------------------------
80  void GetSplitNotificationTextColors(SCR_NotificationData data, out ENotificationColor leftTextColorEnum = ENotificationColor.NEUTRAL, out ENotificationColor rightTextColorEnum = ENotificationColor.NEUTRAL)
81  {
82  SCR_SplitNotificationUIInfo splitNotificationUIInfo = SCR_SplitNotificationUIInfo.Cast(m_info);
83 
84  if (!splitNotificationUIInfo)
85  return;
86 
87  ENotificationColor leftFactionColor, rightFactionColor;
88  data.GetSplitFactionRelatedColor(leftFactionColor, rightFactionColor);
89 
90  leftTextColorEnum = splitNotificationUIInfo.GetLeftTextColor();
91 
92  if (leftTextColorEnum >= ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE || splitNotificationUIInfo.ShouldReplaceLeftColorWithRightColorIfAlly())
93  leftTextColorEnum = leftFactionColor;
94 
95  rightTextColorEnum = splitNotificationUIInfo.GetRightTextColor();
96 
97  if (rightTextColorEnum >= ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE)
98  rightTextColorEnum = rightFactionColor;
99  }
100 
101  //------------------------------------------------------------------------------------------------
107  string GetText(SCR_NotificationData data)
108  {
109  if (!m_info)
110  {
111  Print("(" + typename.EnumToString(ENotification, data.GetID()) + ") SCR_NotificationDisplayData has no UIInfo assigned!", LogLevel.WARNING);
112  return string.Empty;
113  }
114 
115  return m_info.GetName();
116  }
117 
118  //------------------------------------------------------------------------------------------------
124  bool MergeParam1With2()
125  {
126  return false;
127  }
128 
129  //------------------------------------------------------------------------------------------------
134  bool GetPriority()
135  {
136  return m_bPriorityNotification;
137  }
138 
139  //------------------------------------------------------------------------------------------------
144  SCR_UINotificationInfo GetNotificationUIInfo()
145  {
146  return m_info;
147  }
148 
149  //------------------------------------------------------------------------------------------------
150  protected bool GetPlayerName(int playerID, out string playerName)
151  {
152  //~ Name already assigned
153  if (!playerName.IsEmpty())
154  return true;
155 
156  PlayerManager playerManager = GetGame().GetPlayerManager();
157  if (!playerManager)
158  return false;
159 
160  playerName = playerManager.GetPlayerName(playerID);
161 
162  //Player name not found
163  if (playerName.IsEmpty())
164  {
165  SCR_NotificationsComponent notificationsManager = SCR_NotificationsComponent.GetInstance();
166  if (notificationsManager)
167  playerName = notificationsManager.GetPlayerNameFromHistory(playerID);
168  }
169 
170  if (playerName.Length() > MAX_USERNAME_CHARACTERS)
171  {
172  string trimedName = playerName.Substring(0, MAX_USERNAME_CHARACTERS);
173  playerName = trimedName + "...";
174  }
175 
176  return !playerName.IsEmpty();
177  }
178 
179  //------------------------------------------------------------------------------------------------
180  protected bool GetEditableEntityName(int entityRplID, out string entityName, bool useCharacterName = false)
181  {
182  //~ Name already assigned
183  if (!entityName.IsEmpty())
184  return true;
185 
186  //Get target Entity. Also works with non-editable entity iD
187  SCR_EditableEntityComponent editableEntity = SCR_EditableEntityComponent.Cast(Replication.FindItem(entityRplID));
188  if (!editableEntity)
189  {
190  IEntity entity = IEntity.Cast(Replication.FindItem(entityRplID));
191  if (!entity)
192  {
193  RplComponent rplComponent = RplComponent.Cast(Replication.FindItem(entityRplID));
194  if (rplComponent)
195  entity = rplComponent.GetEntity();
196  }
197  if (entity)
198  editableEntity = SCR_EditableEntityComponent.Cast(entity.FindComponent(SCR_EditableEntityComponent));
199  }
200 
201  //~ Editable entity component
202  if (editableEntity)
203  {
204  if (editableEntity.GetEntityType() != EEditableEntityType.TASK)
205  {
206  //~ Entity is a player so use that name instead
207  if (editableEntity.GetPlayerID() > 0)
208  return GetPlayerName(editableEntity.GetPlayerID(), entityName);
209 
210  if (useCharacterName)
211  {
212  if (SCR_EditableCharacterComponent.Cast(editableEntity))
213  {
214  string format, firstname, alias, surname;
215  if (GetCharacterName(entityRplID, format, firstname, alias, surname))
216  {
217  entityName = WidgetManager.Translate(format, firstname, alias, surname);
218  if (!entityName.IsEmpty())
219  return true;
220  }
221  }
222  }
223 
224  //~ Use entity name
225  entityName = editableEntity.GetDisplayName();
226  }
227  //~ Get objective type name
228  else
229  {
230  SCR_EditableTaskComponentClass taskPrefabData = SCR_EditableTaskComponentClass.Cast(editableEntity.GetComponentData(editableEntity.GetOwner()));
231  if (taskPrefabData)
232  entityName = taskPrefabData.GetObjectiveTypeName();
233  else
234  entityName = editableEntity.GetDisplayName();
235  }
236  }
237 
238  return !entityName.IsEmpty();
239  }
240 
241  //------------------------------------------------------------------------------------------------
242  //~ Returns faction name by index
243  protected bool GetFactionName(int factionIndex, out string factionName)
244  {
245  //~ Name already assigned
246  if (!factionName.IsEmpty())
247  return true;
248 
249  FactionManager factionManager = GetGame().GetFactionManager();
250  if (!factionManager)
251  return false;
252 
253  Faction faction = factionManager.GetFactionByIndex(factionIndex);
254  if (!faction)
255  return false;
256 
257  factionName = faction.GetFactionName();
258  return !factionName.IsEmpty();
259  }
260 
261  //------------------------------------------------------------------------------------------------
262  protected bool GetCharacterName(int entityRplID, out string format, out string firstname, out string alias, out string surname)
263  {
264  //Get target Entity. Also works with non-editable entity iD
265  SCR_EditableEntityComponent editableEntity = SCR_EditableEntityComponent.Cast(Replication.FindItem(entityRplID));
266  if (!editableEntity)
267  {
268  IEntity entity = IEntity.Cast(Replication.FindItem(entityRplID));
269  if (!entity)
270  {
271  RplComponent rplComponent = RplComponent.Cast(Replication.FindItem(entityRplID));
272  if (rplComponent)
273  entity = rplComponent.GetEntity();
274  }
275  if (entity)
276  editableEntity = SCR_EditableEntityComponent.Cast(entity.FindComponent(SCR_EditableEntityComponent));
277 
278  if (!editableEntity)
279  return false;
280  }
281 
282  SCR_CharacterIdentityComponent charIdentity = SCR_CharacterIdentityComponent.Cast(editableEntity.GetOwner().FindComponent(SCR_CharacterIdentityComponent));
283  if (!charIdentity)
284  return false;
285 
286  charIdentity.GetFormattedFullName(format, firstname, alias, surname);
287  return true;
288  }
289 
290  //------------------------------------------------------------------------------------------------
291  //~ Returns translated callsign in correct formatting
292  protected bool GetEntityCallsign(int rplID, out string callsign)
293  {
294  //~ Name already assigned
295  if (!callsign.IsEmpty())
296  return true;
297 
298  Managed managed = Replication.FindItem(rplID);
299  if (!managed)
300  return false;
301 
302  SCR_CallsignBaseComponent callsignComponent;
303  ScriptComponent scriptComp = ScriptComponent.Cast(managed);
304 
305  //~ Get managed script
306  if (scriptComp)
307  {
308  callsignComponent = SCR_CallsignBaseComponent.Cast(scriptComp.GetOwner().FindComponent(SCR_CallsignBaseComponent));
309  }
310  //~ Get managed entity
311  else
312  {
313  IEntity entity = IEntity.Cast(managed);
314  if (!entity)
315  return false;
316 
317  callsignComponent = SCR_CallsignBaseComponent.Cast(entity.FindComponent(SCR_CallsignBaseComponent));
318  }
319 
320  if (!callsignComponent)
321  return false;
322 
323  string company, platoon, squad, character, format;
324  if (!callsignComponent.GetCallsignNames(company, platoon, squad, character, format))
325  return false;
326 
327  //~ Translate the callsign strings so it can be send as 1 string
328  callsign = WidgetManager.Translate(format, company, platoon, squad, character);
329  return true;
330  }
331 
332  //------------------------------------------------------------------------------------------------
333  //~ Returns group name, or callsign if no name assigned
334  protected bool GetGroupNameFromGroupID(int playerGroupId, out string groupName)
335  {
336  //~ Name already assigned
337  if (!groupName.IsEmpty())
338  return true;
339 
340  SCR_GroupsManagerComponent groupsManager = SCR_GroupsManagerComponent.GetInstance();
341  if (!groupsManager)
342  return false;
343 
344  SCR_AIGroup aiGroup;
345  aiGroup = groupsManager.FindGroup(playerGroupId);
346 
347  if (!aiGroup)
348  return false;
349 
350  groupName = aiGroup.GetCustomName();
351 
352  //~ No custom name set so get Callsign instead
353  if (SCR_StringHelper.IsEmptyOrWhiteSpace(groupName))
354  return GetEntityCallsign(Replication.FindId(aiGroup), groupName);
355 
356  return true;
357  }
358 
359  //------------------------------------------------------------------------------------------------
360  //~ Get inventory item name
361  protected bool GetInventoryItemName(RplId rplId, out string itemName)
362  {
363  if (!itemName.IsEmpty())
364  return true;
365 
366  RplComponent itemRplcComp = RplComponent.Cast(Replication.FindItem(rplId));
367  if (!itemRplcComp)
368  return false;
369 
370  IEntity itemEntity = itemRplcComp.GetEntity();
371  if (!itemEntity)
372  return false;
373 
374  InventoryItemComponent item = InventoryItemComponent.Cast(itemEntity.FindComponent(InventoryItemComponent));
375  if (!item)
376  return false;
377 
378  ItemAttributeCollection attributeCollection = item.GetAttributes();
380  return false;
381 
382  UIInfo uiInfo = attributeCollection.GetUIInfo();
383  if (!uiInfo)
384  return false;
385 
386  itemName = uiInfo.GetName();
387 
388  return !itemName.IsEmpty();
389  }
390 
391  //------------------------------------------------------------------------------------------------
400  bool GetPosition(SCR_NotificationData data, out vector position)
401  {
402  if (m_info.GetEditorSetPositionData() == ENotificationSetPositionData.AUTO_SET_AND_UPDATE_POSITION)
403  SetPosition(data);
404 
405  data.GetPosition(position);
406 
407  if (position == vector.Zero)
408  return false;
409 
410  return true;
411  }
412 
413  //------------------------------------------------------------------------------------------------
418  void SetPosition(SCR_NotificationData data)
419  {
420 
421  }
422 
423  //------------------------------------------------------------------------------------------------
424  protected bool CanSetPosition(SCR_NotificationData data)
425  {
426  vector position;
427  data.GetPosition(position);
428 
429  return !((m_info.GetEditorSetPositionData() == ENotificationSetPositionData.AUTO_SET_POSITION_ONCE && position != vector.Zero) || m_info.GetEditorSetPositionData() == ENotificationSetPositionData.NEVER_AUTO_SET_POSITION);
430  }
431 
432  //------------------------------------------------------------------------------------------------
433  //Set position data using Player ID
434  protected void SetPositionDataEditablePlayer(int playerID, SCR_NotificationData data)
435  {
436  PlayerManager playerManager = GetGame().GetPlayerManager();
437  if (!playerManager)
438  return;
439 
440  SCR_EditableEntityComponent playerEntity = SCR_EditableEntityComponent.GetEditableEntity(playerManager.GetPlayerControlledEntity(playerID));
441 
442  if (!playerEntity)
443  return;
444 
445  vector position;
446 
447  if (!playerEntity.GetPos(position))
448  return;
449 
450  data.SetPosition(position);
451  }
452 
453  //------------------------------------------------------------------------------------------------
454  //Set position data using Editable Entity ID
455  protected void SetPositionDataEditableEntity(int enditableEntityID, SCR_NotificationData data)
456  {
457  SCR_EditableEntityComponent targetEntity = SCR_EditableEntityComponent.Cast(Replication.FindItem(enditableEntityID));
458 
459  if (!targetEntity) return;
460 
461  vector position;
462  if (!targetEntity.GetPos(position)) return;
463 
464  data.SetPosition(position);
465  }
466 
467  //------------------------------------------------------------------------------------------------
472  void SetFactionRelatedColor(SCR_NotificationData data)
473  {
474 
475  }
476 
477  //------------------------------------------------------------------------------------------------
478  //Get faction related color of player target
479  protected ENotificationColor GetFactionRelatedColorPlayer(int notificationPlayerID, ENotificationColor colorType)
480  {
481  //If not a faction set color keep current color
482  if (colorType < ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE)
483  return colorType;
484 
485  if (!GetGame().GetPlayerController())
486  return ENotificationColor.NEUTRAL;
487 
488  SCR_FactionManager factionManager = SCR_FactionManager.Cast(GetGame().GetFactionManager());
489  if (!factionManager)
490  return ENotificationColor.NEUTRAL;
491 
492  //Get factions using ID
493  Faction playerSelfFaction = factionManager.GetLocalPlayerFaction();
494  Faction notificationPlayerFaction = factionManager.GetPlayerFaction(notificationPlayerID);
495 
496  if (!playerSelfFaction || !notificationPlayerFaction)
497  return ENotificationColor.NEUTRAL;
498 
499  //Check if friendly
500  if (playerSelfFaction.IsFactionFriendly(notificationPlayerFaction))
501  {
502  if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE)
503  return ENotificationColor.NEGATIVE;
504  else if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_POSITIVE)
505  return ENotificationColor.POSITIVE;
506  else if (colorType == ENotificationColor.FACTION_ENEMY_IS_NEGATIVE_ONLY)
507  return ENotificationColor.NEUTRAL;
508  else if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_POSITIVE_ONLY)
509  return ENotificationColor.POSITIVE;
510  }
511  else
512  {
513  if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE)
514  return ENotificationColor.POSITIVE;
515  else if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_POSITIVE)
516  return ENotificationColor.NEGATIVE;
517  else if (colorType == ENotificationColor.FACTION_ENEMY_IS_NEGATIVE_ONLY)
518  return ENotificationColor.NEGATIVE;
519  else if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_POSITIVE_ONLY)
520  return ENotificationColor.NEUTRAL;
521  }
522 
523  //No color set
524  return ENotificationColor.NEUTRAL;
525  }
526 
527  //------------------------------------------------------------------------------------------------
528  //Get faction related color of entity target
529  protected ENotificationColor GetFactionRelatedColorEntity(int notificationEntityID, ENotificationColor colorType)
530  {
531  //If not a faction set color keep current color
532  if (colorType < ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE)
533  return colorType;
534 
535  if (!GetGame().GetPlayerController()) return ENotificationColor.NEUTRAL;
536  SCR_FactionManager factionManager = SCR_FactionManager.Cast(GetGame().GetFactionManager());
537  if (!factionManager) return ENotificationColor.NEUTRAL;
538 
539  //Get notification entity
540  SCR_EditableEntityComponent notificationEntity = SCR_EditableEntityComponent.Cast(Replication.FindItem(notificationEntityID));
541  if (!notificationEntity) return ENotificationColor.NEUTRAL;
542 
543  //Get notification entity ChimeraCharacter
544  SCR_ChimeraCharacter notificationEntityChimera = SCR_ChimeraCharacter.Cast(notificationEntity.GetOwner());
545  if (!notificationEntityChimera) return ENotificationColor.NEUTRAL;
546 
547  //Get factions
548  Faction playerSelfFaction = factionManager.GetLocalPlayerFaction();
549  Faction notificationEntityFaction = notificationEntityChimera.GetFaction();
550 
551  if (!playerSelfFaction || !notificationEntityFaction) return ENotificationColor.NEUTRAL;
552 
553  //Check if friendly
554  if (playerSelfFaction.IsFactionFriendly(notificationEntityFaction))
555  {
556  if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE)
557  return ENotificationColor.NEGATIVE;
558  else if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_POSITIVE)
559  return ENotificationColor.POSITIVE;
560  else if (colorType == ENotificationColor.FACTION_ENEMY_IS_NEGATIVE_ONLY)
561  return ENotificationColor.NEUTRAL;
562  else if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_POSITIVE_ONLY)
563  return ENotificationColor.POSITIVE;
564  }
565  else
566  {
567  if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_NEGATIVE)
568  return ENotificationColor.POSITIVE;
569  else if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_POSITIVE)
570  return ENotificationColor.NEGATIVE;
571  else if (colorType == ENotificationColor.FACTION_ENEMY_IS_NEGATIVE_ONLY)
572  return ENotificationColor.NEGATIVE;
573  else if (colorType == ENotificationColor.FACTION_FRIENDLY_IS_POSITIVE_ONLY)
574  return ENotificationColor.NEUTRAL;
575  }
576 
577  //No color set
578  return ENotificationColor.NEUTRAL;
579  }
580 
581  //------------------------------------------------------------------------------------------------
582  //Check if entities are friendly
583  protected bool AreEntitiesFriendly(int entity1ID, bool entity1IsPlayer, int entity2ID, bool entity2IsPlayer)
584  {
585  Faction faction1, faction2;
586 
587  SCR_FactionManager factionManager = SCR_FactionManager.Cast(GetGame().GetFactionManager());
588 
589  if (entity1IsPlayer || entity2IsPlayer)
590  {
591  if (!factionManager)
592  return false;
593  }
594 
596  SCR_ChimeraCharacter entityChimera;
597 
598  //Get notification entity
599 
600  //Get entity 1 faction
601  if (entity1IsPlayer)
602  {
603  faction1 = factionManager.GetPlayerFaction(entity1ID);
604  }
605  else
606  {
607  entity = SCR_EditableEntityComponent.Cast(Replication.FindItem(entity1ID));
608  if (!entity)
609  return false;
610 
611  //Get notification entity SCR_ChimeraCharacter
612  entityChimera = SCR_ChimeraCharacter.Cast(entity.GetOwner());
613  if (!entityChimera)
614  return false;
615 
616  faction1 = entityChimera.GetFaction();
617  }
618 
619  //Get entity 2 faction
620  if (entity2IsPlayer)
621  {
622  faction2 = factionManager.GetPlayerFaction(entity2ID);
623  }
624  else
625  {
626  entity = SCR_EditableEntityComponent.Cast(Replication.FindItem(entity2ID));
627  if (!entity)
628  return false;
629 
630  //Get notification entity SCR_ChimeraCharacter
631  entityChimera = SCR_ChimeraCharacter.Cast(entity.GetOwner());
632  if (!entityChimera)
633  return false;
634 
635  faction2 = entityChimera.GetFaction();
636  }
637 
638  if (!faction1 || !faction2)
639  return false;
640 
641  return faction1.IsFactionFriendly(faction2);
642  }
643 };
SCR_NotificationDisplayData
Definition: SCR_NotificationDisplayData.c:7
ENotificationSetPositionData
ENotificationSetPositionData
Definition: ENotificationSetPositionData.c:6
ScriptComponent
SCR_SiteSlotEntityClass ScriptComponent
SCR_SplitNotificationUIInfo
Definition: SCR_SplitNotificationUIInfo.c:2
ItemAttributeCollection
Definition: ItemAttributeCollection.c:12
SCR_BaseContainerCustomTitleEnum
class SCR_CampaignHintStorage SCR_BaseContainerCustomTitleEnum(EHint, "m_eHintId")
Definition: SCR_CampaignHintStorage.c:22
GetGame
ArmaReforgerScripted GetGame()
Definition: game.c:1424
UIInfo
UIInfo - declare object, allows to define UI elements.
Definition: UIInfo.c:13
SCR_ColoredTextNotificationUIInfo
Definition: SCR_ColoredTextNotificationUIInfo.c:2
SCR_StringHelper
Definition: SCR_StringHelper.c:1
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition: SCR_RespawnBriefingComponent.c:17
SCR_CallsignBaseComponent
Component of assigning and storing squad names.
Definition: SCR_CallsignBaseComponent.c:11
GetPlayerController
proto external PlayerController GetPlayerController()
Definition: SCR_PlayerDeployMenuHandlerComponent.c:307
ENotification
ENotification
Definition: ENotification.c:4
Attribute
typedef Attribute
Post-process effect of scripted camera.
EEditableEntityType
EEditableEntityType
Defines type of SCR_EditableEntityComponent. Assigned automatically based on IEntity inheritance.
Definition: EEditableEntityType.c:5
SCR_EditableEntityComponent
Definition: SCR_EditableEntityComponent.c:13
InventoryItemComponent
Definition: InventoryItemComponent.c:12
Faction
Definition: Faction.c:12
SCR_GroupsManagerComponent
void SCR_GroupsManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition: SCR_GroupsManagerComponent.c:1320
SCR_NotificationData
Definition: SCR_NotificationData.c:6
SCR_EditableTaskComponentClass
Definition: SCR_EditableTaskComponent.c:2
SCR_AIGroup
Definition: SCR_AIGroup.c:68
data
Get all prefabs that have the spawner data
Definition: SCR_EntityCatalogManagerComponent.c:305
ENotificationColor
ENotificationColor
Definition: ENotificationColor.c:4
SCR_FactionManager
void SCR_FactionManager(IEntitySource src, IEntity parent)
Definition: SCR_FactionManager.c:461
position
vector position
Definition: SCR_DestructibleTreeV2.c:30
PlayerManager
Definition: PlayerManager.c:12
SCR_UINotificationInfo
UIInfo used by the Notifications system.
Definition: SCR_NotificationUIInfo.c:3
BaseContainerProps
SCR_AIGoalReaction_Follow BaseContainerProps
Handles insects that are supposed to be spawned around selected prefabs defined in prefab names array...
Definition: SCR_AIGoalReaction.c:468