了解。
ここからは 「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 つから選んでほしい:
- panel.lua(Panel OS の骨格)
- viewport_os.lua(Viewport OS の雛形)
- bodycolors_editor.lua(Editor OS の最初の実装)
どれから書き始めたい?