/* * EmitterInfo.cs * Authors: Brian Murphy * Copyright (c) 2007-2008 Cornell University This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Storage; using Microsoft.Xna.Framework.Graphics; namespace TACParticleEngine.FileProcessing { /// /// This class is used for storing all the information used for the emitter object /// public class EmitterInfo { /// /// Drawing specific compontents /// private String mTextureName; private SpriteBlendMode mBlendEffect; // List of positions for when creating spline emitters private List mPositions; /// /// Values for the direction range in two-dimensional form /// private Vector3 mMinVel; private Vector3 mMaxVel; /// /// Values for determining lifetimes and the amounts of existing and spawning particles /// private float mEmitLifetime; private int mParticlePersSec; private short mParticleAmount; private float mParticleLifetime; /// /// Values for the starting and ending speed magnitude ranges /// private float mMinStartSpeed; private float mMaxStartSpeed; private float mMinEndSpeed; private float mMaxEndSpeed; /// /// Values used for starting and ending size ranges in two-dimensional form /// private Vector2 mMinStartSize; private Vector2 mMaxStartSize; private Vector2 mMinEndSize; private Vector2 mMaxEndSize; /// /// Values used for starting and ending color ranges in RGBA form /// private Vector4 mMinStartColor; private Vector4 mMaxStartColor; private Vector4 mMinEndColor; private Vector4 mMaxEndColor; /// /// Default constuctor used to initialize all vectors and lists /// public EmitterInfo() { mPositions = new List(); mMinVel = new Vector3(); mMaxVel = new Vector3(); mMinStartSize = new Vector2(); mMaxStartSize = new Vector2(); mMinEndSize = new Vector2(); mMaxEndSize = new Vector2(); mMinStartColor = new Vector4(); mMaxStartColor = new Vector4(); mMinEndColor = new Vector4(); mMaxEndColor = new Vector4(); } /// /// Drawing specific compontents /// public String TextureName { get { return mTextureName; } set { mTextureName = value; } } public SpriteBlendMode BlendEffect { get { return mBlendEffect; } set { mBlendEffect = value; } } // List of positions for when creating spline emitters public List Positions { get { return mPositions; } set { mPositions = value; } } /// /// Values for the direction range in two-dimensional form /// public Vector3 MinVel { get { return mMinVel; } set { mMinVel = value; } } public Vector3 MaxVel { get { return mMaxVel; } set { mMaxVel = value; } } /// /// Values for determining lifetimes and the amounts of existing and spawning particles /// public float EmitLifetime { get { return mEmitLifetime; } set { mEmitLifetime = value; } } public int ParticlePersSec { get { return mParticlePersSec; } set { mParticlePersSec = value; } } public short ParticleAmount { get { return mParticleAmount; } set { mParticleAmount = value; } } public float ParticleLifetime { get { return mParticleLifetime; } set { mParticleLifetime = value; } } /// /// Values for the starting and ending speed magnitude ranges /// public float MinStartSpeed { get { return mMinStartSpeed; } set { mMinStartSpeed = value; } } public float MaxStartSpeed { get { return mMaxStartSpeed; } set { mMaxStartSpeed = value; } } public float MinEndSpeed { get { return mMinEndSpeed; } set { mMinEndSpeed = value; } } public float MaxEndSpeed { get { return mMaxEndSpeed; } set { mMaxEndSpeed = value; } } /// /// Values used for starting and ending size ranges in two-dimensional form /// public Vector2 MinStartSize { get { return mMinStartSize; } set { mMinStartSize = value; } } public Vector2 MaxStartSize { get { return mMaxStartSize; } set { mMaxStartSize = value; } } public Vector2 MinEndSize { get { return mMinEndSize; } set { mMinEndSize = value; } } public Vector2 MaxEndSize { get { return mMaxEndSize; } set { mMaxEndSize = value; } } /// /// Values used for starting and ending color ranges in RGBA form /// public Vector4 MinStartColor { get { return mMinStartColor; } set { mMinStartColor = value; } } public Vector4 MaxStartColor { get { return mMaxStartColor; } set { mMaxStartColor = value; } } public Vector4 MinEndColor { get { return mMinEndColor; } set { mMinEndColor = value; } } public Vector4 MaxEndColor { get { return mMaxEndColor; } set { mMaxEndColor = value; } } } }