void LoadParticleEffect()
{
#if !XBOX
Effect effect = REngine.Instance._resourceContent.Load<Effect>("ParticleSystem");
#else
Effect effect = REngine.Instance._resourceContent.Load<Effect>("ParticleSystem1");
#endif
particleEffect = effect;
EffectParameterCollection parameters = particleEffect.Parameters;
// Look up shortcuts for parameters that change every frame.
effectViewParameter = parameters["View"];
effectProjectionParameter = parameters["Projection"];
effectViewportHeightParameter = parameters["ViewportHeight"];
effectTimeParameter = parameters["CurrentTime"];
// Set the values of parameters that do not change.
parameters["Duration"].SetValue((float)settings.Duration.TotalSeconds);
parameters["DurationRandomness"].SetValue(settings.DurationRandomness);
parameters["Gravity"].SetValue(settings.Gravity);
parameters["EndVelocity"].SetValue(settings.EndVelocity);
parameters["MinColor"].SetValue(settings.MinColor.ToVector4());
parameters["MaxColor"].SetValue(settings.MaxColor.ToVector4());
parameters["RotateSpeed"].SetValue(
new Vector2(settings.MinRotateSpeed, settings.MaxRotateSpeed));
parameters["StartSize"].SetValue(
new Vector2(settings.MinStartSize, settings.MaxStartSize));
parameters["EndSize"].SetValue(
new Vector2(settings.MinEndSize, settings.MaxEndSize));
// Load the particle texture, and set it onto the effect.
//Texture2D texture = content.Load<Texture2D>(settings.TextureName);
parameters["Texture"].SetValue(RTextureFactory.Instance._textureList[settings.TextureID]);
// Choose the appropriate effect technique. If these particles will never
// rotate, we can use a simpler pixel shader that requires less GPU power.
string techniqueName;
if ((settings.MinRotateSpeed == 0) && (settings.MaxRotateSpeed == 0))
techniqueName = "NonRotatingParticles";
else
techniqueName = "RotatingParticles";
particleEffect.CurrentTechnique = particleEffect.Techniques[techniqueName];
}