Skip to content

Port beneficial upstream AssetStudioMod PRs (#129/#130/#124/#113/#115) - #11

Merged
Diphome merged 5 commits into
masterfrom
feat/upstream-pr-ports
Sep 7, 2026
Merged

Port beneficial upstream AssetStudioMod PRs (#129/#130/#124/#113/#115)#11
Diphome merged 5 commits into
masterfrom
feat/upstream-pr-ports

Conversation

@Diphome

@Diphome Diphome commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Reviewed the open PRs on aelurum/AssetStudioMod and ported the beneficial ones, adapted to our diverged codebase. Each is a separate commit.

Upstream What Verdict
#129 FBX: guard null bone frame during mesh export Ported — our code had the exact _frameToNode[frame] NRE
#130 Bump native Kyaru.Texture2DDecoder 0.1.0 → 0.2.0 Ported — restores & builds clean
#124 CLI: --fbx-ascii-format, load AnimationClips in animator mode, allow --fbx-uvs-as-diffuse in animator Ported — our FBX wrapper already supports FbxFormat/ASCII
#113 CLI: --filter-exclude-mode, --strip-path-prefix Ported — with clearer exclusion log wording
#115 Sprite: optional full canvas-size export Ported (core) — opt-in, default off; CLI --sprite-canvas + GUI checkbox

Verified

  • net9 CLI + GUI build clean; CI validates net472/net8/net9.
  • --filter-exclude-mode + --strip-path-prefix: tested on the samurai_oni sample — excludes matched assets and strips the container prefix as expected.
  • --sprite-canvas: exported the sample's 9 sprites with/without the flag; untrimmed sprites are byte-for-byte unchanged (no regression). The padding path only differs for tightly-cropped sprites (none in this sample), so the visual padding wasn't exercised against a trimmed sprite.
  • The FBX NRE fix and Kyaru bump build clean but weren't exercised against a live failing model / all-platform natives.

Notes

  • #115's GUI checkbox was added at the bottom of the export-options group box (grew the box; no existing controls moved) — layout not visually re-verified in the modal dialog, though the change is additive-only.
  • Credit to the original PR authors (LegoFan9, Sinematic3D, haojiezhe12345, fricyo, MejiroRina).

Diphome and others added 5 commits September 7, 2026 22:01
Port of aelurum/AssetStudioMod#129: when a bone's frame isn't present in the
exported hierarchy, FindFrameByPath returns null and _frameToNode[frame] threw
a NullReferenceException. Skip that bone with an empty cluster instead.

Co-Authored-By: Clue Opus 4.8 <noreply@anthropic.com>
…#130)

Port of aelurum/AssetStudioMod#130: update the Linux/macOS/Windows native
Texture2DDecoder runtime packages from 0.1.0 to 0.2.0. Restores and builds
clean on net9.

Co-Authored-By: Clue Opus 4.8 <noreply@anthropic.com>
…stream #124)

Port of aelurum/AssetStudioMod#124:
- Add --fbx-ascii-format flag (our FBX wrapper already supports FbxFormat/ascii).
- Load AnimationClip in animator mode so --fbx-animation all can bind clips.
- Allow --fbx-uvs-as-diffuse in animator mode too (was split-objects only).

Co-Authored-By: Clue Opus 4.8 <noreply@anthropic.com>
Port of aelurum/AssetStudioMod#113:
- --filter-exclude-mode inverts the filter (export everything that does NOT
  match). Clearer log wording than upstream (reports matched vs kept).
- --strip-path-prefix strips a leading path from container paths when grouping
  by container / containerFull, validated against loaded containers.

Co-Authored-By: Clue Opus 4.8 <noreply@anthropic.com>
Port of aelurum/AssetStudioMod#115: add an opt-in mode that places the cropped
sprite onto a full-size canvas (the sprite's authored m_Rect) with transparent
padding, so exports keep the original dimensions instead of the tight cropped
region. Default off = unchanged (cropped) behavior.

- SpriteHelper.GetImage gains a spriteWithCanvas param + CutImageWithCanvas.
- CLI: --sprite-canvas flag.
- GUI: "Export sprites at full canvas size" checkbox (Settings-backed).

Co-Authored-By: Clue Opus 4.8 <noreply@anthropic.com>
@Diphome
Diphome merged commit fafc771 into master Sep 7, 2026
1 check passed
@Diphome
Diphome deleted the feat/upstream-pr-ports branch September 9, 2026 18:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant