• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# Particle类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中Particle的典型用法代码示例。如果您正苦于以下问题:C# Particle类的具体用法?C# Particle怎么用?C# Particle使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Particle类属于命名空间,在下文中一共展示了Particle类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: Process

        /// <summary>
        /// Processes the specified Particle.
        /// </summary>
        /// <param name="dt">Elapsed time in whole and fractional seconds.</param>
        /// <param name="particle">The particle to be processed.</param>
        /// <param name="tag">The tag which has been attached to the Particle (or null).</param>
        public override unsafe void Process(float dt, Particle* particle, object tag)
        {
            float a = particle->Age * 0.07f,
                  aInv = 1f - a;

            particle->Scale = (particle->Scale * aInv) + (this.MergeScale * a);
        }
开发者ID:danielselnick,项目名称:Sentry-Smash,代码行数:13,代码来源:ScaleMergeModifier.cs


示例2: ProcessLinear

		protected override void ProcessLinear(float bias, float scale, float deltaTime, Particle[] particles, int begin, int end)
		{
			for (int i = begin; i < end; ++i)
			{
				particles[i].m_rotation = bias + scale * particles[i].m_age / particles[i].m_life;
			}
		}
开发者ID:galaxyyao,项目名称:TouhouGrave,代码行数:7,代码来源:RotationAnimation.cs


示例3: Process

        /// <summary>
        /// Processes the particles.
        /// </summary>
        /// <param name="dt">Elapsed time in whole and fractional seconds.</param>
        /// <param name="particleArray">A pointer to an array of particles.</param>
        /// <param name="count">The number of particles which need to be processed.</param>
        protected internal override unsafe void Process(float dt, Particle* particleArray, int count)
        {
            this.TotalSeconds += dt;

            float deltaAmp = this.Amplitude * dt;

            for (int i = 0; i < count; i++)
            {
                Particle* particle = (particleArray + i);

                float secondsAlive = this.TotalSeconds - particle->Inception;

                float sin = Calculator.Cos(secondsAlive * this.Frequency);

                Vector2 force = new Vector2(sin, 0f);

                force.X = ((force.X * this.AngleCos) + (force.Y * -this.AngleSin));
                force.Y = ((force.X * this.AngleSin) + (force.Y * this.AngleCos));

                force.X *= deltaAmp;
                force.Y *= deltaAmp;

                particle->Velocity.X += force.X;
                particle->Velocity.Y += force.Y;
            }
        }
开发者ID:Andrea,项目名称:MercuryParticleEngine,代码行数:32,代码来源:SineForceModifier.cs


示例4: IteratesOverEachParticle

            public void IteratesOverEachParticle()
            {
                var buffer = new Particle
                {
                    Age = new float[100],
                    R = new float[100],
                    G = new float[100],
                    B = new float[100]
                };

                for (var i = 0; i < buffer.Age.Length; i++)
                    buffer.Age[i] = 1.0f;

                var subject = new ColourInterpolator2
                {
                    InitialColour = new Colour(1f, 0f, 0f),
                    FinalColour = new Colour(0f, 0f, 1f)
                };

                subject.Update(0.1666666f, ref buffer, buffer.Age.Length);

                for (int i = 0; i < buffer.Age.Length; i++)
                {
                    buffer.B[0].Should().BeApproximately(1f, 0.000001f);
                }
            }
开发者ID:BraveSirAndrew,项目名称:mercury-particle-engine,代码行数:26,代码来源:ColourInterpolator2Tests.cs


示例5: Update

        protected internal override void Update(float elapsedSeconds, ref Particle particle, int count)
        {
            fixed (float* agePtr = particle.Age)
            fixed (float* rPtr = particle.R)
            fixed (float* gPtr = particle.G)
            fixed (float* bPtr = particle.B)
            fixed (float* aPtr = particle.Opacity)
            {
                var ageDataPtr = agePtr;
                var rDataPtr = rPtr;
                var gDataPtr = gPtr;
                var bDataPtr = bPtr;
                var aDataPtr = aPtr;

                for (var j = 0; j < count; j++)
                {
                    var age = *(ageDataPtr + j);
                    var inverseAge = 1.0f - age;
                    var alpha = InitialColour.A * age;
                    *(aDataPtr + j) = alpha;
                    *(rDataPtr + j) = InitialColour.H * inverseAge;
                    *(gDataPtr + j) = InitialColour.S * inverseAge;
                    *(bDataPtr + j) = InitialColour.L * inverseAge;
                }
            }
        }
开发者ID:BraveSirAndrew,项目名称:mercury-particle-engine,代码行数:26,代码来源:OpacityFastFadeModifier.cs


示例6: Process

        /// <summary>
        /// Processes the particles.
        /// </summary>
        /// <param name="elapsedSeconds">Elapsed time in whole and fractional seconds.</param>
        /// <param name="particle">A pointer to the first item in an array of particles.</param>
        /// <param name="count">The number of particles which need to be processed.</param>
        protected internal override unsafe void Process(float elapsedSeconds, Particle* particle, int count)
        {
            particle->Colour.X = (this.InitialColour.X + ((this.UltimateColour.X - this.InitialColour.X) * particle->Age));
            particle->Colour.Y = (this.InitialColour.Y + ((this.UltimateColour.Y - this.InitialColour.Y) * particle->Age));
            particle->Colour.Z = (this.InitialColour.Z + ((this.UltimateColour.Z - this.InitialColour.Z) * particle->Age));

            Particle* previousParticle = particle;

            particle++;

            for (int i = 1; i < count; i++)
            {
                if (particle->Age < previousParticle->Age)
                {
                    particle->Colour.X = (this.InitialColour.X + ((this.UltimateColour.X - this.InitialColour.X) * particle->Age));
                    particle->Colour.Y = (this.InitialColour.Y + ((this.UltimateColour.Y - this.InitialColour.Y) * particle->Age));
                    particle->Colour.Z = (this.InitialColour.Z + ((this.UltimateColour.Z - this.InitialColour.Z) * particle->Age));
                }
                else
                {
                    particle->Colour.X = previousParticle->Colour.X;
                    particle->Colour.Y = previousParticle->Colour.Y;
                    particle->Colour.Z = previousParticle->Colour.Z;
                }

                previousParticle++;
                particle++;
            }
        }
开发者ID:Andrea,项目名称:MercuryParticleEngine,代码行数:35,代码来源:ColourModifier.cs


示例7: Start

    void Start()
    {
        // Calculate the number of warp needed to handle all the particles
        if (particleCount <= 0)
            particleCount = 1;
        mWarpCount = Mathf.CeilToInt((float)particleCount / WARP_SIZE);

        // Initialize the Particle at the start
        Particle[] particleArray = new Particle[particleCount];
        for (int i = 0; i < particleCount; ++i)
        {
            particleArray[i].position.x = Random.value * 2 - 1.0f;
            particleArray[i].position.y = Random.value * 2 - 1.0f;
            particleArray[i].position.z = 0;

            particleArray[i].velocity.x = 0;
            particleArray[i].velocity.y = 0;
            particleArray[i].velocity.z = 0;
        }

        // Create the ComputeBuffer holding the Particles
        particleBuffer = new ComputeBuffer(particleCount, SIZE_PARTICLE);
        particleBuffer.SetData(particleArray);

        // Find the id of the kernel
        mComputeShaderKernelID = computeShader.FindKernel("CSMain");

        // Bind the ComputeBuffer to the shader and the compute shader
        computeShader.SetBuffer(mComputeShaderKernelID, "particleBuffer", particleBuffer);
        material.SetBuffer("particleBuffer", particleBuffer);
    }
开发者ID:ArieLeo,项目名称:XParticle,代码行数:31,代码来源:FreeParticle.cs


示例8: Process

        /// <summary>
        /// Processes the particles.
        /// </summary>
        /// <param name="dt">Elapsed time in whole and fractional seconds.</param>
        /// <param name="particle">A pointer to an array of particles.</param>
        /// <param name="count">The number of particles which need to be processed.</param>
        protected internal override unsafe void Process(float dt, Particle* particle, int count)
        {
            for (int i = 0; i < count; i++)
            {
                Particle* previousParticle = particle - 1;

                if (particle->Momentum == previousParticle->Momentum)
                {
                    particle->Rotation = previousParticle->Rotation;

                    continue;
                }

                float rads = Calculator.Atan2(particle->Momentum.Y, particle->Momentum.X);

                particle->Rotation = (rads + this.RotationOffset);

                if (particle->Rotation > Calculator.Pi)
                    particle->Rotation -= Calculator.TwoPi;

                else if (particle->Rotation < -Calculator.Pi)
                    particle->Rotation += Calculator.TwoPi;

                particle++;
            }
        }
开发者ID:Andrea,项目名称:MercuryParticleEngine,代码行数:32,代码来源:TrajectoryRotationModifier.cs


示例9: ParticleSpring

		public ParticleSpring(Particle particle, Particle other, float springConstant, float restLength) 
			: base(particle)
		{
			_other = other;
			_springConstant = springConstant;
			_restLength = restLength;
		}
开发者ID:modulexcite,项目名称:jolt,代码行数:7,代码来源:ParticleSpring.cs


示例10: ParticleSystem

        public ParticleSystem(int maxParticles)
        {
            MAX_PARTICLES = maxParticles;

            random = new Random();
            _textures = new Texture2D[MAX_TEXTURES];
            _particles = new Particle[MAX_PARTICLES];

            for (int i = 0; i < MAX_PARTICLES; ++i)
            {
                _particles[i] = new Particle(null, _ttl, 0, 0, 0, 0, 0, 0);
                _particles[i]._exists = false;
            }

            _spawnBox.X = 0;
            _spawnBox.Y = 0;
            _minRotSpeed = 0;
            _maxRotSpeed = 0;
            _minRotInit = 0;
            _maxRotInit = 0;
            Angle = 0;
            _spawnCone = (float)Math.PI * 2f;
            _minSpeed = 10;
            _maxSpeed = 10;

            _alphaDecrement = 0.2f;
            _decrementTick = 5;

            _alphaIncrement = 0.2f;
            _incrementTick = 5;

            _isOn = true;
        }
开发者ID:TastyWithPasta,项目名称:pastalib_psm,代码行数:33,代码来源:ParticleSystem.cs


示例11: ParticleAnchoredSpring

		public ParticleAnchoredSpring(Particle particle, Point3D anchor, float springConstant, float restLength)
			: base(particle)
		{
			Anchor = anchor;
			SpringConstant = springConstant;
			RestLength = restLength;
		}
开发者ID:modulexcite,项目名称:jolt,代码行数:7,代码来源:ParticleAnchoredSpring.cs


示例12: UpdateParticle

        public override void UpdateParticle(GameTime time, Particle spawn)
        {
            _momentum.X = (float)Math.Cos(spawn.Orientation) * spawn.Speed;
            _momentum.Y = (float)Math.Sin(spawn.Orientation) * spawn.Speed;

            if (spawn.Position.X < (float)_rect.X)
            {
                spawn.Position.X = (float)_rect.X;
                _momentum.X *= -1f; _momentum.X *= _bounce;
            }
            else if (spawn.Position.X > (float)_rect.Width)
            {
                spawn.Position.X = (float)_rect.Width;
                _momentum.X *= -1f; _momentum.X *= _bounce;
            }

            if (spawn.Position.Y < (float)_rect.Y)
            {
                spawn.Position.Y = (float)_rect.Y;
                _momentum.Y *= -1f; _momentum.Y *= _bounce;
            }
            else if (spawn.Position.Y > (float)_rect.Height)
            {
                spawn.Position.Y = (float)_rect.Height;
                _momentum.Y *= -1f; _momentum.Y *= _bounce;
            }

            spawn.Orientation = (float)Math.Atan2(_momentum.Y, _momentum.X);
            spawn.Speed = _momentum.Length();
        }
开发者ID:Andrea,项目名称:MercuryParticleEngine,代码行数:30,代码来源:WindowBounceModifier.cs


示例13: Particle

		public void Construction_CanCreateAParticleWithAnInitialPositionAndVelocity_AndItsPositionAndVelocityAreInitialised()
		{
			var particle = new Particle(TestPosition, TestVelocity);

			Assert.IsTrue(particle.Position.Equals(TestPosition));
			Assert.IsTrue(particle.Velocity.Equals(TestVelocity));
		}
开发者ID:dazpaz,项目名称:Cyclone,代码行数:7,代码来源:ParticleTests.cs


示例14: Construction_CanCreateAParticleWithAnInitialPosition_AndItsPositionIsInitialised

		public void Construction_CanCreateAParticleWithAnInitialPosition_AndItsPositionIsInitialised()
		{
			var particle = new Particle(TestPosition);

			Assert.IsTrue(particle.Position.Equals(TestPosition));
			Assert.IsTrue(particle.Velocity.Equals(Vector3.ZeroVector));
		}
开发者ID:dazpaz,项目名称:Cyclone,代码行数:7,代码来源:ParticleTests.cs


示例15: Update

        protected internal unsafe override void Update(float elapsedSeconds, ref Particle particle, int count)
        {
            _totalSeconds += elapsedSeconds;

            fixed (float* agePtr = particle.Age)
            fixed (float* inceptionPtr = particle.Inception)
            {
                var ageDataPtr = agePtr;
                var inceptionDataPtr = inceptionPtr;
                var term = _term;
                var totalSeconds = _totalSeconds;

                for (var j = 0; j < count; j++)
                {
                    var age = (totalSeconds - *(inceptionDataPtr + j)) / term;

                    // TODO: There is a fairly systemic bug in the emitter code right now that means that the inception time
                    // of a particle can be later than the total elapsed time in here. It happens because the modifiers are
                    // not necessarily updated every frame, while the emitter is.
                    if (age < 0)
                        age = 0;
                    if (age > 1)
                        age = 1;

                    *(ageDataPtr + j) = age;
                }
            }
        }
开发者ID:BraveSirAndrew,项目名称:mercury-particle-engine,代码行数:28,代码来源:AgeModifier.cs


示例16: AddParticleDlg

        public AddParticleDlg(Particle copy)
        {
            InitializeComponent();

            /* Add relevant info to fields.. */
            txtName.Text = copy.Name;
            txtAlphaStart.Text = copy.StartAlpha.ToString();
            txtEndAlpha.Text = copy.EndAlpha.ToString();

            txtRot.Text = copy.Rotation.ToString();
            txtDeltaRot.Text = copy.RotationSpeed.ToString();
            txtScale.Text = copy.ScaleStart.ToString();
            txtScaleEnd.Text = copy.ScaleEnd.ToString();

            txtMinLife.Text = copy.MinLife.ToString();
            txtMaxLife.Text = copy.MaxLife.ToString();

            txtTexturePath.Text = copy.TextureName;

            System.Drawing.Color color;
            color = System.Drawing.Color.FromArgb(copy.StartColor.R, copy.StartColor.G, copy.StartColor.B);
            pctStartColor.BackColor = color;
            pctEndColor.BackColor = System.Drawing.Color.FromArgb(copy.EndColor.R, copy.EndColor.G, copy.EndColor.B);
            StartColor = copy.StartColor;
            EndColor = copy.EndColor;

            EditedParticle = true;
        }
开发者ID:keaton-freude,项目名称:arena-particle-effect-editor,代码行数:28,代码来源:AddParticleDlg.cs


示例17: Process

        /// <summary>
        /// Processes the particles.
        /// </summary>
        /// <param name="dt">Elapsed time in whole and fractional seconds.</param>
        /// <param name="particleArray">A pointer to an array of particles.</param>
        /// <param name="count">The number of particles which need to be processed.</param>
        protected internal override unsafe void Process(float dt, Particle* particleArray, int count)
        {
            Vector2 distance;

            float strengthDelta = this.Strength * dt;

            float deltaForceX = this.Force.X * strengthDelta;
            float deltaForceY = this.Force.Y * strengthDelta;

            for (int i = 0; i < count; i++)
            {
                Particle* particle = (particleArray + i);

                // Calculate the distance between the Particle and the center of the force...
                distance.X = this.Position.X - particle->Position.X;
                distance.Y = this.Position.Y - particle->Position.Y;

                float squareDistance = ((distance.X * distance.X) + (distance.Y * distance.Y));

                // Check to see if the Particle is within range of the force...
                if (squareDistance < this.SquareRadius)
                {
                    // Adjust the force vector based on the strength of the force and the time delta...
                    particle->Velocity.X += deltaForceX;
                    particle->Velocity.Y += deltaForceY;
                }
            }
        }
开发者ID:Andrea,项目名称:MercuryParticleEngine,代码行数:34,代码来源:RadialForceModifier.cs


示例18: ProcessActiveParticle

 /// <summary>
 /// Modifies a single Particle.
 /// </summary>
 /// <param name="time">Game timing information.</param>
 /// <param name="particle">Particle to modify.</param>
 public override void ProcessActiveParticle(GameTime time, Particle particle)
 {
     //particle.Momentum += (_gravity * (float)time.ElapsedGameTime.TotalSeconds);
     Vector2 dtGrav;
     Vector2.Multiply(ref _gravity, (float)time.ElapsedGameTime.TotalSeconds, out dtGrav);
     Vector2.Add(ref particle.Momentum, ref dtGrav, out particle.Momentum);
 }
开发者ID:Andrea,项目名称:MercuryParticleEngine,代码行数:12,代码来源:GravityModifier.cs


示例19: Update

        public override void Update(Particle part)
        {
            //phaseTarget = phaseTarget % 1f;
            phase += phaseSpeed * Global.Speed * mult;
            phase = MathHelper.Clamp(phase, 0, 1);
            double pow = 1.5;

            float value = phase;

            value = (float)(Math.Pow(value, pow));

            value = 1 - (float)Math.Pow(1 - value, pow);
            if (phase >= 1)
            {
                mult = -1;
            }
            else if (phase <= 0)
            {
                mult = 1;
            }
            
            Vector2 val = MyMath.Between(startScale, endScale, value);
            part.Scale = val;
            base.Update(part);
        }
开发者ID:RIT-Tool-Time,项目名称:Cascade,代码行数:25,代码来源:Pulsate.cs


示例20: ResolveUVBounds

 public XnaRect ResolveUVBounds(string uvBoundsName, Particle.ParticleSystem system)
 {
     uvBoundsName = uvBoundsName ?? "{Whole}";
     if (uvBoundsName == "{Whole}")
     {
         return system != null && system.TextureObject != null
                ? new XnaRect(0, 0, system.TextureObject.Width, system.TextureObject.Height)
                : XnaRect.Empty;
     }
     else if (uvBoundsName.StartsWith("{") && uvBoundsName.EndsWith("}"))
     {
         string[][] tokens = uvBoundsName.Substring(1, uvBoundsName.Length - 2)
                             .Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
                             .Select(t => t.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)).ToArray();
         int x, y, w, h;
         if (tokens.Length != 4 || tokens.Any(t => t.Length != 2)
             || tokens[0][0] != "x" || !int.TryParse(tokens[0][1], out x)
             || tokens[1][0] != "y" || !int.TryParse(tokens[1][1], out y)
             || (tokens[2][0] != "width" && tokens[2][0] != "w") || !int.TryParse(tokens[2][1], out w)
             || (tokens[3][0] != "height" && tokens[3][0] != "h") || !int.TryParse(tokens[3][1], out h))
         {
             throw new FormatException(String.Format("Cannot convert '{0}' to a rectangle.", uvBoundsName));
         }
         return new XnaRect(x, y, w, h);
     }
     else
     {
         return XnaRect.Empty;
     }
 }
开发者ID:galaxyyao,项目名称:TouhouGrave,代码行数:30,代码来源:ParticleRenderer.ResourceLoader.cs



注:本文中的Particle类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# ParticleEffect类代码示例发布时间:2022-05-24
下一篇:
C# Participant类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap