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; }
public HoldRenderData2D(TrackRenderer2D renderer, Drawable drawable, double duration) : base(renderer, drawable) { AspectCorrectHeight = false; this.duration = duration; UpdateViewDuration(); }
/// <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) }); }
public LaserRenderData2D(TrackRenderer2D renderer, ObjectReference laserReference) : base(renderer) { this.laserReference = laserReference; CreateDrawable(); }
public RenderData2D(TrackRenderer2D renderer) { this.Renderer = renderer; }
public RenderData2D(TrackRenderer2D renderer, Drawable drawable) { this.Renderer = renderer; this.Drawable = drawable; renderer.PlayFieldContainer.Add(drawable); }