Theseus 模组文档
API 参考 / 只读视图、场景、音频与文本

LaneView


轨道只读视图(真轨道与假轨道同一套口径)。供模组在 FilterFrame#context().lanes() 中读取,用于基于轨道位置/形状的后处理(如在指定轨道左侧/右侧套滤镜条带),也可用于提示类 HUD 定位按键标签。每次 lanes() 调用得到的字段值即该快照时刻的值。

方法速览

方法用途
id()轨道 id(lane_N / fake_{id})
x() / y()未旋转布局矩形左上角(画布坐标)
width() / height()每轨宽 / 轨道高
angle()旋转角(弧度,顺时针为正)
isFake()是否假轨道
keyLabel()按键显示名(假轨为 null)
heightExtension()高度延伸量
skew() / skewAnchorY()斜切系数 / 零偏移锚点 y
arcBend() / arcCenterY()弧线有符号幅度 / 弧心 y
alpha() / keyIndicatorAlpha()背景透明度 / 键框透明度
scaleX() / scaleY()缩放因子
rotationPivotX() / rotationPivotY()旋转圆心(画布坐标)

id()

java
String id();

行为:真轨道形如 "lane_0".."lane_{n-1}";假轨道形如 "fake_{id}"(id 来自宿主 FakeTrackRenderer.getId())。示例:

java
boolean isLane0 = "lane_0".equals(lane.id());

x()

java
double x();

行为:未旋转布局矩形左上角 X,画布坐标(虚拟 1280×720 空间),已计入轨道区整体平移(track_move / 模组 setTrackOffset);contentScale 由宿主在画布层统一施加,不烘焙进返回值。每轨 lane_move 偏移与形变也不烘焙进矩形。 示例:

java
double left = lane.x();

y()

java
double y();

行为:未旋转布局矩形左上角 Y(画布坐标,已计入轨道区整体平移)。真轨未写姿态时以世界原点为中心、y 为轨道体顶部(约 -judgeLineY);假轨为背景顶边。 示例:

java
double top = lane.y();

width()

java
double width();

行为:单条轨道宽(真轨与假轨同为 TrackRenderer.getTrackWidth())。 示例:

java
double centerX = lane.x() + lane.width() / 2;

height()

java
double height();

行为:真轨 = 轨道体实际高度(judgeLineY + heightExtension,底边即判定线,默认 413.5);假轨 = 该假轨背景高(自身顶边到判定线)。注意与 heightExtension() 不是同一个量。 示例:

java
double bottom = lane.y() + lane.height();

angle()

java
double angle();

行为:旋转角度(弧度,0 = 竖直,顺时针为正)。真轨取谱面额外内容 lane_rotate 的当前角度(未设置时为 0);假轨取 FakeTrackRenderer.getRotation()。 示例:

java
double deg = Math.toDegrees(lane.angle());

isFake()

java
boolean isFake();

行为:是否为假轨道。假轨道来自 ExtraContentRenderer 系统,不参与判定,仅装饰。示例:

java
if (lane.isFake()) return;

keyLabel()

java
String keyLabel();

行为:该轨道对应物理按键的短显示名(≤3 字符,如 "J"、"S"、";"),用于提示类 HUD;键位解析失败或假轨道返回 null,调用方需判空。 示例:

java
String key = lane.keyLabel();
if (key != null) { /* 画键位标签 */ }

heightExtension()

java
double heightExtension();

行为:高度延伸量(px)。真轨 = 每帧生效的 lane_height(含 auto 结果);假轨 = fake_track_height 显式高度。表示「轨道顶端额外延伸了多少」。 示例:

java
double ext = lane.heightExtension();

skew()

java
double skew();

行为:斜切系数,钳在 ±1(0 = 未斜切);来源 lane_skew / fake_track_skew。示例:

java
double k = lane.skew();

skewAnchorY()

java
double skewAnchorY();

行为:斜切零偏移锚点 y(画布坐标,该高度处横向偏移为 0)。示例:

java
double ay = lane.skewAnchorY();

arcBend()

java
double arcBend();

行为:弧线有符号幅度(px,>0 右凸 / <0 左凸,钳 ±300);来源 lane_arc / fake_track_arc。示例:

java
double bend = lane.arcBend();

arcCenterY()

java
double arcCenterY();

行为:弧心 y(画布坐标,该高度处弧线零偏移且切线水平)。示例:

java
double cy = lane.arcCenterY();

alpha()

java
double alpha();

行为:背景 / 分隔线透明度 0.0~1.0(真轨 lane_alpha、假轨 fake_track_alpha 的背景半边)。示例:

java
double a = lane.alpha();

keyIndicatorAlpha()

java
double keyIndicatorAlpha();

行为:快捷键框透明度 0.0~1.0,与 alpha() 独立可分别控制。示例:

java
double ka = lane.keyIndicatorAlpha();

scaleX()

java
double scaleX();

行为:X 缩放因子(≥0.01,1 = 原大小);来源 lane_scale / 假轨 fake_track_move 的缩放分量。示例:

java
double sx = lane.scaleX();

scaleY()

java
double scaleY();

行为:Y 缩放因子(≥0.01,1 = 原大小)。示例:

java
double sy = lane.scaleY();

rotationPivotX()

java
double rotationPivotX();

行为:旋转圆心 X(画布坐标,已计入轨道区整体平移)。真轨取 lane_rotate 的圆心档位(判定线中点 / 背景几何中心);假轨取 fake_track_rotate 的 pivot。 口径差提示:GameStateAccess.laneRotationPivot(int) 含每轨偏移 lane_move、不含轨道区整体平移 track_move,本方法则计入 trackOffset,故 trackOffset != 0 时二者相差一个平移量。 示例:

java
double px = lane.rotationPivotX();

rotationPivotY()

java
double rotationPivotY();

行为:旋转圆心 Y(画布坐标),口径提示同 rotationPivotX()。示例:

java
double py = lane.rotationPivotY();

完整签名

java
public interface LaneView {
    String id();
    double x();
    double y();
    double width();
    double height();
    double angle();
    boolean isFake();
    String keyLabel();
    double heightExtension();
    double skew();
    double skewAnchorY();
    double arcBend();
    double arcCenterY();
    double alpha();
    double keyIndicatorAlpha();
    double scaleX();
    double scaleY();
    double rotationPivotX();
    double rotationPivotY();
}

线程:源码未声明额外线程约束。

性能:lanes() 的整份列表在上下文快照构造期生成(不可变包装),不要每帧调用后长期持有;单个 LaneView 实例为字段固定的快照,读取无额外开销。

稳定性:2.0 起冻结:2.x 内只增不破。 / 的几何只读量为纯增字段。