Esempio n. 1
0
        public void SetUpSnowField()
        {
            emitter = new CAEmitterLayer();
            this.BackgroundColor = UIColor.Clear;
            emitter.Position     = new PointF(UIScreen.MainScreen.Bounds.Width / 2, -10f);
            emitter.Size         = new SizeF(UIScreen.MainScreen.Bounds.Width, 1);
            emitter.Shape        = CAEmitterLayer.ShapeLine;

            var cell = new CAEmitterCell();

            cell.BirthRate         = 10f;
            cell.LifeTime          = 9.0f;
            cell.Contents          = UIImage.FromFile("snow-1.png").CGImage;
            cell.Velocity          = 10f;
            cell.VelocityRange     = 50f;
            cell.EmissionRange     = (float)(2f * Math.PI);
            cell.EmissionLongitude = (float)Math.PI;
            cell.AccelerationY     = 40f;
            cell.Scale             = 1.0f;
            cell.ScaleRange        = 0.2f;
            cell.SpinRange         = 10.0f;

            emitter.Cells      = new CAEmitterCell[] { cell };       //, cell2, cell3 };
            emitter.RenderMode = CAEmitterLayer.RenderUnordered;

            Layer.AddSublayer(emitter);
        }
Esempio n. 2
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var snowEmitter = new CAEmitterLayer();

            snowEmitter.Position = new CGPoint(this.View.Bounds.Width / 2.0f + 40f, -10f);
            snowEmitter.Size     = new CGSize(this.View.Bounds.Size.Width * 2.0f, 0.0f);
            snowEmitter.Mode     = "kCAEmitterLayerOutline";
            snowEmitter.Shape    = "kCAEmitterLayerLine";
            var snowFlake = new CAEmitterCell();

            snowFlake.BirthRate     = 1.0f;
            snowFlake.LifeTime      = 120.0f;
            snowFlake.Velocity      = -10;
            snowFlake.VelocityRange = 10;
            snowFlake.AccelerationY = 2;
            snowFlake.EmissionRange = 0.5f * (nfloat)Math.PI;
            snowFlake.SpinRange     = 0.25f * (nfloat)Math.PI;
            snowFlake.Contents      = UIImage.FromBundle("DazFlake").CGImage;
            snowFlake.Color         = UIColor.FromRGBA(0.600F, 0.658f, 0.743f, 1.0f).CGColor;

            snowEmitter.ShadowOpacity = 1.0f;
            snowEmitter.ShadowOffset  = new CGSize(0.0f, 1.0f);
            snowEmitter.ShadowRadius  = 0.0f;
            snowEmitter.ShadowColor   = UIColor.Black.CGColor;


            snowEmitter.Cells = new CAEmitterCell[] { snowFlake };
            this.View.Layer.AddSublayer(snowEmitter);
        }
