Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_EditorImagePositionEntity.c
Go to the documentation of this file.
1 [EntityEditorProps(category: "GameScripted/Editor", description: "Image generator for pecific subset of entities", color: "255 0 0 255")]
2 class SCR_EditorImagePositionEntityClass: GenericEntityClass
3 {
4 };
5 
13 {
14  [Attribute("0", uiwidget: UIWidgets.SearchComboBox, "Use this location fo entities with these labels.", "", ParamEnumArray.FromEnum(EEditableEntityLabel), category: "Configuration")]
15  protected ref array<EEditableEntityLabel> m_Labels;
16 
17  [Attribute("2", uiwidget:UIWidgets.Slider, "Delay between creating the entity and taking a screenshot.", params: "1 5 0.5", category: "Configuration")]
18  protected float m_fDelay;
19 
20  [Attribute("0", desc: "Order in which the position will be evaluated.\nHigher numbers are processed first.", category: "Configuration")]
21  protected int m_iPriority;
22 
23  [Attribute(uiwidget:UIWidgets.ResourcePickerThumbnail, params: "xob", category: "Configuration")]
24  protected ResourceName m_PreviewMesh;
25 
26  [Attribute(desc: "", category: "Configuration")]
27  protected bool m_bEnablePhysics;
28 
29  [Attribute(desc: "Position the entity by center of its bounding box, not by center of the prefab.", category: "Configuration")]
30  protected bool m_bUseBoundingCenter;
31 
32  [Attribute(desc: "When enabled, the prefab must fit into camera view. When that's not the game, another camera tied to the position will be searched for.", category: "Configuration")]
33  protected bool m_bMustFitInView;
34 
35  [Attribute(desc: "Names of camera entities belonging to this position. Multiple positions could refer to the same camera.", category: "Configuration")]
36  protected ref array<string> m_aCameraNames;
37 
38  [Attribute(uiwidget:UIWidgets.ResourceNamePicker, params: "agr", category: "Animation")]
39  protected ResourceName m_PosesGraph;
40 
41  [Attribute(uiwidget:UIWidgets.ResourceNamePicker, params: "asi", category: "Animation")]
42  protected ResourceName m_PosesInstance;
43 
44  [Attribute(category: "Animation")]
45  protected string m_sStartNode;
46 
47  [Attribute(category: "Animation")]
48  protected string m_sPoseVar;
49 
50  [Attribute(category: "Animation")]
51  protected int m_iPoseID;
52 
53  [Attribute(category: "Animation", params: "1 7 1")]
54  protected int m_iArmIK;
55 
56  [Attribute(uiwidget:UIWidgets.ResourcePickerThumbnail, params: "anm", category: "Animation")]
57  protected ResourceName m_ArmIKResource;
58 
59  [Attribute("-1", uiwidget: UIWidgets.ComboBox, category: "Animation", enums: SCR_Enum.GetList(EWeaponType, ParamEnum("<Unchanged>", "-1")))]
60  protected EWeaponType m_ForceWeaponType;
61 
62  [Attribute("-4", uiwidget:UIWidgets.Slider, params: "-90 90 1", category: "Environment")]
63  protected float m_fLatitude;
64 
65  [Attribute("71", uiwidget:UIWidgets.Slider, params: "-180 180 1", category: "Environment")]
66  protected float m_fLongitude;
67 
68  [Attribute("0.415", uiwidget:UIWidgets.Slider, params: "0 1 0.01", category: "Environment")]
69  protected float m_fTime;
70 
71  [Attribute("1985", uiwidget: UIWidgets.Slider, params: "1899 2050 1", category: "Environment")]
72  protected int m_iYear;
73 
74  [Attribute("5", uiwidget: UIWidgets.Slider, params: "1 12 1", category: "Environment")]
75  protected int m_iMonth;
76 
77  [Attribute("8", uiwidget: UIWidgets.Slider, params: "1 31 1", category: "Environment")]
78  protected int m_iDay;
79 
80  [Attribute(defvalue: "Clear", uiwidget: UIWidgets.ComboBox, category: "Environment", enums: { ParamEnum("Clear", "Clear"), ParamEnum("Cloudy", "Cloudy"), ParamEnum("Overcast", "Overcast"), ParamEnum("Rainy", "Rainy") }, desc: "Area shape")]
81  private string m_sWeatherState;
82 
83 #ifdef WORKBENCH
84  protected ref array<SCR_CameraBase> m_aCameras = {};
85  protected SCR_EditorImagePositionEntity m_Parent;
86  protected ref SCR_SortedArray<SCR_EditorImagePositionEntity> m_aSubPositions = new SCR_SortedArray<SCR_EditorImagePositionEntity>();
87  protected IEntity m_Entity;
88  protected ref array<IEntity> m_aCurrentNearbyEntities = {};
89  protected ref array<IEntity> m_aOriginalNearbyEntities = {};
90  protected string m_sNewWeaponMesh;
91  protected string m_sCurrentWeaponMesh;
92 
93  protected CharacterAnimationComponent m_CharacterAnimation;
94 
95  float GetDelay()
96  {
97  return m_fDelay;
98  }
99  int GetPriority()
100  {
101  return m_iPriority;
102  }
103  bool IsSuitable(array<EEditableEntityLabel> labels)
104  {
105  foreach (EEditableEntityLabel label: m_Labels)
106  {
107  //--- All position labels must be compatible with the editable entity. If even one is missing, ignore the position.
108  if (!labels.Contains(label))
109  return false;
110  }
111  return true;
112  }
113  SCR_EditorImagePositionEntity FindSuitableSubPosition(SCR_SortedArray<SCR_EditorImagePositionEntity> subPositions, array<EEditableEntityLabel> labels)
114  {
115  for (int i = subPositions.Count() - 1; i >= 0; i--)
116  {
117  if (subPositions.GetValue(i).IsSuitable(labels))
118  return subPositions.GetValue(i);
119  }
120  return null;
121  }
122  bool ActivatePosition(ResourceName prefab)
123  {
124  //--- Prevent AI groups from creating members themselves, do it manually here
125  SCR_AIGroup.IgnoreSpawning(true);
126 
127  //--- Create prefab
128  EntitySpawnParams spawnParams = new EntitySpawnParams();
129  GetTransform(spawnParams.Transform);
130  m_Entity = GetGame().SpawnEntityPrefab(Resource.Load(prefab), GetWorld(), spawnParams);
131  if (!m_Entity)
132  {
133  Debug.Error2(Type().ToString(), string.Format("Error when creating prefab '%1'!", prefab));
134  return false;
135  }
136 
137  //--- Orient composition to terrain
139  if (composition)
140  {
141  SCR_EditableEntityComponent editableComposition = SCR_EditableEntityComponent.GetEditableEntity(m_Entity);
142  editableComposition.SetTransformWithChildren(spawnParams.Transform);
143  //composition.OrientToTerrain();
144  }
145 
146  //--- Set environment
147  ChimeraWorld world = GetWorld();
148  TimeAndWeatherManagerEntity envManager = world.GetTimeAndWeatherManager();
149  if (envManager)
150  {
151  int h, m, s;
152  envManager.SetCurrentLatitude(m_fLatitude);
153  envManager.SetCurrentLongitude(m_fLongitude);
154  envManager.TimeToHoursMinutesSeconds(m_fTime * 24, h, m, s);
155  envManager.SetHoursMinutesSeconds(h, m, s, false);
156  envManager.SetDate(m_iYear, m_iMonth, m_iDay, true);
157 
158  //Set weather
159  WeatherStateTransitionManager weatherTransitionManager = envManager.GetTransitionManager();
160  if (weatherTransitionManager)
161  {
162  WeatherStateTransitionNode transitionNode = weatherTransitionManager.CreateStateTransition(m_sWeatherState, 0, 1);
163  transitionNode.SetLooping(true);
164 
165  weatherTransitionManager.EnqueueStateTransition(transitionNode, false);
166  weatherTransitionManager.RequestStateTransitionImmediately(transitionNode);
167  }
168 
169  //int hX, mX, sX;
170  //envManager.GetHoursMinutesSeconds(hX, mX, sX);
171  //PrintFormat("%1 == %2, %3 == %4, %5 == %6", h, hX, m, mX, s, sX);
172  }
173 
174  //--- Move group members to sub-positions
175  SCR_AIGroup group = SCR_AIGroup.Cast(m_Entity);
176  if (group)
177  {
178  //--- Make sure group AI members are spawned instantly, not asynchronously
179  group.SetMemberSpawnDelay(0);
180  group.SpawnUnits();
181 
182  array<AIAgent> agents = {};
183  int agentCount = group.GetAgents(agents);
184  if (agentCount <= m_aSubPositions.Count())
185  {
186  m_Entity = GetGame().SpawnEntity(GenericEntity, GetWorld(), spawnParams);
187  IEntity member;
188  vector transform[4];
189  SCR_SortedArray<SCR_EditorImagePositionEntity> subPositions = new SCR_SortedArray<SCR_EditorImagePositionEntity>();
190  subPositions.CopyFrom(m_aSubPositions);
191  SCR_EditorImagePositionEntity subPosition;
192  bool failed = false;
193  for (int i = 0; i < agentCount; i++)
194  {
195  member = agents[i].GetControlledEntity();
196 
197  //--- Get member labels
198  SCR_EditableEntityComponent editableMember = SCR_EditableEntityComponent.GetEditableEntity(member);
199  SCR_EditableEntityUIInfo info = SCR_EditableEntityUIInfo.Cast(editableMember.GetInfo());
200  array<EEditableEntityLabel> memberLabels = {};
201  if (info)
202  info.GetEntityLabels(memberLabels);
203 
204  //--- Find suitable sub-position, taking member labels into consideration
205  subPosition = FindSuitableSubPosition(subPositions, memberLabels);
206  if (subPosition)
207  {
208  subPositions.RemoveValues(subPosition);
209  subPosition.GetTransform(transform);
210 
211  CloneCharacter(member, transform);
212  //m_Entity.AddChild(member, -1, EAddChildFlags.RECALC_LOCAL_TRANSFORM); //--- Crashes the game! Not needed, area garbage collection removes clones anyway.
213  subPosition.SetPose(member);
214  subPosition.EOnImagePositonActivate(member);
215  }
216  else
217  {
218  Print(string.Format("Cannot capture group member @\"%1\"! Unable to find suitable sub-position for %1!", member.GetPrefabData().GetPrefabName()), LogLevel.WARNING);
219  failed = true;
220  }
221  }
222  SCR_EntityHelper.DeleteEntityAndChildren(group);
223 
224  if (failed)
225  return false;
226  }
227  else
228  {
229  Print(string.Format("Cannot capture group @\"%1\"! It has %2 members, but the position '%3' has only %4 sub-positions!", prefab, agentCount, GetPositionName(), m_aSubPositions.Count()), LogLevel.WARNING);
230  return false;
231  }
232 
233  EOnImagePositonActivate(m_Entity);
234  }
235  else
236  {
237  ChimeraCharacter character = ChimeraCharacter.Cast(m_Entity);
238  if (character)
239  {
240  if (m_ForceWeaponType >= 0)
241  {
243  if (inventoryStorage)
244  {
245  array<IEntity> items = {};
246  for (int i = inventoryStorage.GetItems(items) - 1; i >= 0; i--)
247  {
248  BaseWeaponComponent weapon = BaseWeaponComponent.Cast(items[i].FindComponent(BaseWeaponComponent));
249  if (weapon)
250  {
251  if (weapon.GetWeaponType() == m_ForceWeaponType)
252  {
253  m_sNewWeaponMesh = items[i].GetVObject().GetResourceName();
254  break;
255  }
256  }
257  }
258  }
259 
260  BaseWeaponManagerComponent weaponManager = BaseWeaponManagerComponent.Cast(m_Entity.FindComponent(BaseWeaponManagerComponent));
261  if (weaponManager)
262  {
263  BaseWeaponComponent currentWeapon = weaponManager.GetCurrentWeapon();
264  if (currentWeapon)
265  m_sCurrentWeaponMesh = currentWeapon.GetOwner().GetVObject().GetResourceName();
266  }
267  }
268 
269  // Set hands position
270  CharacterControllerComponent characterController = character.GetCharacterController();
271  m_CharacterAnimation = characterController.GetAnimationComponent();
272 
273  vector transform[4];
274  m_Entity.GetTransform(transform);
275  CloneCharacter(m_Entity, transform);
276  SetPose(m_Entity);
277  }
278 
279  //--- Position the entity by its bounding center, not mesh origin
280  if (m_bUseBoundingCenter)
281  {
282  vector min, max;
283  SCR_Global.GetWorldBoundsWithChildren(m_Entity, min, max);
284  vector bCenter = min + (max - min) / 2;
285  m_Entity.SetOrigin(2 * m_Entity.GetOrigin() - bCenter);
286  m_Entity.Update();
287  }
288  }
289 
290  //--- Activate physics
291  if (m_bEnablePhysics)
292  {
293  Physics phys = m_Entity.GetPhysics();
294  if (phys)
295  phys.SetActive(true);
296  }
297 
298  //--- Activate camera
299  SCR_CameraBase camera;
300  if (m_bMustFitInView)
301  {
302  vector min, max;
303  SCR_Global.GetWorldBoundsWithChildren(m_Entity, min, max);
304  array<vector> corners = {
305  min,
306  Vector(min[0], min[1], max[2]),
307  Vector(min[0], max[1], min[2]),
308  Vector(max[0], min[1], min[2]),
309  Vector(max[0], max[1], min[2]),
310  Vector(max[0], min[1], max[2]),
311  Vector(min[0], max[1], max[2]),
312  max
313  };
314 
315  foreach (SCR_CameraBase cameraCandidate: m_aCameras)
316  {
317  bool isInView = true;
318  for (int i = 0; i < 8; i++)
319  {
320  if (!cameraCandidate.IsInView(corners[i]))
321  {
322  isInView = false;
323  break;
324  }
325  }
326  if (isInView)
327  {
328  camera = cameraCandidate;
329  break;
330  }
331  }
332  }
333  else
334  {
335  camera = m_aCameras[0];
336  }
337 
338  if (camera)
339  {
340  CameraManager cameraManager = GetGame().GetCameraManager();
341  if (cameraManager)
342  cameraManager.SetCamera(camera);
343  }
344  else
345  Debug.Error2(Type().ToString(), string.Format("No camera which would fit '%1' found on position '%2'!", prefab, GetPositionName()));
346 
347  return true;
348  }
349  void DeactivatePosition()
350  {
351  UpdateNearbyEntities();
352  foreach (IEntity entity: m_aCurrentNearbyEntities)
353  {
354  if (!m_aOriginalNearbyEntities.Contains(entity))
355  delete entity;
356  }
357  }
358  protected void CloneCharacter(out IEntity character, vector transform[4])
359  {
360  InventoryItemComponent inventoryComponent = InventoryItemComponent.Cast(character.FindComponent(InventoryItemComponent));
361  if (!inventoryComponent)
362  return;
363 
364  //--- Clone character using inventory preview function so we can play animations on it
365  IEntity clone = inventoryComponent.CreatePreviewEntity(GetWorld(), GetWorld().GetCurrentCameraId());
366  if (!clone)
367  return;
368 
369  //--- Swap weapons
370  if (m_sNewWeaponMesh != m_sCurrentWeaponMesh)
371  {
372  IEntity currentWeapon, newWeapon;
373  TNodeId currentPivot, newPivot;
374  vector currentLocalTransform[4], newLocalTransform[4];
375 
376  IEntity child = clone.GetChildren();
377  while (child)
378  {
379  VObject mesh = child.GetVObject();
380  if (mesh)
381  {
382  if (mesh.GetResourceName() == m_sCurrentWeaponMesh)
383  {
384  currentWeapon = child;
385  currentPivot = child.GetPivot();
386  child.GetLocalTransform(currentLocalTransform);
387  }
388  if (mesh.GetResourceName() == m_sNewWeaponMesh)
389  {
390  newWeapon = child;
391  newPivot = child.GetPivot();
392  child.GetLocalTransform(newLocalTransform);
393  }
394  }
395  child = child.GetSibling();
396  }
397 
398  clone.AddChild(newWeapon, currentPivot);
399  newWeapon.SetLocalTransform(currentLocalTransform);
400 
401  clone.AddChild(currentWeapon, newPivot);
402  currentWeapon.SetLocalTransform(newLocalTransform);
403  }
404 
405 
406  SCR_EntityHelper.DeleteEntityAndChildren(character);
407  character = clone;
408  character.SetTransform(transform);
409  }
410  protected void SetPose(IEntity entity)
411  {
412  if (m_PosesGraph.IsEmpty() && m_PosesInstance.IsEmpty() && m_sStartNode.IsEmpty())
413  return;
414 
415  PreviewAnimationComponent animComponent = PreviewAnimationComponent.Cast(entity.FindComponent(PreviewAnimationComponent));
416  animComponent.SetGraphResource(entity, m_PosesGraph, m_PosesInstance, m_sStartNode);
417 
418  //animComponent.SetIkState(true, true);
419  //animComponent.SetHandsIKPose(entity, m_PosesGraph);
420 
421  // Perform one frame step to apply animations immediately
422  animComponent.UpdateFrameStep(entity, 1.0 / 30.0);
423 
424  // Find variable that we want to change
425  int poseVar = animComponent.BindIntVariable(m_sPoseVar);
426  if (poseVar != -1)
427  {
428  // change pose
429  animComponent.SetIntVariable(poseVar, m_iPoseID);
430 
431  // Set hands IK
432  int armIkVar = animComponent.BindIntVariable("ArmIK");
433  if (armIkVar != -1)
434  {
435  animComponent.SetIntVariable(armIkVar, m_iArmIK);
436  animComponent.SetHandsIKPose(entity, m_ArmIKResource);
437  }
438 
439  // Perform one frame step to submit graph variable change
440  animComponent.UpdateFrameStep(entity, 1.0 / 30.0);
441  }
442  else
443  {
444  Debug.Error2(Type().ToString(), string.Format("Unable to set character pose at positon '%1'!", GetPositionName()));
445  }
446  }
447  protected void AddSubPosition(SCR_EditorImagePositionEntity subPosition)
448  {
449  m_aSubPositions.Insert(subPosition.GetPriority(), subPosition);
450  }
451  protected void UpdateNearbyEntities()
452  {
453  m_aCurrentNearbyEntities.Clear();
454  GetWorld().QueryEntitiesByAABB(GetOrigin() + vector.One * -128, GetOrigin() + vector.One * 128, QueryEntitiesCallback);
455  }
456  protected bool QueryEntitiesCallback(IEntity e)
457  {
458  m_aCurrentNearbyEntities.Insert(e);
459  return true;
460  }
461  protected string GetPositionName()
462  {
463  if (GetName().IsEmpty())
464  return GetOrigin().ToString();
465  else
466  return GetName();
467  }
468  event void EOnImagePositonActivate(IEntity entity)
469  {
470  }
471 
472  override void EOnInit(IEntity owner)
473  {
474  if (SCR_Global.IsEditMode(this))
475  return;
476 
478  if (!manager)
479  {
480  Debug.Error2(Type().ToString(), "SCR_EditorImageGeneratorEntity is missing in the world!");
481  return;
482  }
483 
484  if (m_Parent)
485  {
486  //--- Sub-position
487  m_Parent.AddSubPosition(this);
488  }
489  else
490  {
491  //--- Main position
492  SCR_CameraBase camera;
493 
494  //--- Find referenced camera entities
495  for (int i = 0, count = m_aCameraNames.Count(); i < count; i++)
496  {
497  camera = SCR_CameraBase.Cast(GetWorld().FindEntityByName(m_aCameraNames[i]));
498  if (camera && !m_aCameras.Contains(camera))
499  m_aCameras.Insert(camera);
500  }
501 
502  //--- Find child camera entities
503  IEntity child = GetChildren();
504  while (child)
505  {
506  camera = SCR_CameraBase.Cast(child);
507  if (camera && !m_aCameras.Contains(camera))
508  m_aCameras.Insert(camera);
509 
510  child = child.GetSibling();
511  }
512 
513  if (m_aCameras.IsEmpty())
514  {
515  Print("SCR_EditorImagePositionEntity is missing child entity of type SCR_CameraBase!", LogLevel.WARNING);
516  return;
517  }
518 
519  manager.AddPosition(this);
520  }
521 
522  //--- Get nearby entities
523  UpdateNearbyEntities();
524  m_aOriginalNearbyEntities.Copy(m_aCurrentNearbyEntities);
525  }
526  void SCR_EditorImagePositionEntity(IEntitySource src, IEntity parent)
527  {
528  m_Parent = SCR_EditorImagePositionEntity.Cast(parent);
529 
530  if (SCR_Global.IsEditMode(this))
531  {
532  if (m_PreviewMesh)
533  {
534  Resource resource = Resource.Load(m_PreviewMesh);
535  if (!resource.IsValid())
536  {
537  Print("Cannot load " + m_PreviewMesh + " | " + FilePath.StripPath(__FILE__) + ":" + __LINE__, LogLevel.WARNING);
538  return;
539  }
540 
541  SetObject(resource.GetResource().ToVObject(), "");
542  }
543 
544  return;
545  }
546 
547  SetEventMask(EntityEvent.INIT);
548  }
550  {
551  WorldEditorAPI api = _WB_GetEditorAPI();
552  if (api && api.IsEntitySelected(api.EntityToSource(this)))
553  SCR_EditorImageGeneratorEntity.AddSelectedPosition(this);
554  }
555  override void _WB_AfterWorldUpdate(float timeSlice)
556  {
557  if (m_Labels.IsEmpty())
558  return;
559 
560  string name = "";
561  for (int i = 0, count = m_Labels.Count(); i < count; i++)
562  {
563  if (i != 0)
564  {
565  if (i % 2 == 0)
566  name += ",\n";
567  else
568  name += ", ";
569  }
570 
571  name += typename.EnumToString(EEditableEntityLabel, m_Labels[i]);
572  }
573 
574  float fontSize = 12;
575  if (m_Parent)
576  fontSize = 8;
577 
578  vector pos = GetOrigin();
579  DebugTextWorldSpace.Create(GetWorld(), name, DebugTextFlags.CENTER | DebugTextFlags.FACE_CAMERA | DebugTextFlags.ONCE, pos[0], pos[1], pos[2], fontSize, Color.WHITE, ARGBF(1, 0.5, 0, 1));
580  }
581 #endif
582 };
WeatherStateTransitionManager
Definition: WeatherStateTransitionManager.c:7
ChimeraWorld
Definition: ChimeraWorld.c:12
EEditableEntityLabel
EEditableEntityLabel
Definition: EEditableEntityLabel.c:1
SCR_EntityHelper
Definition: SCR_EntityHelper.c:1
SCR_Enum
Definition: SCR_Enum.c:1
GetName
string GetName()
Definition: SCR_ScenarioFrameworkLayerBase.c:85
EntityEditorProps
enum EQueryType EntityEditorProps(category:"GameScripted/Sound", description:"THIS IS THE SCRIPT DESCRIPTION.", color:"0 0 255 255")
Definition: SCR_AmbientSoundsComponent.c:12
GetGame
ArmaReforgerScripted GetGame()
Definition: game.c:1424
m_fDelay
protected float m_fDelay
Definition: SCR_TooltipManagerEditorUIComponent.c:8
SCR_EditableEntityUIInfo
Definition: SCR_EditableEntityUIInfo.c:2
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition: SCR_RespawnBriefingComponent.c:17
m_Entity
enum EAITargetInfoCategory m_Entity
GenericEntity
SCR_GenericBoxEntityClass GenericEntity
FindEntityByName
IEntity FindEntityByName(string name)
Definition: SCR_ScenarioFrameworkActionsGetters.c:40
GetPriority
int GetPriority()
Definition: SCR_BaseManualCameraComponent.c:107
GetOrigin
vector GetOrigin()
Definition: SCR_AIUtilityComponent.c:279
SCR_CameraBase
Definition: SCR_CameraBase.c:9
InventoryStorageManagerComponent
Definition: InventoryStorageManagerComponent.c:12
Attribute
typedef Attribute
Post-process effect of scripted camera.
BaseWeaponComponent
Definition: BaseWeaponComponent.c:12
m_iDay
protected int m_iDay
Definition: SCR_WristwatchComponent.c:52
m_fTime
float m_fTime
Definition: SCR_CharacterCommandSwim.c:221
SCR_EditorImageGeneratorEntity
Definition: SCR_EditorImageGeneratorEntity.c:12
SCR_EditableEntityComponent
Definition: SCR_EditableEntityComponent.c:13
EOnInit
override void EOnInit(IEntity owner)
Definition: SCR_AIConfigComponent.c:79
InventoryItemComponent
Definition: InventoryItemComponent.c:12
SCR_EditorImagePositionEntityClass
Definition: SCR_EditorImagePositionEntity.c:2
SCR_EditorImagePositionEntity
Definition: SCR_EditorImagePositionEntity.c:12
SCR_Global
Definition: Functions.c:6
SCR_AIGroup
Definition: SCR_AIGroup.c:68
EWeaponType
EWeaponType
Definition: EWeaponType.c:12
GetChildren
void GetChildren(out array< SCR_ScenarioFrameworkLayerBase > children)
Definition: SCR_ScenarioFrameworkLayerBase.c:359
params
Configs ServerBrowser KickDialogs params
Definition: SCR_NotificationSenderComponent.c:24
SCR_SlotCompositionComponent
Entity composition which is supposed to fit into a slot.
Definition: SCR_SlotCompositionComponent.c:44
m_iPriority
int m_iPriority
Definition: SCR_AITalkRequest.c:28
category
params category
Definition: SCR_VehicleDamageManagerComponent.c:180