FineKernelToolKit  3.1.0
AppWindow_CLI.h
[詳解]
1 // AppWindow_CLI.h
2 
3 #pragma once
4 
5 #include <FK/SimpleWindow.h>
6 #include "GuideObject_CLI.h"
7 #include "SpriteModel_CLI.h"
8 #include "Performer_CLI.h"
9 #include "Plane_CLI.h"
10 
11 namespace FK_CLI
12 {
13  public enum class fk_SpecialKey {
14  SHIFT_R,
15  SHIFT_L,
16  CTRL_R,
17  CTRL_L,
18  ALT_R,
19  ALT_L,
20  ENTER,
21  BACKSPACE,
22  DELETEKEY,
23  CAPS_LOCK,
24  TAB,
25  PAGE_UP,
26  PAGE_DOWN,
27  HOME,
28  END,
29  INSERT,
30  LEFT,
31  RIGHT,
32  UP,
33  DOWN,
34  F1,
35  F2,
36  F3,
37  F4,
38  F5,
39  F6,
40  F7,
41  F8,
42  F9,
43  F10,
44  F11,
45  F12
46  };
47 
49  public enum class fk_MouseButton {
50  MOUSE1,
51  MOUSE2,
52  MOUSE3
53  };
54 
56  public enum class fk_SwitchStatus {
57  RELEASE,
58  UP,
59  DOWN,
60  PRESS
61  };
62 
64 
75  public ref class fk_AppWindow : public fk_IBindableDrawer {
76  internal:
77  ::fk_AppWindow *pWin;
78  fk_Scene^ scene;
79 
80  delegate void ShaderCallback(void);
81  ShaderCallback^ preInit;
82  ShaderCallback^ postInit;
83  ShaderCallback^ preDraw;
84  ShaderCallback^ postDraw;
85  ShaderCallback^ preDrawLeft;
86  ShaderCallback^ postDrawLeft;
87  ShaderCallback^ preDrawRight;
88  ShaderCallback^ postDrawRight;
89 
90  ::fk_AppWindow * GetP(void);
93 
94  public:
96  fk_AppWindow();
97 
99  ~fk_AppWindow();
100 
102  !fk_AppWindow();
103 
105 
110  property String^ WindowName {
111  void set(String^);
112  }
113 
115 
123  property fk_Dimension^ Size {
124  void set(fk_Dimension^);
125  }
126 
128 
137  property fk_Rect^ InnerSize {
138  void set(fk_Rect^);
139  }
140 
142 
153  property fk_Color^ BGColor {
154  void set(fk_Color^);
155  }
156 
158 
166  property int FPS {
167  void set(int);
168  }
169 
171 
179  property double AxisWidth {
180  void set(double);
181  }
182 
184 
192  property double GridWidth {
193  void set(double);
194  }
195 
197 
205  property double GuideScale {
206  void set(double);
207  }
208 
210 
218  property int GuideNum {
219  void set(int);
220  }
221 
223 
232  property fk_Vector^ CameraPos {
233  void set(fk_Vector^);
234  fk_Vector^ get();
235  }
236 
238 
246  property fk_Vector^ CameraFocus {
247  void set(fk_Vector^);
248  }
249 
251 
263  property fk_Model^ CameraModel {
264  void set(fk_Model^);
265  fk_Model^ get();
266  }
267 
269 
284  property fk_Scene^ Scene {
285  void set(fk_Scene^);
286  fk_Scene^ get();
287  }
288 
290 
302  fk_Vector^ get();
303  }
304 
306 
313  property bool TrackBallMode {
314  void set(bool);
315  }
316 
318 
319 
321 
327  void SetCameraDefault(void);
329 
331 
332 
355  void SetScene(fk_Scene^ scene, bool defCameraAndLight);
356 
358 
364  void SetSceneDefault(void);
365 
367 
384  void Entry(fk_Model^ model);
385 
387 
398  void Entry(fk_Model^ model, fk_GuideObject^ guide);
399 
401 
408  void Entry(fk_SpriteModel^ model);
409 
411 
419  void Entry(fk_Performer^ chara);
420 
422 
430  void Remove(fk_Model^ model);
431 
433 
443  void Remove(fk_Model^ model, fk_GuideObject^ guide);
444 
446 
455  void Remove(fk_SpriteModel^ model);
456 
458 
467  void Remove(fk_Performer^ chara);
468 
470 
478  void ClearModel(bool defCameraAndLight);
479 
481 
487  void ClearModel(void);
489 
491 
492 
498  void Open(void);
499 
501 
511  void Close(void);
512 
514 
529  bool Update(bool forceFlg);
530 
532 
540  bool Update(void);
542 
544 
545 
547 
562  void ShowGuide(fk_GuideMode mode);
563 
565 
573  void ShowGuide(void);
574 
576 
582  void HideGuide(void);
584 
586 
587 
589 
621  bool GetKeyStatus(wchar_t key, fk_SwitchStatus status, bool insideFlag);
622 
624 
653  bool GetKeyStatus(wchar_t key, fk_SwitchStatus status);
654 
656 
689  bool GetSpecialKeyStatus(fk_SpecialKey keyCode,
690  fk_SwitchStatus status, bool insideFlag);
691 
693 
723  bool GetSpecialKeyStatus(fk_SpecialKey keyCode, fk_SwitchStatus status);
725 
727 
728 
730 
754  bool GetMouseStatus(fk_MouseButton buttonCode, fk_SwitchStatus status, bool insideFlag);
755 
757 
769  void SetCursorState(bool visible, bool center);
770 
771 
773 
799  bool IsModelPicked(fk_Model^ model, int pixel, int mouseX, int mouseY);
800 
802 
817  bool IsModelPicked(fk_Model^ model, int pixel);
818 
820 
835  bool IsModelPicked(fk_Model^ model);
836 
838 
848  void ProcMouseView(fk_Model^ camera, double x, double y, bool lockSW);
850 
852 
853 
855 
872  bool GetProjectPosition(double x, double y,
873  fk_Plane^ plane, fk_Vector^ pos);
874 
876 
889  bool GetProjectPosition(double x, double y,
890  double dist, fk_Vector^ pos);
891 
893 
909  bool GetWindowPosition(fk_Vector^ pos_3D, fk_Vector^ pos_2D);
911 
912 #ifndef FK_DOXYGEN_USER_PROCESS
913  event fk_DrawCallback^ PreInit;
914  event fk_DrawCallback^ PostInit;
915  virtual event fk_DrawCallback^ PreDraw;
916  virtual event fk_DrawCallback^ PostDraw;
917  event fk_DrawCallback^ PreDrawLeft;
918  event fk_DrawCallback^ PostDrawLeft;
919  event fk_DrawCallback^ PreDrawRight;
920  event fk_DrawCallback^ PostDrawRight;
921 
922  virtual void OnPreInit()
923  {
924  PreInit();
925  };
926 
927  virtual void OnPostInit()
928  {
929  PostInit();
930  };
931 
932  virtual void OnPreDraw()
933  {
934  PreDraw();
935  };
936 
937  virtual void OnPostDraw()
938  {
939  PostDraw();
940  };
941 
942  virtual void OnPreDrawLeft()
943  {
944  PreDrawLeft();
945  };
946 
947  virtual void OnPostDrawLeft()
948  {
949  PostDrawLeft();
950  };
951 
952  virtual void OnPreDrawRight()
953  {
954  PreDrawRight();
955  };
956 
957  virtual void OnPostDrawRight()
958  {
959  PostDrawRight();
960  };
961 
962 #endif
963  };
964 }
965 
966 /****************************************************************************
967  *
968  * Copyright (c) 1999-2016, Fine Kernel Project, All rights reserved.
969  *
970  * Redistribution and use in source and binary forms,
971  * with or without modification, are permitted provided that the
972  * following conditions are met:
973  *
974  * - Redistributions of source code must retain the above
975  * copyright notice, this list of conditions and the
976  * following disclaimer.
977  *
978  * - Redistributions in binary form must reproduce the above
979  * copyright notice, this list of conditions and the
980  * following disclaimer in the documentation and/or
981  * other materials provided with the distribution.
982  *
983  * - Neither the name of the copyright holders nor the names
984  * of its contributors may be used to endorse or promote
985  * products derived from this software without specific
986  * prior written permission.
987  *
988  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
989  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
990  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
991  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
992  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
993  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
994  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
995  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
996  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
997  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
998  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
999  * POSSIBILITY OF SUCH DAMAGE.
1000  *
1001  ****************************************************************************/
1002 /****************************************************************************
1003  *
1004  * Copyright (c) 1999-2016, Fine Kernel Project, All rights reserved.
1005  *
1006  * 本ソフトウェアおよびソースコードのライセンスは、基本的に
1007  * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
1008  *
1009  * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
1010  * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
1011  *
1012  * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
1013  * および下記免責条項を含めること。
1014  *
1015  * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
1016  * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
1017  * 含めること。
1018  *
1019  * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
1020  * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
1021  * コントリビューターの名前を使用してはならない。
1022  *
1023  * 本ソフトウェアは、著作権者およびコントリビューターによって「現
1024  * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
1025  * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
1026  * に限定されない、いかなる保証もないものとします。著作権者もコン
1027  * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
1028  * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
1029  * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
1030  * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
1031  * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
1032  * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
1033  * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
1034  * ついて、一切責任を負わないものとします。
1035  *
1036  ****************************************************************************/
void SetSceneDefault(void)
シーン設定初期化メソッド
void ClearModel(void)
全モデル登録解除メソッド2
fk_Scene^ Scene
シーン設定プロパティ
Definition: AppWindow_CLI.h:284
デリート(削除)キー
画像サイズを表すクラス
Definition: Image_CLI.h:24
double GridWidth
グリッド線幅設定プロパティ
Definition: AppWindow_CLI.h:192
bool GetMouseStatus(fk_MouseButton buttonCode, fk_SwitchStatus status, bool insideFlag)
マウスボタン状態取得メソッド
マウス右クリック(第3ボタン)
bool IsModelPicked(fk_Model^ model, int pixel, int mouseX, int mouseY)
モデルクリック判定メソッド1
F5 ファンクションキー
String^ WindowName
ウィンドウタイトルプロパティ
Definition: AppWindow_CLI.h:110
bool TrackBallMode
トラックボールモード制御プロパティ
Definition: AppWindow_CLI.h:313
fk_Rect^ InnerSize
描画領域サイズ設定プロパティ
Definition: AppWindow_CLI.h:137
F1 ファンクションキー
void Close(void)
ウィンドウ破棄メソッド
bool GetProjectPosition(double x, double y, fk_Plane^ plane, fk_Vector^ pos)
投影平面から任意平面への射影点算出メソッド
fk_AppWindow()
コンストラクタ
F11 ファンクションキー
fk_Vector^ CameraFocus
カメラ注視点設定プロパティ
Definition: AppWindow_CLI.h:246
マウス中クリック、あるいはホイールクリック(第2ボタン)
fk_Model^ CameraModel
カメラモデル設定プロパティ
Definition: AppWindow_CLI.h:263
void SetScene(fk_Scene^ scene, bool defCameraAndLight)
シーン設定メソッド
F2 ファンクションキー
void Entry(fk_Model^ model)
通常モデル表示登録メソッド
マウス左クリック(第1ボタン)
F12 ファンクションキー
~fk_AppWindow()
デストラクタ
void Open(void)
ウィンドウ生成メソッド
fk_Dimension^ Size
ウィンドウサイズプロパティ
Definition: AppWindow_CLI.h:123
F8 ファンクションキー
int GuideNum
グリッド数設定プロパティ
Definition: AppWindow_CLI.h:218
FK Performer キャラクターランタイムクラス
Definition: Performer_CLI.h:41
バックスペース(後退)キー
bool Update(void)
シーン描画メソッド2
bool GetWindowPosition(fk_Vector^ pos_3D, fk_Vector^ pos_2D)
空間座標から投影座標への射影点算出メソッド
右オルトキー
ページダウンキー
fk_Vector^ MousePosition
マウスポインタ位置取得プロパティ
Definition: AppWindow_CLI.h:301
fk_SpecialKey
Definition: AppWindow_CLI.h:13
double GuideScale
グリッド幅設定プロパティ
Definition: AppWindow_CLI.h:205
画像中の矩形領域を表すクラス
Definition: Image_CLI.h:104
void SetCameraDefault(void)
カメラ初期化メソッド
bool GetSpecialKeyStatus(fk_SpecialKey keyCode, fk_SwitchStatus status, bool insideFlag)
特殊キー状態取得メソッド1
F10 ファンクションキー
bool GetKeyStatus(wchar_t key, fk_SwitchStatus status, bool insideFlag)
通常キー状態取得メソッド1
シーンを制御するクラス
Definition: Scene_CLI.h:40
fk_MouseButton
マウスボタンを表す列挙型
Definition: AppWindow_CLI.h:49
F4 ファンクションキー
void ProcMouseView(fk_Model^ camera, double x, double y, bool lockSW)
FPS視点的カメラ制御メソッド
インサートキー
3次元ベクトルを管理するクラス
Definition: Vector_CLI.h:37
RGB色を管理するクラス
Definition: Material_CLI.h:24
fk_Vector^ CameraPos
カメラ位置設定・取得プロパティ
Definition: AppWindow_CLI.h:232
キャップスロックキー
F7 ファンクションキー
F6 ファンクションキー
F3 ファンクションキー
モデルを生成、管理するクラス
Definition: Model_CLI.h:125
離しっぱなしの状態
fk_GuideMode
fk_GuideObject での座標軸と座標平面を表す列挙型
Definition: GuideObject_CLI.h:13
2D スプライトモデルクラス
Definition: SpriteModel_CLI.h:35
座標系可視化支援クラス
Definition: GuideObject_CLI.h:36
double AxisWidth
軸線幅設定プロパティ
Definition: AppWindow_CLI.h:179
void SetCursorState(bool visible, bool center)
マウスカーソル表示制御メソッド
右コントロールキー
ページアップキー
左オルトキー
fk_Color^ BGColor
背景色設定プロパティ
Definition: AppWindow_CLI.h:153
void HideGuide(void)
グリッド・軸消去メソッド
void ShowGuide(void)
グリッド・軸設定メソッド2
幾何平面を管理するクラス
Definition: Plane_CLI.h:31
左コントロールキー
エンター(改行、リターン)キー
押しっぱなしの状態
fk_SwitchStatus
ボタン系デバイス状態を表す列挙型
Definition: AppWindow_CLI.h:56
int FPS
FPS設定プロパティ
Definition: AppWindow_CLI.h:166
void Remove(fk_Model^ model)
通常モデル表示解除メソッド
F9 ファンクションキー
Definition: AppWindow_CLI.h:11
アプリケーションウィンドウクラス
Definition: AppWindow_CLI.h:75