Esempio n. 3
0
        public void SetUpSnowField()
        {
            emitter = new CAEmitterLayer();
            this.BackgroundColor = UIColor.Clear;
            emitter.Position = new PointF(UIScreen.MainScreen.Bounds.Width /2, -10f);
            emitter.Size = new SizeF(UIScreen.MainScreen.Bounds.Width,1);
            emitter.Shape = CAEmitterLayer.ShapeLine;

            var cell = new CAEmitterCell();
            cell.BirthRate = 10f;
            cell.LifeTime = 9.0f;
            cell.Contents = UIImage.FromFile("snow-1.png").CGImage;
            cell.Velocity = 10f;
            cell.VelocityRange = 50f;
            cell.EmissionRange = (float) (2f*Math.PI);
            cell.EmissionLongitude = (float) Math.PI;
            cell.AccelerationY = 40f;
            cell.Scale = 1.0f;
            cell.ScaleRange = 0.2f;
            cell.SpinRange = 10.0f;

            emitter.Cells = new CAEmitterCell[] { cell };//, cell2, cell3 };
            emitter.RenderMode = CAEmitterLayer.RenderUnordered;

            Layer.AddSublayer(emitter);
        }
        public ParticleEffect()
        {
            tapDetector = new UITapGestureRecognizer(() =>
            {
                var control  = Control ?? Container;
                var tapPoint = tapDetector.LocationInView(control);

                var effect = (ParticlesSample.Effects.ParticleEffect)Element.Effects.FirstOrDefault(p => p is ParticlesSample.Effects.ParticleEffect);

                var mode          = effect?.Mode ?? ParticlesSample.Effects.EmitMode.OneShot;
                var lifeTime      = effect?.LifeTime ?? 1.5f;
                var numberOfItems = effect?.NumberOfParticles ?? 4000;
                var scale         = effect?.Scale ?? 1.0f;
                var speed         = effect?.Speed * 1000 ?? 100.0f;
                var image         = effect?.Image ?? "Icon";

                var emitterLayer = new CAEmitterLayer();


                emitterLayer.Position = tapPoint;
                emitterLayer.Shape    = CAEmitterLayer.ShapeCircle;


                var cell = new CAEmitterCell();

                cell.Name = "pEmitter";

                cell.BirthRate  = numberOfItems;
                cell.Scale      = 0f;
                cell.ScaleRange = scale;
                cell.Velocity   = speed;
                cell.LifeTime   = (float)lifeTime;

                cell.EmissionRange = (nfloat)Math.PI * 2.0f;
                cell.Contents      = UIImage.FromBundle(image).CGImage;

                emitterLayer.Cells = new CAEmitterCell[] { cell };


                control.Layer.AddSublayer(emitterLayer);

                if (mode == ParticlesSample.Effects.EmitMode.OneShot)
                {
                    Task.Delay(1).ContinueWith(t => {
                        Device.BeginInvokeOnMainThread(() =>
                        {
                            emitterLayer.SetValueForKeyPath(NSNumber.FromInt32(0), new NSString("emitterCells.pEmitter.birthRate"));
                        });
                    });
                }
            });
        }
Esempio n. 5
0
        private void ShowSnow(int x)
        {
            this.Layer          = new CAEmitterLayer();
            this.Layer.Position = new CGPoint(x, 320);

            CAEmitterCell cell = new CAEmitterCell();

            cell.BirthRate     = 100;
            cell.LifeTime      = 10;
            cell.Velocity      = 100;
            cell.Scale         = 0.4f;
            cell.EmissionRange = 3.14f * 2;
            cell.Contents      = NSImage.ImageNamed("snow.png").CGImage;

            this.Layer.Cells = new CAEmitterCell[1] {
                cell
            };
            this.View.Layer.AddSublayer(this.Layer);
        }
