Пример #1
0
        public override void Draw(ICamera camera, CommandBuffer commands, SystemLighting lights, NebulaRenderer nr)
        {
            var code_beam = (Texture2D)res.FindTexture("code_beam");

            code_beam.SetWrapModeS(WrapMode.ClampToEdge);
            code_beam.SetWrapModeT(WrapMode.ClampToEdge);
            for (int i = 0; i < renderCount; i++)
            {
                var p = toRender[i];
                if (p.Data.Munition.ConstEffect_Beam != null)
                {
                    var     beam = p.Data.Munition.ConstEffect_Beam;
                    Vector2 tl, tr, bl, br;
                    CoordsFromTexture(beam.HeadTexture, out tl, out tr, out bl, out br);
                    billboards.Draw(
                        code_beam,
                        p.Position,
                        new Vector2(beam.HeadWidth, beam.HeadWidth),
                        beam.CoreColor,
                        tl, tr, bl, br,
                        0,
                        SortLayers.OBJECT,
                        BlendMode.Additive
                        );
                    CoordsFromTexture(beam.TrailTexture, out tl, out tr, out bl, out br);
                }
                else if (p.Data.Munition.ConstEffect_Bolt != null)
                {
                    //bolt
                    var     bolt = p.Data.Munition.ConstEffect_Bolt;
                    Vector2 tl, tr, bl, br;
                    CoordsFromTexture(bolt.HeadTexture, out tl, out tr, out bl, out br);
                    billboards.Draw(
                        code_beam,
                        p.Position,
                        new Vector2(bolt.HeadWidth, bolt.HeadWidth),
                        bolt.CoreColor,
                        tl, tr, bl, br,
                        0,
                        SortLayers.OBJECT,
                        BlendMode.Additive
                        );
                }
            }
        }
Пример #2
0
 void RenderInteriorPuffs()
 {
     if (Nebula.HasInteriorClouds)
     {
         for (int i = 0; i < Nebula.InteriorCloudCount; i++)
         {
             if (!puffsinterior[i].Spawned)
             {
                 continue;
             }
             var distance = Vector3.Distance(puffsinterior[i].Position, camera.Position);
             var alpha    = Nebula.InteriorCloudMaxAlpha;
             if (distance > Nebula.InteriorCloudFadeDistance.X && distance < Nebula.InteriorCloudFadeDistance.Y)
             {
                 var distance_difference = Nebula.InteriorCloudFadeDistance.Y - Nebula.InteriorCloudFadeDistance.X;
                 var current             = distance - Nebula.InteriorCloudFadeDistance.X;
                 alpha -= (alpha * (distance_difference - current) / distance_difference);
             }
             if (distance < Nebula.InteriorCloudFadeDistance.X)
             {
                 alpha = 0;
             }
             var    shape = puffsinterior[i].Shape;
             Color4 c     = new Color4(puffsinterior[i].Color, alpha);
             if (cldLightningActive)
             {
                 c *= Nebula.CloudLightningColor;
             }
             billboards.Draw(
                 (Texture2D)resman.FindTexture(shape.Texture),
                 puffsinterior[i].Position,
                 new Vector2(Nebula.InteriorCloudRadius),
                 c,
                 new Vector2(shape.Dimensions.X, shape.Dimensions.Y),
                 new Vector2(shape.Dimensions.X + shape.Dimensions.Width, shape.Dimensions.Y),
                 new Vector2(shape.Dimensions.X, shape.Dimensions.Y + shape.Dimensions.Height),
                 new Vector2(shape.Dimensions.X + shape.Dimensions.Width, shape.Dimensions.Y + shape.Dimensions.Height),
                 0,
                 SortLayers.OBJECT
                 );
         }
     }
 }