public void ParticleWithNoMaterialThrowsException() { emitterData = CreateDataAndEmitterWithAnimation("DeltaEngineLogo"); emitterData.ParticleMaterial = null; Assert.Throws <ParticleEmitter.UnableToCreateWithoutMaterial>( () => new ParticleEmitter(emitterData, new Vector2D(0.5f, 0.5f))); }
private void PrepareSimplestPossibleData() { emitterData = new ParticleEmitterData(); emitterData.ParticleMaterial = new Material(ShaderFlags.Position2DColoredTextured, "DeltaEngineLogo"); SaveDataToStream(); }
public ParticleEmitterPrimitive(Viewer viewer, ParticleEmitterData data, WorldPosition worldPosition) { this.viewer = viewer; this.graphicsDevice = viewer.GraphicsDevice; MaxParticles = (int)(ParticleEmitterViewer.MaxParticlesPerSecond * ParticleEmitterViewer.MaxParticleDuration); Vertices = new ParticleVertex[MaxParticles * VerticiesPerParticle]; VertexDeclaration = new VertexDeclaration(ParticleVertex.VertexStride, ParticleVertex.VertexElements); VertexBuffer = new DynamicVertexBuffer(graphicsDevice, VertexDeclaration, MaxParticles * VerticiesPerParticle, BufferUsage.WriteOnly); IndexBuffer = InitIndexBuffer(graphicsDevice, MaxParticles * IndiciesPerParticle); EmitterData = data; XNAInitialVelocity = data.XNADirection; XNATargetVelocity = Vector3.Up; ParticlesPerSecond = 0; ParticleDuration = 3; ParticleColor = Color.White; WorldPosition = worldPosition; LastWorldPosition = new WorldPosition(worldPosition); TimeParticlesLastEmitted = (float)viewer.Simulator.GameTime; PerlinStart = new float[] { (float)Viewer.Random.NextDouble() * 30000f, (float)Viewer.Random.NextDouble() * 30000f, (float)Viewer.Random.NextDouble() * 30000f, (float)Viewer.Random.NextDouble() * 30000f, }; }
public void LoadDefaultData() { PrepareSimplestPossibleData(); var loadedData = new ParticleEmitterData(); loadedData.LoadFromFile(dataStream); }
public void saveEmitter(SimObject emitter) { PEE_EmitterSelector_Control PEE_EmitterSelector_Control = "PEE_EmitterSelector_Control"; ParticleEmitterData PE_EmitterEditor_NotDirtyEmitter = "PE_EmitterEditor_NotDirtyEmitter"; PersistenceManager PE_EmitterSaver = "PE_EmitterSaver"; ParticleEditor ParticleEditor = "ParticleEditor"; GuiTextEditCtrl TextEdit = PEE_EmitterSelector_Control.FOT("TextEdit"); string newName; if (emitter == "") { newName = TextEdit.getText(); } else { newName = emitter.getName(); } this.currEmitter.setName(newName); PE_EmitterEditor_NotDirtyEmitter.assignFieldsFrom(emitter); PE_EmitterEditor_NotDirtyEmitter["originalName"] = newName; PE_EmitterSaver.saveDirty(); this.currEmitter = newName.getID(); this.setEmitterNotDirty(); ParticleEditor.createParticleList(); }
private void PrepareSimplestPossibleData() { emitterData = new ParticleEmitterData(); emitterData.ParticleMaterial = new Material(ShaderFlags.Position2DColoredTextured, "DeltaEngineLogo"); SaveDataToStream(); }
public void loadNewEmitter(string emitter) { ParticleEditor ParticleEditor = "ParticleEditor"; GuiPopUpMenuCtrl PEE_EmitterSelector = "PEE_EmitterSelector"; ParticleEmitterData PE_EmitterEditor_NotDirtyEmitter = "PE_EmitterEditor_NotDirtyEmitter"; ParticleParticleEditor.PE_ParticleEditor PE_ParticleEditor = "PE_ParticleEditor"; GuiCheckBoxCtrl PEE_infiniteLoop = this.FOT("PEE_infiniteLoop"); SimObject current; if (emitter.isObject()) { current = emitter.getID(); } else { current = PEE_EmitterSelector.getSelected(); } this.currEmitter = current; PE_EmitterEditor_NotDirtyEmitter.assignFieldsFrom(current); PE_EmitterEditor_NotDirtyEmitter["originalName"] = current["name"]; this.guiSync(); this.setEmitterNotDirty(); PE_ParticleEditor.loadNewParticle(Util.getWord(current["particles"], 0)); ParticleEditor.updateEmitterNode(); PEE_infiniteLoop.setStateOn(current["lifetimeMS"].AsInt() == 0); }
public void LoadingFromEmptyStreamThrows() { dataStream = new MemoryStream(); var loadedData = new ParticleEmitterData(); Assert.Throws<ParticleEmitterData.EmptyEmitterDataFileGiven>( () => { loadedData.LoadFromFile(dataStream); }); }
public void CreateEmitterAndKeepRunningWithSpriteSheetAnimation() { emitterData = CreateDataAndEmitterWithAnimation("EarthSpriteSheet"); emitter = new ParticleEmitter(emitterData, Vector2D.Half); emitter.Position = new Vector2D(0.5f, 0.7f); AdvanceTimeAndUpdateEntities(); Assert.IsTrue(emitter.IsPauseable); }
public void saveEmitterDialogDontSave(SimObject emitter) { ParticleEmitterData PE_EmitterEditor_NotDirtyEmitter = "PE_EmitterEditor_NotDirtyEmitter"; emitter.setName(PE_EmitterEditor_NotDirtyEmitter["originalName"]); emitter.assignFieldsFrom(PE_EmitterEditor_NotDirtyEmitter); this.setEmitterNotDirty(); }
public void LoadingFromEmptyStreamThrows() { dataStream = new MemoryStream(); var loadedData = new ParticleEmitterData(); Assert.Throws <ParticleEmitterData.EmptyEmitterDataFileGiven>( () => { loadedData.LoadFromFile(dataStream); }); }
public static ParticleSystem ImpactEffect() { var impactEffect = new ParticleSystem(); var impactEmitterData = new ParticleEmitterData(); impactEmitterData.ParticleMaterial = GetFallbackMaterial(); impactEffect.AttachEmitter(new ParticleEmitter(impactEmitterData, Vector3D.Zero)); return impactEffect; }
public ParticlePreviewWindow(ParticleEmitterData data) : base(800, 800, "Particle Preview", GameWindowFlags.FixedWindow) { PreviewInstance = this; _state = new State(); this.PushState(_state); SetParticleData(data); }
public void DisposeEmitterAfterSetTime() { emitterData = CreateDataAndEmitterWithAnimation("DeltaEngineLogo"); emitter = new ParticleEmitter(emitterData, Vector2D.Half); emitter.DisposeAfterSeconds(0.1f); AdvanceTimeAndUpdateEntities(0.25f); emitter.DisposeAfterSeconds(0.1f); Assert.IsFalse(emitter.IsActive); }
public void CreateRotatedParticles() { emitterData = CreateDataAndEmitterWithAnimation("DeltaEngineLogo"); emitterData.StartRotation = new RangeGraph <ValueRange>(new ValueRange(45, 50), new ValueRange(65, 70)); emitterData.Size = new RangeGraph <Size>(new Size(0.05f)); emitter = new ParticleEmitter(emitterData, Vector2D.Half); emitter.Position = new Vector2D(0.5f, 0.7f); }
public static ParticleSystem CreepTransformationEffect() { var transformationEffect = new ParticleSystem(); var transformationEmitterData = new ParticleEmitterData(); transformationEmitterData.ParticleMaterial = GetFallbackMaterial(); transformationEffect.AttachEmitter(new ParticleEmitter(transformationEmitterData, Vector3D.Zero)); return transformationEffect; }
public ParticleEmitterComponent(Entity entity, ParticleEmitterData data) : base(entity) { _emitter = new ParticleEmitter(data); if (data.ParticleTexture != "") { _particleTexture = Assets.GetTexture("Particles/" + data.ParticleTexture); } }
public void SetParticleData(ParticleEmitterData data) { if (_emitterEntity != null) { _emitterEntity.Destroy(); } _emitterEntity = Entity.CreateInstance(_state.EntityManager); _emitterEntity.GetTransform().Position = new Vector3(400, 400, 0); ParticleEmitterComponent component = new ParticleEmitterComponent(_emitterEntity, data); }
public ParticleEmitterViewer(Viewer viewer, ParticleEmitterData data, IWorldPosition positionSource) { Viewer = viewer; EmissionHoleM2 = (MathHelper.Pi * ((data.NozzleWidth / 2f) * (data.NozzleWidth / 2f))); Emitter = new ParticleEmitterPrimitive(viewer, data, positionSource); #if DEBUG_EMITTER_INPUT EmitterID = ++EmitterIDIndex; InputCycle = Viewer.Random.Next(InputCycleLimit); #endif }
public static ParticleSystem CreepDeathEffect() { var deathEffect = new ParticleSystem(); var emitterData = new ParticleEmitterData(); emitterData.ParticleMaterial = GetFallbackMaterial(); emitterData.Size = new RangeGraph<Size>(new Size(1.0f), new Size(1.0f)); emitterData.LifeTime = 1.0f; emitterData.MaximumNumberOfParticles = 1; deathEffect.AttachEmitter(new ParticleEmitter(emitterData, Vector3D.Zero)); return deathEffect; }
private ParticleEmitter CreateAndAttachEmitter(Vector3D emitterPosition) { var textureData = new ImageCreationData(new Size(32)); var material = new Material(ContentLoader.Create<Shader>( new ShaderCreationData(ShaderFlags.ColoredTextured)), ContentLoader.Create<Image>(textureData)); var emitterData = new ParticleEmitterData { ParticleMaterial = material }; var emitter = new ParticleEmitter(emitterData, emitterPosition); particleSystem.AttachEmitter(emitter); return emitter; }
private static Stream CreateEmitter3D(ParticleEmitterPositionType positionType) { var pointEmitter = new ParticleEmitterData(); pointEmitter.ParticleMaterial = new Material(ShaderFlags.ColoredTextured, "DeltaEngineLogo"); pointEmitter.PositionType = positionType; var data = BinaryDataExtensions.SaveToMemoryStream(pointEmitter); data.Seek(0, SeekOrigin.Begin); return(data); }
public static ParticleSystem ProjectileEffect() { var projectileEffect = new ParticleSystem(); var projectileEmitterData = new ParticleEmitterData(); projectileEmitterData.ParticleMaterial = GetFallbackMaterial(); projectileEmitterData.SpawnInterval = 0.01f; projectileEmitterData.LifeTime = 0; projectileEmitterData.MaximumNumberOfParticles = 1; projectileEmitterData.Color = new RangeGraph<Color>(Color.Red, Color.Red); projectileEmitterData.Size = new RangeGraph<Size>(new Size(0.2f), new Size(0.2f)); projectileEffect.AttachEmitter(new ParticleEmitter(projectileEmitterData, Vector3D.Zero)); return projectileEffect; }
public Grid(BlocksContent content) { this.content = content; zoomBrickData = new ParticleEmitterData { LifeTime = 0.2f, Color = new RangeGraph <Color>(Color.White, Color.TransparentWhite), MaximumNumberOfParticles = 10, SpawnInterval = -1, StartVelocity = new RangeGraph <Vector3D>(Vector2D.Zero, Vector2D.Zero), StartPosition = new RangeGraph <Vector3D>(Vector2D.Zero, Vector2D.Zero), }; }
public EnemyPlane(Vector2D initialPosition) : base(ContentLoader.Load <Material>("EnemyPlaneMaterial"), initialPosition) { Hitpoints = 5; verticalDecelerationFactor = 3.0f; verticalAccelerationFactor = 1.5f; RenderLayer = (int)DefRenderLayer.Player; elapsedSinceLastMissile = missileCadenceInverse - 0.2f; // ParticleSystemData can very well be loaded by a ContentLoader, unused for simplicity in M5 //machineGunAndLauncher = // new ParticleSystem(ContentLoader.Load<ParticleSystemData>("MachineGunAndLauncherEnemy")); machineGunAndLauncher = new ParticleSystem(); var machineGunData = new ParticleEmitterData { ParticleMaterial = ContentLoader.Load <Material>("BulletMaterial"), Size = new RangeGraph <Size>(new Size(0.01f, 0.005f), new Size(0.01f, 0.005f)), LifeTime = 3.0f, StartPosition = new RangeGraph <Vector3D>(new Vector3D(0.0f, -0.01f, 0.0f), new Vector3D(0.0f, -0.01f, 0.0f)), StartRotation = new RangeGraph <ValueRange>(new ValueRange(180.0f, 180.0f), new ValueRange(180.0f, 180.0f)), StartVelocity = new RangeGraph <Vector3D>(new Vector3D(-0.8f, 0.0f, 0.0f), Vector3D.Zero), Acceleration = new RangeGraph <Vector3D>(new Vector3D(0.0f, 0.1f, 0.0f), new Vector3D(0.0f, 0.1f, 0.0f)), SpawnInterval = 0, MaximumNumberOfParticles = 64 }; var launcherData = new ParticleEmitterData { ParticleMaterial = ContentLoader.Load <Material>("RocketMaterial"), Size = new RangeGraph <Size>(new Size(0.03f, 0.007f), new Size(0.03f, 0.007f)), LifeTime = 3.0f, StartPosition = new RangeGraph <Vector3D>(new Vector3D(0.0f, 0.01f, 0.0f), new Vector3D(0.0f, 0.01f, 0.0f)), StartRotation = new RangeGraph <ValueRange>(new ValueRange(180.0f, 180.0f), new ValueRange(180.0f, 180.0f)), StartVelocity = new RangeGraph <Vector3D>(new Vector3D(-0.5f, 0.0f, 0.0f), Vector3D.Zero), Acceleration = new RangeGraph <Vector3D>(new Vector3D[] { new Vector3D(0.0f, -0.1f, 0.0f), new Vector3D(0.0f, 0.1f, 0.0f), new Vector3D(0.0f, -0.1f, 0.0f) }), SpawnInterval = 0, MaximumNumberOfParticles = 8 }; machineGunAndLauncher.AttachEmitter(new ParticleEmitter(machineGunData, Vector3D.Zero)); machineGunAndLauncher.AttachEmitter(new ParticleEmitter(launcherData, Vector3D.Zero)); machineGunAndLauncher.Position = new Vector3D(initialPosition); Add(new Velocity2D(new Vector2D(-0.3f, 0), MaximumSpeed)); Start <EnemyHandler>(); }
private void SetMapEvent(MapEvent mapEvent) { _mapEvent = mapEvent; SetSpriteID(mapEvent.SpriteID); SetRealPosition(); SetYFrame((int)_mapEvent.EventDirection); ParticleEmitterData data = ParticleEmitterData.GetEmitterData(_mapEvent.ParticleEmitterID); if (data != null) { _particleEmitterComponent = new ParticleEmitterComponent(Parent, data); } }
public static ParticleSystem AttackEffect() { var attackEffect = new ParticleSystem(); var attackEmitterData = new ParticleEmitterData(); attackEmitterData.ParticleMaterial = GetFallbackMaterial(); attackEmitterData.StartVelocity = new RangeGraph<Vector3D>(-Vector3D.UnitY); attackEmitterData.SpawnInterval = 0; attackEmitterData.MaximumNumberOfParticles = 16; attackEmitterData.LifeTime = 0.5f; attackEmitterData.Size = new RangeGraph<Size>(new Size(0.2f), new Size(0.4f)); attackEmitterData.Color = new RangeGraph<Color>(Color.Red, Color.TransparentBlack); attackEffect.AttachEmitter(new ParticleEmitter(attackEmitterData, Vector3D.Zero)); return attackEffect; }
private ParticleEmitter CreateAndAttachEmitter(Vector3D emitterPosition) { var textureData = new ImageCreationData(new Size(32)); var material = new Material(ContentLoader.Create <Shader>( new ShaderCreationData(ShaderFlags.ColoredTextured)), ContentLoader.Create <Image>(textureData)); var emitterData = new ParticleEmitterData { ParticleMaterial = material }; var emitter = new ParticleEmitter(emitterData, emitterPosition); particleSystem.AttachEmitter(emitter); return(emitter); }
public static ParticleEmitter CreateHitEffect(Vector2D position) { var material = new Material(ShaderFlags.Position2DColoredTextured, "Hit"); var deathEffect = new ParticleEmitterData { ParticleMaterial = material, MaximumNumberOfParticles = 1, SpawnInterval = 0, Size = new RangeGraph <Size>(new Size(0.06f), new Size(0.09f)), LifeTime = 0.5f }; return(new ParticleEmitter(deathEffect, position)); }
/// <summary> /// Special behavior of the player's plane for use in the side-scrolling shoot'em'up. /// Can be controlled in its vertical position, fire shots and make the environment move. /// (It is so mighty that, when it flies faster, in truth the world turns faster!) /// </summary> public PlayerPlane(Vector2D initialPosition) : base(ContentLoader.Load <Material>("PlayerPlaneMaterial"), initialPosition) { Hitpoints = 3; verticalDecelerationFactor = 3.0f; verticalAccelerationFactor = 1.5f; mgCadenceInverse = PlayerMgCadenceInverse; missileCadenceInverse = PlayerMissileCadenceInverse; RenderLayer = (int)DefRenderLayer.Player; // ParticleSystemData can very well be loaded by a ContentLoader, unused for simplicity in M5 //machineGunAndLauncher = // new ParticleSystem(ContentLoader.Load<ParticleSystemData>("MachineGunAndLauncher")); machineGunAndLauncher = new ParticleSystem(); var machineGunData = new ParticleEmitterData { ParticleMaterial = ContentLoader.Load <Material>("BulletMaterial"), Size = new RangeGraph <Size>(new Size(0.01f, 0.005f), new Size(0.01f, 0.005f)), LifeTime = 3.0f, StartPosition = new RangeGraph <Vector3D>(new Vector3D(0.0f, -0.01f, 0.0f), new Vector3D(0.0f, -0.01f, 0.0f)), StartVelocity = new RangeGraph <Vector3D>(new Vector3D(0.8f, 0.0f, 0.0f), Vector3D.Zero), Acceleration = new RangeGraph <Vector3D>(new Vector3D(0.0f, 0.1f, 0.0f), new Vector3D(0.0f, 0.1f, 0.0f)), SpawnInterval = 0, MaximumNumberOfParticles = 64 }; var launcherData = new ParticleEmitterData { ParticleMaterial = ContentLoader.Load <Material>("RocketMaterial"), Size = new RangeGraph <Size>(new Size(0.03f, 0.007f), new Size(0.03f, 0.007f)), LifeTime = 3.0f, StartPosition = new RangeGraph <Vector3D>(new Vector3D(0.0f, 0.01f, 0.0f), new Vector3D(0.0f, 0.01f, 0.0f)), StartVelocity = new RangeGraph <Vector3D>(new Vector3D(0.3f, 0.0f, 0.0f), Vector3D.Zero), Acceleration = new RangeGraph <Vector3D>(new Vector3D[] { new Vector3D(0.0f, -0.1f, 0.0f), new Vector3D(0.0f, 0.1f, 0.0f), new Vector3D(0.0f, -0.1f, 0.0f) }), SpawnInterval = 0, MaximumNumberOfParticles = 8 }; machineGunAndLauncher.AttachEmitter(new ParticleEmitter(machineGunData, Vector3D.Zero)); machineGunAndLauncher.AttachEmitter(new ParticleEmitter(launcherData, Vector3D.Zero)); machineGunAndLauncher.Position = new Vector3D(initialPosition); Add(new Velocity2D(Vector2D.Zero, MaximumSpeed)); Start <PlayerMovement>(); Start <MachineGunFire>(); }
private ParticleEmitterData CreateDataAndEmitterWithAnimation(string contentName) { emitterData = new ParticleEmitterData { MaximumNumberOfParticles = 512, SpawnInterval = 0.1f, LifeTime = 5f, Size = new RangeGraph <Size>(new Size(0.05f), new Size(0.10f)), Color = new RangeGraph <Color>(Color.White), Acceleration = new RangeGraph <Vector3D>(new Vector2D(0, 0.1f)), StartVelocity = new RangeGraph <Vector3D>(new Vector2D(0, -0.3f), new Vector2D(0.05f, 0.01f)), ParticleMaterial = new Material(ShaderFlags.Position2DColoredTextured, contentName) }; return(emitterData); }
private void PrepareSomeData() { emitterData = new ParticleEmitterData(); emitterData.LifeTime = 1.2f; emitterData.SpawnInterval = 0.2f; emitterData.BillboardMode = BillboardMode.Ground; emitterData.MaximumNumberOfParticles = 128; emitterData.ParticleMaterial = new Material(ShaderFlags.Position2DColoredTextured, "DeltaEngineLogo"); emitterData.ParticlesPerSpawn = new RangeGraph<ValueRange>(new ValueRange(3.0f, 3.0f), new ValueRange(3.0f, 3.0f)); emitterData.Color = new RangeGraph<Color>(new[] { Color.Black, Color.DarkGreen, Color.Gold }); emitterData.StartVelocity = new RangeGraph<Vector3D>(new[] { -Vector3D.UnitX, Vector3D.UnitX, Vector3D.Zero }); SaveDataToStream(); }
public void ParticleTracksEmitterAcrossScreenFor4Seconds() { emitterData = new ParticleEmitterData { MaximumNumberOfParticles = 1, SpawnInterval = 0.001f, Size = new RangeGraph <Size>(new Size(0.1f)), Color = new RangeGraph <Color>(Color.White), ParticleMaterial = new Material(ShaderFlags.Position2DColoredTextured, "ImageAnimation"), DoParticlesTrackEmitter = true }; emitter = new ParticleEmitter(emitterData, new Vector2D(0.2f, 0.5f)); emitter.Start <MoveAcrossScreen>(); emitter.DisposeAfterSeconds(4); AdvanceTimeAndUpdateEntities(); }
private void PrepareSomeData() { emitterData = new ParticleEmitterData(); emitterData.LifeTime = 1.2f; emitterData.SpawnInterval = 0.2f; emitterData.BillboardMode = BillboardMode.Ground; emitterData.MaximumNumberOfParticles = 128; emitterData.ParticleMaterial = new Material(ShaderFlags.Position2DColoredTextured, "DeltaEngineLogo"); emitterData.ParticlesPerSpawn = new RangeGraph <ValueRange>(new ValueRange(3.0f, 3.0f), new ValueRange(3.0f, 3.0f)); emitterData.Color = new RangeGraph <Color>(new[] { Color.Black, Color.DarkGreen, Color.Gold }); emitterData.StartVelocity = new RangeGraph <Vector3D>(new[] { -Vector3D.UnitX, Vector3D.UnitX, Vector3D.Zero }); SaveDataToStream(); }
public void LoadCommonGradeData() { PrepareSomeData(); var loadedData = new ParticleEmitterData(); loadedData.LoadFromFile(dataStream); Assert.AreEqual(emitterData.SpawnInterval, loadedData.SpawnInterval); Assert.AreEqual(emitterData.LifeTime, loadedData.LifeTime); Assert.AreEqual(emitterData.MaximumNumberOfParticles, loadedData.MaximumNumberOfParticles); Assert.AreEqual(emitterData.StartVelocity.Values, loadedData.StartVelocity.Values); Assert.AreEqual(emitterData.Acceleration.Values, loadedData.Acceleration.Values); Assert.AreEqual(emitterData.Size.Values, loadedData.Size.Values); Assert.AreEqual(emitterData.StartRotation.Values, loadedData.StartRotation.Values); Assert.AreEqual(emitterData.RotationSpeed.Values, loadedData.RotationSpeed.Values); Assert.AreEqual(emitterData.Color.Values, loadedData.Color.Values); Assert.AreEqual(emitterData.PositionType, loadedData.PositionType); Assert.AreEqual(emitterData.StartPosition.Values, loadedData.StartPosition.Values); Assert.AreEqual(emitterData.ParticlesPerSpawn.Values, loadedData.ParticlesPerSpawn.Values); Assert.AreEqual(emitterData.DoParticlesTrackEmitter, loadedData.DoParticlesTrackEmitter); Assert.AreEqual(emitterData.BillboardMode, loadedData.BillboardMode); }
public void LoadDefaultData() { PrepareSimplestPossibleData(); var loadedData = new ParticleEmitterData(); loadedData.LoadFromFile(dataStream); }
private void CreateDataAndEmitter(int maxParticles = 1, float spawnInterval = 0.01f, float lifeTime = 0.002f) { emitterData = CreateData(maxParticles, spawnInterval, lifeTime); emitter = new ParticleEmitter(emitterData, Vector2D.Half); }
public void EmittersFromSameDataAreStillIndependentlyChangeable() { emitterData = CreateDataAndEmitterWithAnimation("DeltaEngineLogo"); var emitterChanging = new ParticleEmitter(emitterData, Vector3D.UnitY); var emitterStayingSame = new ParticleEmitter(emitterData, Vector3D.UnitX); emitterChanging.EmitterData.SpawnInterval += 0.2f; emitterChanging.EmitterData.Acceleration = new RangeGraph<Vector3D>(Vector3D.One); emitterChanging.EmitterData.Color = new RangeGraph<Color>(Color.Green, Color.Yellow); emitterChanging.EmitterData.StartRotation.Start = new ValueRange(3, 4); Assert.AreNotSame(emitterData, emitterChanging.EmitterData); Assert.AreNotEqual(emitterStayingSame.EmitterData.SpawnInterval, emitterChanging.EmitterData.SpawnInterval); Assert.AreNotEqual(emitterStayingSame.EmitterData.Acceleration.Values, emitterChanging.EmitterData.Acceleration.Values); Assert.AreNotEqual(emitterStayingSame.EmitterData.Color.Values, emitterChanging.EmitterData.Color.Values); Assert.AreNotEqual(emitterStayingSame.EmitterData.StartRotation, emitterChanging.EmitterData.StartRotation); }
public void ParticleTracksEmitterAcrossScreenFor4Seconds() { emitterData = new ParticleEmitterData { MaximumNumberOfParticles = 1, SpawnInterval = 0.001f, Size = new RangeGraph<Size>(new Size(0.1f)), Color = new RangeGraph<Color>(Color.White), ParticleMaterial = new Material(ShaderFlags.Position2DColoredTextured, "ImageAnimation"), DoParticlesTrackEmitter = true }; emitter = new ParticleEmitter(emitterData, new Vector2D(0.2f, 0.5f)); emitter.Start<MoveAcrossScreen>(); emitter.DisposeAfterSeconds(4); AdvanceTimeAndUpdateEntities(); }
public void ParticlesSwirlAroundMousePosition() { emitterData = GetSwirlingParticleEmitterData(); emitter = new ParticleEmitter(emitterData, Vector2D.Half); new Command(position => emitter.Position = position).Add(new MouseMovementTrigger()); }
public void ParticleWithNoMaterialThrowsException() { emitterData = CreateDataAndEmitterWithAnimation("DeltaEngineLogo"); emitterData.ParticleMaterial = null; Assert.Throws<ParticleEmitter.UnableToCreateWithoutMaterial>( () => new ParticleEmitter(emitterData, new Vector2D(0.5f, 0.5f))); }
public void DisposeEmitterAfterSetTime() { emitterData = CreateDataAndEmitterWithAnimation("DeltaEngineLogo"); emitter = new ParticleEmitter(emitterData, Vector2D.Half); emitter.DisposeAfterSeconds(0.1f); AdvanceTimeAndUpdateEntities(0.25f); emitter.DisposeAfterSeconds(0.1f); Assert.IsFalse(emitter.IsActive); }
public void CreateRotatingParticles() { emitterData = CreateDataAndEmitterWithAnimation("DeltaEngineLogo"); emitterData.StartRotation = new RangeGraph<ValueRange>(new ValueRange(0, 5), new ValueRange(45, 50)); emitterData.RotationSpeed = new RangeGraph<ValueRange>(new ValueRange(300.0f, 320.0f), new ValueRange(50f, 80f)); emitterData.Size = new RangeGraph<Size>(new Size(0.05f)); emitter = new ParticleEmitter(emitterData, Vector2D.Half); emitter.Position = new Vector2D(0.5f, 0.7f); }
public void CreateEmitterAndKeepRunningWithSpriteSheetAnimation() { emitterData = CreateDataAndEmitterWithAnimation("EarthSpriteSheet"); emitter = new ParticleEmitter(emitterData, Vector2D.Half); emitter.Position = new Vector2D(0.5f, 0.7f); AdvanceTimeAndUpdateEntities(); Assert.IsTrue(emitter.IsPauseable); }
private ParticleEmitterData CreateDataAndEmitterWithAnimation(string contentName) { emitterData = new ParticleEmitterData { MaximumNumberOfParticles = 512, SpawnInterval = 0.1f, LifeTime = 5f, Size = new RangeGraph<Size>(new Size(0.05f), new Size(0.10f)), Color = new RangeGraph<Color>(Color.White), Acceleration = new RangeGraph<Vector3D>(new Vector2D(0, 0.1f)), StartVelocity = new RangeGraph<Vector3D>(new Vector2D(0, -0.3f), new Vector2D(0.05f, 0.01f)), ParticleMaterial = new Material(ShaderFlags.Position2DColoredTextured, contentName) }; return emitterData; }
public void MultipleEmittersShallNotInterfere() { CreateDataAndEmitter(12, 0.1f, 5); var data = new ParticleEmitterData { MaximumNumberOfParticles = 12, SpawnInterval = 0.4f, LifeTime = 2, Size = new RangeGraph<Size>(new Size(0.03f)), Color = new RangeGraph<Color>(Color.Gray), Acceleration = new RangeGraph<Vector3D>(-Vector2D.UnitY), StartVelocity = new RangeGraph<Vector3D>(new Vector2D(0.3f, -0.1f)), ParticleMaterial = new Material(ShaderFlags.Position2DColoredTextured, "DeltaEngineLogo") }; new ParticleEmitter(data, Vector2D.Half); }