Esempio n. 6
0
        public void AwakeFromNib()
        {
            //Create the root layer
            this.rootLayer = CALayer.Layer;

            //Set the root layer's attributes
            this.rootLayer.Bounds = CGRect.CGRectMake (0, 0, 640, 480);
            IntPtr color = CGColor.CreateGenericRGB (0.0, 0.0, 0.0, 1);
            rootLayer.BackgroundColor = color;
            CGColor.Release (color);

            //Load the spark image for the particle
            String fileName = NSBundle.MainBundle.PathForResourceOfType ("tspark", "png");
            IntPtr dataProvider = CGDataProvider.CreateWithFilename (fileName);
            IntPtr img = CGImage.CreateWithPNGDataProvider (dataProvider, IntPtr.Zero, false, CGColorRenderingIntent.kCGRenderingIntentDefault);

            this.mortor = CAEmitterLayer.Layer.Retain<CAEmitterLayer>();
            this.mortor.EmitterPosition = CGPoint.CGPointMake (320, 0);
            this.mortor.RenderMode = CAEmitterLayer.kCAEmitterLayerAdditive;

            //Invisible particle representing the rocket before the explosion
            CAEmitterCell rocket = CAEmitterCell.EmitterCell.Retain<CAEmitterCell>();
            rocket.EmissionLongitude = Math.PI / 2;
            rocket.EmissionLatitude = 0;
            rocket.Lifetime = 1.6f;
            rocket.BirthRate = 1;
            rocket.Velocity = 400;
            rocket.VelocityRange = 100;
            rocket.YAcceleration = -250;
            rocket.EmissionRange = Math.PI / 4;
            color = CGColor.CreateGenericRGB (0.5, 0.5, 0.5, 0.5);
            rocket.Color = color;
            CGColor.Release (color);
            rocket.RedRange = 0.5f;
            rocket.GreenRange = 0.5f;
            rocket.BlueRange = 0.5f;

            //Name the cell so that it can be animated later using keypath
            rocket.Name = "rocket";

            //Flare particles emitted from the rocket as it flys
            CAEmitterCell flare = CAEmitterCell.EmitterCell;
            flare.ContentsPointer = img;
            flare.EmissionLongitude = (4 * Math.PI) / 2;
            flare.Scale = 0.4;
            flare.Velocity = 100;
            flare.BirthRate = 45;
            flare.Lifetime = 1.5f;
            flare.YAcceleration = -350;
            flare.EmissionRange = Math.PI / 7;
            flare.AlphaSpeed = -0.7f;
            flare.ScaleSpeed = -0.1;
            flare.ScaleRange = 0.1;
            flare.BeginTime = 0.01;
            flare.Duration = 0.7;

            //The particles that make up the explosion
            CAEmitterCell firework = CAEmitterCell.EmitterCell;
            firework.ContentsPointer = img;
            firework.BirthRate = 9999;
            firework.Scale = 0.6;
            firework.Velocity = 130;
            firework.Lifetime = 2;
            firework.AlphaSpeed = -0.2f;
            firework.YAcceleration = -80;
            firework.BeginTime = 1.5;
            firework.Duration = 0.1;
            firework.EmissionRange = 2 * Math.PI;
            firework.ScaleSpeed = -0.1;
            firework.Spin = 2;

            //Name the cell so that it can be animated later using keypath
            firework.Name = "firework";

            //preSpark is an invisible particle used to later emit the spark
            CAEmitterCell preSpark = CAEmitterCell.EmitterCell;
            preSpark.BirthRate = 80;
            preSpark.Velocity = firework.Velocity * 0.70;
            preSpark.Lifetime = 1.7f;
            preSpark.YAcceleration = firework.YAcceleration * 0.85;
            preSpark.BeginTime = firework.BeginTime - 0.2;
            preSpark.EmissionRange = firework.EmissionRange;
            preSpark.GreenSpeed = 100;
            preSpark.BlueSpeed = 100;
            preSpark.RedSpeed = 100;

            //Name the cell so that it can be animated later using keypath
            preSpark.Name = "preSpark";

            //The 'sparkle' at the end of a firework
            CAEmitterCell spark = CAEmitterCell.EmitterCell;
            spark.ContentsPointer = img;
            spark.Lifetime = 0.05f;
            spark.YAcceleration = -250;
            spark.BeginTime = 0.8;
            spark.Scale = 0.4;
            spark.BirthRate = 10;

            preSpark.EmitterCells = NSArray.ArrayWithObject (spark);
            rocket.EmitterCells = NSArray.ArrayWithObjects (flare, firework, preSpark, null);
            mortor.EmitterCells = NSArray.ArrayWithObject (rocket);
            this.rootLayer.AddSublayer (this.mortor);

            //Set the view's layer to the base layer
            theView.Layer = rootLayer;
            theView.WantsLayer = true;

            //Force the view to update
            theView.NeedsDisplay = true;
        }
 public override void ViewWillUnload()
 {
     base.ViewWillUnload();
     heartsEmitter.RemoveFromSuperLayer();
     heartsEmitter = null;
 }
