1 /*---------------------------------------------------------------------------*
2   Project:  NintendoWare
3   File:     gfx_ResParticleShapeBuilder.h
4 
5   Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Revision: 16943 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NW_GFX_RESPARTICLESHAPEBUILDER_H_
17 #define NW_GFX_RESPARTICLESHAPEBUILDER_H_
18 
19 #include <nw/ut/ut_ResUtil.h>
20 #include <nw/ut/ut_ResDictionary.h>
21 #include <nw/gfx/res/gfx_ResSceneObject.h>
22 #include <nw/gfx/res/gfx_ResTypeInfo.h>
23 
24 namespace nw {
25 namespace gfx {
26 namespace res {
27 
28 //! @details :private
29 struct ResParticleShapeBuilderData
30 {
31     nw::ut::ResTypeInfo typeInfo;
32     nw::ut::ResBool m_IsAscendingOrder;
33     u8              padding_0[3];
34     nw::ut::ResVec3 m_DrawOffset;
35 };
36 
37 
38 //--------------------------------------------------------------------------
39 //! @brief  パーティクルシェイプのビルダーを表すバイナリリソースクラスです。
40 //--------------------------------------------------------------------------
41 class ResParticleShapeBuilder : public nw::ut::ResCommon< ResParticleShapeBuilderData >
42 {
43 public:
44     enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResParticleShapeBuilder) };
45     enum { SIGNATURE = NW_RES_SIGNATURE32('BUIL') };
46 
47     NW_RES_CTOR( ResParticleShapeBuilder )
48 
49     NW_RES_FIELD_BOOL_PRIMITIVE_DECL( AscendingOrder )
50     NW_RES_FIELD_VECTOR3_DECL( nw::math::VEC3, DrawOffset )
51 
52     void    Setup();
53 
54     //---------------------------------------------------------------------------
55     //! @brief        インスタンスの型情報を取得します。
56     //!
57     //! @return       型情報です。
58     //---------------------------------------------------------------------------
GetTypeInfo()59     nw::ut::ResTypeInfo     GetTypeInfo() const { return ref().typeInfo; }
60 };
61 
62 //! @details :private
63 struct ResParticleBillboardShapeBuilderData : public ResParticleShapeBuilderData
64 {
65 };
66 
67 
68 //--------------------------------------------------------------------------
69 //! @brief  パーティクルスクリーン平行ビルボードシェイプのビルダーを表すバイナリリソースクラスです。
70 //--------------------------------------------------------------------------
71 class ResParticleBillboardShapeBuilder : public ResParticleShapeBuilder
72 {
73 public:
74     enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResParticleBillboardShapeBuilder) };
75     enum { SIGNATURE = NW_RES_SIGNATURE32('BILL') };
76 
77     NW_RES_CTOR_INHERIT( ResParticleBillboardShapeBuilder, ResParticleShapeBuilder )
78 
79     void    Setup();
80 };
81 
82 //! @details :private
83 struct ResParticleWorldBillboardShapeBuilderData : public ResParticleShapeBuilderData
84 {
85 };
86 
87 
88 //--------------------------------------------------------------------------
89 //! @brief  パーティクルワールド指向ビルボードシェイプのビルダーを表すバイナリリソースクラスです。
90 //--------------------------------------------------------------------------
91 class ResParticleWorldBillboardShapeBuilder : public ResParticleShapeBuilder
92 {
93 public:
94     enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResParticleWorldBillboardShapeBuilder) };
95     enum { SIGNATURE = NW_RES_SIGNATURE32('WBLL') };
96 
97     NW_RES_CTOR_INHERIT( ResParticleWorldBillboardShapeBuilder, ResParticleShapeBuilder )
98 
99     void    Setup();
100 };
101 
102 //! @details :private
103 struct ResParticleYBillboardShapeBuilderData : public ResParticleShapeBuilderData
104 {
105 };
106 
107 
108 //--------------------------------------------------------------------------
109 //! @brief  パーティクルY軸ビルボードシェイプのビルダーを表すバイナリリソースクラスです。
110 //--------------------------------------------------------------------------
111 class ResParticleYBillboardShapeBuilder : public ResParticleShapeBuilder
112 {
113 public:
114     enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResParticleYBillboardShapeBuilder) };
115     enum { SIGNATURE = NW_RES_SIGNATURE32('YBIL') };
116 
117     NW_RES_CTOR_INHERIT( ResParticleYBillboardShapeBuilder, ResParticleShapeBuilder )
118 
119     void    Setup();
120 };
121 
122 //! @details :private
123 struct ResParticleXyPlaneShapeBuilderData : public ResParticleShapeBuilderData
124 {
125 };
126 
127 
128 //--------------------------------------------------------------------------
129 //! @brief  パーティクルXY軸平面シェイプのビルダーを表すバイナリリソースクラスです。
130 //--------------------------------------------------------------------------
131 class ResParticleXyPlaneShapeBuilder : public ResParticleShapeBuilder
132 {
133 public:
134     enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResParticleXyPlaneShapeBuilder) };
135     enum { SIGNATURE = NW_RES_SIGNATURE32('XYPL') };
136 
137     NW_RES_CTOR_INHERIT( ResParticleXyPlaneShapeBuilder, ResParticleShapeBuilder )
138 
139     void    Setup();
140 };
141 
142 } // namespace res
143 } // namespace gfx
144 } // namespace nw
145 
146 #endif // NW_GFX_RESPARTICLESHAPEBUILDER_H_
147