Example #1
0
 /// <summary>
 /// Created a new particle Emitter. By default all particles come from position.
 /// </summary>
 /// <param name="_settings">A fully specified ParticleEmitterSettings object.</param>
 public ParticleEmitter(ParticleEmitterSettings _settings)
 {
     if (_settings.Initialized)
     {
         LoadParticleEmitterSettings(_settings);
     }
     else
     {
         LoadParticleEmitterSettings(RendererAssetPool.ParticleEmitterSettings["Sample"]);
     }
 }
Example #2
0
        private static void LoadEmitterSettings()
        {
            string        dir = Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, "../Content/resources/particleEmitterSettings");
            DirectoryInfo di  = new DirectoryInfo(dir);

            FileInfo[] files = di.GetFiles("*.vtpes");
            foreach (System.IO.FileInfo file in files)
            {
                StreamReader            read  = new StreamReader(file.FullName);
                ParticleEmitterSettings peset = new ParticleEmitterSettings();
                peset.Load(read);
                read.Close();
                RendererAssetPool.ParticleEmitterSettings.Add(Path.GetFileNameWithoutExtension(file.Name), peset);
            }
        }
Example #3
0
        /// <summary>
        /// Apply a utility to the tank.
        /// </summary>
        /// <param name="utility">The utility</param>
        public void ApplyUtility(VTankObject.Utility utility)
        {
            Utilities.Add(utility);
            ActiveUtility autil = new ActiveUtility(utility);

            ParticleEmitterSettings pset = Renderer.RendererAssetPool.ParticleEmitterSettings["Utility"];

            pset.LifeSpan           = utility.duration;
            pset.ParticleSystemName = utility.model;
            autil.Emitter           = new ParticleEmitter(pset);
            autil.Emitter.Position  = Position;
            autil.Emitter.MimicPosition(this, Vector3.Zero);
            ServiceManager.Scene.Add(autil.Emitter, 3);

            activeUtilities.Add(autil);
        }
Example #4
0
 /// <summary>
 /// Loads the ParticleEmitterSettings object.
 /// </summary>
 /// <param name="_settings">The name of the ParticleEmitterSettings object to load from the RendererAssetPool</param>
 private void LoadParticleEmitterSettings(ParticleEmitterSettings _settings)
 {
     settings = _settings;
     if (RendererAssetPool.ParticleSystemSettings.ContainsKey(settings.ParticleSystemName))
     {
         particles = new ParticleSystem(Renderer.RendererAssetPool.ParticleSystemSettings[settings.ParticleSystemName]);
     }
     else
     {
         particles = new ParticleSystem(Renderer.RendererAssetPool.ParticleSystemSettings["Sample"]);
     }
     random   = new Random();
     bounds   = new BoundingSphere(position, settings.Radius);
     emitting = true;
     stopped  = false;
 }
        /// <summary>
        /// Add an effect to the collection of EnvironmentProperties
        /// </summary>
        /// <param name="envProp">The environment property.</param>
        /// <param name="id">The environment property's Id</param>
        /// <param name="position">The position to add it in the scene.</param>
        public void AddEffect(EnvironmentProperty envProp, int id, Vector3 position)
        {
            if (envProps.ContainsKey(id))
            {
                RemoveEffect(id);
            }

            ParticleEmitter         emitter  = new ParticleEmitter(envProp.ParticleEffectName);
            ParticleEmitterSettings settings = emitter.Settings;

            settings.Radius = (int)Math.Floor(envProp.AoERadius);
            ParticleEmitter __emitterCopy = new ParticleEmitter(settings);

            __emitterCopy.Position = position;

            envProp.RenderID = ServiceManager.Scene.Add(__emitterCopy, 3);
            envProp.SetCreationTime();
            envProps[id] = envProp;
        }
