/// <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"]); } }
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); } }
/// <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); }
/// <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; }
/// <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); }
/// <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); }
/// <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; }