﻿danmaq Nineball-Library for XNA v2

■BUGS

■TODO
★刷新版入力管理機能のフォース フィードバック対応
★旧バージョン重複部分のラッパー化＆Obsolete化
XBOX360上でのパフォーマンスチェック
ユニットテスト

-------------------------------------------------------------------------------
■2011/1/11 0.2.0.103
時間・ヒープ・FPS表示機能を追加。
CEntityクラスの解放処理がいい加減だったのでもうちょっと真面目に実装した。
移動キーのキーリピートが片方向にしか作用しない不具合を修正。

■2011/1/10 0.1.0.101
汎用アニメクラスに既定のコンストラクタを追加。
刷新版解像度管理機能において、下記対応。
・数パターンのコンストラクタを追加。
・拡大率が正しく計算されない不具合を修正。
・レターボックス機能がそのままでは使用できない不具合を修正。

■2011/1/9 0.1.0.100
0.1.0.52で一旦ストップしていた解像度機能刷新の実装を完了した。
旧解像度管理機能をObsolete指定にした。
旧解像度管理機能から対応解像度コレクション機能を分離。
カメラパス管理クラスとフォグアニメ管理クラスを統合して汎用アニメクラスを作成。
年越しのため、クレジットの年表記を繰り上げ。

■2011/1/7 0.1.0.99
入力周りを中心に、XBOX360版でビルドが通らない不具合を修正。

■2010/12/29 0.1.0.98
プロジェクト設定の軽微な変更。

■2010/12/25 0.1.0.97
アニメーション スプライト機能において、Dispose()呼び出し時にデータをクリアするようにした。

■2010/12/23 0.1.0.96
マップ方式当たり判定機能にて、グリッド辺り複数オブジェクトを登録可能にした他、一部仕様変更。
ガイド ユーザー インターフェイスのラッパー機能にガイド通知位置を取得/設定する機能を追加。
状態変化時間取得機能を削除。

■2010/12/14 0.1.0.95
コンテンツ キャッシュにおいて、インターフェイス レベルで
読み出し対象のアセット文字列を取得できるようにした。

■2010/12/13 0.1.0.94
レガシ ゲームパッド周りにおける下記対応。
・ハット スイッチを使用した2D入力に対応。
　(一部のPS1パッドでは十字キーをPOVに割り当てているようで)
・方向ボタン入力が機能していない不具合を修正。
・アナログ入力のハイパス フィルタが事実上のバイパス フィルタになっていた不具合を修正。
タスク管理クラスの基底状態の名前空間名が明らかに間違っていたので修正。
その他、微細な修正。

■2010/12/12 0.1.0.93
ガイド ユーザー インターフェイスのラッパー機能にガイド表示中かどうかを取得する機能を追加。
入力周りのコメント修正。

■2010/12/8 0.1.0.92
Flyweightなタスク管理機能において、インデクサを実装した。

■2010/12/5 0.1.0.91
ベクトルの回転機能において、回転方向が逆だった不具合を修正。

■2010/12/2 0.1.0.90
空の状態のクローンを実装。
一部クラス名のTypoを修正。
CEntity.Dispose()してもIState.teardown()が呼ばれない不具合を修正。

■2010/12/1 0.1.0.89
所有者を動的に変更可能な、状態を持つオブジェクト クラスを追加。

■2010/11/29 0.1.0.88
即時状態変化機能をどこからでも使用できるようにした。
最後に状態が変化したフレーム時間を取得する機能を追加。
バージョン表記について、ビルドナンバーをタスクベースからの通しのナンバーで合わせた。

■2010/11/28 0.1.0.75
永続データ管理クラスで、Windows版でも非圧縮保存に対応した。
スプライト描画機能で複数画像を異なる合成モードを指定すると正しく描画されない不具合を修正。
スプライト フォント描画機能で無駄なヒープメモリを確保してしまう可能性がある不具合を修正。

■2010/11/27 0.1.0.74
グラデーション フォント更新時に無駄なヒープメモリを確保してしまう可能性がある不具合を修正。

■2010/11/25 0.1.0.73
フォグ アニメーション管理クラスを追加。
グラフィック機能用の名前空間を作成し、一部機能をそこに移転させた。

■2010/11/23 0.1.0.72
旧版入力管理機能をObsolete指定にした。
刷新版入力機能にて、下記対応。
・高位入力コレクションにボタン割り当て補助機能追加。
・XBOX360ゲームパッドのハイパス フィルタを軸ごとにも軽くかけるようにした。

