Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 //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;
 }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
 public ParticleSystemRenderComponent(Actor owner)
     : base(owner)
 {
     mEffect                    = null;
     mSettings                  = null;
     mParticles                 = null;
     mParticleData              = null;
     mCurrentTime               = 0.0f;
     mFirstNewParticleIndex     = 0;
     mFirstRetiredParticleIndex = 0;
     mDrawCounter               = 0;
 }
Beispiel #6
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);
            }
        }
Beispiel #7
0
        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;
        }
Beispiel #8
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
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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
        }
Beispiel #12
0
        /// <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();
        }
Beispiel #13
0
 private static extern void Internal_setSettings(IntPtr thisPtr, ParticleSystemSettings settings);
Beispiel #14
0
        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;
        }