mirror of
https://github.com/ppy/osu.git
synced 2024-11-11 17:07:38 +08:00
Remove temporary testcase
This commit is contained in:
parent
1e1df2aaff
commit
996e605e61
@ -1,171 +0,0 @@
|
|||||||
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Containers;
|
|
||||||
using osu.Framework.Graphics.Lines;
|
|
||||||
using osu.Framework.Graphics.OpenGL.Textures;
|
|
||||||
using osu.Framework.Graphics.Textures;
|
|
||||||
using osu.Game.Rulesets.Objects;
|
|
||||||
using osu.Game.Rulesets.Objects.Types;
|
|
||||||
using osu.Game.Tests.Visual;
|
|
||||||
using OpenTK;
|
|
||||||
using OpenTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Tests
|
|
||||||
{
|
|
||||||
public class TestCaseNewSliderBody : OsuTestCase
|
|
||||||
{
|
|
||||||
public override IReadOnlyList<Type> RequiredTypes => new[] { typeof(Path) };
|
|
||||||
|
|
||||||
private readonly NewSliderBody body;
|
|
||||||
|
|
||||||
public TestCaseNewSliderBody()
|
|
||||||
{
|
|
||||||
Add(body = new NewSliderBody(new SliderCurve
|
|
||||||
{
|
|
||||||
ControlPoints = new List<Vector2>
|
|
||||||
{
|
|
||||||
new Vector2(-200, 0),
|
|
||||||
new Vector2(-50, 75),
|
|
||||||
new Vector2(0, 100),
|
|
||||||
new Vector2(100, -200),
|
|
||||||
new Vector2(230, 0)
|
|
||||||
},
|
|
||||||
Distance = 480,
|
|
||||||
CurveType = CurveType.Bezier
|
|
||||||
})
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre
|
|
||||||
});
|
|
||||||
|
|
||||||
AddSliderStep("In", 0f, 1f, 0f, v => inLength = v);
|
|
||||||
AddSliderStep("Out", 0f, 1f, 1f, v => outLength = v);
|
|
||||||
AddSliderStep("Path Width", 0f, 100f, 10f, v => body.PathWidth = v);
|
|
||||||
}
|
|
||||||
|
|
||||||
private float _inLength;
|
|
||||||
|
|
||||||
private float inLength
|
|
||||||
{
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_inLength = value;
|
|
||||||
body.UpdateSnaking(_inLength, _outLength);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private float _outLength;
|
|
||||||
|
|
||||||
private float outLength
|
|
||||||
{
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_outLength = value;
|
|
||||||
body.UpdateSnaking(_inLength, _outLength);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class NewSliderBody : CompositeDrawable
|
|
||||||
{
|
|
||||||
private readonly Path path;
|
|
||||||
private readonly SliderCurve curve;
|
|
||||||
|
|
||||||
public NewSliderBody(SliderCurve curve)
|
|
||||||
{
|
|
||||||
this.curve = curve;
|
|
||||||
|
|
||||||
InternalChild = path = new Path();
|
|
||||||
}
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load()
|
|
||||||
{
|
|
||||||
reloadTexture();
|
|
||||||
computeSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
public float PathWidth
|
|
||||||
{
|
|
||||||
get => path.PathWidth;
|
|
||||||
set { path.PathWidth = value; reloadTexture(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
private void reloadTexture()
|
|
||||||
{
|
|
||||||
var textureWidth = (int)PathWidth * 2;
|
|
||||||
|
|
||||||
//initialise background
|
|
||||||
var texture = new Texture(textureWidth, 1);
|
|
||||||
var upload = new TextureUpload(textureWidth * 4);
|
|
||||||
var bytes = upload.Data;
|
|
||||||
|
|
||||||
const float aa_portion = 0.02f;
|
|
||||||
const float border_portion = 0.128f;
|
|
||||||
const float gradient_portion = 1 - border_portion;
|
|
||||||
|
|
||||||
const float opacity_at_centre = 0.3f;
|
|
||||||
const float opacity_at_edge = 0.8f;
|
|
||||||
|
|
||||||
for (int i = 0; i < textureWidth; i++)
|
|
||||||
{
|
|
||||||
float progress = (float)i / (textureWidth - 1);
|
|
||||||
|
|
||||||
if (progress <= border_portion)
|
|
||||||
{
|
|
||||||
bytes[i * 4] = (byte)(Color4.White.R * 255);
|
|
||||||
bytes[i * 4 + 1] = (byte)(Color4.White.G * 255);
|
|
||||||
bytes[i * 4 + 2] = (byte)(Color4.White.B * 255);
|
|
||||||
bytes[i * 4 + 3] = (byte)(Math.Min(progress / aa_portion, 1) * (Color4.White.A * 255));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
progress -= border_portion;
|
|
||||||
|
|
||||||
bytes[i * 4] = (byte)(Color4.Blue.R * 255);
|
|
||||||
bytes[i * 4 + 1] = (byte)(Color4.Blue.G * 255);
|
|
||||||
bytes[i * 4 + 2] = (byte)(Color4.Blue.B * 255);
|
|
||||||
bytes[i * 4 + 3] = (byte)((opacity_at_edge - (opacity_at_edge - opacity_at_centre) * progress / gradient_portion) * (Color4.Blue.A * 255));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
texture.SetData(upload);
|
|
||||||
path.Texture = texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Vector2 topLeftOffset;
|
|
||||||
|
|
||||||
private void computeSize()
|
|
||||||
{
|
|
||||||
// Compute the final size
|
|
||||||
var fullPath = new List<Vector2>();
|
|
||||||
curve.GetPathToProgress(fullPath, 0, 1);
|
|
||||||
|
|
||||||
foreach (Vector2 p in fullPath)
|
|
||||||
path.AddVertex(p);
|
|
||||||
|
|
||||||
Size = path.Size;
|
|
||||||
|
|
||||||
topLeftOffset = path.PositionInBoundingBox(Vector2.Zero);
|
|
||||||
OriginPosition = path.PositionInBoundingBox(fullPath[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateSnaking(float t0, float t1)
|
|
||||||
{
|
|
||||||
var curvePath = new List<Vector2>();
|
|
||||||
curve.GetPathToProgress(curvePath, t0, t1);
|
|
||||||
|
|
||||||
path.ClearVertices();
|
|
||||||
foreach (Vector2 p in curvePath)
|
|
||||||
path.AddVertex(p);
|
|
||||||
|
|
||||||
var newTopLeftOffset = path.PositionInBoundingBox(Vector2.Zero);
|
|
||||||
path.Position = topLeftOffset - newTopLeftOffset;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -124,7 +124,6 @@
|
|||||||
<Compile Include="Replays\OsuReplayInputHandler.cs" />
|
<Compile Include="Replays\OsuReplayInputHandler.cs" />
|
||||||
<Compile Include="Tests\TestCaseHitCircle.cs" />
|
<Compile Include="Tests\TestCaseHitCircle.cs" />
|
||||||
<Compile Include="Tests\TestCaseHitCircleHidden.cs" />
|
<Compile Include="Tests\TestCaseHitCircleHidden.cs" />
|
||||||
<Compile Include="Tests\TestCaseNewSliderBody.cs" />
|
|
||||||
<Compile Include="Tests\TestCasePerformancePoints.cs" />
|
<Compile Include="Tests\TestCasePerformancePoints.cs" />
|
||||||
<Compile Include="Tests\TestCaseSlider.cs" />
|
<Compile Include="Tests\TestCaseSlider.cs" />
|
||||||
<Compile Include="Tests\TestCaseSliderHidden.cs" />
|
<Compile Include="Tests\TestCaseSliderHidden.cs" />
|
||||||
|
Loading…
Reference in New Issue
Block a user