■2010/11/23 0.1.0.71
音響管理ヌル機能を追加。
解像度列挙体に一段階上位または下位の解像度を取得する機能を追加。
刷新版入力機能にて、下記対応。
・ヘルパ クラスを機能強化の上、復活。
・入力情報構造体のキーリピート判定を軸ごとに行えるようにした。
一部クラスの名称変更。
小刷新版永続データ管理クラスにおいて、XBOX360版だとビルドが通らない不具合を修正。
グラデーション フォント描画時に大量のヒープメモリを確保してしまう不具合を修正。

■2010/11/22 0.1.0.70
ガイド インターフェイスのラッパー機能にて、
ゲーマー サービス コンポーネントを削除する機能を追加。
刷新版入力機能にて、ヘルパ クラスを削除。
スプライトバッチ描画機能のStateベース化。旧機能はObsolete指定にした。
小刷新版永続データ管理クラスについて下記対応。
・データの要件を刷新に当たり緩和していたが、元に戻した。
・フォルダが存在しない場合、新しく作るようにした。
・保存に成功しても失敗とレポートされる不具合を修正。
雑多な関数群クラスについて、名称変更など軽く整理した。

■2010/11/22 0.1.0.68
永続データ管理クラスの小刷新。実質旧版のリファクタリング版。
ガイド インターフェイスのラッパー機能を作成。
メインループ・スタータ機能を一時的に無効化。今後機能縮小/汎用化していく。
刷新版入力機能にて、下記対応。
・ヘルパ クラスを追加。
・キーボード入力部に複数ボタンの組み合わせで軸とする機能を追加。
・高位入力部分にもアナログ入力のハイパス フィルタを実装。
・キーリピート機能追加。

■2010/11/21 0.1.0.67
刷新版入力機能のヘルパ クラスを追加。
刷新版入力機能にて入力状態をリセットする機能を追加。
刷新版音響機能をストリーミングWaveバンク対応した。
刷新版音響機能のロジック順序ミスで初期化できない(例外が発生する)不具合を修正。
旧版音響機能をObsolete指定にした。

■2010/11/20 0.1.0.66
ミューテックス オブジェクト機能をスターター クラスから分離した。

■2010/11/19 0.1.0.65
入力機能刷新完了。
XBOX360版だとビルドが通らない不具合を修正。

■2010/11/18 0.1.0.64
入力機能刷新作業の続き。低位入力コレクションが完成し、高位入力部もレガシ機能除き完成。

■2010/11/17 0.1.0.63
音響機能をタスクベースからステートベースへと移行。
フォントやローダなどの一部の機能において、状態の型制約を緩和した。
入力機能刷新作業開始。低位入力部およびそのコレクション(XBOX360チャットパッド除く)がほぼ完成した。
旧入力機能のエラーメッセージを刷新版に統一した。

■2010/11/16 0.1.0.61
音響機能刷新。自前で実装していた機能の大半を
XACT側の機能に任せることで、非常にシンプルな構造となった。
入力機能刷新に先立ち、旧入力機能の残滓をold名前空間へ移転した。
旧入力機能やタスク管理クラスなどにおいて毎秒24KB程度無駄にヒープ確保していた不具合を修正。

■2010/11/15 0.1.0.60
音響機能刷新作業開始。(中間コミット)
現在単純なBGM再生(モノ/多重)および効果音再生(多重)のみ。

■2010/11/14 0.1.0.59
状態遷移において、完全に同一の状態同士の遷移を許可するフラグを追加。

■2010/11/7 0.1.0.58
マップ方式当たり判定機能を追加。
コンテンツ キャッシュ機能に強制リロード機能を追加。

■2010/10/31 0.1.0.57
カメラパス管理クラスを追加。
タスク管理クラスに即時全削除機能を追加。
コルーチン管理クラスの追加削除予約の総数取得に対応した。
グラデーション構造体の内分カウンタをカスタマイズできるようになった。
フェーズ・カウンタ管理クラスがIDisposableに対応した。
一部ドキュメンテーションが紛らわしかったので修正。
スプライト管理クラス以外の機能で描画した場合、描画されない不具合を修正。

■2010/10/30 0.1.0.56
タスク管理機能の一部仕様変更。
状態遷移を一定時間遅らせる機能を追加。
次に遷移する状態を外部から取得できるようにした。
コルーチン管理クラスを完全にStateベースへ移行。旧バージョンはただのラッパーとなった。
便利関数にベクトル回転機能を追加。

■2010/10/29 0.1.0.55
入力機能(後方互換版)にボタンを離された瞬間を取得する機能を追加。

