fix Util.PixelizeNote & HoldNote creation

This commit is contained in:
msk
2023-10-09 23:22:09 -07:00
parent d00f42753d
commit 43776de41b
2 changed files with 43 additions and 34 deletions
+19 -10
View File
@@ -60,14 +60,13 @@ namespace WacK.Things.TunnelObjects
private Polygon2D CreateSegment(NotePlay origin, NotePlay destination)
{
float minuteSize = Constants.BASE_2D_RESOLUTION / 60;
var length = Play.ScrollPxPerSec * (float)(destination.time - origin.time);
var verts = new Vector2[4];
int correctedDestPos = Util.NearestMinute((int) origin.pos, (int) destination.pos);
int destPosNearest = Util.NearestMinute((int) origin.pos, (int) destination.pos);
var (originPosPx, originSizePx) = Util.PixelizeNote((int)origin.pos, (int)origin.size);
var (destPosPx, destSizePx) = Util.PixelizeNote(correctedDestPos, (int)destination.size);
var (destPosPx, destSizePx) = Util.PixelizeNote(destPosNearest, (int)destination.size);
verts[0] = new Vector2(originPosPx, 0);
verts[1] = new Vector2(verts[0].X + originSizePx, 0);
@@ -77,17 +76,27 @@ namespace WacK.Things.TunnelObjects
// draw overflow
var originFinalPos = origin.pos + origin.size;
var destinationFinalPos = correctedDestPos + destination.size;
var destinationFinalPos = destPosNearest + destination.size;
if (originFinalPos > 60 || destinationFinalPos > 60)
{
var subSegment = new Polygon2D() { Polygon = verts, Antialiased = true };
subSegment.Translate(new Vector2(-Constants.BASE_2D_RESOLUTION, 0));
GD.Print("overflowed to the right!");
var subSegment = new Polygon2D
{
Polygon = verts,
Antialiased = true,
Position = new Vector2(-Constants.BASE_2D_RESOLUTION, 0)
};
segment.AddChild(subSegment);
}
if (originFinalPos < 60 || destinationFinalPos < 60)
if (originFinalPos < 0 || destinationFinalPos < 0)
{
var subSegment = new Polygon2D() { Polygon = verts, Antialiased = true };
subSegment.Translate(new Vector2(Constants.BASE_2D_RESOLUTION, 0));
GD.Print("overflowed to the left!");
var subSegment = new Polygon2D
{
Polygon = verts,
Antialiased = true,
Position = new Vector2(Constants.BASE_2D_RESOLUTION, 0)
};
segment.AddChild(subSegment);
}
segment.Modulate = new Color("#FFFFFFD0");
+24 -24
View File
@@ -16,8 +16,8 @@ namespace WacK
{
public static float Seg2Rad(float seg)
{
return Mathf.DegToRad(6f * seg);
}
return Mathf.DegToRad(6f * seg);
}
public static float Rad2Seg(float angle)
{
return Mathf.RadToDeg(angle / 6f);
@@ -77,30 +77,30 @@ namespace WacK
{
float pxPerMinute = Constants.BASE_2D_RESOLUTION / 60;
float posPx = 0;
float sizePx = 0;
float posPx;
float sizePx;
if (size <= 59)
{
if (size >= 3)
{
posPx = (pos + 1) * pxPerMinute;
sizePx = (size - 2) * pxPerMinute;
}
else // 2 or smaller
{
posPx = pos * pxPerMinute;
sizePx = size * pxPerMinute;
}
// end-caps
posPx -= endCapPx;
sizePx += 2*endCapPx;
}
else // size is 60 or greater
{
size = 60;
sizePx = Constants.BASE_2D_RESOLUTION;
}
{
if (size >= 3)
{
posPx = (pos + 1) * pxPerMinute;
sizePx = (size - 2) * pxPerMinute;
}
else // 2 or smaller
{
posPx = pos * pxPerMinute;
sizePx = size * pxPerMinute;
}
// end-caps
posPx -= endCapPx;
sizePx += 2*endCapPx;
}
else // size is 60 or greater
{
posPx = pxPerMinute * pos;
sizePx = Constants.BASE_2D_RESOLUTION;
}
return (posPx, sizePx);
}