Example #6
0
        /// <summary>
        /// Apply an instant health utility to the tank
        /// </summary>
        /// <param name="utility">The utility</param>
        public void ApplyInstantHealth(VTankObject.Utility utility)
        {
            int healthBonus = (int)(MaxHealth * utility.healthFactor) + utility.healthIncrease;

            if (this.Health + healthBonus > MaxHealth)
            {
                //For updating the healthbar, inflictdamage heals with negative values
                this.InflictDamage(-(MaxHealth - Health), false);
            }
            else
            {
                this.InflictDamage(-healthBonus, false);
            }
            ParticleEmitterSettings pset = Renderer.RendererAssetPool.ParticleEmitterSettings["Utility"];

            pset.ParticleSystemName = utility.model;
            ParticleEmitter pemit1 = new ParticleEmitter(pset);

            pemit1.Position = Position;
            pemit1.MimicPosition(this, Vector3.Zero);
            pemit1.MimicRotation(this);
            ServiceManager.Scene.Add(pemit1, 3);
        }
Example #7
0
        /// <summary>
        /// Load game resources (tiles, models) into memory.
        /// </summary>
        private bool LoadGameResources()
        {
            ServiceManager.Game.Renderer.ActiveScene.ClearAll();

            if (loaded)
            {
                // Only attempt to load the game resources once. This way subsequent loading
                // times are much faster.
                return(true);
            }

            Value = 40;
            if (!TileList.Initialized)
            {
                Message = "Loading tile textures...";
                if (!TileList.Read())
                {
                    // The error message is displayed within the parser, so never mind.
                    return(false);
                }
                Value = 45;
            }

            Message = "Loading background textures...";
            ServiceManager.Resources.GetTexture2D(
                "misc\\background\\background2");

            Message = "Loading tank models...";
            Value   = 50;

            // Pre-load the model resources so that it doesn't have to do so in-game.
            List <object> tankList = GameForms.Utils.GetTankModels();

            foreach (string tankName in tankList)
            {
                ServiceManager.Resources.GetModel(
                    String.Format("tanks{0}{1}", Path.DirectorySeparatorChar, tankName));
            }

            Message = "Loading weapon models...";
            Value   = 60;

            List <string> weaponList = GetWeaponModels();

            foreach (string weaponName in weaponList)
            {
                ServiceManager.Resources.GetModel(
                    String.Format("weapons{0}{1}", Path.DirectorySeparatorChar, weaponName));
            }

            Message = "Loading projectile models...";
            Value   = 70;

            List <string> projectileList = GetProjectileModels();

            foreach (string projectileName in projectileList)
            {
                ServiceManager.Resources.GetModel(
                    String.Format("projectiles{0}{1}", Path.DirectorySeparatorChar, projectileName));
            }


            Message = "Loading utility models...";
            Value   = 75;

            List <string> utilityList = GameForms.Utils.GetUtilityModels();

            foreach (string utilityName in utilityList)
            {
                ServiceManager.Resources.GetModel(
                    String.Format("powerups{0}{1}", Path.DirectorySeparatorChar, utilityName));
            }
            Message = "Loading effects...";
            Value   = 80;

            Message = "Loading event models...";
            Value   = 85;
            List <string> eventList = Toolkit.GetEventList();

            foreach (string eventModel in eventList)
            {
                ServiceManager.Resources.GetModel(@"events\" + eventModel);
            }

            Message = "Loading renderer assets...";
            Value   = 90;
            if (!RendererAssetLoader.HasInitialized)
            {
                RendererAssetLoader.Initialize();
            }

            ParticleEmitterSettings pset = Renderer.RendererAssetPool.ParticleEmitterSettings["Utility"];

            new ParticleEmitter(pset);

            Message = "Loading tank skins...";
            Value   = 95;
            List <string> skinList = Toolkit.GetFullSkinList();

            foreach (string skin in skinList)
            {
                string path = String.Format("{0}{1}", Constants.DEFAULT_SKIN_DIR, skin);
                ServiceManager.Resources.Load <Texture2D>(path);
            }

            loaded = true;
            return(true);
        }
Example #8
0
 /// <summary>
 /// Created a new particle Emitter. By default all particles come from position...?
 /// </summary>
 /// <param name="_settings">A fully specified ParticleEmitterSettings object.</param>
 public ParticleEmitter(ParticleEmitterSettings _settings, Vector3 position) : this(_settings)
 {
     this.position = position;
 }