source: 2010/23/sijoseha/alpha/Effects/ParticleSystem.cs @ 819

Revision 819, 3.0 KB checked in by sijoseha, 10 years ago (diff)

Building

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Microsoft.Xna.Framework;
5using Microsoft.Xna.Framework.Audio;
6using Microsoft.Xna.Framework.Content;
7using Microsoft.Xna.Framework.GamerServices;
8using Microsoft.Xna.Framework.Graphics;
9using Microsoft.Xna.Framework.Input;
10using Microsoft.Xna.Framework.Media;
11using Microsoft.Xna.Framework.Net;
12using Microsoft.Xna.Framework.Storage;
13
14namespace Effects
15{
16    public abstract class ParticleSystem : DrawableGameComponent
17    {
18        private Game game;
19
20        private Particle[] particles;
21
22        /// <summary>
23        /// There are variables that need to be set by subclasses
24        /// </summary>
25        #region Subclass variables
26        protected Vector2 position;
27
28        protected String textureName;
29
30        protected String innerTextureName;
31        protected String outerTextureName;
32
33        protected float minScale;
34        protected float maxScale;
35
36        protected float rotation;
37
38        protected Vector2 origin;
39
40        protected Vector2 minVelocity;
41        protected Vector2 maxVelocity;
42
43        protected float minLifetime;
44        protected float maxLifetime;
45
46        #endregion
47
48        private enum TextureType
49        {
50            Single,
51            Dual
52        };
53
54        private TextureType textureType;
55
56        private Texture2D texture, innerTexture, outerTexture;
57
58        private int maxAmountOfParticles;
59        public int MaxAmountOfParticles
60        {
61            get { return maxAmountOfParticles; }
62            set { maxAmountOfParticles = value; }
63        }
64
65        public ParticleSystem(Game game, Vector2 position, String textureName)
66            : base(game)
67        {
68            textureType = TextureType.Single;
69            this.game = game;
70        }
71
72        public ParticleSystem(Game game, Vector2 position, String innerTextureName, String outerTextureName)
73            : base(game)
74        {
75            textureType = TextureType.Dual;
76            this.game = game;
77        }
78
79        protected abstract void InitializeParticles();
80
81        public override void Initialize()
82        {
83            for (int i = 0; i < maxAmountOfParticles; i++)
84            {
85                particles[i] = new Particle();
86            }
87            base.Initialize();
88        }
89
90        protected override void LoadContent()
91        {
92            particles = new Particle[maxAmountOfParticles];
93            if (textureType == TextureType.Single)
94            {
95                texture = game.Content.Load<Texture2D>(textureName.ToString());
96            }
97            if (textureType == TextureType.Dual)
98            {
99                innerTexture = game.Content.Load<Texture2D>(innerTextureName.ToString());
100                outerTexture = game.Content.Load<Texture2D>(outerTextureName.ToString());
101            }
102
103            base.LoadContent();
104        }
105
106        public override void Update(GameTime gameTime)
107        {
108
109            base.Update(gameTime);
110        }
111    }
112}
Note: See TracBrowser for help on using the repository browser.