■2010/10/28 0.1.0.54
Flyweightなタスク管理機能を追加。
スプライト バッチをアニメーションさせるための機能の一部仕様変更。

■2010/10/26 0.1.0.53
スプライト バッチをアニメーションさせるための機能を実装完了。

■2010/10/23 0.1.0.52
解像度管理機能周りにある全画面非対応解像度でスケール調整しない不具合対処のため該当機能の作り直し。
古い機能はとりあえず旧バージョン後方互換として名前空間変更の上残すことにした。
画面解像度列挙体のサイズ変換処理を予めキャッシュすることで負荷軽減した。

■2010/10/19 0.1.0.51
スプライト バッチをアニメーションさせるための機能をガワだけ作成。
フレームレート計測機能が全く機能していなかった不具合を修正。
そのついでに計測ロジックを最適化、負荷を微量だが軽くした。

■2010/10/18 0.1.0.50
タスク管理機能において、削除時のコールバック機能は蛇足と判断し全削除時を残して廃止。
タスク管理機能において、特定条件で所属タスクを排除する機能を追加。
タスク基底インターフェイスにIDisposableを実装。

■2010/10/17 0.1.0.49
スプライト描画機能において、フォント描画にも合成モード設定に対応。
同時にフォント機能にも合成モード設定機能を追加した。

■2010/10/16 0.1.0.48
CEntityクラスにフレームカウンタ制御機能を追加。
CEntityクラスに次に移行する状態を外部から見られるようにした。
フォント機能において、グラデーション有効フラグが実際と反転していた不具合を修正。

■2010/10/15 0.1.0.47
旧バージョン互換機能を使ってフレームワークを起動すると
環境確認チェック部分で誤動作を起こして起動できない不具合を修正。

■2010/10/12 0.1.0.46
タスク管理クラスを実装完了。
旧バージョンで使用していたレイヤ機構は実装取りやめ。
(レイヤの数分だけ、管理クラスぶん回せばいいんじゃね？とふと思ったので)
旧バージョン後方互換用のローダ タスクが入っていなかったので急遽追加。

■2010/10/11 0.1.0.45
タスク管理クラスを半分ほど実装した。インターフェイスICollection<T>に対応。

■2010/10/10 0.1.0.44
タスク管理クラスを追加。まだガワだけ。
(ゲームコンポーネントは追加削除時のイベントがオーバーヘッドとなるため、大量の追加削除には向かない)
前バージョンの更新の結果、ローダ、メインループなどの機能に無駄なコードが発生したため、修正。

■2010/8/26 0.1.0.43
CEntity、およびCState<E,M>クラスの仕様を一部変更。
新入力機能がうまいこと動作していないので一旦削除した。
部分責任コレクションの一部機能を廃止。

■2010/8/26 0.1.0.42
入力と音回りのObsolete指定をいったん外した。
(入力回りは新クラスがまともに機能せず、音回りに至っては実装すらされていないため)

■2010/8/9 0.1.0.41
コンテンツ ローダ機能をリニューアルした。
(古いローダも暫くは使用できますが、Obsoleteとなりました。)

■2010/8/4 0.1.0.40
XBOX360周りの入力機能で一部Typo修正。

■2010/7/31 0.1.0.39
misc名前空間をutilに統合。
一部コーディングスタイルを若干変更。

■2010/5/27 0.1.0.38
状態の変更を即時反映しないようにした。
結果、setup()内においても次の状態を設定できるようにした。
(但し、setup()内だけで状態を切り替え続けると、
ウェイトが入らず行儀の悪いプログラムとなるので推奨しない)
シーン管理クラスはゲームコンポーネントである必要がないので、継承を外した。
一部コメント不備の修正。

■2010/5/19 0.1.0.37
部分管理コレクションの応用クラスとしてシーン管理クラスを追加。

■2010/3/18 0.1.0.36
フェーズ・カウンタ管理クラス、及び音量管理を構造体化。

■2010/3/17 0.1.0.35
入力制御・管理コレクションで、方向ボタン入力の共存が出来ない不具合を修正。
方向ボタンの入力状態を示す構造体を追加。

■2010/3/15 0.1.0.34
CStaticRandom.reset()メソッドで、二重にRandomオブジェクトを生成していたので、抑制した。

■2010/2/26 0.1.0.33
Flyweightパターンの簡易実装クラスを作成。
部分責任コレクションに提携処理機能追加。

■2010/2/20 0.1.0.32
スプライトバッチ管理クラスの描画情報を再利用するようにした。
CInputManagerでコントローラ認識前にボタン割り当て定義をすると落ちる不具合を修正。

