DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ImpactEffects.c
См. документацию.
9
10class ImpactEffectsData
11{
17 string m_Surface;
18 string m_AmmoType;
24
25
26}
27
29{
32
36
42 static int PLASTIC = RegisterSurface("Hit_Plastic");
43 static int SAND = RegisterSurface("Hit_Sand");
44 static int DESERT_SAND = RegisterSurface("Hit_Desert_Sand");
45 static int TEXTILE = RegisterSurface("Hit_Textile");
46 static int CONCRETE = RegisterSurface("Hit_Concrete");
47 static int GRAVEL = RegisterSurface("Hit_Gravel");
48 static int DIRT = RegisterSurface("Hit_Dirt");
49 static int FOLIAGE = RegisterSurface("Hit_Foliage");
50 static int FOLIAGE_GREEN = RegisterSurface("Hit_Foliage_Green");
51 static int FOLIAGE_CONIFER = RegisterSurface("Hit_Foliage_Conifer");
52 static int GRASS = RegisterSurface("Hit_Grass");
53 static int WOOD = RegisterSurface("Hit_Wood");
54 static int METAL = RegisterSurface("Hit_Metal");
55 static int GLASS = RegisterSurface("Hit_Glass");
56 static int GLASS_THIN = RegisterSurface("Hit_Glass_Thin");
57 static int WATER = RegisterSurface("Hit_Water");
58 static int RUBBER = RegisterSurface("Hit_Rubber");
59 static int PLASTER = RegisterSurface("Hit_Plaster");
60 static int ICE = RegisterSurface("Hit_Ice");
61 static int SNOW = RegisterSurface("Hit_Snow");
62 static int MEATBONES = RegisterSurface("Hit_MeatBones");
63 static int MEATBONES_SHOVEL = RegisterSurface("Hit_MeatBones_MeleeShovel");
64 static int MEATBONES_PIPEWRENCH = RegisterSurface("Hit_MeatBones_MeleePipeWrench");
65 static int MEATBONES_WRENCH = RegisterSurface("Hit_MeatBones_MeleeWrench");
66 static int MEATBONES_FIST = RegisterSurface("Hit_MeatBones_MeleeFist");
67 static int UNDEFINED = RegisterSurface("Hit_Undefined");
68 static int ERROR_NO_MATERIAL = RegisterSurface("Hit_ErrorNoMaterial");
70
76 static int FIST = RegisterIgnoredAmmo("MeleeFist");
77 static int FIST_HEAVY = RegisterIgnoredAmmo("MeleeFist_Heavy");
78 static int SOFT = RegisterIgnoredAmmo("MeleeSoft");
79 static int SOFT_HEAVY = RegisterIgnoredAmmo("MeleeSoft_Heavy");
80 static int DUMMY = RegisterIgnoredAmmo("Dummy_Light");
81 static int DUMMY_HEAVY = RegisterIgnoredAmmo("Dummy_Heavy");
83
84 static int RegisterSurface(string surface)
85 {
86 if (!m_ImpactEffect)
88
89 m_ImpactEffect.Insert(surface, surface.ToType());
90
92 }
93
94 static bool UnregisterSurface(string surface)
95 {
97 {
98 m_ImpactEffect.Remove(surface);
99 return !m_ImpactEffect.Contains(surface);
100 }
101
102 return false;
103 }
104
105 static int RegisterIgnoredAmmo(string ammo)
106 {
107 if (!m_IgnoredAmmo)
109
111
113
115 }
116
117 static bool UnregisterIgnoredAmmo(string ammo)
118 {
119 if (m_IgnoredAmmo)
120 {
121 m_IgnoredAmmo.Remove(ammo);
122 return !m_IgnoredAmmo.Contains(ammo);
123 }
124
125 return false;
126 }
127
128 static typename GetImpactEffect(string surface, string ammoType)
129 {
130 string key = string.Format("%1_%2", surface, ammoType);
131
132 typename eff_type = m_ImpactEffect[key];
133
134 if (eff_type)
135 return eff_type;
136 else
137 return m_ImpactEffect[surface];
138 }
139
140 static void EvaluateImpactEffectEx(ImpactEffectsData pData)
141 {
142 EvaluateImpactEffect(pData.m_DirectHit, pData.m_ComponentIndex, pData.m_Surface, pData.m_Position, pData.m_ImpactType, pData.m_SurfaceNormal, pData.m_ExitPosition, pData.m_InSpeed, pData.m_OutSpeed, pData.m_IsDeflected, pData.m_AmmoType, pData.m_IsWater);
143 }
144
145 static void EvaluateImpactEffect(Object directHit, int componentIndex, string surface, vector pos, int impact_type, vector surfNormal, vector exitPos, vector inSpeed, vector outSpeed, bool deflected, string ammoType, bool isWater)
146 {
147 // No impact effects wanted for this ammo
148 if (m_IgnoredAmmo.Contains(ammoType))
149 return;
150
151 if (impact_type == ImpactTypes.UNKNOWN)
152 impact_type = ImpactTypes.STOP;
153
154 if (deflected)
155 impact_type = ImpactTypes.RICOCHET;
156 else if (outSpeed)
157 impact_type = ImpactTypes.PENETRATE;
158
159 if (isWater)
160 surface = "Hit_Water";
161
162 EffBulletImpactBase eff = EffBulletImpactBase.Cast(GetImpactEffect(surface, ammoType).Spawn());
163
164 if ( !eff && surface == "" ) // handle undefined surface
165 {
166 eff = EffBulletImpactBase.Cast( surface.ToType().Spawn() );
167
168 if (eff)
169 {
170 RegisterSurface(surface);
171 ErrorEx(string.Format("Unregistered surface for bullet impact effect (%1). Register this surface in ImpactMaterials (Script) for better performance.", surface), ErrorExSeverity.WARNING);
172 }
173 else
174 {
175 if (directHit)
176 {
177 string object_type = directHit.GetType();
178
179 if ( object_type == "" )
180 object_type = "OBJECT_WITHOUT_CONFIG_CLASS";
181
182 ErrorEx(string.Format("Object '%1' with model file: %2 has undefined 'Hit_...' material! Cannot play impact effect.", object_type, directHit.GetShapeName()));
183 eff = EffBulletImpactBase.Cast(GetImpactEffect("Hit_ErrorNoMaterial", ammoType).Spawn());
184 }
185 }
186 }
187
188 if ( !eff && surface != "" )
189 {
190 ErrorEx(string.Format("Unregistered surface impact material <%1>! Register this surface in ImpactMaterials (Script).", surface));
191 eff = EffBulletImpactBase.Cast(GetImpactEffect("Hit_Undefined", ammoType).Spawn());
192 }
193
194 if (eff)
195 {
196 eff.EvaluateEffect(directHit, componentIndex, pos, impact_type, surfNormal, exitPos, inSpeed, outSpeed, ammoType);
197 eff.SetAutodestroy(true);
198 SEffectManager.PlayInWorld(eff, pos);
199 }
200 }
201}
void Spawn()
spawn damage trigger
Определения AreaDamageManager.c:70
@ UNKNOWN
24 - Any other error. Can be returned from any call.
Определения BIOSErrorModule.c:56
vector m_Position
Cached world position.
Определения Effect.c:43
int m_ImpactType
Определения ImpactEffects.c:13
enum ImpactTypes m_DirectHit
vector m_InSpeed
Определения ImpactEffects.c:19
bool m_IsDeflected
Определения ImpactEffects.c:15
vector m_SurfaceNormal
Определения ImpactEffects.c:22
bool m_IsWater
Определения ImpactEffects.c:16
vector m_OutSpeed
Определения ImpactEffects.c:20
string m_AmmoType
Определения ImpactEffects.c:18
int m_ComponentIndex
Определения ImpactEffects.c:14
vector m_ExitPosition
Определения ImpactEffects.c:23
string m_Surface
Определения ImpactEffects.c:17
ImpactTypes
Определения ImpactEffects.c:2
@ RICOCHET
Определения ImpactEffects.c:6
@ MELEE
Определения ImpactEffects.c:7
@ PENETRATE
Определения ImpactEffects.c:5
void EvaluateEffect(Object directHit, int componentIndex, vector pos, int impact_type, vector surfNormal, vector exitPos, vector inSpeed, vector outSpeed, string ammoType)
Определения BulletImpactBase.c:72
static int ERROR_NO_MATERIAL
Определения ImpactEffects.c:68
static int CONCRETE
Определения ImpactEffects.c:46
static int RegisterSurface(string surface)
Определения ImpactEffects.c:84
static int MEATBONES_FIST
Определения ImpactEffects.c:66
static int SOFT_HEAVY
Определения ImpactEffects.c:79
static bool UnregisterSurface(string surface)
Определения ImpactEffects.c:94
static int FOLIAGE_CONIFER
Определения ImpactEffects.c:51
static int RegisterIgnoredAmmo(string ammo)
Определения ImpactEffects.c:105
static int TEXTILE
Определения ImpactEffects.c:45
static int ICE
Определения ImpactEffects.c:60
static int GLASS_THIN
Определения ImpactEffects.c:56
static int SNOW
Определения ImpactEffects.c:61
static int FIST_HEAVY
Определения ImpactEffects.c:77
static int WATER
Определения ImpactEffects.c:57
static void EvaluateImpactEffect(Object directHit, int componentIndex, string surface, vector pos, int impact_type, vector surfNormal, vector exitPos, vector inSpeed, vector outSpeed, bool deflected, string ammoType, bool isWater)
Определения ImpactEffects.c:145
static GetImpactEffect(string surface, string ammoType)
Определения ImpactEffects.c:128
static int PLASTIC
Определения ImpactEffects.c:42
static int MEATBONES_SHOVEL
Определения ImpactEffects.c:63
static int FIST
Определения ImpactEffects.c:76
static ref map< string, typename > m_ImpactEffect
Определения ImpactEffects.c:30
static int SOFT
Определения ImpactEffects.c:78
static bool UnregisterIgnoredAmmo(string ammo)
Определения ImpactEffects.c:117
static int GRAVEL
Определения ImpactEffects.c:47
static int MEATBONES_PIPEWRENCH
Определения ImpactEffects.c:64
static int RUBBER
Определения ImpactEffects.c:58
static int WOOD
Определения ImpactEffects.c:53
static int PLASTER
Определения ImpactEffects.c:59
static int GLASS
Определения ImpactEffects.c:55
static int SAND
Определения ImpactEffects.c:43
static int FOLIAGE
Определения ImpactEffects.c:49
static int m_LastRegisteredIgnoredAmmo
Определения ImpactEffects.c:35
static int DUMMY
Определения ImpactEffects.c:80
static void EvaluateImpactEffectEx(ImpactEffectsData pData)
Определения ImpactEffects.c:140
static int GRASS
Определения ImpactEffects.c:52
static int METAL
Определения ImpactEffects.c:54
static int DUMMY_HEAVY
Определения ImpactEffects.c:81
static int DIRT
Определения ImpactEffects.c:48
static int UNDEFINED
Определения ImpactEffects.c:67
static int DESERT_SAND
Определения ImpactEffects.c:44
static int MEATBONES_WRENCH
Определения ImpactEffects.c:65
static int MEATBONES
Определения ImpactEffects.c:62
static int m_LastRegisteredMaterial
Определения ImpactEffects.c:31
static ref map< string, int > m_IgnoredAmmo
Map of ammo which will not spawn any impact effect.
Определения ImpactEffects.c:34
static int FOLIAGE_GREEN
Определения ImpactEffects.c:50
Определения ImpactEffects.c:29
Определения ObjectTyped.c:2
static int PlayInWorld(notnull Effect eff, vector pos)
Play an Effect.
Определения EffectManager.c:47
Manager class for managing Effect (EffectParticle, EffectSound)
Определения EffectManager.c:6
Определения CachedEquipmentStorage.c:4
Определения EnConvert.c:119
ErrorExSeverity
Определения EnDebug.c:62
enum ShapeType ErrorEx
proto native ToType()
Returns internal type representation. Can be used in runtime, or cached in variables and used for fas...
@ STOP
Определения EnWidgets.c:508