Esempio n. 8
0
        public void Start()
        {
            string fileName = NSBundle.MainBundle.PathForResource ("tspark", "png");
            var dataProvider = CGDataProvider.FromFile (fileName);
            var img = CGImage.FromPNG (dataProvider, null, false, CGColorRenderingIntent.Default);
            mortor = new CAEmitterLayer {
                Position =new PointF (Bounds.Width / 2, 0),
                RenderMode = CAEmitterLayer.RenderAdditive,
            };
            var pi = (float)Math.PI;
            var rocket =new  CAEmitterCell();
            rocket.EmissionLongitude = pi / 3;
            rocket.EmissionLatitude = 0;
            rocket.LifeTime = 1.6f;
            rocket.BirthRate = 1.5f;
            rocket.Velocity = 40;
            rocket.VelocityRange = 600;
            rocket.AccelerationY = -250;
            rocket.EmissionRange = pi / 4;
            var color = UIColor.FromRGBA (.5f, .5f, .5f, .5f).CGColor;
            rocket.Color = color;
            rocket.RedRange = 0.5f;
            rocket.GreenRange = 0.5f;
            rocket.BlueRange = 0.5f;
            rocket.Name = "rocket";

            CAEmitterCell flare = CAEmitterCell.EmitterCell();
            flare.Contents = img;
            flare.EmissionLongitude = (4 * pi) / 2;
            flare.Scale = 0.4f;
            flare.Velocity = 100;
            flare.BirthRate = 45;
            flare.LifeTime = 1.5f;
            flare.AccelerationY = -350;
            flare.EmissionRange = pi / 7;
            flare.AlphaSpeed = -0.7f;
            flare.ScaleSpeed = -0.1f;
            flare.ScaleRange = 0.1f;
            flare.BeginTime = 0.01;
            flare.Duration = 0.7;

            CAEmitterCell firework = CAEmitterCell.EmitterCell();
            firework.Contents = img;
            firework.BirthRate = 9999;
            firework.Scale = 0.6f;
            firework.Velocity = 130;
            firework.LifeTime = 2;
            firework.AlphaSpeed = -0.2f;
            firework.AccelerationY = -80;
            firework.BeginTime = 1.5;
            firework.Duration = 0.1;
            firework.EmissionRange = 2 * pi;
            firework.ScaleSpeed = -0.1f;
            firework.Spin = 2;
            firework.Name = ("firework");

            CAEmitterCell preSpark = CAEmitterCell.EmitterCell();
            preSpark.BirthRate = 80;
            preSpark.Velocity = firework.Velocity * 0.7f;
            preSpark.LifeTime = 1.7f;
            preSpark.AccelerationY = firework.AccelerationY * 0.85f;
            preSpark.BeginTime = firework.BeginTime - 0.2;
            preSpark.EmissionRange = firework.EmissionRange;
            preSpark.GreenSpeed = 100;
            preSpark.BlueSpeed = 100;
            preSpark.RedSpeed = 100;
            preSpark.Name = ("preSpark");
            CAEmitterCell spark = CAEmitterCell.EmitterCell();
            spark.Contents = img;
            spark.LifeTime = 0.05f;

            spark.AccelerationY = -250;
            spark.BeginTime = 0.8;
            spark.Scale = 0.4f;
            spark.BirthRate = 10;
            preSpark.Cells = new []{spark};
            rocket.Cells = new []{flare, firework, preSpark};
            mortor.Cells = new []{rocket};
            this.Layer.AddSublayer(mortor);
            SetNeedsLayout ();
            this.Layer.SetNeedsDisplay ();
        }
		public override void AwakeFromNib ()
		{
			// Create the root layer
			rootLayer = new CALayer ();

			// Set the root layer;s background color to black
			rootLayer.BackgroundColor = new CGColor (0,0,0);

			// Create the fire emitter layer
			fireEmitter = new CAEmitterLayer ();
			fireEmitter.Position = new System.Drawing.PointF (225,50);
			fireEmitter.Mode = CAEmitterLayer.ModeOutline;
			fireEmitter.Shape = CAEmitterLayer.ShapeLine;
			fireEmitter.RenderMode = CAEmitterLayer.RenderAdditive;
			fireEmitter.Size = new SizeF (0,0);

			// Create the smoke emitter layer
			smokeEmitter = new CAEmitterLayer ();
			smokeEmitter.Position = new PointF (225,50);
			smokeEmitter.Mode = CAEmitterLayer.ModePoints;

			// Create the fire emitter cell
			CAEmitterCell fire = CAEmitterCell.EmitterCell ();
			fire.EmissionLongitude = (float)Math.PI;
			fire.BirthRate = 0;
			fire.Velocity = 80;
			fire.VelocityRange = 30;
			fire.EmissionRange = 1.1f;
			fire.AccelerationY = 200;
			fire.ScaleSpeed = 0.3f;

			RectangleF rect = RectangleF.Empty;
			CGColor color = new CGColor (0.8f,0.4f,0.2f,0.10f);
			fire.Color = color;
			fire.Contents = NSImage.ImageNamed ("fire.png").AsCGImage (ref rect, null, null);

			// Name the cell so that it can be animated later using keypaths
			fire.Name = "fire";

			// Add the fire emitter cell to the fire emitter layer
			fireEmitter.Cells = new CAEmitterCell[] { fire };

			//Create the smoke emitter cell
			CAEmitterCell smoke = CAEmitterCell.EmitterCell ();
			smoke.BirthRate = 11;
			smoke.EmissionLongitude = (float)Math.PI / 2;
			smoke.LifeTime = 0;
			smoke.Velocity = 40;
			smoke.VelocityRange = 20;
			smoke.EmissionRange = (float)Math.PI / 4;
			smoke.Spin = 1;
			smoke.SpinRange = 6;
			smoke.AccelerationY = 160;
			smoke.Scale = 0.1f;
			smoke.AlphaSpeed = -0.12f;
			smoke.ScaleSpeed = 0.7f;
			smoke.Contents = NSImage.ImageNamed ("smoke.png").AsCGImage (ref rect, null, null);
			//Name the cell so that it can be animated later using keypaths
			smoke.Name = "smoke";

			// Add the smoke emitter cell to the smoke emitter layer
			smokeEmitter.Cells = new CAEmitterCell[] { smoke };

			// Add the two emitter layers to the root layer
			rootLayer.AddSublayer (smokeEmitter);
			rootLayer.AddSublayer (fireEmitter);

			// Set the view's layer to the base layer
			view.Layer = rootLayer;
			view.WantsLayer = true;

			// Set the fire simulation to reflect the intial slider postion
			slidersChanged (this);

			// Force the view to update
			view.NeedsDisplay = true;

		}
