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 ); } } }
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 ); } } }