Example #1
0
        private void Load(BaseGame game)
        {
            this.game = game;

            trackBase = new Box
            {
                Depth  = 10.0f,
                Origin = Anchor.BottomCentre,
                RelativePositionAxes = Axes.Both,
                Position             = new Vector2(0.5f, 1.0f),
                WrapTexture          = true,
                EdgeSmoothness       = Vector2.Zero,
            };
            Add(trackBase);

            Add(playfieldContainer = new Container
            {
                Origin = Anchor.BottomCentre,
                RelativePositionAxes = Axes.Both,
                Position             = new Vector2(0.5f, 1.0f),
            });

            renderer = new TrackRenderer2D(playfieldContainer);
            renderer.Load(game);

            trackBase.Texture = renderer.TrackTexture;
        }
Example #2
0
 public HoldRenderData2D(TrackRenderer2D renderer, Drawable drawable, double duration)
     : base(renderer, drawable)
 {
     AspectCorrectHeight = false;
     this.duration       = duration;
     UpdateViewDuration();
 }
Example #3
0
        /// <summary>
        /// Creates a new laser drawable
        /// </summary>
        /// <param name="xStart">Relative X starting position</param>
        /// <param name="xEnd">Relative X ending position</param>
        /// <param name="length">Relative Y length</param>
        public LaserDrawable(TrackRenderer2D renderer, ObjectReference laserReference, float xStart, float xEnd, float length)
        {
            RelativeSizeAxes     = Axes.Both;
            RelativePositionAxes = Axes.Both;
            Origin = Anchor.BottomLeft;
            Size   = new Vector2(1, length);

            var laser = laserReference.Object as Laser;

            Quad quad;

            // Create segment local coordinate system
            Vector2 right = new Vector2(1.0f, 0.0f);
            Vector2 up    = new Vector2(xEnd - xStart, -1.0f);
            Vector2 start = new Vector2(xStart, 1.0f);

            if (Math.Abs(length) < 0.001f) // Slam
            {
                float sign = Math.Sign(xEnd - xStart);

                start = new Vector2(xStart - sign * renderer.LaserWidth * 0.5f, 0.5f);
                Size  = new Vector2(1, 0.05f); // TODO: Calculate correct slam length/duration
                up    = new Vector2(xEnd - xStart + sign * renderer.LaserWidth, 0.0f);
                right = new Vector2(0.0f, sign);

                quad = new Quad(start + up - right * 0.5f,
                                start + up + right * 0.5f,
                                start - right * 0.5f,
                                start + right * 0.5f);
            }
            else
            {
                // Move start up a bit if previous laser was a slam
                if (laser.Previous != null)
                {
                    var previous = laser.Previous.Object as Laser;
                    if (previous.IsInstant)
                    {
                        // TODO: Calculate correct slam length/duration
                        float skip = 0.05f / length;
                        up.Y     = up.Y + skip;
                        start.Y -= skip;
                    }
                }

                float halfLaserWidth = renderer.LaserWidth * 0.5f;
                quad = new Quad(start + up - right * halfLaserWidth,
                                start + up + right * halfLaserWidth,
                                start - right * halfLaserWidth,
                                start + right * halfLaserWidth);
            }

            parts.Add(new LaserDrawPart
            {
                Quad             = quad,
                TextureRectangle = new RectangleF(0, 0, 1.0f, 1.0f)
            });
        }
Example #4
0
 public LaserRenderData2D(TrackRenderer2D renderer, ObjectReference laserReference)
     : base(renderer)
 {
     this.laserReference = laserReference;
     CreateDrawable();
 }
Example #5
0
 public RenderData2D(TrackRenderer2D renderer)
 {
     this.Renderer = renderer;
 }
Example #6
0
 public RenderData2D(TrackRenderer2D renderer, Drawable drawable)
 {
     this.Renderer = renderer;
     this.Drawable = drawable;
     renderer.PlayFieldContainer.Add(drawable);
 }