Esempio n. 10
0
        public void AwakeFromNib()
        {
            //Create the root layer
            rootLayer = CALayer.Layer;

            //Set the root layer's background color to black
            rootLayer.BackgroundColor = CGColor.GetConstantColor(CGColor.kCGColorBlack);

            //Create the fire emitter layer
            fireEmitter = CAEmitterLayer.Layer;
            fireEmitter.EmitterPosition = new CGPoint(225, 50);
            fireEmitter.EmitterMode = CAEmitterLayer.kCAEmitterLayerOutline;
            fireEmitter.EmitterShape = CAEmitterLayer.kCAEmitterLayerLine;
            fireEmitter.RenderMode = CAEmitterLayer.kCAEmitterLayerAdditive;
            fireEmitter.EmitterSize = new CGSize(0, 0);

            //Create the smoke emitter layer
            smokeEmitter = CAEmitterLayer.Layer;
            smokeEmitter.EmitterPosition = new CGPoint(225, 50);
            smokeEmitter.EmitterMode = CAEmitterLayer.kCAEmitterLayerPoints;

            //Create the fire emitter cell
            CAEmitterCell fire = CAEmitterCell.EmitterCell;
            fire.EmissionLongitude = (float) Math.PI;
            fire.BirthRate = 0;
            fire.Velocity = 80;
            fire.VelocityRange = 30;
            fire.EmissionRange = 1.1f;
            fire.YAcceleration = 200;
            fire.ScaleSpeed = 0.3f;
            IntPtr color = CGColor.CreateGenericRGB(0.8f, 0.4f, 0.2f, 0.10f);
            fire.Color = color;
            CGColor.Release(color);
            fire.ContentsPointer = CGImageNamed("fire.png");

            //Name the cell so that it can be animated later using keypaths
            fire.Name = "fire";

            //Add the fire emitter cell to the fire emitter layer
            fireEmitter.EmitterCells = NSArray.ArrayWithObject(fire);

            //Create the smoke emitter cell
            CAEmitterCell smoke = CAEmitterCell.EmitterCell;
            smoke.BirthRate = 11;
            smoke.EmissionLongitude = (float)(Math.PI / 2);
            smoke.Lifetime = 0;
            smoke.Velocity = 40;
            smoke.VelocityRange = 20;
            smoke.EmissionRange = (float)(Math.PI / 4);
            smoke.Spin = 1;
            smoke.SpinRange = 6;
            smoke.YAcceleration = 160;
            smoke.ContentsPointer = CGImageNamed("smoke.png");
            smoke.Scale = 0.1f;
            smoke.AlphaSpeed = -0.12f;
            smoke.ScaleSpeed = 0.7f;

            //Name the cell so that it can be animated later using keypaths
            smoke.Name = "smoke";

            //Add the smoke emitter cell to the smoke emitter layer
            smokeEmitter.EmitterCells = NSArray.ArrayWithObject(smoke);

            //Add the two emitter layers to the root layer
            rootLayer.AddSublayer(smokeEmitter);
            rootLayer.AddSublayer(fireEmitter);

            //Set the view's layer to the base layer
            view.Layer = rootLayer;
            view.WantsLayer = true;

            //Set the fire simulation to reflect the initial slider position
            this.SlidersChanged(this);

            //Force the view to update
            view.NeedsDisplay = true;
        }
Esempio n. 11
0
		public override void AwakeFromNib ()
		{
			// center our fire horizontally on the view and 15px from the bottom
			var firePosition = new CGPoint (view.Bounds.Width / 2, 15);

			rootLayer = new CALayer {
				BackgroundColor = new CGColor (0, 0, 0)
			};

			fireEmitter = new CAEmitterLayer {
				Position = firePosition,
				Mode = CAEmitterLayer.ModeOutline,
				Shape = CAEmitterLayer.ShapeLine,
				RenderMode = CAEmitterLayer.RenderAdditive,
				Size = CGSize.Empty,
				Cells = new [] {
					new CAEmitterCell {
						Name = "fire", // name the cell so that it can be animated later using keypaths
						EmissionLongitude = (float)Math.PI,
						BirthRate = 0,
						Velocity = 80,
						VelocityRange = 30,
						EmissionRange = 1.1f,
						AccelerationY = 200,
						ScaleSpeed = 0.3f,
						Color = new CGColor (0.8f, 0.4f, 0.2f, 0.10f),
						Contents = NSImage.ImageNamed ("fire.png").CGImage
					}
				}
			};

			smokeEmitter = new CAEmitterLayer {
				Position = firePosition,
				Mode = CAEmitterLayer.ModePoints,
				Cells = new [] {
					new CAEmitterCell {
						Name = "smoke", // name the cell so that it can be animated later using keypaths
						BirthRate = 11,
						EmissionLongitude = (float)Math.PI / 2,
						LifeTime = 0,
						Velocity = 40,
						VelocityRange = 20,
						EmissionRange = (float)Math.PI / 4,
						Spin = 1,
						SpinRange = 6,
						AccelerationY = 160,
						Scale = 0.1f,
						AlphaSpeed = -0.12f,
						ScaleSpeed = 0.7f,
						Contents = NSImage.ImageNamed ("smoke.png").CGImage
					}
				}
			};

			rootLayer.AddSublayer (smokeEmitter);
			rootLayer.AddSublayer (fireEmitter);

			view.Layer = rootLayer;
			view.WantsLayer = true;

			// Set the fire simulation to reflect the intial slider postion
			slidersChanged (this);

			// Force the view to update
			view.NeedsDisplay = true;
		}
Esempio n. 12
0
        private void ShowFire()
        {
            CGRect viewBounds = this.View.Layer.Bounds;

            this.Layer = new CAEmitterLayer();

            //this.Layer.Position= new CGPoint(0, 320);

            //this.Layer.Position = new CGPoint(viewBounds.Size.Width / 2.0, viewBounds.Size.Height / 2.0);

            this.Layer.Position = new CGPoint(0, viewBounds.Size.Height / 2.0);

            this.Layer.Size = new CGSize(viewBounds.Size.Width / 2.0, 0.0);

            this.Layer.Mode = "kCAEmitterLayerOutline";

            this.Layer.Shape = "kCAEmitterLayerLine";

            this.Layer.RenderMode = "kCAEmitterLayerAdditive";

            Random rad    = new Random();
            int    radnum = rad.Next(0, 100);

            this.Layer.Seed = radnum + 1;

            //1.rocket
            CAEmitterCell rocket = new CAEmitterCell();

            rocket.BirthRate     = 1.0f;
            rocket.EmissionRange = 0.25f * 3.14f;  // some variation in angle
            rocket.Velocity      = 380;
            rocket.VelocityRange = 100;
            rocket.AccelerationY = 75;
            rocket.LifeTime      = 1.02f; // we cannot set the birthrate < 1.0 for the burst
            rocket.Contents      = NSImage.ImageNamed("snow.png").CGImage;
            rocket.Scale         = 0.2f;
            rocket.Color         = new CGColor(1, 0, 0);
            rocket.GreenRange    = 1.0f;     // different colors
            rocket.RedRange      = 1.0f;
            rocket.BlueRange     = 1.0f;
            rocket.SpinRange     = 3.14f;

            //2.burst
            CAEmitterCell burst = new CAEmitterCell();

            burst.BirthRate  = 1.0f;       // at the end of travel
            burst.Velocity   = 0;
            burst.Scale      = 2.5f;
            burst.RedSpeed   = -1.5f;      // shifting
            burst.BlueSpeed  = +1.5f;      // shifting
            burst.GreenSpeed = +1.0f;      // shifting
            burst.LifeTime   = 0.35f;

            //3.spark
            CAEmitterCell spark = new CAEmitterCell();

            spark.BirthRate     = 400f;
            spark.Velocity      = 125f;
            spark.EmissionRange = 2f * 3.14f; // 360 deg
            spark.AccelerationY = 75f;        // gravity
            spark.LifeTime      = 3f;

            spark.Contents   = NSImage.ImageNamed("snow.png").CGImage;
            spark.ScaleSpeed = -0.2f;
            spark.GreenSpeed = -0.1f;
            spark.RedSpeed   = 0.4f;
            spark.BlueSpeed  = -0.1f;
            spark.AlphaSpeed = -0.25f;
            spark.Spin       = 1f * 3.14f;
            spark.SpinRange  = 2f * 3.14f;


            this.Layer.Cells = new CAEmitterCell[1] {
                rocket
            };
            rocket.Cells = new CAEmitterCell[1] {
                burst
            };
            burst.Cells = new CAEmitterCell[1] {
                spark
            };
            this.View.Layer.AddSublayer(this.Layer);

            //remar3333
        }
Esempio n. 13
0
        public override void AwakeFromNib()
        {
            // center our fire horizontally on the view and 15px from the bottom
            var firePosition = new CGPoint(view.Bounds.Width / 2, 15);

            rootLayer = new CALayer {
                BackgroundColor = new CGColor(0, 0, 0)
            };

            fireEmitter = new CAEmitterLayer {
                Position   = firePosition,
                Mode       = CAEmitterLayer.ModeOutline,
                Shape      = CAEmitterLayer.ShapeLine,
                RenderMode = CAEmitterLayer.RenderAdditive,
                Size       = CGSize.Empty,
                Cells      = new [] {
                    new CAEmitterCell {
                        Name = "fire",                         // name the cell so that it can be animated later using keypaths
                        EmissionLongitude = (float)Math.PI,
                        BirthRate         = 0,
                        Velocity          = 80,
                        VelocityRange     = 30,
                        EmissionRange     = 1.1f,
                        AccelerationY     = 200,
                        ScaleSpeed        = 0.3f,
                        Color             = new CGColor(0.8f, 0.4f, 0.2f, 0.10f),
                        Contents          = NSImage.ImageNamed("fire.png").CGImage
                    }
                }
            };

            smokeEmitter = new CAEmitterLayer {
                Position = firePosition,
                Mode     = CAEmitterLayer.ModePoints,
                Cells    = new [] {
                    new CAEmitterCell {
                        Name              = "smoke",            // name the cell so that it can be animated later using keypaths
                        BirthRate         = 11,
                        EmissionLongitude = (float)Math.PI / 2,
                        LifeTime          = 0,
                        Velocity          = 40,
                        VelocityRange     = 20,
                        EmissionRange     = (float)Math.PI / 4,
                        Spin              = 1,
                        SpinRange         = 6,
                        AccelerationY     = 160,
                        Scale             = 0.1f,
                        AlphaSpeed        = -0.12f,
                        ScaleSpeed        = 0.7f,
                        Contents          = NSImage.ImageNamed("smoke.png").CGImage
                    }
                }
            };

            rootLayer.AddSublayer(smokeEmitter);
            rootLayer.AddSublayer(fireEmitter);

            view.Layer      = rootLayer;
            view.WantsLayer = true;

            // Set the fire simulation to reflect the intial slider postion
            slidersChanged(this);

            // Force the view to update
            view.NeedsDisplay = true;
        }
        public override void AwakeFromNib()
        {
            // Create the root layer
            rootLayer = new CALayer();

            // Set the root layer;s background color to black
            rootLayer.BackgroundColor = new CGColor(0, 0, 0);

            // Create the fire emitter layer
            fireEmitter            = new CAEmitterLayer();
            fireEmitter.Position   = new System.Drawing.PointF(225, 50);
            fireEmitter.Mode       = CAEmitterLayer.ModeOutline;
            fireEmitter.Shape      = CAEmitterLayer.ShapeLine;
            fireEmitter.RenderMode = CAEmitterLayer.RenderAdditive;
            fireEmitter.Size       = new SizeF(0, 0);

            // Create the smoke emitter layer
            smokeEmitter          = new CAEmitterLayer();
            smokeEmitter.Position = new PointF(225, 50);
            smokeEmitter.Mode     = CAEmitterLayer.ModePoints;

            // Create the fire emitter cell
            CAEmitterCell fire = CAEmitterCell.EmitterCell();

            fire.EmissionLongitude = (float)Math.PI;
            fire.BirthRate         = 0;
            fire.Velocity          = 80;
            fire.VelocityRange     = 30;
            fire.EmissionRange     = 1.1f;
            fire.AccelerationY     = 200;
            fire.ScaleSpeed        = 0.3f;

            RectangleF rect  = RectangleF.Empty;
            CGColor    color = new CGColor(0.8f, 0.4f, 0.2f, 0.10f);

            fire.Color    = color;
            fire.Contents = NSImage.ImageNamed("fire.png").AsCGImage(ref rect, null, null);

            // Name the cell so that it can be animated later using keypaths
            fire.Name = "fire";

            // Add the fire emitter cell to the fire emitter layer
            fireEmitter.Cells = new CAEmitterCell[] { fire };

            //Create the smoke emitter cell
            CAEmitterCell smoke = CAEmitterCell.EmitterCell();

            smoke.BirthRate         = 11;
            smoke.EmissionLongitude = (float)Math.PI / 2;
            smoke.LifeTime          = 0;
            smoke.Velocity          = 40;
            smoke.VelocityRange     = 20;
            smoke.EmissionRange     = (float)Math.PI / 4;
            smoke.Spin          = 1;
            smoke.SpinRange     = 6;
            smoke.AccelerationY = 160;
            smoke.Scale         = 0.1f;
            smoke.AlphaSpeed    = -0.12f;
            smoke.ScaleSpeed    = 0.7f;
            smoke.Contents      = NSImage.ImageNamed("smoke.png").AsCGImage(ref rect, null, null);
            //Name the cell so that it can be animated later using keypaths
            smoke.Name = "smoke";

            // Add the smoke emitter cell to the smoke emitter layer
            smokeEmitter.Cells = new CAEmitterCell[] { smoke };

            // Add the two emitter layers to the root layer
            rootLayer.AddSublayer(smokeEmitter);
            rootLayer.AddSublayer(fireEmitter);

            // Set the view's layer to the base layer
            view.Layer      = rootLayer;
            view.WantsLayer = true;

            // Set the fire simulation to reflect the intial slider postion
            slidersChanged(this);

            // Force the view to update
            view.NeedsDisplay = true;
        }