示例#1
0
        private void InitializeModels()
        {
            this.pPlume          = ParticleSystemDescription.InitializeSmokePlume("resources", "smoke.png");
            this.pFire           = ParticleSystemDescription.InitializeFire("resources", "fire.png");
            this.pDust           = ParticleSystemDescription.InitializeDust("resources", "smoke.png");
            this.pProjectile     = ParticleSystemDescription.InitializeProjectileTrail("resources", "smoke.png");
            this.pExplosion      = ParticleSystemDescription.InitializeExplosion("resources", "fire.png");
            this.pSmokeExplosion = ParticleSystemDescription.InitializeExplosion("resources", "smoke.png");

            this.pManager = this.AddComponent <ParticleManager>(new ParticleManagerDescription());
        }
示例#2
0
        public ParticleSystem Get(ParticleSystemDescription description)
        {
            ParticleSystem system;
            if (!_particleSystems.TryGetValue(description, out system))
            {
                system = new ParticleSystem(_device);
                system.Initialise(description);
                _particleSystems.Add(description, system);
            }

            return system;
        }
示例#3
0
        /// <summary>
        /// Initialises this <see cref="ParticleSystem"/> instance.
        /// </summary>
        /// <param name="description"></param>
        public void Initialise(ParticleSystemDescription description)
        {
            Description = description;

            _material.Parameters["Texture"].SetValue(description.Texture);
            _material.Parameters["Lifetime"].SetValue(description.Lifetime);
            _material.Parameters["EndVelocity"].SetValue(description.EndLinearVelocity);
            _material.Parameters["EndScale"].SetValue(description.EndScale);
            _material.Parameters["Gravity"].SetValue(description.Gravity);

            _currentTimeParameter = _material.Parameters["Time"];
            _viewportScaleParameter = _material.Parameters["ViewportScale"];

            InitialiseBuffer();
        }
示例#4
0
 /// <summary>
 /// Increases the capacity of this system by the specified amount.
 /// </summary>
 /// <param name="size">The amount by which to increase the capacity.</param>
 public void GrowCapacity(int size)
 {
     Description = new ParticleSystemDescription
     {
         BlendState = Description.BlendState,
         EndLinearVelocity = Description.EndLinearVelocity,
         EndScale = Description.EndScale,
         Gravity = Description.Gravity,
         Lifetime = Description.Lifetime,
         Texture = Description.Texture,
         Type = Description.Type,
         Capacity = Description.Capacity + size,
     };
     _dirty = true;
 }