Example #1
0
        public IEnumerable <Renderable> Render()
        {
            if (anim != null)
            {
                var at = (float)t / TotalTime();

                var altitude = float2.Lerp(Args.srcAltitude, Args.destAltitude, at);
                var pos      = float2.Lerp(Args.src, Args.dest, at) - new float2(0, altitude);

                if (Args.firedBy.World.LocalShroud.IsVisible(OpenRA.Traits.Util.CellContaining(pos)))
                {
                    if (Info.High || Info.Angle > 0)
                    {
                        if (Info.Shadow)
                        {
                            yield return(new Renderable(anim.Image, pos - .5f * anim.Image.size, "shadow", (int)pos.Y));
                        }

                        var highPos = pos - new float2(0, GetAltitude());

                        yield return(new Renderable(anim.Image, highPos - .5f * anim.Image.size, "effect", (int)pos.Y));
                    }
                    else
                    {
                        yield return(new Renderable(anim.Image, pos - .5f * anim.Image.size,
                                                    Args.weapon.Underwater ? "shadow" : "effect", (int)pos.Y));
                    }
                }
            }

            if (Trail != null)
            {
                Trail.Render(Args.firedBy);
            }
        }
Example #2
0
        public IEnumerable <Renderable> Render()
        {
            if (Args.firedBy.World.LocalShroud.IsVisible(PxPosition.ToCPos()))
            {
                yield return(new Renderable(anim.Image, PxPosition.ToFloat2() - 0.5f * anim.Image.size - new float2(0, Altitude),
                                            Args.weapon.Underwater ? "shadow" : "effect", PxPosition.Y));
            }

            if (Trail != null)
            {
                Trail.Render(Args.firedBy);
            }
        }
Example #3
0
        public IEnumerable <Renderable> Render(WorldRenderer wr)
        {
            if (!Args.firedBy.World.FogObscures(PxPosition.ToCPos()))
            {
                yield return(new Renderable(anim.Image, PxPosition.ToFloat2() - 0.5f * anim.Image.size - new float2(0, Altitude),
                                            wr.Palette(Args.weapon.Underwater ? "shadow" : "effect"), PxPosition.Y));
            }

            if (Trail != null)
            {
                Trail.Render(wr, Args.firedBy);
            }
        }
Example #4
0
        public IEnumerable <Renderable> Render(WorldRenderer wr)
        {
            if (anim != null)
            {
                var at = (float)t / TotalTime();

                var altitude = float2.Lerp(Args.srcAltitude, Args.destAltitude, at);
                var pos      = float2.Lerp(Args.src.ToFloat2(), Args.dest.ToFloat2(), at) - new float2(0, altitude);

                var cell = ((PPos)pos.ToInt2()).ToCPos();
                if (!Args.firedBy.World.FogObscures(cell))
                {
                    if (Info.High || Info.Angle > 0)
                    {
                        if (Info.Shadow)
                        {
                            yield return(new Renderable(anim.Image, pos - .5f * anim.Image.size, wr.Palette("shadow"), (int)pos.Y));
                        }

                        var highPos = pos - new float2(0, GetAltitude());

                        yield return(new Renderable(anim.Image, highPos - .5f * anim.Image.size, wr.Palette("effect"), (int)pos.Y));
                    }
                    else
                    {
                        yield return(new Renderable(anim.Image, pos - .5f * anim.Image.size,
                                                    wr.Palette(Args.weapon.Underwater ? "shadow" : "effect"), (int)pos.Y));
                    }
                }
            }

            if (Trail != null)
            {
                Trail.Render(wr, Args.firedBy);
            }
        }