ECHARM_multiple_scattering::ECHARM_multiple_scattering(ECHARM_crystal *Crystal,ECHARM_particle *Particle)
{
    InitializePointersMultipleScattering();
    SetParticle(Particle);
    SetCrystal(Crystal);
    SetRadiationLength("tsai");
}
ECHARM_simulation_integration_averaged::ECHARM_simulation_integration_averaged(ECHARM_strip* strip, ECHARM_particle* particle)
{
    InitializePointersChannelingSimulationAveraged();
    SetStrip(strip);
    SetParticle(particle);
    fMultipleScattering->SetCrystal(strip->GetCrystal());
    fMultipleScattering->SetParticle(particle);
}
Particle_Sprite* SceneObject_ParticleEmitter_Sprite::EmitParticle()
{
	assert(GetScene() != NULL);

	Particle_Sprite* pParticle = new Particle_Sprite();

	pParticle->m_pScene = GetScene();

	// Select random sprite
	assert(!m_sprites.empty());

	int index = rand() % m_sprites.size();

	pParticle->m_pSprite = &m_sprites[index].m_sprite;
	pParticle->m_radius = m_sprites[index].m_radius;

	pParticle->m_despawnTime = Randf(m_minDespawnTime, m_maxDespawnTime);

	SetParticle(pParticle);

	return pParticle;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ECHARM_coherent_effect::ECHARM_coherent_effect(ECHARM_strip* strip, ECHARM_particle* particle)
{
    InitializePointersCoherentEffect();
    SetStrip(strip);
    SetParticle(particle);
}