Skip to content

refactor: NodeRenderer廃止、Nodeが直接コマンドを生成する方式に移行#81

Merged
EbiseLutica merged 1 commit into
v2from
obsolete_node_renderer
Mar 18, 2026
Merged

refactor: NodeRenderer廃止、Nodeが直接コマンドを生成する方式に移行#81
EbiseLutica merged 1 commit into
v2from
obsolete_node_renderer

Conversation

@EbiseLutica
Copy link
Copy Markdown
Collaborator

Summary

  • NodeRendererBase とその全派生クラス(8つのGLRenderer)を廃止し、各 NodeCollect(RenderCommandQueue, RenderContext) で直接レンダリングコマンドを生成する方式に移行
  • ScissorCommandsBeginTrimCommand / EndTrimCommand にリネームし、トリムスタック管理を RenderCommandQueue に統合(ScissorStateTracker を削除)
  • LegacyRenderCommand / GLLegacyRenderCommandRunner を廃止し、DrawPieTextureCommand + GLDrawPieTextureCommandRunner を新設してPieSpriteを近代化
  • PrometeApp から UseRenderer, _renderers, _rendererTypes, ResolveRenderer を削除

変更の動機

  • NodeRenderer は「Node → コマンド」へのシンプルな変換に過ぎず、Runner との責務が重複していた
  • UseRenderer によるビルトインNodeのレンダリング差し替えはプラグイン間の互換性を破壊するリスクがあった
  • レンダリングコマンド自体はバックエンド非依存であり、Node が直接生成しても問題ない

変更内容

新規作成 (6ファイル)

  • RenderContext.cs - フレーム毎のウィンドウ情報
  • DrawPieTextureCommand.cs - 扇状テクスチャ描画コマンド
  • TrimCommands.cs - BeginTrimCommand / EndTrimCommand
  • GLDrawPieTextureCommandRunner.cs / GLBeginTrimCommandRunner.cs / GLEndTrimCommandRunner.cs

削除 (14ファイル)

  • NodeRendererBase.cs, LegacyRenderCommand.cs, ScissorCommands.cs
  • 全GLRenderer: GLSpriteRenderer, GLTextRenderer, GLShapeRenderer, GLTilemapRenderer, GLNineSliceSpriteRenderer, GLPieSpriteRenderer, GLContainbleNodeRenderer, GLMaskedContainerRenderer
  • ScissorStateTracker.cs, GLLegacyRenderCommandRunner.cs, GLBeginScissorCommandRunner.cs, GLEndScissorCommandRunner.cs

Test plan

  • dotnet build Promete.sln でビルドが通ること
  • dotnet test Promete.Test/Promete.Test.csproj で全58テストが合格すること
  • dotnet run --project Promete.Example/ でサンプルが正常に動作すること
    • Sprite / Text / Shape の描画
    • Container の Trim(IsTrimmable)
    • NineSliceSprite
    • Tilemap (Scan/RenderAll 両モード)
    • PieSprite
    • MaskedContainer (ステンシル/アルファ両方式)

🤖 Generated with Claude Code

- Node.Collect(queue, ctx) を追加し、各Nodeが直接コマンドをキューに積むように変更
- NodeRendererBase, 全GLRenderer (8ファイル), ScissorStateTracker を削除
- LegacyRenderCommand, ScissorCommands を削除
- BeginTrimCommand/EndTrimCommand に置き換え、RenderCommandQueueにTrimスタック管理を統合
- DrawPieTextureCommand + GLDrawPieTextureCommandRunner を新設
- RenderContext を導入し、ウィンドウ情報をCollectに渡す
- PrometeApp から UseRenderer, _renderers, ResolveRenderer を削除

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying promete with  Cloudflare Pages  Cloudflare Pages

Latest commit: 85017eb
Status: ✅  Deploy successful!
Preview URL: https://8aba24b8.promete.pages.dev
Branch Preview URL: https://obsolete-node-renderer.promete.pages.dev

View logs

@EbiseLutica EbiseLutica merged commit 30f1a06 into v2 Mar 18, 2026
1 check passed
@EbiseLutica EbiseLutica deleted the obsolete_node_renderer branch March 18, 2026 08:48
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