Skip to content

v0.1.0 — 宣言的UIコア完成・初回正式リリース

Latest

Choose a tag to compare

@sumx21t-3310 sumx21t-3310 released this 14 Jul 15:01
· 152 commits to main since this release
5af488c

FloatSoda 初の正式リリースです。Flutter ライクな宣言的 UI で SteamVR オーバーレイを構築するためのコア機能一式を公開します。

Alpha 段階です。 API は予告なく破壊的に変更されることがあります。

✨ ハイライト

  • 宣言的 UI コアの完成
    • StatelessWidget / StatefulWidget + SetState() / InheritedWidget
    • BuildOwner による差分ビルド(Key 付き子リストの二端差分を含む)
    • RenderObject ツリーの差分レイアウト・差分ペイント
    • アニメーションシステム(AnimationController / Ticker / FadeTransition / Curves
  • 3種のオーバーレイを統一管理: DashboardWindow / WorldSpaceWindow / DeviceTrackedWindow
  • SteamVR プロセス登録: OVRApplication.Identify()#146

📦 公開パッケージ(NuGet)

本リリースから公開はコア4パッケージに整理しました。

パッケージ 役割
FloatSoda フレームワーク本体(Widget / RenderObject / パイプライン)
FloatSoda.Common ジオメトリ型・レイヤーツリー
FloatSoda.Engine OpenGL / レンダースレッド / オーバーレイウィンドウ
FloatSoda.OVR OpenVR ラッパー・オーバーレイ種別・イベント

FloatSoda.UI / FloatSoda.UI.Cream / FloatSoda.UI.FizzyPop(デザインシステム、v0.6.0 予定)と FloatSoda.Hooks(実験的、v0.5.0 目安)は完成まで公開を停止します。

🐛 修正

  • レンダーツリー: 子の動的削除で無限再帰(StackOverflow)CleanChildRelayoutBoundary が自分自身に再帰していた問題を修正。トーストのように子を増減させる UI で必ず発生していたクリティカルなバグです(#149
  • 💥 破壊的変更: WithOpenVRFrameLimiter() を削除WaitGetPoses はシーンアプリ専用 API のため、オーバーレイアプリでは必ず IsNotSceneApplication でクラッシュしていました。フレームレート制御は WithTargetFrameRate()(既定 30fps)を使用してください(#149
  • SteamVR に AppKey 未登録でも起動可能に(#147 相当の修正)

⚠️ 既知の制限

  • 入力(ヒットテスト / ボタン / ジェスチャ)は未実装 — v0.2.0 で対応予定
  • Container / Padding / ListView などの便利ウィジェットは未実装スタブ — v0.3.0〜
  • バックグラウンドスレッドからの SetState は未サポート(#150
  • オーバーレイの実世界サイズは Dpm 経由の間接指定のみ(#151

📖 はじめかた

dotnet add package FloatSoda

ドキュメントは Wiki から。最小構成のコードは GettingStarted を参照してください。

🤖 Generated with Claude Code