■2010/2/12 0.1.0.31
ゲーム コントローラ自動認識機能を使用するとキャストミスで落ちる不具合を修正。

■2010/2/9 0.1.0.30
状態を持つオブジェクトに親オブジェクトを設定した場合、デフォルトの
privateMemberプロパティの戻り値として、親オブジェクトのprivateMemberを返すようにした。
入力機能において、ボタン入力が反応しない不具合を修正。
入力機能コレクションから自動認識AI状態を分離。
入力機能コレクションにおいて、一度でも方向ボタン入力があると、
ずっと入力し続ける状態になってしまう不具合を修正。

■2010/2/5 0.1.0.29
方向ボタン取得機能において、ボタンと同様に押し離しした瞬間を検出できるようにした。

■2010/2/4 0.1.0.28
各入力制御・管理クラスを少ないコードで使用するためのラッパーを実装完了。

■2010/2/3 0.1.0.27
旧バージョンの各機能に対し、Obsolete属性を付加した。
各入力制御・管理クラスを少ないコードで使用するためのラッパーを半分ほど実装。
特定条件でキーボード・ゲーム コントローラ入力機能のボタン割り当ての際
ボタン変化のイベントが発生しない不具合(というより設計仕様上の欠陥に近い)を修正。

■2010/2/2 0.1.0.26
レガシ ゲーム コントローラ入力機能実装完了。
状態を持つオブジェクトクラスの名前タグ機能を廃止。
各入力制御・管理クラスを少ないコードで使用するためのラッパーをガワだけ作成。

■2010/1/29 0.1.0.25
レガシ ゲーム コントローラ入力のアナログ入力のための補助機能を実装。

■2010/1/29 0.1.0.24
レガシ ゲーム コントローラ入力の基底状態を作り直し、ガワだけ作成。
入力周りの列挙体を細分化した。

■2010/1/28 0.1.0.23
旧バージョンのセーブデータI/O機能を複数ファイルの読み書きに対応した。

■2010/1/27 0.1.0.22
旧バージョン部分にて、一部新バージョンで置き換えられる部分があったので置き換えた。
レガシ ゲーム コントローラ入力における方向ボタン取得機能をガワだけ実装。

■2010/1/26 0.1.0.21
入力制御・管理クラスに方向ボタン取得機能を追加。
現在、キーボード及びXBOX360ゲーム コントローラのみサポート。

■2010/1/25 0.1.0.20
レガシ ゲーム コントローラ入力機能を半分だけ実装。

■2010/1/24 0.1.0.19
キーボード・XBOX360チャットパッド用入力制御・管理クラスを追加。
入力制御・管理クラスのヌル実装を追加。
レガシ ゲーム コントローラ入力機能をガワだけ実装。
入力制御・管理コレクションの既定状態において、特定状況で規定以上の数の
ボタン状態を取得しようとして例外が発生する可能性がある不具合を修正。

■2010/1/23 0.1.0.18
旧バージョンのdanmaq Nineball Library互換クラスを追加。
名前空間を書き換えるだけである程度旧バージョンとソースレベル互換を保てます。
入力制御・管理コレクション用XBOX360ゲーム コントローラ自動認識状態・汎用自動認識待機状態を追加。
ソースを少しだけ整理。

■2010/1/22 0.1.0.17
部分責任リストの対象リストが読み取り専用状態である場合、例外を吐くようにした。
入力制御・管理クラスの基底インターフェイスのコレクションを作成。
XBOX360ゲーム コントローラの入力制御・管理クラスをガワだけ作成。

■2010/1/21 0.1.0.16
入力制御・管理クラスを一旦削除し、設計からやり直すことにした。
とりあえず基底インターフェイスを作成。

■2010/1/19 0.1.0.15
オブジェクトの状態が変化した時間を取得する機能を追加。

■2010/1/18 0.1.0.14
メインループの既定状態に深度バッファの有無を変更する機能を追加。
メインループの初期状態を任意の状態にカスタマイズできるようにした。

■2010/1/17 0.1.0.13
コーディングスタイル変更。

■2010/1/15 0.1.0.12
オブジェクトに親オブジェクトを設定する機能を追加。
ゲーム コンポーネント部分管理機能に、状態を持つオブジェクトを直接登録する機能を追加。

■2010/1/12 0.1.0.11
移動ボタンのベクトル算出機能追加。
レガシ ゲーム コントローラ入力機能の既定状態を作成、初期化処理を状態側に移動した。

