17 IEntity GetVehicleWeaponsRack(notnull
IEntity vehicle,
bool addIfAbsent =
true)
19 SlotManagerComponent slotManager = SlotManagerComponent.Cast(vehicle.FindComponent(SlotManagerComponent));
23 array<EntitySlotInfo> slots = {};
25 slotManager.GetSlotInfos(slots);
32 if (weaponRackSlot.GetAttachedEntity())
33 return weaponRackSlot.GetAttachedEntity();
36 return AddWeaponsRackToSlot(weaponRackSlot);
43 void GetVehicleWeapons(notnull
IEntity weaponsRack, out array<IEntity> weapons)
45 array<Managed> weaponSlots = {};
50 foreach (Managed comp : weaponSlots)
56 weapon = weaponSlot.GetWeaponEntity();
58 weapons.Insert(weapon);
65 ResourceName rackName = weaponRackSlot.GetDefaultWeaponRack();
66 if (rackName.IsEmpty())
70 if (!resource.IsValid())
77 weaponRackSlot.AttachEntity(weaponsRack);
82 bool CanReloadRocketPod(notnull
IEntity rocketPod)
84 SCR_RocketEjectorMuzzleComponent rocketMuzzle = SCR_RocketEjectorMuzzleComponent.Cast(rocketPod.FindComponent(SCR_RocketEjectorMuzzleComponent));
89 for (
int i, count = rocketMuzzle.GetBarrelsCount(); i < count; i++)
91 if (rocketMuzzle.CanReloadBarrel(i))
99 void ReloadRocketPod(notnull
IEntity rocketPod)
101 SCR_RocketEjectorMuzzleComponent rocketMuzzle = SCR_RocketEjectorMuzzleComponent.Cast(rocketPod.FindComponent(SCR_RocketEjectorMuzzleComponent));
105 ResourceName defaultRocketName = rocketMuzzle.GetDefaultRocketPrefab();
106 if (defaultRocketName.IsEmpty())
110 if (!resource.IsValid())
114 for (
int i = 0, count = rocketMuzzle.GetBarrelsCount(); i < count; i++)
116 if (!rocketMuzzle.CanReloadBarrel(i))
119 rocket =
GetGame().SpawnEntityPrefab(resource);
120 rocketMuzzle.ReloadBarrel(i, rocket);
125 void DisarmRocketPod(notnull
IEntity rocketPod)
127 SCR_RocketEjectorMuzzleComponent rocketMuzzle = SCR_RocketEjectorMuzzleComponent.Cast(rocketPod.FindComponent(SCR_RocketEjectorMuzzleComponent));
131 ResourceName defaultRocketName = rocketMuzzle.GetDefaultRocketPrefab();
132 if (defaultRocketName.IsEmpty())
136 if (!resource.IsValid())
140 for (
int i, count = rocketMuzzle.GetBarrelsCount(); i < count; i++)
142 if (rocketMuzzle.CanReloadBarrel(i))
145 rocketMuzzle.UnloadBarrel(i);