/// <summary> /// This is the same lightning System as Flare/mp_lightning from the Editor. /// </summary> public void MakeLighting() { puLightningBolt = puManager.CreateParticleSystem("TestLightningBolt", mgr); puLightningBoltScene = mgr.RootSceneNode.CreateChildSceneNode("LightningBoltScene"); puLightningBoltScene.AttachObject(puLightningBolt); ParticleTechnique puLightningBoltT = puLightningBolt.CreateTechnique(); puLightningBoltT.VisualParticleQuota = 5; puLightningBoltT.MaterialName = "mp_flare_lightning_bolt_1x2"; puLightningBoltT.DefaultWidth = 200; puLightningBoltT.DefaultHeight = 200; MParticleUniverse.ParticleRenderers.BillboardRenderer renderer = (MParticleUniverse.ParticleRenderers.BillboardRenderer)puLightningBoltT.GetRenderer(); renderer.TextureCoordsColumns = 2; renderer.BillboardRotationType = BillboardRotationType.BBR_VERTEX; MParticleUniverse.ParticleEmitters.PointEmitter pe = (MParticleUniverse.ParticleEmitters.PointEmitter)puLightningBoltT.CreateEmitter("Point"); DynamicAttributeFixed peRate = new DynamicAttributeFixed(); peRate.SetValue(9); pe.DynEmissionRate = peRate; DynamicAttributeRandom petime_to_live = new DynamicAttributeRandom(); petime_to_live.Min = 0.3f; petime_to_live.Max = 0.6f; pe.DynTotalTimeToLive = petime_to_live; DynamicAttributeFixed peVelocity = new DynamicAttributeFixed(); peVelocity.SetValue(0); pe.DynVelocity = peVelocity; DynamicAttributeFixed peDuration = new DynamicAttributeFixed(); peDuration.SetValue(0.7f); pe.DynDuration = peDuration; pe.DynDurationSet(true); pe.ParticleTextureCoordsRangeEnd = 1; MParticleUniverse.ParticleAffectors.ColourAffector ca = (MParticleUniverse.ParticleAffectors.ColourAffector)puLightningBoltT.CreateAffector("Colour"); ca.AddColour(0, new Mogre.ColourValue(1, 1, 1, 1)); ca.AddColour(0.1f, new Mogre.ColourValue(1, 1, 1, 1)); ca.AddColour(1, new Mogre.ColourValue(0, 0, 0, 1)); ca.ColourOperation = MParticleUniverse.ParticleAffectors.ColourAffector.ColourOperations.CAO_MULTIPLY; ////puLightningBoltT.AddAffector(ca); MParticleUniverse.ParticleObservers.OnClearObserver oco = (MParticleUniverse.ParticleObservers.OnClearObserver)puLightningBoltT.CreateObserver("OnClear"); MParticleUniverse.ParticleEventHandlers.DoStopSystemEventHandler dsseh = (MParticleUniverse.ParticleEventHandlers.DoStopSystemEventHandler)oco.CreateEventHandler("DoStopSystem"); }
public void Lesson2() { puLightningBolt = puManager.CreateParticleSystem("puLesson2", mgr); SceneNode scene = mgr.RootSceneNode.CreateChildSceneNode("puLesson2Scene"); scene.AttachObject(puLightningBolt); //puLightningBolt.IsKeepLocal = true; ParticleTechnique puLightningBoltT = puLightningBolt.CreateTechnique(); //ParticleTechnique puLightningBoltT = puLightningBolt.GetTechnique(0); puLightningBoltT.MaterialName = "ParticleUniverse/Flare"; //puLightningBoltT.SetRenderer("Billboard"); MParticleUniverse.ParticleEmitters.PointEmitter pe = (MParticleUniverse.ParticleEmitters.PointEmitter)puLightningBoltT.CreateEmitter("Point"); //puLightningBolt.SetDebugDisplayEnabled(true); DynamicAttributeFixed emissionRate = new DynamicAttributeFixed(); emissionRate.SetValue(60); pe.DynEmissionRate = emissionRate; DynamicAttributeRandom emissionVelocity = new DynamicAttributeRandom(); emissionVelocity.Min = 50; emissionVelocity.Max = 300; pe.DynVelocity = emissionVelocity; DynamicAttributeRandom emissionDimentions = new DynamicAttributeRandom(); emissionDimentions.Min = 50; emissionDimentions.Max = 150; pe.DynParticleAllDimensions = emissionDimentions; MParticleUniverse.ParticleAffectors.ColourAffector colAffector = (MParticleUniverse.ParticleAffectors.ColourAffector)puLightningBoltT.CreateAffector("Colour"); colAffector.AddColour(0, ColourValue.Black); colAffector.AddColour(0, new ColourValue(0.929412f, 0.0196078f, 0.909804f, 1f)); MParticleUniverse.ParticleAffectors.LinearForceAffector lforceAffector = (MParticleUniverse.ParticleAffectors.LinearForceAffector)puLightningBoltT.CreateAffector("LinearForce"); lforceAffector.ForceVector = new Vector3(100, -100, 0); }