■2010/1/11 0.1.0.10
レガシ ゲーム コントローラ入力機能を無効化するシンボル追加。

■2010/1/9 0.1.0.9
XBOX360ゲーム コントローラ入力機能を最低限の機能だけ実装完了。
レガシ ゲーム コントローラ入力機能を半分だけ実装。
一部文字列をリソースに隔離した。
Windows版でもXboxガイドヘルパが有効になっていた不具合を修正。
(XNAGSの入っているPCでないとコンパイルはおろか、プレイもできなくなる)

■2010/1/8 0.1.0.8
XBOX360ゲーム コントローラ入力機能を半分だけ実装。

■2010/1/7 0.1.0.7
メインループのデフォルト状態で持っていたフィールドの大半をオブジェクト側へ移行した。
キーボード入力機能実装。
XBOX360及びレガシ ゲームコントローラ入力機能をガワだけ実装。

■2010/1/6 0.1.0.5
静的な擬似乱数ジェネレータを追加。
フォントクラスにタイマー機能を追加。

■2010/1/5 0.1.0.4
グラデーション機能付きのフォント描画機能追加。
アセット遅延読み込み機能追加。
部分責任コレクション機能追加。
ゲームコンポーネント機能で、ゲームクラスに即時登録しない機能を追加。
ジェネリックスな状態機械クラスのインターフェイスを追加。
コルーチン管理機能のDispose()メソッドを呼ぶと、コルーチンの即時全削除をするようにした。
XNA・ビデオ環境検証機能にて、検証後自動的に次の状態へ移行する機能を追加。
算術演算機能・内分カウンタ機能のメソッドの整理。

■2009/12/29 0.1.0.2
音量管理機能、グラデーション機能、FPS計算機能、XBOXガイド補助機能、メッセージボックス機能、
解像度補完機能、ログ出力機能、スプライトバッチ補助機能、コルーチン管理機能を旧版より移植。

■2009/12/28 0.1.0.1
ジェネリックスな状態機械クラスを作成。
フェーズ・カウンタ管理クラスを作成。
メインループ クラスを作成。
ゲーム コンポーネントとエンティティ間のアダプタ クラスを作成。

■2009/12/27 0.1.0.0
状態機械ベースに作り直してみるテスト。

-------------------------------------------------------------------------------
■2009/11/24 0.0.1.11
一部変数名称変更。
シーンクラスをタスク化。
コルーチン管理クラスに次フレームで全コルーチン破棄する機能を追加。
タスク基底クラスでロック後にレイヤ変更した場合例外を飛ばすようにした。
Singletonクラスをスレッドセーフに改良、Windows版に限りprivateコンストラクタにも対応した。
音量構造体をインクリメントした場合、正常に動作しない不具合を修正。
XBOX360用にコンパイルが通らない部分があったので修正。

■2009/8/5 0.0.1.10
フォント クラスを追加。
音響制御・管理クラスを追加。
メインループ クラスを追加。
FPS計測クラスを追加。

■2009/7/23 0.0.1.9
レガシ デバイス用ゲームパッド入力管理クラスを追加。
グラデーション用情報を格納するクラスを追加。
メッセージボックス 補助クラスを追加。
XBOX360ガイド 補助クラスを追加。
永続データ管理クラスを追加。
XBOX360デバイス/キーボード入力制御・管理クラスを半分だけ実装。

■2009/7/22 0.0.1.8
シーン管理クラス追加。
シーン用基底クラスを追加。
タスク用基底クラスを追加。

■2009/7/21 0.0.1.7
リソース文字列追加。
シーン用インターフェイスを追加。

■2009/7/17 0.0.1.6
タスク管理クラスの中身を実装。
タスクインターフェイスをFlex版に合わせ改良。

■2009/7/16 0.0.1.5
マイクロスレッド管理クラスを実装。
ロガークラス実装。
解像度管理クラスを実装。
スプライト描画管理クラスを実装。
タスク管理クラスをガワだけ実装。

■2009/7/15 0.0.1.4
フェーズ・カウンタ管理クラスを実装。
算術系関数機能を一通り実装。

■2009/7/14 0.0.1.3
内分カウンタ機能にスプライン機能(ベジェ・ネヴィル)を追加。
三角関数機能を実装、双曲線関数機能を半分実装。

■2009/6/22 0.0.1.2
内分カウンタ機能を追加。

■2009/5/24 0.0.1.1
新規作成。
シングルトン機能を追加。
内分カウンタ機能を追加、半分実装。

--------------------------------------------------------------------------------
