1 /*---------------------------------------------------------------------------* 2 Project: NintendoWare 3 File: gfx_ResVertex.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: 19618 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NW_GFX_RESVERTEX_H_ 17 #define NW_GFX_RESVERTEX_H_ 18 19 #include <nw/ut/ut_ResUtil.h> 20 #include <nw/ut/ut_ResDictionary.h> 21 #include <nw/ut/ut_ResDeclMacros.h> 22 #include <nw/ut/ut_ResArrayTypes.h> 23 #include <nw/gfx/res/gfx_ResTypeInfo.h> 24 #include <nw/ut/ut_ResPrimitive.h> 25 26 namespace nw { 27 namespace gfx { 28 namespace res { 29 30 //! @details :private 31 struct ResVertexAttributeData 32 { 33 // TODO: こちらの定義は削除予定。 34 enum VertexType 35 { 36 FLAG_VERTEX_PARAM = 0x1, 37 FLAG_INTERLEAVE = 0x2 38 }; 39 40 nw::ut::ResTypeInfo typeInfo; 41 nw::ut::ResS32 m_Usage; 42 nw::ut::ResU32 m_Flags; 43 }; 44 45 class ResVertexStream; 46 class ResVertexParamAttribute; 47 48 //-------------------------------------------------------------------------- 49 //! @brief 頂点属性を表すバイナリリソースの基底クラスです。 50 //--------------------------------------------------------------------------- 51 class ResVertexAttribute : public nw::ut::ResCommon< ResVertexAttributeData > 52 { 53 public: 54 enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResVertexAttribute) }; 55 enum { SIGNATURE = NW_RES_SIGNATURE32('VATR') }; 56 57 enum VertexType 58 { 59 FLAG_VERTEX_PARAM = 0x1, 60 FLAG_INTERLEAVE = 0x2 61 }; 62 63 enum VertexAttributeUsage 64 { 65 USAGE_POSITION, 66 USAGE_NORMAL, 67 USAGE_TANGENT, 68 USAGE_COLOR, 69 USAGE_TEXTURECOODINATE0, 70 USAGE_TEXTURECOODINATE1, 71 USAGE_TEXTURECOODINATE2, 72 USAGE_BONEINDEX, 73 USAGE_BONEWEIGHT, 74 USAGE_USERATTRIBUTE0, 75 USAGE_USERATTRIBUTE1, 76 USAGE_USERATTRIBUTE2, 77 USAGE_USERATTRIBUTE3, 78 USAGE_USERATTRIBUTE4, 79 USAGE_USERATTRIBUTE5, 80 USAGE_USERATTRIBUTE6, 81 USAGE_USERATTRIBUTE7, 82 USAGE_USERATTRIBUTE8, 83 USAGE_USERATTRIBUTE9, 84 USAGE_USERATTRIBUTE10, 85 USAGE_USERATTRIBUTE11, 86 USAGE_INTERLEAVE, 87 USAGE_QUANTITY, 88 USAGE_NONE 89 }; 90 91 NW_RES_CTOR( ResVertexAttribute ) 92 93 94 //--------------------------------------------------------------------------- 95 //! @fn void SetUsage(s32 value) 96 //! @brief 頂点属性の用途を設定します。 97 //--------------------------------------------------------------------------- 98 //--------------------------------------------------------------------------- 99 //! @fn void SetFlags(u32 value) 100 //! @brief フラグの値を設定します。 101 //--------------------------------------------------------------------------- 102 //--------------------------------------------------------------------------- 103 //! @fn s32 GetUsage() const 104 //! @brief 頂点属性の用途を取得します。 105 //--------------------------------------------------------------------------- 106 //--------------------------------------------------------------------------- 107 //! @fn u32 GetFlags() const 108 //! @brief フラグの値を取得します。 109 //--------------------------------------------------------------------------- 110 NW_RES_FIELD_PRIMITIVE_DECL( s32, Usage ) // GetUsage(), SetUsage() 111 NW_RES_FIELD_PRIMITIVE_DECL( u32, Flags ) // GetFlags(), SetFlags() 112 113 //! @brief 頂点属性の初期化処理をおこないます。 114 void Setup(); 115 116 //! @brief 頂点属性の後始末をおこないます。 117 void Cleanup(); 118 119 //--------------------------------------------------------------------------- 120 //! @brief インスタンスの型情報を取得します。 121 //! 122 //! @return 型情報です。 123 //--------------------------------------------------------------------------- GetTypeInfo()124 nw::ut::ResTypeInfo GetTypeInfo() const { return ref().typeInfo; } 125 }; 126 typedef nw::ut::ResArrayClass<ResVertexAttribute>::type ResVertexAttributeArray; 127 128 129 //! @details :private 130 struct ResVertexParamAttributeData : public ResVertexAttributeData 131 { 132 nw::ut::ResU32 m_FormatType; 133 nw::ut::ResU8 m_Dimension; 134 u8 _padding_0[3]; 135 nw::ut::ResF32 m_Scale; 136 nw::ut::Offset m_AttributeTableCount; 137 nw::ut::Offset toAttributeTable; 138 }; 139 140 //-------------------------------------------------------------------------- 141 //! @brief パラメータによる頂点属性を表すバイナリリソースクラスです。 142 //--------------------------------------------------------------------------- 143 class ResVertexParamAttribute : public ResVertexAttribute 144 { 145 public: 146 enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResVertexParamAttribute) }; 147 enum { SIGNATURE = NW_RES_SIGNATURE32('VAPM') }; 148 149 NW_RES_CTOR_INHERIT( ResVertexParamAttribute, ResVertexAttribute ) 150 151 //--------------------------------------------------------------------------- 152 //! @fn void SetScale(f32 value) 153 //! @brief スケール値を設定します。 154 //--------------------------------------------------------------------------- 155 //--------------------------------------------------------------------------- 156 //! @fn void SetFormatType(u32 value) 157 //! @brief フォーマットの種類を設定します。 158 //--------------------------------------------------------------------------- 159 //--------------------------------------------------------------------------- 160 //! @fn void SetDimension(u8 value) 161 //! @brief 次元数を設定します。 162 //--------------------------------------------------------------------------- 163 //--------------------------------------------------------------------------- 164 //! @fn void SetAttribute(int idx, f32 value) 165 //! @brief 属性のリストに要素を設定します。 166 //--------------------------------------------------------------------------- 167 //--------------------------------------------------------------------------- 168 //! @fn f32 GetScale() const 169 //! @brief スケール値を取得します。 170 //--------------------------------------------------------------------------- 171 //--------------------------------------------------------------------------- 172 //! @fn u32 GetFormatType() const 173 //! @brief フォーマットの種類を取得します。 174 //--------------------------------------------------------------------------- 175 //--------------------------------------------------------------------------- 176 //! @fn u8 GetDimension() const 177 //! @brief 次元数を取得します。 178 //--------------------------------------------------------------------------- 179 //--------------------------------------------------------------------------- 180 //! @fn s32 GetAttributeCount() const 181 //! @brief 属性の要素数を取得します。 182 //--------------------------------------------------------------------------- 183 //--------------------------------------------------------------------------- 184 //! @fn f32 GetAttribute(int idx) const 185 //! @brief 属性を取得します。 186 //--------------------------------------------------------------------------- 187 NW_RES_FIELD_PRIMITIVE_DECL( u32, FormatType ) // GetFormatType(), SetFormatType() 188 NW_RES_FIELD_PRIMITIVE_DECL( u8, Dimension ) // GetDimension(), SetDimension() 189 NW_RES_FIELD_PRIMITIVE_DECL( f32, Scale ) // GetScale(), SetScale() 190 NW_RES_FIELD_PRIMITIVE_LIST_DECL( f32, Attribute ) // GetAttribute(), GetAttribute(int idx), GetAttributeCount() 191 192 //! @brief 頂点属性の初期化処理をおこないます。 193 void Setup(); 194 195 //! @brief 頂点属性の後始末をおこないます。 196 void Cleanup(); 197 }; 198 typedef nw::ut::ResArrayClass<ResVertexParamAttribute>::type ResVertexParamAttributeArray; 199 200 201 struct ResVertexStreamBaseData : public ResVertexAttributeData 202 { 203 enum 204 { 205 AREA_NO_MALLOC = 0, 206 AREA_FCRAM = NN_GX_MEM_FCRAM, 207 AREA_VRAMA = NN_GX_MEM_VRAMA, 208 AREA_VRAMB = NN_GX_MEM_VRAMB 209 }; 210 211 nw::ut::ResU32 m_BufferObject; 212 nw::ut::ResU32 m_LocationFlag; 213 nw::ut::ResS32 m_StreamTableCount; 214 nw::ut::Offset toStreamTable; 215 u32 m_LocationAddress; 216 u32 m_MemoryArea; 217 }; 218 219 //! @details :private 220 struct ResVertexStreamData : public ResVertexStreamBaseData 221 { 222 nw::ut::ResU32 m_FormatType; 223 nw::ut::ResU8 m_Dimension; 224 u8 _padding_0[3]; 225 nw::ut::ResF32 m_Scale; 226 nw::ut::ResU32 m_Offset; 227 }; 228 229 struct ResInterleavedVertexStreamData : public ResVertexStreamBaseData 230 { 231 nw::ut::ResU32 m_Stride; 232 nw::ut::ResS32 m_VertexStreamsTableCount; 233 nw::ut::Offset toVertexStreamsTable; 234 }; 235 236 237 //-------------------------------------------------------------------------- 238 //! @brief 頂点ストリームによる頂点属性を表すバイナリのベースクラスです。 239 //--------------------------------------------------------------------------- 240 class ResVertexStreamBase : public ResVertexAttribute 241 { 242 public: 243 enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResVertexStreamBase) }; 244 enum { SIGNATURE = NW_RES_SIGNATURE32('VSTB') }; 245 NW_RES_CTOR_INHERIT(ResVertexStreamBase,ResVertexAttribute)246 NW_RES_CTOR_INHERIT( ResVertexStreamBase, ResVertexAttribute ) 247 248 //--------------------------------------------------------------------------- 249 //! @fn void SetBufferObject(u32 value) 250 //! @brief バッファオブジェクトを設定します。 251 //--------------------------------------------------------------------------- 252 //--------------------------------------------------------------------------- 253 //! @fn u32 GetBufferObject() const 254 //! @brief バッファオブジェクトを取得します。 255 //--------------------------------------------------------------------------- 256 NW_RES_FIELD_PRIMITIVE_DECL( u32, BufferObject ) // GetBufferObject(), SetBufferObject() 257 258 //--------------------------------------------------------------------------- 259 //! @fn u32 GetLocationFlag() const 260 //! @brief ロケーションフラグを取得します。 261 //--------------------------------------------------------------------------- 262 //--------------------------------------------------------------------------- 263 //! @fn void SetLocationFlag(u32 value) 264 //! @brief ロケーションフラグを設定します。 265 //--------------------------------------------------------------------------- 266 NW_RES_FIELD_PRIMITIVE_DECL( u32, LocationFlag ) // GetLocationFlag(), SetLocationFlag() 267 268 //--------------------------------------------------------------------------- 269 //! @fn s32 GetStreamCount() const 270 //! @brief ストリームのバイト数を取得します。 271 //--------------------------------------------------------------------------- 272 //--------------------------------------------------------------------------- 273 //! @fn const u8* GetStream() const 274 //! @brief ストリームを取得します。 275 //--------------------------------------------------------------------------- 276 NW_RES_FIELD_PRIMITIVE_LIST_DECL( u8, Stream ) // GetStream(), GetStream(int idx), GetStreamCount() 277 278 //--------------------------------------------------------------------------- 279 //! @brief コピーされた頂点バッファのアドレスを取得します。 280 //! 281 //! @return コピーされた頂点バッファの論理アドレスです。 282 //--------------------------------------------------------------------------- 283 u32 GetLocationAddress() const { return ref().m_LocationAddress; } 284 285 //--------------------------------------------------------------------------- 286 //! @brief コピーされた頂点バッファのアドレスを設定します。 287 //! 288 //! @param[in] address コピーされた頂点バッファの論理アドレスです。 289 //--------------------------------------------------------------------------- SetLocationAddress(u32 address)290 void SetLocationAddress(u32 address) { ref().m_LocationAddress = address; } SetLocationAddress(const void * address)291 void SetLocationAddress(const void* address) { ref().m_LocationAddress = reinterpret_cast<u32>(address); } 292 293 //--------------------------------------------------------------------------- 294 //! @brief GPU から参照されるイメージのアドレスを取得します。 295 //! 296 //! @details LocationAddess が設定されている場合はそのアドレスを使用し、 297 //! LocationAddess が NULL の場合には、Stream のアドレスを直接 GPU から参照します。 298 //! 299 //! @return GPU から参照されるイメージのアドレスです。 300 //--------------------------------------------------------------------------- GetImageAddress()301 u32 GetImageAddress() const 302 { 303 u32 locationAddress = this->GetLocationAddress(); 304 305 if ( locationAddress ) 306 { 307 return locationAddress; 308 } 309 else 310 { 311 return reinterpret_cast<u32>( this->GetStream() ); 312 } 313 } 314 }; 315 316 317 //-------------------------------------------------------------------------- 318 //! @brief 頂点ストリームによる頂点属性を表すバイナリリソースクラスです。 319 //--------------------------------------------------------------------------- 320 class ResVertexStream : public ResVertexStreamBase 321 { 322 public: 323 enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResVertexStream) }; 324 enum { SIGNATURE = NW_RES_SIGNATURE32('VSTM') }; 325 326 NW_RES_CTOR_INHERIT( ResVertexStream, ResVertexStreamBase ) 327 328 //--------------------------------------------------------------------------- 329 //! @fn void SetFormatType(u32 value) 330 //! @brief フォーマットの種類を設定します。 331 //--------------------------------------------------------------------------- 332 //--------------------------------------------------------------------------- 333 //! @fn u32 GetFormatType() const 334 //! @brief フォーマットの種類を取得します。 335 //--------------------------------------------------------------------------- 336 NW_RES_FIELD_PRIMITIVE_DECL( u32, FormatType ) // GetFormatType(), SetFormatType() 337 338 //--------------------------------------------------------------------------- 339 //! @fn u8 GetDimension() const 340 //! @brief 次元数を取得します。 341 //--------------------------------------------------------------------------- 342 //--------------------------------------------------------------------------- 343 //! @fn void SetDimension(u8 value) 344 //! @brief 次元数を設定します。 345 //--------------------------------------------------------------------------- 346 NW_RES_FIELD_PRIMITIVE_DECL( u8, Dimension ) // GetDimension(), SetDimension() 347 348 //--------------------------------------------------------------------------- 349 //! @fn void SetScale(f32 value) 350 //! @brief スケール値を設定します。 351 //--------------------------------------------------------------------------- 352 //--------------------------------------------------------------------------- 353 //! @fn f32 GetScale() const 354 //! @brief スケール値を取得します。 355 //--------------------------------------------------------------------------- 356 NW_RES_FIELD_PRIMITIVE_DECL( f32, Scale ) // GetScale(), SetScale() 357 358 //--------------------------------------------------------------------------- 359 //! @fn void SetOffset(u32 value) 360 //! @brief インターリーブ形式の場合のオフセット情報を設定します。 361 //--------------------------------------------------------------------------- 362 //--------------------------------------------------------------------------- 363 //! @fn u32 GetOffset() const 364 //! @brief インターリーブ形式の場合のオフセット情報を取得します。 365 //--------------------------------------------------------------------------- 366 NW_RES_FIELD_PRIMITIVE_DECL( u32, Offset ) 367 368 //! @brief 頂点ストリームの初期化処理をおこないます。 369 void Setup(); 370 371 //! @brief 頂点属性の後始末をおこないます。 372 void Cleanup(); 373 }; 374 typedef nw::ut::ResArrayClass<ResVertexStream>::type ResVertexStreamArray; 375 376 //-------------------------------------------------------------------------- 377 //! @brief インターリーブ形式の頂点ストリームを表すバイナリリソースクラスです。 378 //--------------------------------------------------------------------------- 379 class ResInterleavedVertexStream : public ResVertexStreamBase 380 { 381 public: 382 NW_RES_CTOR_INHERIT( ResInterleavedVertexStream, ResVertexStreamBase ) 383 384 //--------------------------------------------------------------------------- 385 //! @fn u32 GetStride() const 386 //! @brief インターリーブ形式の1頂点あたりの頂点サイズを取得します。 387 //--------------------------------------------------------------------------- 388 //--------------------------------------------------------------------------- 389 //! @fn void SetStride(u32 value) 390 //! @brief インターリーブ形式の1頂点あたりの頂点サイズを設定します。 391 //--------------------------------------------------------------------------- 392 NW_RES_FIELD_PRIMITIVE_DECL( u32, Stride ) 393 394 //--------------------------------------------------------------------------- 395 //! @fn s32 GetVertexStreamsCount() const 396 //! @brief インターリーブを構成する頂点属性の集合の要素数を取得します。 397 //--------------------------------------------------------------------------- 398 //--------------------------------------------------------------------------- 399 //! @fn ResVertexStream GetVertexStreams(int idx) 400 //! @brief インターリーブを構成する頂点属性の集合を取得します。 401 //--------------------------------------------------------------------------- 402 NW_RES_FIELD_CLASS_LIST_DECL( ResVertexStream, VertexStreams ) 403 404 //! @brief 頂点ストリームの初期化処理をおこないます。 405 void Setup(); 406 407 //! @brief 頂点属性の後始末をおこないます。 408 void Cleanup(); 409 }; 410 411 412 //! @details :private 413 struct ResIndexStreamData 414 { 415 enum 416 { 417 AREA_NO_MALLOC = 0, 418 AREA_FCRAM = NN_GX_MEM_FCRAM, 419 AREA_VRAMA = NN_GX_MEM_VRAMA, 420 AREA_VRAMB = NN_GX_MEM_VRAMB 421 }; 422 423 nw::ut::ResU32 m_FormatType; 424 nw::ut::ResU8 m_PrimitiveMode; 425 bool m_IsVisible; 426 u8 _padding_0[2]; 427 nw::ut::ResS32 m_StreamTableCount; 428 nw::ut::Offset toStreamTable; 429 nw::ut::ResU32 m_BufferObject; 430 nw::ut::ResU32 m_LocationFlag; 431 432 void* m_CommandCache; 433 s32 m_CommandCacheSize; 434 u32 m_LocationAddress; 435 u32 m_MemoryArea; 436 437 nw::ut::Offset toBoundingVolume; 438 }; 439 440 //-------------------------------------------------------------------------- 441 //! @brief 頂点インデックスストリームを表すバイナリリソースクラスです。 442 //--------------------------------------------------------------------------- 443 class ResIndexStream : public nw::ut::ResCommon< ResIndexStreamData > 444 { 445 public: NW_RES_CTOR(ResIndexStream)446 NW_RES_CTOR( ResIndexStream ) 447 448 //--------------------------------------------------------------------------- 449 //! @fn u32 GetFormatType() const 450 //! @brief フォーマットの種類を取得します。 451 //--------------------------------------------------------------------------- 452 //--------------------------------------------------------------------------- 453 //! @fn void SetFormatType(u32 value) 454 //! @brief フォーマットの種類を設定します。 455 //--------------------------------------------------------------------------- 456 NW_RES_FIELD_PRIMITIVE_DECL( u32, FormatType ) // GetFormatType(), SetFormatType() 457 458 //--------------------------------------------------------------------------- 459 //! @fn u8 GetPrimitiveMode() const 460 //! @brief プリミティブのモードを取得します。 461 //--------------------------------------------------------------------------- 462 //--------------------------------------------------------------------------- 463 //! @fn void SetPrimitiveMode(u8 value) 464 //! @brief プリミティブのモードを設定します。 465 //--------------------------------------------------------------------------- 466 NW_RES_FIELD_PRIMITIVE_DECL( u8, PrimitiveMode ) // GetPrimitiveMode(), SetPrimitiveMode() 467 468 //--------------------------------------------------------------------------- 469 //! @fn s32 GetStreamCount() const 470 //! @brief ストリームの要素数を取得します。 471 //--------------------------------------------------------------------------- 472 //--------------------------------------------------------------------------- 473 //! @fn u8 GetStream(int idx) const 474 //! @brief ストリームを取得します。 475 //--------------------------------------------------------------------------- 476 //--------------------------------------------------------------------------- 477 //! @fn void SetStream(int idx, u8 value) 478 //! @brief ストリームのリストに要素を設定します。 479 //--------------------------------------------------------------------------- 480 NW_RES_FIELD_PRIMITIVE_LIST_DECL( u8, Stream ) // GetStream(), GetStream(int idx), GetStreamCount() 481 482 //--------------------------------------------------------------------------- 483 //! @fn u32 GetBufferObject() const 484 //! @brief バッファオブジェクトを取得します。 485 //--------------------------------------------------------------------------- 486 //--------------------------------------------------------------------------- 487 //! @fn void SetBufferObject(u32 value) 488 //! @brief バッファオブジェクトを設定します。 489 //--------------------------------------------------------------------------- 490 NW_RES_FIELD_PRIMITIVE_DECL( u32, BufferObject ) // GetBufferObject(), SetBufferObject() 491 492 //--------------------------------------------------------------------------- 493 //! @fn u32 GetLocationFlag() const 494 //! @brief ロケーションフラグを取得します。 495 //--------------------------------------------------------------------------- 496 //--------------------------------------------------------------------------- 497 //! @fn void SetLocationFlag(u32 value) 498 //! @brief ロケーションフラグを設定します。 499 //--------------------------------------------------------------------------- 500 NW_RES_FIELD_PRIMITIVE_DECL( u32, LocationFlag ) // GetLocationFlag(), SetLocationFlag() 501 502 //--------------------------------------------------------------------------- 503 //! @fn nw::ut::ResBoundingVolume GetBoundingVolume() 504 //! @brief この機能は現状では実験仕様となります。将来的に仕様が変更になる可能性があります。 505 //! 境界情報を取得します。 506 //--------------------------------------------------------------------------- 507 NW_RES_FIELD_CLASS_DECL( nw::ut::ResBoundingVolume, BoundingVolume ) // GetBoundingVolume() 508 509 //--------------------------------------------------------------------------- 510 //! @brief コピーされた頂点バッファのアドレスを取得します。 511 //! 512 //! @return コピーされた頂点バッファの論理アドレスです。 513 //--------------------------------------------------------------------------- 514 u32 GetLocationAddress() const { return ref().m_LocationAddress; } 515 516 //--------------------------------------------------------------------------- 517 //! @brief コピーされた頂点バッファのアドレスを設定します。 518 //! 519 //! @param[in] address コピーされた頂点バッファの論理アドレスです。 520 //--------------------------------------------------------------------------- SetLocationAddress(u32 address)521 void SetLocationAddress(u32 address) { ref().m_LocationAddress = address; } SetLocationAddress(const void * address)522 void SetLocationAddress(const void* address) { ref().m_LocationAddress = reinterpret_cast<u32>(address); } 523 524 //--------------------------------------------------------------------------- 525 //! @brief GPU から参照されるイメージのアドレスを取得します。 526 //! 527 //! @details LocationAddess が設定されている場合はそのアドレスを使用し、 528 //! LocationAddess が NULL の場合には、Stream のアドレスを直接 GPU から参照します。 529 //! 530 //! @return GPU から参照されるイメージのアドレスです。 531 //--------------------------------------------------------------------------- GetImageAddress()532 u32 GetImageAddress() const 533 { 534 u32 locationAddress = this->GetLocationAddress(); 535 536 if ( locationAddress ) 537 { 538 return locationAddress; 539 } 540 else 541 { 542 return reinterpret_cast<u32>( this->GetStream() ); 543 } 544 } 545 546 //--------------------------------------------------------------------------- 547 //! @fn void SetVisible(bool value) 548 //! @brief この機能は現状では実験仕様となります。将来的に仕様が変更になる可能性があります。 549 //! 表示するかどうかのフラグを設定します。 550 //--------------------------------------------------------------------------- 551 //--------------------------------------------------------------------------- 552 //! @fn bool IsVisible() const 553 //! @brief この機能は現状では実験仕様となります。将来的に仕様が変更になる可能性があります。 554 //! 表示するかどうかのフラグを取得します。 555 //--------------------------------------------------------------------------- 556 NW_RES_FIELD_BOOL_PRIMITIVE_DECL( Visible ) // IsVisible(), SetVisible() 557 }; 558 typedef nw::ut::ResArrayClass<ResIndexStream>::type ResIndexStreamArray; 559 560 } // namespace res 561 } // namespace gfx 562 } // namespace nw 563 564 #endif // NW_GFX_RESVERTEX_H_ 565