172 {
174 if (!data.CanPlay())
175 return;
176
179 {
180 SurfaceDetectionParameters surfaceParams = new SurfaceDetectionParameters();
182 SurfaceDetectionResult surfaceResult = new SurfaceDetectionResult();
183 surfaceParams.
position = parent.GetPosition();
184 g_Game.GetSurface(surfaceParams, surfaceResult);
185 surfaceInfo = surfaceResult.
surface;
186 }
187
188
189 if(data.m_EffectId == -1)
190 {
192 if (data.m_Position == "-1 -1 -1")
193 return;
194
195 data.m_Effect.ParticleParamsOverride(data.m_ParticleParamsData);
196 data.m_EffectId = SEffectManager.PlayOnObject(data.m_Effect, parent, data.m_Position, data.m_Orientation);
197
199 data.MarkPlayed();
200 }
201 else
202 {
204 if (!data.m_Effect.IsPlaying())
205 {
206 data.m_Effect.Start();
207 data.m_ParticleParamsData.ClearAll();
208
210 data.MarkPlayed();
211 }
212
213 data.m_Effect.SelectFromSurface(surfaceInfo);
214
215 Particle particle = Particle.Cast(data.m_Effect.GetParticle());
216 if (particle)
217 {
218 data.m_Effect.ParticleParamsOverride(data.m_ParticleParamsData);
219 }
220 }
221 }
vector position
3D position to trace the surface from
UseObjectsMode syncMode
See UseObjectsMode, SurfaceTraceType.Roadway only.
SurfaceInfo surface
Returned SurfaceInfo, plain pointer.
SurfaceInfo m_SurfaceInfo
bool m_SurfaceInfoOverriden