5class SCR_DamageAreaComponent : DamageAreaComponent
10 protected ref SCR_DebugShapeManager m_DebugShapeMgr =
new SCR_DebugShapeManager();
14 SCR_DebugShapeManager GetDebugShapeMgr()
16 return m_DebugShapeMgr;
22 m_DebugShapeMgr.Clear();
25 DrawCustomShapes(owner);
29 override void _WB_SetTransform(
IEntity owner, inout vector mat[4], IEntitySource src)
31 m_DebugShapeMgr.Clear();
33 DrawCustomShapes(owner);
39 m_DebugShapeMgr.Clear();
41 DrawCustomShapes(owner);
43 array<ref DamageArea> damageAreas = {};
46 SCR_BaseDamageAreaShape shape;
47 bool somethingChanged;
48 foreach (DamageArea area : damageAreas)
53 shape = SCR_BaseDamageAreaShape.Cast(area.GetShape());
57 somethingChanged = shape._WB_OnKeyChanged(owner, src, key, ownerContainers, parent) || somethingChanged;
60 return somethingChanged;
66 protected void DrawCustomShapes(
IEntity owner)
68 array<ref DamageArea> damageAreas = {};
71 SCR_BaseDamageAreaShape shape;
72 foreach (DamageArea area : damageAreas)
77 shape = SCR_BaseDamageAreaShape.Cast(area.GetShape());
81 shape.DrawDebug(owner, m_DebugShapeMgr);
88 protected void DrawMarker(
IEntity owner)
91 m_DebugShapeMgr.AddArrow(origin + vector.Up * 5, origin, 1);
92 string prefab = GetPrefabname(owner);
96 m_DebugShapeMgr.AddText(
"Damage area\n" + prefab, origin + vector.Up * 5.5, 0.5);
103 static string GetPrefabname(
IEntity owner)
105 string prefab = SCR_ResourceNameUtils.GetPrefabName(owner);
106 const int lastSlash = prefab.LastIndexOf(SCR_StringHelper.SLASH);
110 return prefab.Substring(lastSlash + 1, prefab.Length() - lastSlash - 1);
130 Print(
"SCR_DamageAreaComponent->InitializeShapes: " + owner +
" contains null areas!!!",
LogLevel.ERROR);
137 Print(
"SCR_DamageAreaComponent->InitializeShapes: " + owner +
" has a " + area.Type().ToString() +
" which contains null shape!!!",
LogLevel.ERROR);
166 Print(
"SCR_DamageAreaComponent->EOnInit: " + GetPrefabname(owner) +
" contains null areas at position " + i +
"!!!",
LogLevel.ERROR);
171 if (!area.GetShape())
173 Print(
"SCR_DamageAreaComponent->EOnInit: " + GetPrefabname(owner) +
" is missing a shape for area with id = " + i,
LogLevel.ERROR);
ArmaReforgerScripted GetGame()
SCR_DamageAreaComponentClass m_aDamageAreas
void InitializeShapes(IEntity owner, inout array< ref DamageArea > damageAreas=null)
override void _WB_OnInit(IEntity owner, inout vector mat[4], IEntitySource src)
override bool _WB_OnKeyChanged(IEntity owner, BaseContainer src, string key, BaseContainerList ownerContainers, IEntity parent)
Any property value has been changed. You can use editor API here and do some additional edit actions ...
enum EVehicleType IEntity
proto external vector GetOrigin()
bool IsRegisteredAutomatically()
override void EOnInit(IEntity owner)
DamageAreaComponentClass ScriptComponentClass RegisterDamageArea(notnull DamageArea area)
proto external void UnregisterDamageArea(notnull DamageArea area)
proto external void GetDamageAreas(out notnull array< ref DamageArea > damageAreas)
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
Enum with severity of the logging message.
EntityEvent
Various entity events.