/// <summary> /// Override the base class LoadContent to load the texture. once it's /// loaded, calculate the origin. /// </summary> protected override void LoadContent() { // Load our settings settings = Game.Content.Load <ParticleSystemSettings>(settingsAssetName); // load the texture.... texture = Game.Content.Load <Texture2D>(settings.TextureFilename); // ... and calculate the center. this'll be used in the draw call, we // always want to rotate and scale around this point. origin.X = texture.Width / 2; origin.Y = texture.Height / 2; // create the SpriteBatch that will draw the particles spriteBatch = new SpriteBatch(GraphicsDevice); // create the blend state using the values from our settings blendState = new BlendState { AlphaSourceBlend = settings.SourceBlend, ColorSourceBlend = settings.SourceBlend, AlphaDestinationBlend = settings.DestinationBlend, ColorDestinationBlend = settings.DestinationBlend }; base.LoadContent(); }
public override void Initialize(ContentManager contentLoader, ComponentManifest manifest) { mSettings = contentLoader.Load <ParticleSystemSettings>((string)(manifest.Properties[ManifestKeys.PARTICLE_SYSTEM_SETTINGS])); string techniqueName = "StandardParticles"; if (manifest.Properties.ContainsKey(ManifestKeys.TECHNIQUE_NAME)) { techniqueName = (string)(manifest.Properties[ManifestKeys.TECHNIQUE_NAME]); } LoadParticleEffect(contentLoader, techniqueName); // Allocate the particle array, and fill in the corner fields (which never change). mParticles = new ParticleVertex[mSettings.MaxParticles * 4]; for (int i = 0; i < mSettings.MaxParticles; ++i) { mParticles[i * 4 + 0].Corner = new Short2(-1.0f, -1.0f); mParticles[i * 4 + 1].Corner = new Short2(+1.0f, -1.0f); mParticles[i * 4 + 2].Corner = new Short2(+1.0f, +1.0f); mParticles[i * 4 + 3].Corner = new Short2(-1.0f, +1.0f); } mParticleData = new ParticleData(); // Create a dynamic vertex buffer. mParticleData.VertexBuffer = new DynamicVertexBuffer( SharedResources.Game.GraphicsDevice, ParticleVertex.VertexDeclaration, mSettings.MaxParticles * 4, BufferUsage.WriteOnly); // Create and populate the index buffer. ushort[] indices = new ushort[mSettings.MaxParticles * 6]; for (int i = 0; i < mSettings.MaxParticles; i++) { indices[i * 6 + 0] = (ushort)(i * 4 + 0); indices[i * 6 + 1] = (ushort)(i * 4 + 1); indices[i * 6 + 2] = (ushort)(i * 4 + 2); indices[i * 6 + 3] = (ushort)(i * 4 + 0); indices[i * 6 + 4] = (ushort)(i * 4 + 2); indices[i * 6 + 5] = (ushort)(i * 4 + 3); } mParticleData.IndexBuffer = new IndexBuffer( SharedResources.Game.GraphicsDevice, typeof(ushort), indices.Length, BufferUsage.None); mParticleData.IndexBuffer.SetData(indices); mParticleData.MaxParticles = mSettings.MaxParticles; GameResources.ActorManager.PreAnimationUpdateStep += PreAnimationUpdateHandler; GameResources.ActorManager.UpdateComplete += UpdateCompleteHandler; base.Initialize(contentLoader, manifest); }
//UnityEngine.GameObject particle; public void Set(UnityEngine.GameObject particle, ParticleSystemSettings config, bool isPosition) { this.config = config; //this.particle = particle; initPosition = particle.transform.position; initEuler = particle.transform.eulerAngles; this.isPositionEffect = isPosition; }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. _spriteBatch = new SpriteBatch(GraphicsDevice); ContentManager.Instance.Load("default_par.png", "def_particle", ContentType.Texture); ContentManager.Instance.Load("gen_figher_01.png", "fighter", ContentType.Texture); _scene = new Scene(GraphicsDevice, _camera); Sprite shipSprite = new Sprite("fighter"); shipSprite.ZOrder = 2; _ship = new Entity(); _ship.Attach(shipSprite); ParticleSystemSettings pss = new ParticleSystemSettings( OrionEngine.Randomizer, ContentManager.Instance.Get("def_particle", ContentType.Texture) as Texture2D ); ParticleEmitter emitter = new ParticleEmitter(pss); emitter.Settings.StartVelocity = new Range <Vector2>( new Vector2(5, 15), new Vector2(-5, 15), OrionEngine.Randomizer ); emitter.Settings.EndVelocity = new Range <Vector2>( new Vector2(5, 15), new Vector2(-5, 15), OrionEngine.Randomizer ); emitter.Settings.StartColor = new Range <Color>( Color.Yellow, Color.Orange, OrionEngine.Randomizer ); emitter.Settings.EndColor = new Range <Color>( new Color(Color.Yellow, 25), new Color(Color.Orange, 25), OrionEngine.Randomizer ); emitter.Settings.Alpha = new Range <int>(150, 25, OrionEngine.Randomizer); emitter.Settings.Size = new Range <float>(0.7f, 0.2f, OrionEngine.Randomizer); emitter.Start(); emitter.Position = new Vector2(0, 20); _ship.Attach(emitter); _ship.Position = new Vector2(0, -100); _ship.Rotation = 0; _scene.Add(_ship); }
public ParticleSystemRenderComponent(Actor owner) : base(owner) { mEffect = null; mSettings = null; mParticles = null; mParticleData = null; mCurrentTime = 0.0f; mFirstNewParticleIndex = 0; mFirstRetiredParticleIndex = 0; mDrawCounter = 0; }
private static void LoadParticleSystemSettings() { string dir = System.IO.Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, "../Content/resources/particleSystemSettings"); System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(dir); System.IO.FileInfo[] files = di.GetFiles("*.vtpss"); foreach (System.IO.FileInfo file in files) { StreamReader read = new StreamReader(file.FullName); ParticleSystemSettings psset = new ParticleSystemSettings(); psset.Load(read); read.Close(); RendererAssetPool.ParticleSystemSettings.Add(Path.GetFileNameWithoutExtension(file.Name), psset); } }
public BloodErmitter(ScreenManager manager) { screenManager = manager; m_settings = new ParticleSystemSettings(); m_settings.emitterOn = false; m_settings.IsBurst = true; m_settings.SetLifeTimes(0.2f, 0.5f); m_settings.SetScales(0.2f, 1.0f); m_settings.ParticlesPerSecond = 250.0f; m_settings.SetSpeeds(100, 500); m_settings.InitialParticleCount = (int)(m_settings.ParticlesPerSecond * m_settings.MaximumLifeTime) * 3; m_ermitter = new ParticleSystem(screenManager.Game, m_settings, screenManager.imageFileSystem.redPixel); m_ermitterDuration = 250; m_startedLastBlood = 0; }
//Die Methode mit dem ein Objekt vom Typ Spieler initialisiert wird und dessen Startwerte eingestellt werden public void Initialize(float f_xStartPosition, float f_yStartPosition, float f_xStartVelocity, float f_yStartVelocity, float speed, short health, Animation startAnimation, int screenWidth, ScreenManager screenmanager) { base.Initialize(f_xStartPosition, f_yStartPosition, f_xStartVelocity, f_yStartVelocity, speed, health, startAnimation, screenWidth); m_mouth = new Mouth(); m_mouth.Initialize(screenmanager.imageFileSystem.mouth, 48, 50); m_playerIsJumping = false; m_playerStartedJump = false; m_playerJumpHeight = 250; m_jumpWuhu = screenmanager.audioFileSystem.wuhu; screenManager = screenmanager; m_movefloor = false; m_projectileList = new List <Projectile>(); m_canShoot = true; m_lastShot = 0; m_playerAnimationMirror = SpriteEffects.None; m_score = 0; m_currenProjectile = 0; m_shootVector = new Vector2(); leftCollision = rightCollision = false; initializeProjectiles(150, new Vector2(1, 1)); m_active = true; #region Ermitter m_ermitterSettings = new ParticleSystemSettings(); m_ermitterSettings.IsBurst = false; m_ermitterSettings.SetLifeTimes(0.5f, 1.0f); m_ermitterSettings.SetScales(0.1f, 0.6f); m_ermitterSettings.ParticlesPerSecond = 15.0f; m_ermitterSettings.InitialParticleCount = (int)(m_ermitterSettings.ParticlesPerSecond * m_ermitterSettings.MaximumLifeTime); m_ermitterSettings.SetDirectionAngles(0, 180); m_ermitterSettings.color = Color.White; m_ermitter = new ParticleEmitter.ParticleSystem(screenmanager.Game, m_ermitterSettings, screenmanager.imageFileSystem.DustParticle); m_ermitter.OriginPosition = f_Position; m_ermitterSettings.emitterOn = false; #endregion }
private void LoadParticleSettings() { ParticleSystemSettings settings = new ParticleSystemSettings(); settings.Capacity = 100; settings.Duration = TimeSpan.FromSeconds(.5f); settings.DurationRandomness = 0; settings.GlobalForce = Vector3.Zero; settings.MinForceSensitivity = 0.75f; settings.MaxForceSensitivity = 1; settings.InertiaSensitivity = 1; settings.MinStartHorizontalVelocity = -600; settings.MaxStartHorizontalVelocity = 600; settings.MinStartVerticalVelocity = -600; settings.MaxStartVerticalVelocity = 600; settings.MinEndHorizontalVelocity = 20; settings.MaxEndHorizontalVelocity = 20; settings.MinEndVerticalVelocity = 20; settings.MaxEndVerticalVelocity = 20; settings.MinStartSize = 1; settings.MaxStartSize = 1; settings.MinEndSize = 1; settings.MaxEndSize = 1; settings.MinRotateSpeed = 0; settings.MaxRotateSpeed = 50; settings.MinColor = Color.DarkGray; settings.MaxColor = Color.Gray; settings.SourceBlend = Blend.SourceAlpha; settings.DestinationBlend = Blend.One; Texture2D texture = content.Load <Texture2D>("explosion"); particles = new ParticleSystem(texture, settings); }
public void Initialize(Texture2D texture, int x_Start, int y_Start, ScreenManager screenmanager) { f_position = new Vector2(x_Start, y_Start); this.y_Start = y_Start; m_texture = texture; x_speed = 10; y_speed = 2; #region Ermitter m_ermitterSettings = new ParticleSystemSettings(); m_ermitterSettings.ParticleTextureFileName = "ParticleStar"; m_ermitterSettings.IsBurst = false; m_ermitterSettings.SetLifeTimes(1.0f, 3.5f); m_ermitterSettings.SetScales(0.1f, 0.8f); m_ermitterSettings.ParticlesPerSecond = 200.0f; m_ermitterSettings.InitialParticleCount = (int)(m_ermitterSettings.ParticlesPerSecond * m_ermitterSettings.MaximumLifeTime); m_ermitterSettings.SetDirectionAngles(0, 360); m_ermitterSettings.emitterOn = true; m_ermitterSettings.color = Color.White; m_ermitter = new ParticleEmitter.ParticleSystem(screenmanager.Game, m_ermitterSettings, screenmanager.imageFileSystem.smokeParticle); m_ermitter.OriginPosition = f_position; #endregion }
public LevelWonScreen(ScreenManager manager, Helper h, bool b) { screenManager = manager; helper = h; listOfTouchLocations = new List <TouchLocation>(); b_touchState = b; myTick = 0; #region Ermitter m_ermitterSettings = new ParticleSystemSettings(); m_ermitterSettings.IsBurst = false; m_ermitterSettings.color = Color.Red; m_ermitterSettings.SetLifeTimes(5f, 10.0f); m_ermitterSettings.SetScales(1.0f, 1.5f); m_ermitterSettings.ParticlesPerSecond = 1000.0f; m_ermitterSettings.InitialParticleCount = (int)(m_ermitterSettings.ParticlesPerSecond * m_ermitterSettings.MaximumLifeTime); m_ermitterSettings.SetDirectionAngles(0, 360); m_ermitterSettings.SetSpeeds(200, 800); m_ermitter = new ParticleEmitter.ParticleSystem(screenManager.Game, m_ermitterSettings, screenManager.imageFileSystem.redPixel); m_ermitter.OriginPosition = new Vector2(UIConstants.screenWidth / 2, UIConstants.screenHeight / 2); m_ermitterSettings.emitterOn = true; #endregion }
/// <summary> /// Creates a new particle system from a ParticleSystemSettings object. /// </summary> /// <param name="_settings">The ParticleSystemSettings object.</param> public ParticleSystem(ParticleSystemSettings _settings) { if (_settings.Initialized) { settings = _settings; } else { settings = RendererAssetPool.ParticleSystemSettings["Sample"]; } texture = settings.Texture; particles = new Particle[settings.Capacity]; random = new Random(); currentTime = 0; vertDeclaration = new VertexDeclaration(GraphicOptions.graphics.GraphicsDevice, Particle.VertexElements); vertBuffer = new DynamicVertexBuffer(GraphicOptions.graphics.GraphicsDevice, settings.Capacity * Particle.SizeInBytes, BufferUsage.WriteOnly | BufferUsage.Points); LoadEffect(); }
private static extern void Internal_setSettings(IntPtr thisPtr, ParticleSystemSettings settings);
public Player() { Sword = new PlayerSword(this); Texture = Game.Assets.Player.Sam01; Scale = new Vector2(1.7f); Game.Camera.Position = Position; sourceRectangle = new Rectangle(0, 0, 16, 29); Spritesheet.Spritesheet sheet = new Spritesheet.Spritesheet(Texture).WithGrid((16, 29)); animations.Add(Anim.IdleRight, sheet.CreateAnimation((0, 0), (1, 0), (2, 0))); animations.Add(Anim.WalkRight, sheet.CreateAnimation((0, 1), (1, 1))); animations[Anim.IdleLeft] = animations[Anim.IdleRight].FlipX(); animations[Anim.WalkLeft] = animations[Anim.WalkRight].FlipX(); animations[Anim.IdleRight].Start(Repeat.Mode.Loop); animations[Anim.IdleLeft].Start(Repeat.Mode.Loop); animations[Anim.WalkRight].Start(Repeat.Mode.Loop); animations[Anim.WalkLeft].Start(Repeat.Mode.Loop); currentAnim = animations[Anim.IdleRight]; Spritesheet.Spritesheet headSheet = new Spritesheet.Spritesheet(Game.Assets.Player.SamHead).WithGrid((18, 14)); headAnimRight = headSheet.CreateAnimation((0, 0), (1, 0)); headAnimLeft = headAnimRight.FlipX(); headAnimRight.Start(Repeat.Mode.Loop); headAnimLeft.Start(Repeat.Mode.Loop); currentHeadAnim = headAnimLeft; var dashSize = Helper.SquareTexture.CreateScale(Rectangle.Width, Rectangle.Height); dashEffectSettings = new ParticleSystemSettings() { Density = 1f, Lifetime = new Size(0.2f, 0.5f), Size = new Size(dashSize.X, dashSize.Y), Speed = new Size(0, 0), Texture = Helper.SquareTexture, OneTime = false, DecreaseSize = true, DecreaseAlpha = false, Color = Color.Black }; smokeBombEffectSettings = new ParticleSystemSettings() { Density = 0.3f, Lifetime = new Size(0.7f, 1.6f), Size = new Size(3f, 6f), Speed = new Size(100, 200), Texture = Game.Assets.PixelatedCircle, OneTime = false, DecreaseSize = true, DecreaseAlpha = true, Colors = new List <Color>() { new Color(38, 38, 38), new Color(69, 69, 69) }, SpawnInCircle = false, CircleRadius = (int)smokeBombSize.X, }; dashEffect = new ParticleSystem(Position, new Vector2(1, 1), dashEffectSettings); smokeBombEffect = new ParticleSystem(Position, smokeBombSize, smokeBombEffectSettings); HasCollider = true; }