make holdnote longs as wide as end-capped notes
This commit is contained in:
+2
-2
@@ -65,7 +65,7 @@ uv1_offset = Vector3(0, -0.001, 0)
|
|||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_w20vk"]
|
[sub_resource type="ViewportTexture" id="ViewportTexture_w20vk"]
|
||||||
viewport_path = NodePath("Mask")
|
viewport_path = NodePath("Mask")
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_exkdy"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_5k3bq"]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
shader = ExtResource("3_rjbyl")
|
shader = ExtResource("3_rjbyl")
|
||||||
shader_parameter/mask = SubResource("ViewportTexture_w20vk")
|
shader_parameter/mask = SubResource("ViewportTexture_w20vk")
|
||||||
@@ -163,7 +163,7 @@ anchor_mode = 0
|
|||||||
editor_draw_screen = false
|
editor_draw_screen = false
|
||||||
|
|
||||||
[node name="Background" parent="2D Viewport/Viewport Control" instance=ExtResource("2_8g6gv")]
|
[node name="Background" parent="2D Viewport/Viewport Control" instance=ExtResource("2_8g6gv")]
|
||||||
material = SubResource("ShaderMaterial_exkdy")
|
material = SubResource("ShaderMaterial_5k3bq")
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
offset_top = -1920.0
|
offset_top = -1920.0
|
||||||
offset_right = 1920.0
|
offset_right = 1920.0
|
||||||
|
|||||||
@@ -65,52 +65,29 @@ namespace WacK.Things.TunnelObjects
|
|||||||
var length = Play.ScrollPxPerSec * (float)(destination.time - origin.time);
|
var length = Play.ScrollPxPerSec * (float)(destination.time - origin.time);
|
||||||
var verts = new Vector2[4];
|
var verts = new Vector2[4];
|
||||||
|
|
||||||
int originPos;
|
int correctedDestPos = Util.NearestMinute((int) origin.pos, (int) destination.pos);
|
||||||
int originSize;
|
var (originPosPx, originSizePx) = Util.PixelizeNote((int)origin.pos, (int)origin.size);
|
||||||
int destPos;
|
var (destPosPx, destSizePx) = Util.PixelizeNote(correctedDestPos, (int)destination.size);
|
||||||
int destSize;
|
|
||||||
if (3 <= origin.size && origin.size <= 59)
|
|
||||||
{
|
|
||||||
originPos = ((int)origin.pos + 1)%60;
|
|
||||||
originSize = (int)origin.size - 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
originPos = (int)origin.pos;
|
|
||||||
originSize = (int)origin.size;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (3 <= destination.size && destination.size <= 59)
|
verts[0] = new Vector2(originPosPx, 0);
|
||||||
{
|
verts[1] = new Vector2(verts[0].X + originSizePx, 0);
|
||||||
destPos = ((int)destination.pos + 1)%60;
|
verts[2] = new Vector2(destPosPx + destSizePx, -length);
|
||||||
destSize = (int)destination.size - 2;
|
verts[3] = new Vector2(destPosPx, -length);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
destPos = (int)destination.pos;
|
|
||||||
destSize = (int)destination.size;
|
|
||||||
}
|
|
||||||
|
|
||||||
destPos = (int)Util.NearestMinute(originPos, destPos);
|
|
||||||
verts[0] = new Vector2(originPos * minuteSize, 0);
|
|
||||||
verts[1] = new Vector2(verts[0].X + originSize * minuteSize, 0);
|
|
||||||
verts[2] = new Vector2(minuteSize * (destPos + destSize), -length);
|
|
||||||
verts[3] = new Vector2(minuteSize * destPos, -length);
|
|
||||||
var segment = new Polygon2D() { Polygon = verts, Antialiased = true };
|
var segment = new Polygon2D() { Polygon = verts, Antialiased = true };
|
||||||
|
|
||||||
// draw overflow
|
// draw overflow
|
||||||
var originFinalPos = originPos + originSize;
|
var originFinalPos = origin.pos + origin.size;
|
||||||
var destinationFinalPos = destPos + destSize;
|
var destinationFinalPos = correctedDestPos + destination.size;
|
||||||
if (originFinalPos > 60 || destinationFinalPos > 60)
|
if (originFinalPos > 60 || destinationFinalPos > 60)
|
||||||
{
|
{
|
||||||
var subSegment = new Polygon2D() { Polygon = verts, Antialiased = true };
|
var subSegment = new Polygon2D() { Polygon = verts, Antialiased = true };
|
||||||
subSegment.Translate(new Vector2(-60 * minuteSize, 0));
|
subSegment.Translate(new Vector2(-Constants.BASE_2D_RESOLUTION, 0));
|
||||||
segment.AddChild(subSegment);
|
segment.AddChild(subSegment);
|
||||||
}
|
}
|
||||||
if (originFinalPos < 60 || destinationFinalPos < 60)
|
if (originFinalPos < 60 || destinationFinalPos < 60)
|
||||||
{
|
{
|
||||||
var subSegment = new Polygon2D() { Polygon = verts, Antialiased = true };
|
var subSegment = new Polygon2D() { Polygon = verts, Antialiased = true };
|
||||||
subSegment.Translate(new Vector2(60 * minuteSize, 0));
|
subSegment.Translate(new Vector2(Constants.BASE_2D_RESOLUTION, 0));
|
||||||
segment.AddChild(subSegment);
|
segment.AddChild(subSegment);
|
||||||
}
|
}
|
||||||
segment.Modulate = new Color("#FFFFFFD0");
|
segment.Modulate = new Color("#FFFFFFD0");
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using Microsoft.VisualBasic.CompilerServices;
|
||||||
using Godot;
|
using Godot;
|
||||||
using WacK.Data.Chart;
|
using WacK.Data.Chart;
|
||||||
|
|
||||||
@@ -24,32 +25,11 @@ namespace WacK.Things.TunnelObjects
|
|||||||
|
|
||||||
public void SetPosSize(int pos, int size)
|
public void SetPosSize(int pos, int size)
|
||||||
{
|
{
|
||||||
float pxPerMinute = Constants.BASE_2D_RESOLUTION / 60;
|
var (posPx, sizePx) = Util.PixelizeNote(pos, size);
|
||||||
|
|
||||||
float posPx = 0;
|
if (size >= 60)
|
||||||
float sizePx = 0;
|
|
||||||
|
|
||||||
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 -= 12;
|
|
||||||
sizePx += 24;
|
|
||||||
}
|
|
||||||
else // size is 60 or greater
|
|
||||||
{
|
{
|
||||||
size = 60;
|
size = 60;
|
||||||
sizePx = Constants.BASE_2D_RESOLUTION;
|
|
||||||
// remove end-caps
|
|
||||||
noteBase.RegionRect = new Rect2(12, 0, new Vector2(488, 36));
|
noteBase.RegionRect = new Rect2(12, 0, new Vector2(488, 36));
|
||||||
noteBase.PatchMarginLeft = 0;
|
noteBase.PatchMarginLeft = 0;
|
||||||
noteBase.PatchMarginRight = 0;
|
noteBase.PatchMarginRight = 0;
|
||||||
|
|||||||
+32
-1
@@ -56,7 +56,7 @@ namespace WacK
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return an equivalent minute that's closest to the origin.
|
// Return an equivalent minute that's closest to the origin.
|
||||||
public static float NearestMinute(int origin, int destination)
|
public static int NearestMinute(int origin, int destination)
|
||||||
{
|
{
|
||||||
int result = destination % 60;
|
int result = destination % 60;
|
||||||
|
|
||||||
@@ -73,6 +73,37 @@ namespace WacK
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static (float, float) PixelizeNote(int pos, int size, int endCapPx = 12)
|
||||||
|
{
|
||||||
|
float pxPerMinute = Constants.BASE_2D_RESOLUTION / 60;
|
||||||
|
|
||||||
|
float posPx = 0;
|
||||||
|
float sizePx = 0;
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
return (posPx, sizePx);
|
||||||
|
}
|
||||||
|
|
||||||
public static float ScreenPixelToRad(Vector2 pos)
|
public static float ScreenPixelToRad(Vector2 pos)
|
||||||
{
|
{
|
||||||
var resolution = DisplayServer.WindowGetSize();
|
var resolution = DisplayServer.WindowGetSize();
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
[ext_resource type="Texture2D" uid="uid://cmaq66vbi80ug" path="res://_Assets/Textures/Notes/SlideArrow_Texture.png" id="4_rv322"]
|
[ext_resource type="Texture2D" uid="uid://cmaq66vbi80ug" path="res://_Assets/Textures/Notes/SlideArrow_Texture.png" id="4_rv322"]
|
||||||
[ext_resource type="Texture2D" uid="uid://kjoqem41xatr" path="res://_Assets/Textures/Notes/SlideArrow_Mask.png" id="6_o3u8k"]
|
[ext_resource type="Texture2D" uid="uid://kjoqem41xatr" path="res://_Assets/Textures/Notes/SlideArrow_Mask.png" id="6_o3u8k"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_gys6q"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_6l1er"]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
shader = ExtResource("3_k16x0")
|
shader = ExtResource("3_k16x0")
|
||||||
shader_parameter/ArrowColor = Color(0, 1, 0, 1)
|
shader_parameter/ArrowColor = Color(0, 1, 0, 1)
|
||||||
@@ -39,7 +39,7 @@ patch_margin_left = 12
|
|||||||
patch_margin_right = 12
|
patch_margin_right = 12
|
||||||
|
|
||||||
[node name="SwipeArrow" parent="." instance=ExtResource("3_smdjm")]
|
[node name="SwipeArrow" parent="." instance=ExtResource("3_smdjm")]
|
||||||
material = SubResource("ShaderMaterial_gys6q")
|
material = SubResource("ShaderMaterial_6l1er")
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_top = -35.0
|
offset_top = -35.0
|
||||||
offset_bottom = 733.0
|
offset_bottom = 733.0
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
[ext_resource type="Texture2D" uid="uid://cmaq66vbi80ug" path="res://_Assets/Textures/Notes/SlideArrow_Texture.png" id="4_v0t51"]
|
[ext_resource type="Texture2D" uid="uid://cmaq66vbi80ug" path="res://_Assets/Textures/Notes/SlideArrow_Texture.png" id="4_v0t51"]
|
||||||
[ext_resource type="Texture2D" uid="uid://kjoqem41xatr" path="res://_Assets/Textures/Notes/SlideArrow_Mask.png" id="5_dafyh"]
|
[ext_resource type="Texture2D" uid="uid://kjoqem41xatr" path="res://_Assets/Textures/Notes/SlideArrow_Mask.png" id="5_dafyh"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_y8jlc"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_k510k"]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
shader = ExtResource("3_de2t7")
|
shader = ExtResource("3_de2t7")
|
||||||
shader_parameter/ArrowColor = Color(0, 1, 0, 1)
|
shader_parameter/ArrowColor = Color(0, 1, 0, 1)
|
||||||
@@ -40,7 +40,7 @@ patch_margin_left = 12
|
|||||||
patch_margin_right = 12
|
patch_margin_right = 12
|
||||||
|
|
||||||
[node name="SwipeArrow" parent="." instance=ExtResource("3_b1dle")]
|
[node name="SwipeArrow" parent="." instance=ExtResource("3_b1dle")]
|
||||||
material = SubResource("ShaderMaterial_y8jlc")
|
material = SubResource("ShaderMaterial_k510k")
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_top = -35.0
|
offset_top = -35.0
|
||||||
offset_bottom = 733.0
|
offset_bottom = 733.0
|
||||||
|
|||||||
Reference in New Issue
Block a user