MCPcopy Create free account
hub / github.com/carbonengine/trinity / SpawnOnce

Method SpawnOnce

trinity/Particle/Tr2GpuSharedEmitter.cpp:236–276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

234}
235
236void Tr2GpuSharedEmitter::SpawnOnce( const UpdateArguments& arguments, const Vector3& velocity, float scale, float rateModifier )
237{
238 if( !arguments.system || !m_enabled )
239 {
240 return;
241 }
242
243 auto emitter = m_emitter;
244 emitter.count = int( m_rate * rateModifier );
245
246 if( emitter.count )
247 {
248 emitter.radius *= scale;
249 emitter.minSpeed *= scale;
250 emitter.maxSpeed *= scale;
251
252 emitter.position = XMVector3TransformCoord( m_position, arguments.parentTransform );
253 emitter.positionPrevious = emitter.position;
254
255 emitter.velocity = velocity;
256 emitter.velocityPrevious = emitter.velocity;
257
258 emitter.direction = XMVector3TransformNormal( m_direction, arguments.parentTransform );
259 emitter.directionPrevious = emitter.direction;
260
261 auto id = m_id;
262 auto hash = m_paramsHash;
263 auto params = m_params;
264 if( scale != 1.0f )
265 {
266 params.sizes *= scale;
267 params.turbulenceAmplitude *= scale;
268 params.turbulenceFrequency = (uint32_t)( (float)params.turbulenceFrequency / scale );
269
270 hash = GetHash( params );
271 id = GetID( hash );
272 }
273
274 arguments.system->Emit( emitter, id, hash, params );
275 }
276}

Callers 1

UpdateSyncronousMethod · 0.80

Calls 2

GetIDFunction · 0.85
EmitMethod · 0.80

Tested by

no test coverage detected