![]() |
Springhead
An open source physics engine for virtual reality, haptics and motion generation.
|
アプリケーションクラス Springheadのクラスは基本的に継承せずに使用するように設計されているが, FWAppおよびその派生クラスは例外であり,ユーザはFWAppあるいはその派生クラスを継承し, 仮想関数をオーバライドすることによって独自機能を実装する.
#include <SprFWApp.h>
Public 型 | |
enum | { TypeNone, TypeGLUT, TypeGLUI } |
Public メソッド | |
virtual void | Init () |
初期化 FWAppオブジェクトの初期化を行う.最初に必ず呼ぶ. | |
virtual void | Init (int argc, char *argv[]=NULL) |
void | InitInNewThread () |
Create new thead and start. | |
void | EndThread () |
virtual void | Display () |
シーンの描画 シーンが表示されるときに呼ばれる. 描画処理をカスタマイズしたい場合にオーバライドする. デフォルトではFWSdk::Drawが呼ばれる. | |
void | DisableIdleFunc () |
IdleFuncの呼び出しを有効化/無効化する glutの場合,glutIdleFuncに対応する. [詳細] | |
void | EnableIdleFunc (bool on=true) |
void | StartMainLoop () |
メインループの実行 glutの場合,glutMainLoopの実行 | |
void | EndMainLoop () |
メインループの終了 freeglutの場合,glutLeaveMainLoopを実行、それ以外の場合は exit(0) | |
virtual void | IdleFunc () |
アイドル処理 イベントが何もない場合にバックグラウンド処理を行う. | |
virtual void | TimerFunc (int id) |
タイマー処理 繰り返し実行を行う. デフォルトではid = 0でコールバック | |
virtual void | Reshape (int w, int h) |
描画領域のサイズ変更 [詳細] | |
virtual void | Keyboard (int key, int x, int y) |
キーボードイベントのハンドラ [詳細] | |
virtual void | MouseButton (int button, int state, int x, int y) |
マウスイベントのハンドラ | |
virtual void | MouseMove (int x, int y) |
マウスイベントのハンドラ デフォルトでは左ドラッグで視点変更,右ドラッグでズームイン/アウト | |
virtual void | Joystick (unsigned int buttonMask, int x, int y, int z) |
ジョイスティックのハンドラ | |
virtual void | AtExit () |
終了処理ハンドラ | |
virtual bool | OnMouse (int button, int state, int x, int y) |
DVKeyMouseHandlerの仮想関数 デフォルトではFWAppの従来のイベントハンドラを呼びだすのみ. こちらを直接オーバライドしてもよい. | |
virtual bool | OnMouseMove (int button, int x, int y, int zdelta) |
マウスが動いたときの処理 [詳細] | |
virtual bool | OnDoubleClick (int button, int x, int y) |
ダブルクリック時の処理 [詳細] | |
virtual bool | OnKey (int state, int key, int x, int y) |
キー入力処理 [詳細] | |
virtual void | OnControlUpdate (FWControlIf *ctrl) |
GUI系イベントハンドラ [詳細] | |
FWWinIf * | CreateWin (const FWWinDesc &desc=FWWinDesc(), FWWinIf *parent=0) |
ウィンドウに対応するコンテキストを作る [詳細] | |
int | NWin () |
ウィンドウの数 | |
FWWinIf * | GetWinFromId (int wid) |
ウィンドウをIDから探す [詳細] | |
FWWinIf * | GetWin (int index) |
ウィンドウを取得する [詳細] | |
FWWinIf * | GetCurrentWin () |
現在のウィンドウを取得する | |
void | DestroyWin (FWWinIf *win) |
ウィンドウを削除する | |
void | SetCurrentWin (FWWinIf *win) |
現在のウィンドウを設定する | |
void | PostRedisplay () |
カレントウィンドウのノーマルプレーンを,再描画の必要に応じてマークする | |
int | GetModifier () |
Ctrl, Shift, Altの状態を返す 個々の派生クラスで実装される | |
void | SetGRHandler (int type) |
描画の設定 FWGraphicsHandlerを設定する.最初に必ず呼ぶ. | |
GRDeviceIf * | GRInit () |
FWGraphicsHandlerの初期化 FWGraphicsHandlerの初期化を行う.最初に必ず呼ぶ. | |
GRDeviceIf * | GRInit (int argc, char *argv[]=NULL, int type=TypeGLUT) |
void | GetDisplayLock () |
Display関数呼び出しの排他ロックを取得する | |
void | ReleaseDisplayLock () |
Display関数呼び出しの排他ロックを解放する | |
void | InitWindow () |
削除候補API [詳細] | |
void | Clear () |
初期状態にする | |
void | Reset () |
リセットする | |
![]() | |
virtual void | UserFunc () |
ユーザ関数 メインループ実行中にユーザが処理を加えたい場合,ここに記述する. 物理シミュレーションのステップの前に呼ばれる. | |
FWSdkIf * | GetSdk () |
SDKを取得する | |
void | CreateSdk () |
SDKを作成する | |
UTTimerIf * | CreateTimer (UTTimerIf::Mode mode=UTTimerIf::FRAMEWORK) |
タイマーを作成する [詳細] | |
UTTimerIf * | GetTimer (int i) |
タイマーを取得する [詳細] | |
int | NTimers () |
Static Public メソッド | |
static FWApp * | GetApp () |
FWAppインスタンスを取得する | |
Protected 型 | |
typedef std::vector< UTRef < FWWinIf > > | Wins |
![]() | |
typedef std::vector< UTRef < UTTimerIf > > | Timers |
Protected メソッド | |
void | AssignScene (FWWinIf *win) |
ウィンドウにシーンを与える [詳細] | |
void | StartInThread () |
Initialize in new thead. | |
void | CheckAndPostRedisplay () |
Protected 変数 | |
bool | bThread |
GLUTを別スレッドで動かす場合 true. | |
volatile bool | bPostRedisplay |
別スレッドに再描画の要求をするためのフラグ true で再描画 | |
volatile bool | bEndThread |
別スレッドの場合にスレッドを終了させる。 | |
UTCriticalSection | displayLock |
Wins | wins |
![]() | |
UTRef< FWSdkIf > | fwSdk |
Framework SDK. | |
Timers | timers |
Timers to call periodic processing. | |
Static Protected 変数 | |
static FWApp * | instance |
唯一のFWAppインスタンス | |
フレンド | |
class | FWAppThreadCall |
|
protected |
win | シーンを割り当てるウィンドウ winに,既存のウィンドウが割り当てられていないシーンを割り当てる. 該当するシーンが見つからない場合,あるいはwinに既にシーンが割り当てられている場合は何もしない. |
desc | ディスクリプタ |
parent | 親ウィンドウ ウィンドウを作成する.対応するレンダラは新しく作成され, 既存のウィンドウが割り当てられていないシーンが関連づけられる. parentが指定された場合はparentを親ウィンドウとする子ウィンドウを作成する |
参照元 FWApp::InitWindow().
|
inline |
*一般性を持たせ、かつ他とあわせるためにEnableIdleFuncを追加しました。 DisableIdleFuncも残していますがobsoleteとしたいと思います。
FWWinIf* GetWin | ( | int | index | ) |
index | 何番目のウィンドウを取得するか indexで指定されたウィンドウを取得する. DestroyWinを呼ぶとインデックスは変化するので注意が必要. |
FWWinIf* GetWinFromId | ( | int | wid | ) |
wid | ウィンドウID glutの場合,widはglutGetWindowが返す識別子. |
|
inline |
ウィンドウを1つだけ作成
参照先 FWApp::CreateWin(), と FWApp::NWin().
|
inlinevirtual |
key | キーコード |
x | カーソルx座標 |
y | カーソルy座標 特殊キーのキーコードは使用するグラフィクスライブラリに依存する. |
*GLUTの場合,glutKeyboardFuncコールバックとglutSpecialFuncコールバックで キーコードが重複している.そこでglutSpecialFuncコールバックに渡されたキーコードには 256が加算されてKeyboardに渡される.
SampleApp, PHOpDemo, VirtualHuman, VTraj, PHOpDemo, BoxStack, IK, IK, FWHapticSample, App, FWMultiWinSample, TreeNodeTest, FWFileLoaderSample, FWGLUISample, FWLDHapticDemo, FWAppSample, FWVrmlfileLoader, と SliderTestで再定義されています。
参照元 FWApp::OnKey().
|
inlinevirtual |
ctrl | 更新が生じたコントロール 更新イベントの発生条件は以下のとおり: FWButtonIf: ボタンが押された FWTextBoxIf: テキストが変更された FWRotationControlIf: 回転した FWTranslationControlIf: 平行移動した |
|
inlinevirtual |
button | ButtonMask列挙子の組み合わせ |
x | カーソルのx座標 |
y | カーソルのy座標 |
DVKeyMouseCallbackを再定義しています。
|
inlinevirtual |
state | DVKeySt列挙子の値 |
key | asciiコードかDVKeyCode列挙子の値 |
x | カーソルのx座標 |
y | カーソルのy座標 |
DVKeyMouseCallbackを再定義しています。
参照先 FWApp::Keyboard().
|
inlinevirtual |
button | ButtonMask列挙子の組み合わせ |
x | カーソルのx座標 |
y | カーソルのy座標 |
zdelta | マウスホイールの変化量 |
zdeltaはマウスホイールに対応するデバイスを使用する場合のみ有効.
DVKeyMouseCallbackを再定義しています。
PHOpDemo, と PHOpDemoで再定義されています。
参照先 FWApp::MouseMove().
|
virtual |
w | 描画領域の横幅 |
h | 描画領域の縦幅 ユーザによってウィンドウサイズが変更されたときなどに呼ばれる. |