DayZ 1.30
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 MUD_BRICK = RegisterSurface("Hit_Mud_Brick");
46 static int TEXTILE = RegisterSurface("Hit_Textile");
47 static int CONCRETE = RegisterSurface("Hit_Concrete");
48 static int GRAVEL = RegisterSurface("Hit_Gravel");
49 static int DIRT = RegisterSurface("Hit_Dirt");
50 static int FOLIAGE = RegisterSurface("Hit_Foliage");
51 static int FOLIAGE_GREEN = RegisterSurface("Hit_Foliage_Green");
52 static int FOLIAGE_CONIFER = RegisterSurface("Hit_Foliage_Conifer");
53 static int GRASS = RegisterSurface("Hit_Grass");
54 static int WOOD = RegisterSurface("Hit_Wood");
55 static int METAL = RegisterSurface("Hit_Metal");
56 static int GLASS = RegisterSurface("Hit_Glass");
57 static int GLASS_THIN = RegisterSurface("Hit_Glass_Thin");
58 static int WATER = RegisterSurface("Hit_Water");
59 static int RUBBER = RegisterSurface("Hit_Rubber");
60 static int PLASTER = RegisterSurface("Hit_Plaster");
61 static int ICE = RegisterSurface("Hit_Ice");
62 static int SNOW = RegisterSurface("Hit_Snow");
63 static int MEATBONES = RegisterSurface("Hit_MeatBones");
64 static int MEATBONES_SHOVEL = RegisterSurface("Hit_MeatBones_MeleeShovel");
65 static int MEATBONES_PIPEWRENCH = RegisterSurface("Hit_MeatBones_MeleePipeWrench");
66 static int MEATBONES_WRENCH = RegisterSurface("Hit_MeatBones_MeleeWrench");
67 static int MEATBONES_FIST = RegisterSurface("Hit_MeatBones_MeleeFist");
68 static int UNDEFINED = RegisterSurface("Hit_Undefined");
69 static int ERROR_NO_MATERIAL = RegisterSurface("Hit_ErrorNoMaterial");
71
77 static int FIST = RegisterIgnoredAmmo("MeleeFist");
78 static int FIST_HEAVY = RegisterIgnoredAmmo("MeleeFist_Heavy");
79 static int SOFT = RegisterIgnoredAmmo("MeleeSoft");
80 static int SOFT_HEAVY = RegisterIgnoredAmmo("MeleeSoft_Heavy");
81 static int DUMMY = RegisterIgnoredAmmo("Dummy_Light");
82 static int DUMMY_HEAVY = RegisterIgnoredAmmo("Dummy_Heavy");
84
85 static int RegisterSurface(string surface)
86 {
87 if (!m_ImpactEffect)
89
90 m_ImpactEffect.Insert(surface, surface.ToType());
91
93 }
94
95 static bool UnregisterSurface(string surface)
96 {
98 {
99 m_ImpactEffect.Remove(surface);
100 return !m_ImpactEffect.Contains(surface);
101 }
102
103 return false;
104 }
105
106 static int RegisterIgnoredAmmo(string ammo)
107 {
108 if (!m_IgnoredAmmo)
110
112
114
116 }
117
118 static bool UnregisterIgnoredAmmo(string ammo)
119 {
120 if (m_IgnoredAmmo)
121 {
122 m_IgnoredAmmo.Remove(ammo);
123 return !m_IgnoredAmmo.Contains(ammo);
124 }
125
126 return false;
127 }
128
129 static typename GetImpactEffect(string surface, string ammoType)
130 {
131 string key = string.Format("%1_%2", surface, ammoType);
132
133 typename eff_type = m_ImpactEffect[key];
134
135 if (eff_type)
136 return eff_type;
137 else
138 return m_ImpactEffect[surface];
139 }
140
141 static void EvaluateImpactEffectEx(ImpactEffectsData pData)
142 {
143 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);
144 }
145
146 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)
147 {
148 // No impact effects wanted for this ammo
149 if (m_IgnoredAmmo.Contains(ammoType))
150 return;
151
152 if (impact_type == ImpactTypes.UNKNOWN)
153 impact_type = ImpactTypes.STOP;
154
155 if (deflected)
156 impact_type = ImpactTypes.RICOCHET;
157 else if (outSpeed)
158 impact_type = ImpactTypes.PENETRATE;
159
160 if (isWater)
161 surface = "Hit_Water";
162
164
165 if ( !eff && surface == "" ) // handle undefined surface
166 {
167 eff = EffBulletImpactBase.Cast( surface.ToType().Spawn() );
168
169 if (eff)
170 {
171 RegisterSurface(surface);
172 ErrorEx(string.Format("Unregistered surface for bullet impact effect (%1). Register this surface in ImpactMaterials (Script) for better performance.", surface), ErrorExSeverity.WARNING);
173 }
174 else
175 {
176 if (directHit)
177 {
178 string object_type = directHit.GetType();
179
180 if ( object_type == "" )
181 object_type = "OBJECT_WITHOUT_CONFIG_CLASS";
182
183 ErrorEx(string.Format("Object '%1' with model file: %2 has undefined 'Hit_...' material! Cannot play impact effect.", object_type, directHit.GetShapeName()));
184 eff = EffBulletImpactBase.Cast(GetImpactEffect("Hit_ErrorNoMaterial", ammoType).Spawn());
185 }
186 }
187 }
188
189 if ( !eff && surface != "" )
190 {
191 ErrorEx(string.Format("Unregistered surface impact material <%1>! Register this surface in ImpactMaterials (Script).", surface));
192 eff = EffBulletImpactBase.Cast(GetImpactEffect("Hit_Undefined", ammoType).Spawn());
193 }
194
195 if (eff)
196 {
197 eff.EvaluateEffect(directHit, componentIndex, pos, impact_type, surfNormal, exitPos, inSpeed, outSpeed, ammoType);
198 eff.SetAutodestroy(true);
199 SEffectManager.PlayInWorld(eff, pos);
200 }
201 }
202}
void Spawn()
spawn damage trigger
Определения AreaDamageManager.c:70
@ UNKNOWN
24 - Any other error. Can be returned from any call.
Определения BIOSErrorModule.c:56
string ammoType
Определения DustKickupEffects.c:24
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:69
static int CONCRETE
Определения ImpactEffects.c:47
static int RegisterSurface(string surface)
Определения ImpactEffects.c:85
static int MEATBONES_FIST
Определения ImpactEffects.c:67
static int SOFT_HEAVY
Определения ImpactEffects.c:80
static bool UnregisterSurface(string surface)
Определения ImpactEffects.c:95
static int MUD_BRICK
Определения ImpactEffects.c:45
static int FOLIAGE_CONIFER
Определения ImpactEffects.c:52
static int RegisterIgnoredAmmo(string ammo)
Определения ImpactEffects.c:106
static int TEXTILE
Определения ImpactEffects.c:46
static int ICE
Определения ImpactEffects.c:61
static int GLASS_THIN
Определения ImpactEffects.c:57
static int SNOW
Определения ImpactEffects.c:62
static int FIST_HEAVY
Определения ImpactEffects.c:78
static int WATER
Определения ImpactEffects.c:58
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:146
static GetImpactEffect(string surface, string ammoType)
Определения ImpactEffects.c:129
static int PLASTIC
Определения ImpactEffects.c:42
static int MEATBONES_SHOVEL
Определения ImpactEffects.c:64
static int FIST
Определения ImpactEffects.c:77
static ref map< string, typename > m_ImpactEffect
Определения ImpactEffects.c:30
static int SOFT
Определения ImpactEffects.c:79
static bool UnregisterIgnoredAmmo(string ammo)
Определения ImpactEffects.c:118
static int GRAVEL
Определения ImpactEffects.c:48
static int MEATBONES_PIPEWRENCH
Определения ImpactEffects.c:65
static int RUBBER
Определения ImpactEffects.c:59
static int WOOD
Определения ImpactEffects.c:54
static int PLASTER
Определения ImpactEffects.c:60
static int GLASS
Определения ImpactEffects.c:56
static int SAND
Определения ImpactEffects.c:43
static int FOLIAGE
Определения ImpactEffects.c:50
static int m_LastRegisteredIgnoredAmmo
Определения ImpactEffects.c:35
static int DUMMY
Определения ImpactEffects.c:81
static void EvaluateImpactEffectEx(ImpactEffectsData pData)
Определения ImpactEffects.c:141
static int GRASS
Определения ImpactEffects.c:53
static int METAL
Определения ImpactEffects.c:55
static int DUMMY_HEAVY
Определения ImpactEffects.c:82
static int DIRT
Определения ImpactEffects.c:49
static int UNDEFINED
Определения ImpactEffects.c:68
static int DESERT_SAND
Определения ImpactEffects.c:44
static int MEATBONES_WRENCH
Определения ImpactEffects.c:66
static int MEATBONES
Определения ImpactEffects.c:63
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:51
Определения 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
Определения Transport.c:70
Определения 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