/// <summary> /// Default constructor which also registers the fields required by this updater /// </summary> public UpdaterRotationOverTime() { RequiredFields.Add(ParticleFields.Angle); var curve = new ComputeAnimationCurveFloat(); SamplerMain.Curve = curve; }
/// <summary> /// Default constructor which also registers the fields required by this updater /// </summary> public UpdaterSizeOverTime() { RequiredFields.Add(ParticleFields.Size); var curve = new ComputeAnimationCurveFloat(); SamplerMain.Curve = curve; }
public override Task <Entity> CreateEntity(EntityHierarchyItemViewModel parent) { var name = ComputeNewName(parent, "Ribbon particle system"); var component = new ParticleSystemComponent(); var emitter = new ParticleEmitter { ParticleLifetime = new Vector2(2, 2) }; // 30 Particles per second var spawner = new SpawnerPerSecond { SpawnCount = 30 }; emitter.Spawners.Add(spawner); // Ribbon var ribbonShape = new ShapeBuilderRibbon { SmoothingPolicy = SmoothingPolicy.Best, Segments = 15, TextureCoordinatePolicy = TextureCoordinatePolicy.Stretched, TexCoordsFactor = 1f }; emitter.ShapeBuilder = ribbonShape; // Velocity var randVel = new InitialVelocitySeed { VelocityMin = new Vector3(-0.15f, 3f, -0.15f), VelocityMax = new Vector3(0.15f, 3, 0.15f) }; emitter.Initializers.Add(randVel); // Spawn Order var initialOrder = new InitialSpawnOrder(); emitter.Initializers.Add(initialOrder); // Size by Lifetime var sizeCurve = new ComputeAnimationCurveFloat(); var key0 = new AnimationKeyFrame <float> { Key = 0, Value = 0.1f }; var key1 = new AnimationKeyFrame <float> { Key = 0.9f, Value = 0f }; sizeCurve.KeyFrames.Add(key0); sizeCurve.KeyFrames.Add(key1); var sizeAnimation = new UpdaterSizeOverTime { SamplerMain = { Curve = sizeCurve } }; emitter.Updaters.Add(sizeAnimation); emitter.SortingPolicy = EmitterSortingPolicy.ByOrder; component.ParticleSystem.Emitters.Add(emitter); return(CreateEntityWithComponent(name, component)); }