コード例 #1
0
        public void Draw(SpriteBatch spriteBatch, bool inWater, bool?inSub, ParticleBlendState blendState)
        {
            ParticlePrefab.DrawTargetType drawTarget = inWater ? ParticlePrefab.DrawTargetType.Water : ParticlePrefab.DrawTargetType.Air;

            for (int i = 0; i < particleCount; i++)
            {
                var particle = particles[i];
                if (particle.BlendState != blendState)
                {
                    continue;
                }
                //equivalent to !particles[i].DrawTarget.HasFlag(drawTarget) but garbage free and faster
                if ((particle.DrawTarget & drawTarget) == 0)
                {
                    continue;
                }
                if (inSub.HasValue)
                {
                    bool isOutside = particle.CurrentHull == null;
                    if (!particle.DrawOnTop && isOutside == inSub.Value)
                    {
                        continue;
                    }
                }

                particles[i].Draw(spriteBatch);
            }
        }
コード例 #2
0
ファイル: ParticleManager.cs プロジェクト: Faerdan/Barotrauma
        public void Draw(SpriteBatch spriteBatch, bool inWater, ParticleBlendState blendState)
        {
            ParticlePrefab.DrawTargetType drawTarget = inWater ? ParticlePrefab.DrawTargetType.Water : ParticlePrefab.DrawTargetType.Air;

            for (int i = 0; i < particleCount; i++)
            {
                if (particles[i].BlendState != blendState)
                {
                    continue;
                }
                if (!particles[i].DrawTarget.HasFlag(drawTarget))
                {
                    continue;
                }

                particles[i].Draw(spriteBatch);
            }
        }
コード例 #3
0
        public Propulsion(Item item, XElement element)
            : base(item, element)
        {
            switch (ToolBox.GetAttributeString(element, "usablein", "both").ToLowerInvariant())
            {
            case "air":
                usableIn = ParticlePrefab.DrawTargetType.Air;
                break;

            case "water":
                usableIn = ParticlePrefab.DrawTargetType.Water;
                break;

            case "both":
            default:
                usableIn = ParticlePrefab.DrawTargetType.Both;
                break;
            }
        }