FineKernelToolKit  3.1.0
Model_CLI.h
[詳解]
1 // Model_CLI.h
2 
3 #pragma once
4 
5 #include <FK/Model.h>
6 #include "Boundary_CLI.h"
7 #include "Shape_CLI.h"
8 
9 namespace FK_CLI
10 {
11  using namespace System::Collections::Generic;
12 
13  // モデルの描画モードを表す列挙型
14  public enum class fk_DrawMode : unsigned int {
15  NONEMODE = 0x0000,
16  POINTMODE = 0x0001,
17  LINEMODE = 0x0002,
18  POLYMODE = 0x0004,
19  BACK_POLYMODE = (0x0008 | FK_POLYMODE),
20  FRONTBACK_POLYMODE = (0x0010 | FK_POLYMODE),
21  TEXTUREMODE = 0x0020
22  };
23 
25  public enum class fk_BlendMode : unsigned char {
26  ALPHA_MODE = 0,
27  NEGATIVE_MODE = 1,
28  ADDITION_MODE = 2,
29  SCREEN_MODE = 3,
30  LIGHTEN_MODE = 4,
31  MULTIPLY_MODE = 5,
32  NONE_MODE = 128,
33  CUSTOM_MODE = 255
34  };
35 
37  public enum class fk_BlendFactor : unsigned char {
38  ZERO = 0,
39  ONE = 1,
40  SRC_COLOR = 2,
42  DST_COLOR = 4,
44  SRC_ALPHA = 6,
46  DST_ALPHA = 8,
48  };
49 
51  public enum class fk_DepthMode : unsigned char {
52  NO_USE = 0,
53  READ = 1,
54  WRITE = 2,
55  READ_AND_WRITE = 3
56  };
57 
58 #ifndef FK_DOXYGEN_USER_PROCESS
59  public delegate void fk_DrawCallback();
60 
61  public interface class fk_IBindableDrawer {
62  public:
63  event fk_DrawCallback^ PreDraw;
64  event fk_DrawCallback^ PostDraw;
65  };
66 #endif
67 
69 
125  public ref class fk_Model : fk_Boundary {
126  internal:
127 
128  static List<fk_Model^>^ modelList = gcnew List<fk_Model^>();
129  fk_Shape^ shape;
130  fk_DrawCallback^ preShader;
131  fk_DrawCallback^ postShader;
132 
133 #ifndef FK_DOXYGEN_USER_PROCESS
134  fk_Model::fk_Model(bool argNewFlg);
135  void MakeNativeModel(void);
136 #endif
137 
138  public:
139 
140 #ifndef FK_DOXYGEN_USER_PROCESS
141  fk_Model::fk_Model(::fk_Model *argUnmanagedPtr);
142  ::fk_Model * GetP(void);
143 #endif
144 
145  public:
147  fk_Model::fk_Model();
148 
150  fk_Model::~fk_Model();
151 
153  fk_Model::!fk_Model();
154 
156 
157 
159 
164  property unsigned int ID {
165  unsigned int get();
166  }
167 
169 
176  property fk_Shape^ Shape {
177  fk_Shape^ get();
178  void set(fk_Shape^);
179  }
180 
182 
192  property bool PickMode {
193  void set(bool);
194  bool get(void);
195  }
196 
198 
209  property fk_Model^ Parent {
210  void set(fk_Model^);
211  fk_Model^ get();
212  }
213 
215 
217 
218 
220 
235  property fk_Material^ Material {
236  void set(fk_Material^);
237  fk_Material^ get();
238  }
239 
241 
248  property fk_Material^ InhMaterial {
249  fk_Material^ get();
250  }
251 
253 
259  property fk_Color^ PointColor {
260  fk_Color^ get();
261  void set(fk_Color^);
262  }
263 
265 
272  property fk_Color^ InhPointColor {
273  fk_Color^ get();
274  }
275 
277 
283  property fk_Color^ LineColor {
284  fk_Color^ get();
285  void set(fk_Color^);
286  }
287 
289 
296  property fk_Color^ InhLineColor {
297  fk_Color^ get();
298  }
299 
301 
307  property double PointSize {
308  void set(double);
309  double get();
310  }
311 
313 
319  property double LineWidth {
320  void set(double);
321  double get();
322  }
323 
324 
326 
328 
329 
331 
352  property fk_DrawMode DrawMode {
353  void set(fk_DrawMode);
354  fk_DrawMode get();
355  }
356 
358 
385  property fk_MaterialMode MaterialMode {
386  void set(fk_MaterialMode);
387  fk_MaterialMode get();
388  }
389 
391 
398  property bool SmoothMode {
399  void set(bool);
400  bool get(void);
401  }
402 
404 
410  property bool ReverseDrawMode {
411  void set(bool);
412  bool get(void);
413  }
414 
416 
426  property fk_DepthMode DepthMode {
427  void set(fk_DepthMode);
428  fk_DepthMode get(void);
429  }
430 
432 
451  property fk_BlendMode BlendMode {
452  void set(fk_BlendMode);
453  fk_BlendMode get(void);
454  }
455 
457 
476  property fk_BlendFactor BlendSrcFactor {
477  void set(fk_BlendFactor);
478  fk_BlendFactor get(void);
479  }
480 
482 
501  property fk_BlendFactor BlendDstFactor {
502  void set(fk_BlendFactor);
503  fk_BlendFactor get(void);
504  }
505 
507 
509 
511 
517  property fk_Vector^ InhPosition {
518  fk_Vector^ get();
519  }
520 
522 
528  property fk_Vector^ InhVec {
529  fk_Vector^ get();
530  }
531 
533 
539  property fk_Vector^ InhUpvec {
540  fk_Vector^ get();
541  }
542 
544 
553  property fk_Angle^ InhAngle {
554  fk_Angle^ get();
555  }
556 
558 
564  property double InhScale {
565  double get();
566  }
567 
569 
580  property fk_Matrix^ InhMatrix {
581  fk_Matrix^ get();
582  }
583 
585 
597  property fk_Matrix^ InhInvMatrix {
598  fk_Matrix^ get();
599  }
600 
602 
615  property fk_Matrix^ InhBaseMatrix {
616  fk_Matrix^ get();
617  }
618 
620 
633  property fk_Matrix^ InhInvBaseMatrix {
634  fk_Matrix^ get();
635  }
636 
638 
640 
641 
643 
652  property bool InterMode {
653  void set(bool);
654  bool get();
655  }
656 
658 
666  property bool InterStatus {
667  bool get();
668  }
669 
671 
717  property bool InterStopMode {
718  void set(bool);
719  bool get();
720  }
721 
723 
724 #ifndef FK_DOXYGEN_USER_PROCESS
725 
726  event fk_DrawCallback^ PreShader;
727  event fk_DrawCallback^ PostShader;
728 
729  virtual void OnPreShader()
730  {
731  PreShader();
732  };
733  virtual void OnPostShader()
734  {
735  PostShader();
736  };
737 
738  bool Equals(fk_Model^ argModel);
739 #endif
740 
743 
744 
746 
753  void DeleteMaterial(void);
754 
756 
763  void DeletePointColor(void);
764 
766 
773  void DeleteLineColor(void);
774 
776 
777 
779 
798  bool SetParent(fk_Model^ model, bool mode);
799 
801 
816  bool SetParent(fk_Model^ model);
817 
819 
830  void DeleteParent(bool mode);
831 
833 
840  void DeleteParent(void);
841 
843 
862  bool EntryChild(fk_Model^ model, bool mode);
863 
865 
879  bool EntryChild(fk_Model^ model);
880 
882 
900  bool DeleteChild(fk_Model^ model, bool mode);
901 
903 
917  bool DeleteChild(fk_Model^ model);
918 
920 
932  void DeleteChildren(bool mode);
933 
935 
942  void DeleteChildren(void);
944 
946 
947 
949 
955  void SnapShot(void);
956 
958 
965  bool Restore(void);
966 
968 
982  bool Restore(double t);
984 
986 
987 
989 
1007  void AdjustSphere(void);
1008 
1010 
1030  void AdjustAABB(void);
1031 
1033 
1049  void AdjustOBB(void);
1050 
1052 
1074  void AdjustCapsule(fk_Vector^ S, fk_Vector^ E);
1076 
1078 
1079 
1081 
1105  bool IsInter(fk_Model^ model);
1106 
1108 
1151  bool IsCollision(fk_Model^ model, double %time);
1152 
1154 
1163  void ResetInter(void);
1165 
1167 
1168 
1170 
1184  void EntryInterModel(fk_Model^ model);
1185 
1187 
1197  void DeleteInterModel(fk_Model^ model);
1198 
1200 
1205  void ClearInterModel(void);
1207 
1210 
1211 
1213 
1237  bool GlRotate(fk_Vector^ origin, fk_Axis axis, double theta);
1238 
1240 
1264  bool GlRotate(double x, double y, double z, fk_Axis axis, double theta);
1265 
1267 
1288  bool GlRotate(fk_Vector^ A, fk_Vector^ B, double theta);
1289 
1291 
1316  bool GlRotate(double Ax, double Ay, double Az,
1317  double Bx, double By, double Bz, double theta);
1318 
1320 
1345  bool LoRotate(fk_Vector^ origin, fk_Axis axis, double theta);
1346 
1348 
1373  bool LoRotate(double x, double y, double z, fk_Axis axis, double theta);
1374 
1376 
1401  bool LoRotate(fk_Vector^ A, fk_Vector^ B, double theta);
1402 
1404 
1442  bool LoRotate(double Ax, double Ay, double Az,
1443  double Bx, double By, double Bz, double theta);
1444 
1446 
1469  bool GlRotateWithVec(fk_Vector^ origin, fk_Axis axis, double theta);
1470 
1472 
1497  bool GlRotateWithVec(double x, double y, double z, fk_Axis axis, double theta);
1498 
1500 
1522  bool GlRotateWithVec(fk_Vector^ A, fk_Vector^ B, double theta);
1523 
1525 
1551  bool GlRotateWithVec(double Ax, double Ay, double Az,
1552  double Bx, double By, double Bz, double theta);
1553 
1555 
1579  bool LoRotateWithVec(fk_Vector^ origin, fk_Axis axis, double theta);
1580 
1582 
1608  bool LoRotateWithVec(double x, double y, double z, fk_Axis axis, double theta);
1609 
1611 
1637  bool LoRotateWithVec(fk_Vector^ A, fk_Vector^ B, double theta);
1638 
1640 
1679  bool LoRotateWithVec(double Ax, double Ay, double Az,
1680  double Bx, double By, double Bz, double theta);
1682 
1684 
1685 
1687 
1700  bool GlTranslate(fk_Vector^ v);
1701 
1703 
1718  bool GlTranslate(double x, double y, double z);
1719 
1721 
1734  bool LoTranslate(fk_Vector^ v);
1735 
1737 
1752  bool LoTranslate(double x, double y, double z);
1753 
1755 
1770  bool GlMoveTo(fk_Vector^ p);
1771 
1773 
1790  bool GlMoveTo(double x, double y, double z);
1792  };
1793 }
1794 
1795 /****************************************************************************
1796  *
1797  * Copyright (c) 1999-2016, Fine Kernel Project, All rights reserved.
1798  *
1799  * Redistribution and use in source and binary forms,
1800  * with or without modification, are permitted provided that the
1801  * following conditions are met:
1802  *
1803  * - Redistributions of source code must retain the above
1804  * copyright notice, this list of conditions and the
1805  * following disclaimer.
1806  *
1807  * - Redistributions in binary form must reproduce the above
1808  * copyright notice, this list of conditions and the
1809  * following disclaimer in the documentation and/or
1810  * other materials provided with the distribution.
1811  *
1812  * - Neither the name of the copyright holders nor the names
1813  * of its contributors may be used to endorse or promote
1814  * products derived from this software without specific
1815  * prior written permission.
1816  *
1817  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1818  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1819  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
1820  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
1821  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
1822  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1823  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1824  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1825  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1826  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1827  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1828  * POSSIBILITY OF SUCH DAMAGE.
1829  *
1830  ****************************************************************************/
1831 /****************************************************************************
1832  *
1833  * Copyright (c) 1999-2016, Fine Kernel Project, All rights reserved.
1834  *
1835  * 本ソフトウェアおよびソースコードのライセンスは、基本的に
1836  * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
1837  *
1838  * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
1839  * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
1840  *
1841  * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
1842  * および下記免責条項を含めること。
1843  *
1844  * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
1845  * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
1846  * 含めること。
1847  *
1848  * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
1849  * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
1850  * コントリビューターの名前を使用してはならない。
1851  *
1852  * 本ソフトウェアは、著作権者およびコントリビューターによって「現
1853  * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
1854  * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
1855  * に限定されない、いかなる保証もないものとします。著作権者もコン
1856  * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
1857  * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
1858  * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
1859  * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
1860  * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
1861  * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
1862  * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
1863  * ついて、一切責任を負わないものとします。
1864  *
1865  ****************************************************************************/
fk_BlendFactor
ブレンド係数型
Definition: Model_CLI.h:37
デプスバッファに書き込みを行い、更新します
デプスバッファの参照と書き込みを共に行います(初期値)
オイラー角を表すクラス
Definition: Matrix_CLI.h:23
アルファブレンド(デフォルト)
fk_DepthMode
デプス読み書きモード型
Definition: Model_CLI.h:51
fk_BlendMode
ブレンドモード型
Definition: Model_CLI.h:25
fk_DrawMode
Definition: Model_CLI.h:14
4元正方行列を管理するクラス
Definition: Matrix_CLI.h:108
テクスチャ描画
fk_Axis
座標軸を表す列挙型
Definition: Vector_CLI.h:12
3次元ベクトルを管理するクラス
Definition: Vector_CLI.h:37
RGB色を管理するクラス
Definition: Material_CLI.h:24
モデルを生成、管理するクラス
Definition: Model_CLI.h:125
デプスバッファの参照も更新せず、常に上書きします
形状用基底クラス
Definition: Shape_CLI.h:28
fk_MaterialMode
マテリアルモードを表す列挙型
Definition: Palette_CLI.h:11
境界ボリュームを管理するクラス
Definition: Boundary_CLI.h:62
マテリアル(質感)を管理するクラス
Definition: Material_CLI.h:448
デプスバッファを参照し、前後関係のチェックを行います
Definition: AppWindow_CLI.h:11