public Particle(Flipbook flipbook, Vector2 trajectory, Vector2 windInfluence, ParticleUpdateConfiguration particleConfiguration) : base(flipbook) { alpha = 1; if (particleConfiguration.Rotate) { rotatingSpeed = RandomValue * Parameter.GroundParticleMaximumRotatingSpeed; } if (particleConfiguration.SetScale) { scalingFactor = RandomValue * Parameter.GroundParticleMaximumScalingFactor; } if (particleConfiguration.Fade) { alphaFactor = Parameter.GroundParticleInitialAlphaFactor + (float)Parameter.Random.NextDouble() * 5; } float randomValue = (float)Parameter.Random.NextDouble(); float yAccFactor = (particleConfiguration.UseYAcceleration) ? Parameter.GroundParticleInitialYAcceleration - windInfluence.Y : 0; float xAccFactor = (particleConfiguration.UseXAcceleration) ? windInfluence.X : 0; yMovement = new AcceleratedMovement(); yMovement.Preset(Parameter.GroundParticleInitialYSpeed + (randomValue * Parameter.GroundParticleMaximumYSpeed * trajectory.Y), yAccFactor); xMovement = new AcceleratedMovement(); xMovement.Preset(randomValue * Parameter.GroundParticleMaximumXSpeed * trajectory.X, xAccFactor); initialPosition = flipbook.Position; }
public AcceleratedMovement(int defaultCount = 64) { self = this; taa = new TransformAccessArray(defaultCount); velocities = new NativeArray <Vector3>(defaultCount, Allocator.Persistent); accelerations = new NativeArray <float>(defaultCount, Allocator.Persistent); target_velocities = new NativeArray <Vector3>(defaultCount, Allocator.Persistent); terminated = new NativeArray <byte>(defaultCount, Allocator.Persistent); callbacks = new List <Action>(); to_remove = new List <int>(); }