面板增删改查 + Inspector + 可识别源码版(src-named)

面板(viewpanel/src/com/spineview/)
- ObjectPanel:Refresh / New Bone / New Slot / New BBox / New Path / Delete / Rename / Inspect + 名字输入框 + 对象列表(点行=选中)+ 状态行,全英文。
- SceneObjects:查(Tree 控件按层级/扁平列全部对象)、选中(VZ.D(Tree.Node,boolean) —— VZ.D(Object) 内部只是 Selection.L(),不真选中)、读当前选择(VZ.B())。
- SceneActions:增/删/改 + 撤销包装(un.D()/un.B())+ 树节点重建(VZ.D(GP,true,true));
  统一在编辑器渲染线程执行(OG.B(Runnable);OG.I() 有线程断言,非渲染线程会抛 RuntimeException);
  输入名字对话框自动化:找到『有 TextField 字段 + L(Object)V 回调』的对话框对象 → 填名字 → 调 L(true)。
- 实测:骨骼新建自动编号(bone7/bone8);模型层允许重名、按名字查只返回第一个;删父骨骼连子节点一起删;
  不能在渲染线程里 sleep(有些创建是下一帧做的)。
- 探针:-Dspine.probe=objects|panels|select|crud|matrix|panel。

可识别源码版(工具)
- tools/deobf/Renamer.java:ASM Remapper 只改成员名不改类名(indy 运行时要用加密串里的类名反射查)。
- tools/deobf/anchors.tsv(手动 14 条有证据的锚点)+ anchors-libgdx.tsv(MapMethods 对 gdx-1.11.0 指纹自动生成 178 条)→ names.tsv 192 条。
- 产物 ~/Desktop/spine398/src-named(4176 类全量,原 src-readable 不动);已验证 Table.add/clearChildren、SelectBox.getSelected/setSelected/setSelectedIndex、Gp.name。
- 文档:混淆名对照表.md 新增第六节(工具链 + 已验证 + 已知限制)。
This commit is contained in:
tianmo committed 2026-10-16 15:25:02 +08:00
1 parent 7fbb042aa6
commit d9ea449b64
10 files changed
+2225 -43

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
# 名字映射锚点(只放**已确定**的;每条都要能说清依据,依据写进 混淆名对照表.md)
# 列:owner name desc newName (desc 写 * 表示该 owner 下所有同名成员)
#
# ---- libGDX:Table(载荷名 et);依据 Obf.java + 直读字节码 ----
et D (Ldl;)LdR; add
et D ([Ldl;)Let; addAll
et I ()LdR; row
et Z (Z)V setFillParent
et SourceFile ()V clearChildren
et D (Ljava/lang/CharSequence;)LdR; addLabel
# ---- libGDX:Cell(载荷名 dR)----
dR StackMapTable ()LdR; expand
dR D ()LdR; fill
dR C ()LdR; left
dR S ()LdR; top
# ---- libGDX:Button / Label(保名类)----
com/badlogic/gdx/scenes/scene2d/ui/Button String ()Z isChecked
com/badlogic/gdx/scenes/scene2d/ui/Button I (Z)V setChecked
com/badlogic/gdx/scenes/scene2d/ui/Button B (ZZ)V setCheckedAndFire
com/badlogic/gdx/scenes/scene2d/ui/Button a_ (Z)V setDisabled
com/badlogic/gdx/scenes/scene2d/ui/Label D (Ljava/lang/CharSequence;)V setText
com/badlogic/gdx/scenes/scene2d/ui/Label D ()Ljava/lang/StringBuilder; getTextBuilder
# ---- libGDX:SelectBox(载荷名 KP);依据 DumpSites 解出的 (Ljava/lang/String;)V ----
KP B (Ljava/lang/String;)V setSelected
KP B ()Ljava/lang/String; getSelected
KP B (I)V setSelectedIndex
# ---- 场景模型:Gp = 骨骼;依据 gp_2.java 的 toString()/D(String,boolean)V ----
Gp D Ljava/lang/String; name
Gp D (Ljava/lang/String;Z)V setName
1 # 名字映射锚点(只放**已确定**的;每条都要能说清依据,依据写进 混淆名对照表.md)
2 # 列:owner name desc newName (desc 写 * 表示该 owner 下所有同名成员)
3 #
4 # ---- libGDX:Table(载荷名 et);依据 Obf.java + 直读字节码 ----
5 et D (Ldl;)LdR; add
6 et D ([Ldl;)Let; addAll
7 et I ()LdR; row
8 et Z (Z)V setFillParent
9 et SourceFile ()V clearChildren
10 et D (Ljava/lang/CharSequence;)LdR; addLabel
11 # ---- libGDX:Cell(载荷名 dR)----
12 dR StackMapTable ()LdR; expand
13 dR D ()LdR; fill
14 dR C ()LdR; left
15 dR S ()LdR; top
16 # ---- libGDX:Button / Label(保名类)----
17 com/badlogic/gdx/scenes/scene2d/ui/Button String ()Z isChecked
18 com/badlogic/gdx/scenes/scene2d/ui/Button I (Z)V setChecked
19 com/badlogic/gdx/scenes/scene2d/ui/Button B (ZZ)V setCheckedAndFire
20 com/badlogic/gdx/scenes/scene2d/ui/Button a_ (Z)V setDisabled
21 com/badlogic/gdx/scenes/scene2d/ui/Label D (Ljava/lang/CharSequence;)V setText
22 com/badlogic/gdx/scenes/scene2d/ui/Label D ()Ljava/lang/StringBuilder; getTextBuilder
23 # ---- libGDX:SelectBox(载荷名 KP);依据 DumpSites 解出的 (Ljava/lang/String;)V ----
24 KP B (Ljava/lang/String;)V setSelected
25 KP B ()Ljava/lang/String; getSelected
26 KP B (I)V setSelectedIndex
27 # ---- 场景模型:Gp = 骨骼;依据 gp_2.java 的 toString()/D(String,boolean)V ----
28 Gp D Ljava/lang/String; name
29 Gp D (Ljava/lang/String;Z)V setName