了解。
ここからは 「Plugin の UI OS の設計図」 を、あなたの OS 設計思想(レイヤー分離・意味駆動・構造の透明化)に合わせて、構造として提示するね。

あなたの Planet Generator の UI OS と同じく、
「役割の分離」「意味の階層」「UI OS の自律性」 を最優先にしている。


🎨 アバター編集 Plugin:UI OS 設計図(あなた向け・構造版)

◆ 全体構造(OS レイヤー)

UI OS は 3 レイヤーで構成される。

1. Panel OS(ルート OS)

  • Plugin のメインウィンドウ
  • 各 Editor OS を管理する
  • 状態管理(現在のアバター、Undo/Redo、Preset)
  • イベントルーティング(UI → Core → Viewport)

2. Editor OS(意味ごとのサブ OS)

  • BodyColorsEditor
  • AccessoryEditor
  • ClothingEditor
  • Face/MeshEditor
  • ScaleEditor
  • AnimationPreviewer
    → すべて 独立した OS として動作し、Panel OS に登録される

3. Viewport OS(アバター表示 OS)

  • ViewportFrame
  • カメラ制御(回転・ズーム・パン)
  • ポーズ変更
  • Editor OS からの変更を反映

🧩 UI OS の画面構成(あなたの OS 設計に合わせた構造)

[Panel OS]
 ├── [Viewport OS]
 │      ├── AvatarPreview
 │      ├── CameraController
 │      └── PoseController
 │
 ├── [Editor OS]
 │      ├── BodyColorsEditor
 │      ├── AccessoryEditor
 │      ├── ClothingEditor
 │      ├── FaceMeshEditor
 │      ├── ScaleEditor
 │      └── AnimationPreviewer
 │
 └── [Export OS]
        ├── JSON Export
        ├── Preset Save/Load
        └── Game Export Hook

🖥️ Panel OS(ルート OS)詳細

● Panel OS の責務

  • UI のレイアウト
  • Editor OS の登録・切り替え
  • アバターの状態管理
  • Undo/Redo
  • Export OS の呼び出し

● Panel OS の UI

  • 左:Editor OS のタブ
  • 中央:Viewport OS
  • 右:Editor OS の内容

🎛️ Editor OS(サブ OS)詳細

1. BodyColorsEditor

  • Head / Torso / LeftArm / RightArm / LeftLeg / RightLeg
  • ColorPicker
  • プレビュー反映

2. AccessoryEditor

  • 現在のアクセ一覧
  • 追加(AssetId 入力 or Catalog 検索)
  • 削除
  • アタッチ位置の調整(必要なら)

3. ClothingEditor

  • Shirt / Pants / T-Shirt
  • AssetId 入力
  • プレビュー反映

4. FaceMeshEditor

  • FaceTexture
  • HeadMesh
  • 表情(FaceControls)
  • 眉・目・口の調整スライダー

5. ScaleEditor

  • Height
  • Width
  • Head
  • Proportion
  • BodyType

6. AnimationPreviewer

  • Idle / Walk / Run / Jump
  • カスタムアニメーションのプレビュー
  • ポーズ固定

🪞 Viewport OS(アバター表示)

● 機能

  • アバターのスポーン
  • カメラ回転(ドラッグ)
  • ズーム(ホイール)
  • ポーズ変更
  • Editor OS からの変更を即時反映

● Viewport OS の設計思想

  • UI OS と完全分離
  • Editor OS は Viewport OS に「変更イベント」を送るだけ
  • Viewport OS は「描画専用 OS」

📤 Export OS(Game OS との境界)

● Export OS の責務

  • アバター設定を JSON 化
  • Preset 保存
  • Game OS への書き出し(署名付き)

● JSON 例

{
  "bodyColors": {...},
  "accessories": [...],
  "clothing": {...},
  "scale": {...},
  "face": {...}
}

🔥 靖さんの OS 設計と完全に一致している点

Plugin OS と Game OS の境界が明確

UI は Studio 内で完結し、Game OS は JSON を読むだけ。

Editor OS が独立した意味レイヤーとして存在

あなたの「意味駆動 UI」の思想そのまま。

Viewport OS が描画専用の OS として分離

UI と描画の責務が混ざらない。

Export OS がプロトコル境界として機能

Planet Generator と同じ構造。


🚀 次のステップ(あなたが選んだ方向に合わせて)

あなたは 「Plugin の UI OS の設計図を作る」 を選んだので、
次は 実装の最初の 1 ファイル を作るのが自然。

次の 3 つから選んでほしい:

  1. panel.lua(Panel OS の骨格)
  2. viewport_os.lua(Viewport OS の雛形)
  3. bodycolors_editor.lua(Editor OS の最初の実装)

どれから書き始めたい?