DayZ 1.26
DayZ Explorer by KGB
Загрузка...
Поиск...
Не найдено
Класс AreaDamageComponentRaycasted

Newer implementation equivalent of "AreaDamageRegularRaycasted", hitzone selection only. Подробнее...

+ Граф наследования:AreaDamageComponentRaycasted:

Защищенные члены

AreaDamageComponentData GetAreaDamageComponentData (Object object)
 
void ClearCache ()
 
string GetRaycastedHitZone (Object victim)
 
string GetFallbackHitZone (Object victim)
 

Закрытые члены

void AreaDamageComponentRaycasted (AreaDamageManager parent)
 
override void OnTriggerCreated ()
 
void SetRaycastSources (array< string > raycast_sources)
 
void SetRaycastSourcesVector (array< vector > raycast_sources)
 
void SetRaycastLength (float length)
 
override void OnStayFinishServerEvent ()
 

Закрытые данные

ref array< vectorm_RaycastSources
 
vector m_RaycastEndOffset
 
ref array< ref RaycastRVResultm_RaycastCache
 
int m_RaycastCachedIndex
 

Подробное описание

Newer implementation equivalent of "AreaDamageRegularRaycasted", hitzone selection only.

Конструктор(ы)

◆ AreaDamageComponentRaycasted()

12 {
14 m_RaycastEndOffset = "0 0.5 0";
15
18 }
ref array< vector > m_RaycastSources
Definition AreaDamageComponentRaycasted.c:5
ref array< ref RaycastRVResult > m_RaycastCache
Definition AreaDamageComponentRaycasted.c:8
int m_RaycastCachedIndex
Definition AreaDamageComponentRaycasted.c:9
vector m_RaycastEndOffset
Definition AreaDamageComponentRaycasted.c:6
Definition EntityAI.c:95

Перекрестные ссылки m_RaycastCache, m_RaycastCachedIndex, m_RaycastEndOffset и m_RaycastSources.

Методы

◆ ClearCache()

void ClearCache ( )
inlineprotected
65 {
66 m_RaycastCache.Clear();
68 }

Перекрестные ссылки m_RaycastCache и m_RaycastCachedIndex.

Используется в OnStayFinishServerEvent() и OnTriggerCreated().

◆ GetAreaDamageComponentData()

AreaDamageComponentData GetAreaDamageComponentData ( Object object)
inlineprotected
57 {
59 data.Hitzone = GetRaycastedHitZone(object);
60
61 return data;
62 }
Definition AreaDamageComponent.c:2
string GetRaycastedHitZone(Object victim)
Definition AreaDamageComponentRaycasted.c:70

Перекрестные ссылки GetRaycastedHitZone().

◆ GetFallbackHitZone()

string GetFallbackHitZone ( Object victim)
inlineprotected
122 {
123 Error(string.Format("[WARNING] :: [%1] :: [AreaDamageComponentRaycasted] :: No proper HitZone found for damaging %2, using fallback.",
124 m_Parent, Object.GetDebugName(victim)));
125
126 // Fallbacks, currently are implemented assuming that foot/leg damagezones would be desired to damage
127 if ( victim.IsInherited(DayZPlayer) || victim.IsInherited(DayZInfected) )
128 {
129 // Damage random leg since we don't know what part of player's body was caught in the trap.
130 if ( Math.RandomIntInclusive(0, 1) == 1 )
131 return "RightFoot";
132 return "LeftFoot";
133 }
134 else
135 {
137 victim.GetDamageZones(damageZones);
138
139 int nrOfDmgZones = damageZones.Count();
140
141 if (nrOfDmgZones > 0)
142 {
143 for (int z = 0; z < nrOfDmgZones; ++z)
144 {
145 if ( damageZones[z].Contains("Foot") || damageZones[z].Contains("Leg") )
146 return damageZones[z];
147 }
148
149 return damageZones.GetRandomElement();
150 }
151 else
152 return "";
153 }
154 }
Widget m_Parent
Definition SizeToChild.c:92
Definition ZombieBase.c:2
Definition DayZPlayerImplement.c:111
Definition EnMath.c:7
Definition ObjectTyped.c:2
void Error(string err)
Messagebox with error message.
Definition EnDebug.c:90
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].
Definition EnMath.c:54

Перекрестные ссылки Error(), m_Parent и Math::RandomIntInclusive().

Используется в GetRaycastedHitZone().

◆ GetRaycastedHitZone()

string GetRaycastedHitZone ( Object victim)
inlineprotected
71 {
73 for ( int c = 0; c < nrOfCachedResults; ++c )
74 {
76 if ( cachedRes.obj == victim )
77 return victim.GetDamageZoneNameByComponentIndex(cachedRes.component);
78 }
79
80 int nrOfSources = m_RaycastSources.Count();
82
83 string hitzone = "";
84
86
89 params.flags = CollisionFlags.ONLYDYNAMIC;
90
91 for ( int i = m_RaycastCachedIndex + 1; i < nrOfSources; ++i )
92 {
94
95 params.begPos = trigger.ModelToWorld( m_RaycastSources[i] );
96 params.endPos = params.begPos + m_RaycastEndOffset;
97
99 {
100 for ( int j = 0; j < victims.Count(); ++j )
101 {
103
104 if (res.obj == victim)
105 hitzone = victim.GetDamageZoneNameByComponentIndex(res.component);
106
107 if (res.obj.IsAnyInherited(m_DamageableTypes))
108 m_RaycastCache.Insert(res);
109 }
110
111 if ( !( hitzone == "") )
112 return hitzone;
113
114 victims.Clear();
115 }
116 }
117
119 }
string GetFallbackHitZone(Object victim)
Definition AreaDamageComponentRaycasted.c:121
Definition AreaDamageTriggerDirect.c:2
Definition DayZPhysics.c:124
static proto bool RaycastRVProxy(notnull RaycastRVParams in, out notnull array< ref RaycastRVResult > results, array< Object > excluded=null)
Definition DayZPhysics.c:50
Definition DayZPhysics.c:99
Definition EnConvert.c:106
static const vector Zero
Definition EnConvert.c:110
CollisionFlags
Definition EnDebug.c:141

Перекрестные ссылки GetFallbackHitZone(), m_Parent, m_RaycastCache, m_RaycastCachedIndex, m_RaycastEndOffset, m_RaycastSources, DayZPhysics::RaycastRVProxy() и vector::Zero.

Используется в GetAreaDamageComponentData().

◆ OnStayFinishServerEvent()

override void OnStayFinishServerEvent ( )
inlineprivate
50 {
51 super.OnStayFinishServerEvent();
52
53 ClearCache();
54 }
void ClearCache()
Definition AreaDamageComponentRaycasted.c:64

Перекрестные ссылки ClearCache().

◆ OnTriggerCreated()

override void OnTriggerCreated ( )
inlineprivate
21 {
22 super.OnTriggerCreated();
23
24 ClearCache();
25 }

Перекрестные ссылки ClearCache().

◆ SetRaycastLength()

void SetRaycastLength ( float length)
inlineprivate
45 {
47 }
proto native vector Vector(float x, float y, float z)
Vector constructor from components.

Перекрестные ссылки m_RaycastEndOffset и Vector().

◆ SetRaycastSources()

void SetRaycastSources ( array< string > raycast_sources)
inlineprivate
28 {
29 m_RaycastSources.Clear();
30
31 // convert Array of string to array of Vectors
32 int nrOfSources = raycast_sources.Count();
33 for ( int v = 0; v < nrOfSources; ++v)
34 {
35 m_RaycastSources.Insert(raycast_sources[v].ToVector());
36 }
37 }

Перекрестные ссылки m_RaycastSources.

◆ SetRaycastSourcesVector()

void SetRaycastSourcesVector ( array< vector > raycast_sources)
inlineprivate

Перекрестные ссылки m_RaycastSources.

Поля

◆ m_RaycastCache

ref array<ref RaycastRVResult> m_RaycastCache
private

◆ m_RaycastCachedIndex

int m_RaycastCachedIndex
private

◆ m_RaycastEndOffset

vector m_RaycastEndOffset
private

◆ m_RaycastSources


Объявления и описания членов класса находятся в файле: