public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var radiusSq = Radius * Radius; while (iterator.HasNext) { var particle = iterator.Next(); var localPos = particle->Position - particle->TriggerPos; var distSq = localPos.LengthSquared(); var normal = localPos; normal.Normalize(); if (Inside) { if (distSq < radiusSq) { continue; } SetReflected(distSq, particle, normal); } else { if (distSq > radiusSq) { continue; } SetReflected(distSq, particle, -normal); } } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { while (iterator.HasNext) { var particle = iterator.Next(); var left = particle->TriggerPos.X + Width * -0.5f; var right = particle->TriggerPos.X + Width * 0.5f; var top = particle->TriggerPos.Y + Height * -0.5f; var bottom = particle->TriggerPos.Y + Height * 0.5f; var xPos = particle->Position.X; var yPos = particle->Position.Y; if ((int)particle->Position.X < left) { xPos = particle->Position.X + Width; } else if ((int)particle->Position.X > right) { xPos = particle->Position.X - Width; } if ((int)particle->Position.Y < top) { yPos = particle->Position.Y + Height; } else if ((int)particle->Position.Y > bottom) { yPos = particle->Position.Y - Height; } particle->Position = new Vector2(xPos, yPos); } }
public override unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var velocityThreshold2 = VelocityThreshold * VelocityThreshold; var n = Interpolators.Count; while (iterator.HasNext) { var particle = iterator.Next(); var velocity2 = particle->Velocity.LengthSquared(); if (velocity2 >= velocityThreshold2) { for (var i = 0; i < n; i++) { var interpolator = Interpolators[i]; interpolator.Update(1, particle); } } else { var t = (float)Math.Sqrt(velocity2) / VelocityThreshold; for (var i = 0; i < n; i++) { var interpolator = Interpolators[i]; interpolator.Update(t, particle); } } } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var velocityThreshold2 = VelocityThreshold * VelocityThreshold; while (iterator.HasNext) { var particle = iterator.Next(); var velocity2 = particle->Velocity.X * particle->Velocity.X + particle->Velocity.Y * particle->Velocity.Y; var deltaColour = VelocityColour - StationaryColour; if (velocity2 >= velocityThreshold2) { VelocityColour.CopyTo(out particle->Colour); } else { var t = (float)Math.Sqrt(velocity2) / VelocityThreshold; particle->Colour = new Colour( deltaColour.H * t + StationaryColour.H, deltaColour.S * t + StationaryColour.S, deltaColour.L * t + StationaryColour.L); } } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var delta = MediumOpacity - InitialOpacity; var delta2 = FinalOpacity - MediumOpacity; bool mediumIsLowerInitial = (MediumOpacity - InitialOpacity) >= 0 ? false : true; bool finalIsLowerInitial = (FinalOpacity - MediumOpacity) >= 0 ? false : true; while (iterator.HasNext) { var particle = iterator.Next(); if (particle->Age == particle->StartAge) { particle->Opacity = InitialOpacity; } if (particle->Age < particle->StartAge * ((particle->Term * 100) / 2)) { particle->Opacity = delta * ((particle->Age) * 1f) + InitialOpacity; } if (particle->Age >= particle->StartAge * ((particle->Term * 100) / 2)) { particle->Opacity = delta2 * ((particle->Age) * 1f) + MediumOpacity; } if (particle->Opacity < 0) { particle->Opacity = 0; } } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { while (iterator.HasNext) { var particle = iterator.Next(); particle->Opacity = 1.0f - particle->Age; } }
public override unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { while (iterator.HasNext) { var particle = iterator.Next(); Assert.IsTrue(_predicate(*particle)); } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var delta = FinalOpacity - InitialOpacity; while (iterator.HasNext) { var particle = iterator.Next(); particle->Opacity = delta * particle->Age + InitialOpacity; } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var rotationRateDelta = RotationRate * elapsedSeconds; while (iterator.HasNext) { var particle = iterator.Next(); particle->Rotation += rotationRateDelta; } }
public override unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var vector = Direction * (Strength * elapsedSeconds); while (iterator.HasNext) { var particle = iterator.Next(); particle->Velocity = new Vector2( particle->Velocity.X + vector.X * particle->Mass, particle->Velocity.Y + vector.Y * particle->Mass); } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { while (iterator.HasNext) { var particle = iterator.Next(); var drag = -DragCoefficient * Density * particle->Mass * elapsedSeconds; particle->Velocity = new Vector( particle->Velocity.X + particle->Velocity.X * drag, particle->Velocity.Y + particle->Velocity.Y * drag); } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var delta = FinalHue - InitialHue; while (iterator.HasNext) { var particle = iterator.Next(); particle->Colour = new Colour( delta * particle->Age + InitialHue, particle->Colour.S, particle->Colour.L); } }
public override unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var n = Interpolators.Count; while (iterator.HasNext) { var particle = iterator.Next(); for (var i = 0; i < n; i++) { var interpolator = Interpolators[i]; interpolator.Update(particle->Age, particle); } } }
public void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { while (iterator.HasNext) { var particle = iterator.Next(); var diff = Position + particle->TriggerPos - particle->Position; var distance2 = diff.LengthSquared(); var speedGain = _gravConst * Mass / distance2 * elapsedSeconds; // normalize distances and multiply by speedGain particle->Velocity += diff.ToAxis() * speedGain; } }
public unsafe void Update(float elapsedseconds, ParticleBuffer.ParticleIterator iterator) { var delta = new HslColor(FinalColor.H - InitialColor.H, FinalColor.S - InitialColor.S, FinalColor.L - InitialColor.L); while (iterator.HasNext) { var particle = iterator.Next(); particle->Color = new HslColor( InitialColor.H + delta.H * particle->Age, InitialColor.S + delta.S * particle->Age, InitialColor.L + delta.L * particle->Age); } }
public override unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { while (iterator.HasNext) { var particle = iterator.Next(); var left = particle->TriggerPos.X + Width * -0.5f; var right = particle->TriggerPos.X + Width * 0.5f; var top = particle->TriggerPos.Y + Height * -0.5f; var bottom = particle->TriggerPos.Y + Height * 0.5f; var xPos = particle->Position.X; var xVel = particle->Velocity.X; var yPos = particle->Position.Y; var yVel = particle->Velocity.Y; if ((int)particle->Position.X < left) { xPos = left + (left - xPos); xVel = -xVel * RestitutionCoefficient; } else { if (particle->Position.X > right) { xPos = right - (xPos - right); xVel = -xVel * RestitutionCoefficient; } } if (particle->Position.Y < top) { yPos = top + (top - yPos); yVel = -yVel * RestitutionCoefficient; } else { if ((int)particle->Position.Y > bottom) { yPos = bottom - (yPos - bottom); yVel = -yVel * RestitutionCoefficient; } } particle->Position = new Vector2(xPos, yPos); particle->Velocity = new Vector2(xVel, yVel); } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { while (iterator.HasNext) { var particle = iterator.Next(); var left = 0; var right = MapManager.Instance.MapWidth; var top = 0; var bottom = MapManager.Instance.MapHeight - MapManager.Instance.TileSize.Y; var xPos = particle->Position.X; var xVel = particle->Velocity.X; var yPos = particle->Position.Y; var yVel = particle->Velocity.Y; if ((int)particle->Position.X < left) { xPos = left + (left - xPos); xVel = -xVel * RestitutionCoefficient; } else if (particle->Position.X > right) { xPos = right - (xPos - right); xVel = -xVel * RestitutionCoefficient; } if (particle->Position.Y < top) { yPos = top + (top - yPos); yVel = -yVel * RestitutionCoefficient; } else if ((int)particle->Position.Y > bottom) { yPos = bottom - (yPos - bottom); yVel = -yVel * RestitutionCoefficient; xVel = xVel * RestitutionCoefficient * 2; } particle->Position = new Vector2(xPos, yPos); particle->Velocity = new Vector2(xVel, yVel); } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { var velocityThreshold2 = VelocityThreshold * VelocityThreshold; while (iterator.HasNext) { var particle = iterator.Next(); var velocity2 = particle->Velocity.LengthSq; float h; if (velocity2 >= velocityThreshold2) { h = VelocityHue; } else { var t = (float)Math.Sqrt(velocity2) / VelocityThreshold; h = MathHelper.Lerp(StationaryHue, VelocityHue, t); } particle->Colour = new Colour(h, particle->Colour.S, particle->Colour.L); } }
public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { if (TimePass < VelocityChangeColor) { TimePass++; } else { TimePass = 0; } if (TimePass >= VelocityChangeColor) { useColour1 = !useColour1; TimePass = 0; } while (iterator.HasNext) { var particle = iterator.Next(); particle->Colour = useColour1 ? Colour1 : Colour2; } }