1 /*---------------------------------------------------------------------------* 2 Project: NintendoWare 3 File: lyt_Pane.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: 25594 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NW_LYT_PANE_H_ 17 #define NW_LYT_PANE_H_ 18 19 #include <cstddef> 20 #include <nw/ut/ut_LinkList.h> 21 #include <nw/ut/ut_Rect.h> 22 #include <nw/ut/ut_RuntimeTypeInfo.h> 23 24 #include <nw/lyt/lyt_Common.h> 25 #include <nw/lyt/lyt_Resources.h> 26 #include <nw/lyt/lyt_Types.h> 27 28 namespace nw 29 { 30 namespace lyt 31 { 32 namespace internal 33 { 34 35 class PaneBase 36 { 37 public: 38 PaneBase(); 39 virtual ~PaneBase(); 40 41 public: 42 //! @details :private 43 ut::LinkListNode m_Link; 44 }; 45 46 } // namespace nw::lyt::internal 47 48 class AnimTransform; 49 class AnimationLin; 50 class AnimResource; 51 class Material; 52 class DrawInfo; 53 class Pane; 54 55 //! @name 管理 56 //@{ 57 58 //! @brief ペインの一覧を保持するリストの定義です。 59 //! 60 //! @since 2009/09/18 初版。 61 //! 62 typedef ut::LinkList<Pane, offsetof(internal::PaneBase, m_Link)> PaneList; 63 64 //@} 65 66 //--------------------------------------------------------------------------- 67 //! :category 描画 68 //! 69 //! @brief ペインの基底クラスです。 70 //! 71 //! @since 2009/09/18 初版。 72 //--------------------------------------------------------------------------- 73 class Pane : public internal::PaneBase 74 { 75 public: 76 //! 実行時型情報です。 77 NW_UT_RUNTIME_TYPEINFO; 78 79 //---------------------------------------- 80 //! @name コンストラクタ/デストラクタ 81 //@{ 82 83 //! @brief コンストラクタです。 84 //! 85 //! @details 86 //! デフォルト設定の状態で初期化します。 87 //! 88 //! @since 2009/09/18 初版。 89 //! 90 Pane(); 91 92 //! @brief コンストラクタです。 93 //! 94 //! @details 95 //! データブロックの設定を反映した状態で初期化します。 96 //! 97 //! @param pBlock ペインデータブロックへのポインタです。 98 //! 99 //! @since 2009/09/18 初版。 100 //! 101 Pane(const res::Pane* pBlock); 102 103 //! @brief デストラクタです。 104 //! 105 //! @since 2009/09/18 初版。 106 //! 107 virtual ~Pane(); 108 109 //@} 110 111 //---------------------------------------- 112 //! @name 取得/設定 113 //@{ 114 115 //! @brief ペインの名前を取得します。 116 //! 117 //! @return ペインの名前を返します。 118 //! 119 //! @sa SetName 120 //! 121 //! @since 2009/09/18 初版。 122 //! GetName()123 const char* GetName() const 124 { 125 return m_Name; 126 } 127 128 //! @brief ペインの名前を設定します。 129 //! 130 //! @details 131 //! セットできるペイン名文字列の最大長は lyt::ResourceNameStrMax です。 132 //! 133 //! @param name 名前です。 134 //! 135 //! @sa GetName 136 //! 137 //! @since 2009/09/18 初版。 138 //! 139 void SetName(const char* name); 140 141 //! @brief ユーザー情報を取得します。 142 //! 143 //! @return ユーザー情報を返します。 144 //! 145 //! @sa SetUserData 146 //! 147 //! @since 2009/09/18 初版。 148 //! GetUserData()149 const char* GetUserData() const 150 { 151 return m_UserData; 152 } 153 154 //! @brief ユーザー情報を設定します。 155 //! 156 //! @details 157 //! セットできるユーザー情報文字列の最大長は lyt::UserDataStrMax です。 158 //! 159 //! @param userData ユーザー情報です。 160 //! 161 //! @sa GetUserData 162 //! 163 //! @since 2009/09/18 初版。 164 //! 165 void SetUserData(const char* userData); 166 167 //! @brief 親のアルファ値の変化が子に影響するかどうかを判定します。 168 //! 169 //! @return 親のアルファ値の変化が子に影響する場合は true を返します。 170 //! 171 //! @sa SetInfluencedAlpha 172 //! 173 //! @since 2009/09/18 初版。 174 //! IsInfluencedAlpha()175 bool IsInfluencedAlpha() const 176 { 177 return internal::TestBit(m_Flag, PANEFLAG_INFLUENCEDALPHA); 178 } 179 180 //! @brief 親のアルファ値の変化が子に影響するかどうかを設定します。 181 //! 182 //! @param bAlpha 親のアルファ値の変化が子に影響する場合には true を指定します。 183 //! 184 //! @sa IsInfluencedAlpha 185 //! 186 //! @since 2009/09/18 初版。 187 //! SetInfluencedAlpha(bool bAlpha)188 void SetInfluencedAlpha(bool bAlpha) 189 { 190 internal::SetBit(&m_Flag, PANEFLAG_INFLUENCEDALPHA, bAlpha); 191 } 192 193 //! @brief 位置調整処理の対象となるかどうかを判定します。 194 //! 195 //! @return 位置調整処理の対象となる場合は true を返します。 196 //! 197 //! @sa SetLocationAdjust 198 //! 199 //! @since 2009/09/18 初版。 200 //! IsLocationAdjust()201 bool IsLocationAdjust() const 202 { 203 return internal::TestBit(m_Flag, PANEFLAG_LOCATIONADJUST); 204 } 205 206 //! @brief 位置調整処理の対象となるかどうかを設定します。 207 //! 208 //! @param bAdjust 位置調整処理の対象となる場合には true を指定します。 209 //! 210 //! @sa IsLocationAdjust 211 //! @sa DrawInfo::SetLocationAdjust 212 //! 213 //! @since 2009/09/18 初版。 214 //! SetLocationAdjust(bool bAdjust)215 void SetLocationAdjust(bool bAdjust) 216 { 217 internal::SetBit(&m_Flag, PANEFLAG_LOCATIONADJUST, bAdjust); 218 this->SetMtxDirty(); 219 } 220 221 //! @brief ペインの表示位置を取得します。 222 //! 223 //! @return ペインの表示位置を返します。 224 //! 225 //! @sa SetTranslate 226 //! 227 //! @since 2009/09/18 初版。 228 //! GetTranslate()229 const math::VEC3& GetTranslate() const 230 { 231 return m_Translate; 232 } 233 234 //! @brief ペインの表示位置を設定します。 235 //! 236 //! @param value ペインの表示位置です。 237 //! 238 //! @sa GetTranslate 239 //! 240 //! @since 2009/09/18 初版。 241 //! SetTranslate(const math::VEC3 & value)242 void SetTranslate(const math::VEC3& value) 243 { 244 m_Translate = value; 245 this->SetMtxDirty(); 246 } 247 248 //! @brief ペインの表示位置を設定します。 249 //! 250 //! @details 251 //! Z 成分は 0 に設定されます。 252 //! 253 //! @param value ペインの表示位置です。 254 //! 255 //! @sa GetTranslate 256 //! 257 //! @since 2009/09/18 初版。 258 //! SetTranslate(const math::VEC2 & value)259 void SetTranslate(const math::VEC2& value) 260 { 261 SetTranslate(math::VEC3(value.x, value.y, 0.f)); 262 } 263 264 //! @brief ペインの回転を取得します。 265 //! 266 //! @return X, Y, Z軸まわりの回転角度(Degree)を格納したベクトルを返します。 267 //! 268 //! @sa SetRotate 269 //! 270 //! @since 2009/09/18 初版。 271 //! GetRotate()272 const math::VEC3& GetRotate() const 273 { 274 return m_Rotate; 275 } 276 277 //! @brief ペインの回転を設定します。 278 //! 279 //! @param value X, Y, Z軸まわりの回転角度(Degree)を格納したベクトルです。 280 //! 281 //! @sa GetRotate 282 //! 283 //! @since 2009/09/18 初版。 284 //! SetRotate(const math::VEC3 & value)285 void SetRotate(const math::VEC3& value) 286 { 287 m_Rotate = value; 288 this->SetMtxDirty(); 289 } 290 291 //! @brief ペインの拡大率を取得します。 292 //! 293 //! @return ペインの拡大率を返します。 294 //! 295 //! @sa SetScale 296 //! 297 //! @since 2009/09/18 初版。 298 //! GetScale()299 const math::VEC2& GetScale() const 300 { 301 return m_Scale; 302 } 303 304 //! @brief ペインの拡大率を設定します。 305 //! 306 //! @param value ペインの拡大率です。 307 //! 308 //! @sa GetScale 309 //! 310 //! @since 2009/09/18 初版。 311 //! SetScale(const math::VEC2 & value)312 void SetScale(const math::VEC2& value) 313 { 314 m_Scale = value; 315 this->SetMtxDirty(); 316 } 317 318 //! @brief ペインのサイズを取得します。 319 //! 320 //! @return ペインのサイズを返します。 321 //! 322 //! @sa SetSize 323 //! 324 //! @since 2009/09/18 初版。 325 //! GetSize()326 const Size& GetSize() const 327 { 328 return m_Size; 329 } 330 331 //! @brief ペインのサイズを設定します。 332 //! 333 //! @param value ペインのサイズです。 334 //! 335 //! @sa GetSize 336 //! 337 //! @since 2009/09/18 初版。 338 //! SetSize(const Size & value)339 void SetSize(const Size& value) 340 { 341 m_Size = value; 342 } 343 344 //! @brief ペインの基準位置設定の水平位置指定を取得します。 345 //! 346 //! @details 347 //! 水平位置指定の値については lyt::HorizontalPosition を参照してください。 348 //! 349 //! @return 水平位置指定の値を返します。 350 //! 351 //! @sa SetBasePositionH 352 //! @sa GetBasePositionV 353 //! @sa lyt::HorizontalPosition 354 //! 355 //! @since 2009/09/18 初版。 356 //! GetBasePositionH()357 u8 GetBasePositionH() const 358 { 359 return internal::GetHorizontalPosition(m_BasePosition); 360 } 361 362 //! @brief ペインの基準位置設定の水平位置指定を設定します。 363 //! 364 //! @param val ペインの基準位置指定です。 lyt::HorizontalPosition を指定します。 365 //! 366 //! @sa GetBasePositionH 367 //! @sa SetBasePositionV 368 //! @sa lyt::HorizontalPosition 369 //! 370 //! @since 2009/09/18 初版。 371 //! SetBasePositionH(u8 val)372 void SetBasePositionH(u8 val) 373 { 374 internal::SetHorizontalPosition(&m_BasePosition, val); 375 } 376 377 //! @brief ペインの基準位置設定の垂直位置指定を取得します。 378 //! 379 //! @details 380 //! 垂直位置指定の値については lyt::VerticalPosition を参照してください。 381 //! 382 //! @return 垂直位置指定の値を返します。 383 //! 384 //! @sa SetBasePositionV 385 //! @sa GetBasePositionH 386 //! @sa lyt::VerticalPosition 387 //! 388 //! @since 2009/09/18 初版。 389 //! GetBasePositionV()390 u8 GetBasePositionV() const 391 { 392 return internal::GetVerticalPosition(m_BasePosition); 393 } 394 395 //! @brief ペインの基準位置設定の垂直位置指定を設定します。 396 //! 397 //! @param val ペインの基準位置指定です。 lyt::VerticalPosition を指定します。 398 //! 399 //! @sa GetBasePositionV 400 //! @sa SetBasePositionH 401 //! @sa lyt::VerticalPosition 402 //! 403 //! @since 2009/09/18 初版。 404 //! SetBasePositionV(u8 val)405 void SetBasePositionV(u8 val) 406 { 407 internal::SetVerticalPosition(&m_BasePosition, val); 408 } 409 410 //! @brief ペインの SRT 行列を取得します。 411 //! 412 //! @details 413 //! SRT 行列は通常、 CalculateMtx() で計算されます。 414 //! 415 //! @sa SetMtx 416 //! @sa CalculateMtx 417 //! 418 //! @since 2009/09/18 初版。 419 //! GetMtx()420 const math::MTX34& GetMtx() const 421 { 422 return m_Mtx; 423 } 424 425 //! @brief ペインの SRT 行列を設定します。 426 //! 427 //! @details 428 //! SRT 行列は通常は CalculateMtx() で計算されます。 429 //! 430 //! この関数で行列を指定すると、設定した行列がそのまま使用されます。 431 //! 432 //! CalculateMtx() による計算に戻すには ResetMtx() を使用します。 433 //! 434 //! SetGlobalMtx() を使用した場合には、そちらの設定が優先されます。 435 //! 436 //! @param mtx SRT 行列です。 437 //! 438 //! @sa GetMtx 439 //! @sa CalculateMtx 440 //! @sa ResetMtx 441 //! @sa SetGlobalMtx 442 //! 443 //! @date 2010/04/09 設定の状態を記憶するようにしました。 444 //! @since 2009/09/18 初版。 445 //! SetMtx(const math::MTX34 & mtx)446 void SetMtx(const math::MTX34& mtx) 447 { 448 m_Mtx = mtx; 449 m_Flag = internal::SetBit(m_Flag, PANEFLAG_USERMTX, true); 450 } 451 452 //! @brief ペインの SRT 行列がユーザによって設定されているか調べます。 453 //! 454 //! @return 455 //! SRT 行列がユーザによって設定されている場合は true を返します。 456 //! 457 //! @sa SetMtx 458 //! 459 //! @since 2010/04/09 初版。 460 //! IsUserMtx()461 bool IsUserMtx() 462 { 463 return internal::TestBit(m_Flag, PANEFLAG_USERMTX); 464 } 465 466 //! @brief SRT 行列の設定を解除します。 467 //! 468 //! @details 469 //! SRT 行列は CalculateMtx() で計算されます。 470 //! 471 //! @sa SetMtx 472 //! 473 //! @since 2010/04/09 初版。 474 //! ResetMtx()475 void ResetMtx() 476 { 477 m_Flag = internal::SetBit(m_Flag, PANEFLAG_USERMTX, false); 478 } 479 480 //! @brief 親子での計算後の SRT 行列を取得します。 481 //! 482 //! @details 483 //! SRT 行列は通常、 CalculateMtx() で計算されます。 484 //! 485 //! @return 親子での計算後の SRT 行列を返します。 486 //! 487 //! @sa SetGlobalMtx 488 //! @sa CalculateMtx 489 //! 490 //! @since 2009/09/18 初版。 491 //! GetGlobalMtx()492 const math::MTX34& GetGlobalMtx() const 493 { 494 return m_GlbMtx; 495 } 496 497 //! @brief グローバル行列を設定します。 498 //! 499 //! @details 500 //! グローバル行列はペインのローカル座標系からビュー座標系への 501 //! 変換行列です。 502 //! 503 //! グローバル行列は通常は CalculateMtx() で計算されます。 504 //! 505 //! この関数で行列を指定すると、設定した行列がそのまま使用されます。 506 //! 507 //! CalculateMtx() による計算に戻すには ResetGlobalMtx() を 508 //! 使用します。 509 //! 510 //! @param mtx SRT 行列です。 511 //! 512 //! @sa GetGlobalMtx 513 //! @sa ResetGlobalMtx 514 //! @sa CalculateMtx 515 //! 516 //! @date 2010/04/23 設定の状態を記憶するようにしました。 517 //! @since 2009/09/18 初版。 518 //! SetGlobalMtx(const math::MTX34 & mtx)519 void SetGlobalMtx(const math::MTX34& mtx) 520 { 521 m_GlbMtx = mtx; 522 m_Flag = internal::SetBit(m_Flag, PANEFLAG_USERGLOBALMTX, true); 523 } 524 525 //! @brief グローバル行列がユーザによって設定されているか調べます。 526 //! 527 //! @return 528 //! グローバル行列がユーザによって設定されている場合は true を返します。 529 //! 530 //! @sa SetGlobalMtx 531 //! 532 //! @since 2010/04/09 初版。 533 //! IsUserGlobalMtx()534 bool IsUserGlobalMtx() 535 { 536 return internal::TestBit(m_Flag, PANEFLAG_USERGLOBALMTX); 537 } 538 539 //! @brief グローバル行列の設定を解除します。 540 //! 541 //! @details 542 //! グローバル行列は CalculateMtx() で計算されます。 543 //! 544 //! @sa SetGlobalMtx 545 //! 546 //! @since 2010/04/09 初版。 547 //! ResetGlobalMtx()548 void ResetGlobalMtx() 549 { 550 m_Flag = internal::SetBit(m_Flag, PANEFLAG_USERGLOBALMTX, false); 551 } 552 553 //! @brief ペインのローカル座標系での矩形を取得します。 554 //! 555 //! @return 矩形を返します。 556 //! 557 //! @since 2009/09/18 初版。 558 //! 559 const ut::Rect GetPaneRect() const; 560 561 //! @brief 頂点カラーを取得します。 562 //! 563 //! @details 564 //! 派生クラスで実装します。 565 //! 566 //! このクラスでは idx の指定にかかわらず ut::Color8::WHITE を返します。 567 //! 568 //! @param idx インデックスです。 lyt::VertexColor を指定します。 569 //! 570 //! @return ペインの四隅の頂点カラーを返します。 571 //! 572 //! @sa SetVtxColor 573 //! @sa GetVtxColorElement 574 //! @sa lyt::VertexColor 575 //! 576 //! @since 2009/09/18 初版。 577 //! 578 virtual const ut::Color8 GetVtxColor(u32 idx) const; 579 580 //! @brief 頂点カラーを設定します。 581 //! 582 //! @details 583 //! idx の指定には lyt::VERTEXCOLOR_* を使用してください。 584 //! 585 //! 派生クラスでオーバーライドされます。基底クラスではなにもしません。 586 //! 587 //! @param idx インデックスです。 lyt::VertexColor を指定します。 588 //! @param value 頂点カラーです。 589 //! 590 //! @sa GetVtxColor 591 //! @sa SetVtxColorElement 592 //! @sa lyt::VertexColor 593 //! 594 //! @since 2009/09/18 初版。 595 //! 596 virtual void SetVtxColor(u32 idx, ut::Color8 value); 597 598 //! @brief ペインのアルファ値を取得します。 599 //! 600 //! @return ペインのアルファ値を返します。 601 //! 602 //! @sa SetAlpha 603 //! @sa GetGlobalAlpha 604 //! 605 //! @since 2009/09/18 初版。 606 //! GetAlpha()607 u8 GetAlpha() const 608 { 609 return m_Alpha; 610 } 611 612 //! @brief ペインのアルファ値を設定します。 613 //! 614 //! @param alpha アルファ値です。 615 //! 616 //! @sa GetAlpha 617 //! @sa SetGlobalAlpha 618 //! 619 //! @since 2009/09/18 初版。 620 //! SetAlpha(u8 alpha)621 void SetAlpha(u8 alpha) 622 { 623 m_Alpha = alpha; 624 } 625 626 //! @brief ペインのグローバルアルファ値を取得します。 627 //! 628 //! @details 629 //! グローバルアルファ値は親ペインのアルファ値の影響を受けた 630 //! 状態でのペインのアルファ値です。 631 //! 632 //! @return ペインのグローバルアルファ値を返します。 633 //! 634 //! @sa SetAlpha 635 //! @sa GetAlpha 636 //! 637 //! @since 2009/09/18 初版。 638 //! GetGlobalAlpha()639 u8 GetGlobalAlpha() const 640 { 641 return m_GlbAlpha; 642 } 643 644 //! @brief ペインのグローバルアルファ値を設定します。 645 //! 646 //! @details 647 //! グローバルアルファ値は親ペインのアルファ値の影響を受けた状態でのペインのアルファ値です。 648 //! 649 //! グローバルアルファ値は通常、 CalculateMtx() で計算されます。 650 //! 651 //! @param alpha グローバルアルファ値です。 652 //! 653 //! @sa GetGlobalAlpha 654 //! @sa SetAlpha 655 //! @sa CalculateMtx 656 //! 657 //! @since 2009/09/18 初版。 658 //! SetGlobalAlpha(u8 alpha)659 void SetGlobalAlpha(u8 alpha) 660 { 661 m_GlbAlpha = alpha; 662 } 663 664 //! @brief インデックスを指定してペインの SRT 要素を取得します。 665 //! 666 //! @details 667 //! idx で取得したいペインの表示位置、回転、拡大率、サイズの要素を指定します。 668 //! 669 //! @param idx インデックスです。 lyt::AnimTargetPane を指定します。 670 //! 671 //! @return 指定された要素の値を返します。 672 //! 673 //! @sa SetSRTElement 674 //! @sa GetTranslate 675 //! @sa GetRotate 676 //! @sa GetScale 677 //! @sa GetSize 678 //! @sa lyt::AnimTargetPane 679 //! 680 //! @since 2009/09/18 初版。 681 //! GetSRTElement(u32 idx)682 f32 GetSRTElement(u32 idx) const 683 { 684 NW_ASSERT(idx < ANIMTARGET_PANE_MAX); 685 686 const f32* srtAry = &m_Translate.x; 687 return srtAry[idx]; 688 } 689 690 //! @brief インデックスを指定してペインの SRT 要素を設定します。 691 //! 692 //! @details 693 //! ペインの表示位置、回転、拡大率、サイズの要素を設定します。 694 //! 695 //! @param idx インデックスです。 lyt::AnimTargetPane() を指定します。 696 //! @param value 要素の値です。 697 //! 698 //! @sa GetSRTElement 699 //! @sa SetTranslate 700 //! @sa SetRotate 701 //! @sa SetScale 702 //! @sa SetSize 703 //! @sa lyt::AnimTargetPane 704 //! 705 //! @since 2009/09/18 初版。 706 //! SetSRTElement(u32 idx,f32 value)707 void SetSRTElement(u32 idx, f32 value) 708 { 709 NW_ASSERT(idx < ANIMTARGET_PANE_MAX); 710 711 f32* srtAry = &m_Translate.x; 712 srtAry[idx] = value; 713 if (idx < ANIMTARGET_PANE_SIZEW) 714 { 715 this->SetMtxDirty(); 716 } 717 } 718 719 //! @brief ペインのアルファ値または頂点カラーの各カラー成分を取得します。 720 //! 721 //! @details 722 //! ペインのアルファ値または四隅の頂点カラーの各成分を返します。 723 //! 724 //! このクラスでは idx の指定に lyt::ANIMTARGET_PANE_ALPHA を指定した場合は 725 //! ペインのアルファ値を返しますが、その他の指定では必ず 255 を返します。 726 //! 727 //! 他のカラー成分を持つ派生クラスでは本関数はオーバーライドされます。 728 //! 729 //! @param idx インデックスです。 lyt::AnimTargetPaneColor の値を指定します。 730 //! 731 //! @return ペインのアルファ値または四隅の頂点カラーの各成分を返します。 732 //! 733 //! @sa SetColorElement 734 //! @sa GetVtxColorElement 735 //! @sa lyt::AnimTargetPaneColor 736 //! 737 //! @since 2009/09/18 初版。 738 //! 739 virtual u8 GetColorElement(u32 idx) const; 740 741 //! @brief ペインのアルファ値または頂点カラーの各カラー成分を設定します。 742 //! 743 //! @details 744 //! 導出クラスでオーバライドされます。 745 //! 746 //! このクラスではペインのアルファ値のみ設定することができます。 747 //! 748 //! @param idx インデックスです。 lyt::AnimTargetPaneColor を指定します。 749 //! @param value アルファ値またはカラーの成分値です。 750 //! 751 //! @sa GetColorElement 752 //! @sa SetVtxColorElement 753 //! @sa lyt::AnimTargetPaneColor 754 //! 755 //! @since 2009/09/18 初版。 756 //! 757 virtual void SetColorElement(u32 idx, u8 value); 758 759 //! @brief 頂点カラーの各カラー成分を取得します。 760 //! 761 //! @details 762 //! 派生クラスでオーバーライドされます。 763 //! このクラスでは idx の指定にかかわらず 255 を返します。 764 //! 765 //! idx の指定には lyt::ANIMTARGET_VERTEXCOLOR_* を使用してください。 766 //! 767 //! @param idx インデックスです。 lyt::AnimTargetPaneColor の値を指定します。 768 //! 769 //! @return ペイン四隅の頂点カラーの各成分を返します。 770 //! 771 //! @sa GetColorElement 772 //! @sa SetVtxColorElement 773 //! @sa lyt::AnimTargetPaneColor 774 //! 775 //! @since 2009/09/18 初版。 776 //! 777 virtual u8 GetVtxColorElement(u32 idx) const; 778 779 //! @brief 頂点カラーの各カラー成分を設定します。 780 //! 781 //! @details 782 //! 派生クラスでオーバーライドされます。 783 //! このクラスでは何もしません。 784 //! 785 //! idx の指定には lyt::ANIMTARGET_VERTEXCOLOR_* を使用してください。 786 //! 787 //! @param idx インデックスです。 lyt::AnimTargetPaneColor の値を指定します。 788 //! @param value カラーの成分値です。 789 //! 790 //! @sa GetVtxColorElement 791 //! @sa SetVtxColor 792 //! @sa lyt::AnimTargetPaneColor 793 //! 794 //! @since 2009/09/18 初版。 795 //! 796 virtual void SetVtxColorElement(u32 idx, u8 value); 797 798 //! @brief ペインのマテリアルを取得します。 799 //! 800 //! @details 801 //! 複数のマテリアルを持つペインは最初のマテリアル (インデックスが0) を返します。 802 //! 803 //! マテリアルを持たない場合はNULLを返します。 804 //! 805 //! @return マテリアルへのポインタを返します。 806 //! 807 //! @since 2009/09/18 初版。 808 //! 809 Material* GetMaterial() const; 810 811 //! @brief ペインが持つマテリアルの数を取得します。 812 //! 813 //! @return マテリアルの数を返します。 814 //! 815 //! @sa GetMaterial 816 //! 817 //! @since 2009/09/18 初版。 818 //! 819 virtual u8 GetMaterialNum() const; 820 821 //! @brief ペインのマテリアルを取得します。 822 //! 823 //! @details 824 //! インデックスに対応するマテリアルが返されます。 825 //! 826 //! インデックスの意味は導出されたクラスによって異なります。 827 //! 828 //! インデックスは GetMaterialNum() が返す値よりも小さくなければなりません。 829 //! 830 //! マテリアルを持たない場合は NULL を返します。 831 //! 832 //! @param idx インデックスです。 833 //! 834 //! @return マテリアルへのポインタを返します。 835 //! 836 //! @sa GetMaterialNum 837 //! 838 //! @since 2009/09/18 初版。 839 //! 840 virtual Material* GetMaterial(u32 idx) const; 841 842 //! @brief 拡張ユーザデータの個数を取得します。 843 //! 844 //! @return 拡張ユーザデータの個数を返します。 845 //! 846 //! @sa GetExtUserDataArray 847 //! 848 //! @since 2009/09/18 初版。 849 //! 850 u16 GetExtUserDataNum() const; 851 852 //! @brief 拡張ユーザデータ配列を取得します。 853 //! 854 //! @return 拡張ユーザデータ配列の先頭要素のポインタを返します。 855 //! 856 //! @sa GetExtUserDataNum 857 //! 858 //! @since 2009/09/18 初版。 859 //! 860 const ExtUserData* GetExtUserDataArray() const; 861 862 //! @brief 拡張ユーザデータを名前をもとに検索します。 863 //! 864 //! @param name 検索する拡張ユーザデータ名です。 865 //! 866 //! @return 見つかった場合は拡張ユーザデータへのポインタ、 867 //! 見つからなかった場合は NULL を返します。 868 //! 869 //! @since 2009/09/18 初版。 870 //! 871 const ExtUserData* FindExtUserDataByName(const char* name); 872 873 //@} 874 875 //---------------------------------------- 876 //! @name 親子関係 877 //@{ 878 879 //! @brief 親ペインを取得します。 880 //! 881 //! @return 882 //! 親ペインへのポインタを返します。親ペインが存在しない場合は NULL を返します。 883 //! 884 //! @since 2009/09/18 初版。 885 //! GetParent()886 __forceinline Pane* GetParent() const 887 { 888 return m_pParent; 889 } 890 891 //! :private 892 //! 893 //! @brief 最初の子ペインを取得します。 894 //! 895 //! @return 896 //! 最初の子ペインへのポインタを返します。最初の子ペインが存在しない場合は NULL を返します。 897 //! 898 //! @since 2010/04/09 初版。 899 //! GetFirstChild()900 __forceinline Pane* GetFirstChild() const 901 { 902 const PaneList& list = this->GetChildList(); 903 if (!list.IsEmpty()) 904 { 905 return const_cast<Pane*>(&list.front()); 906 } 907 else 908 { 909 return NULL; 910 } 911 } 912 913 //! :private 914 //! 915 //! @brief 次の子ペインを取得します。 916 //! 917 //! @details 918 //! pChild の次の子ペインを取得します。 919 //! 920 //! param pChild ペインへのポインタです。 921 //! 922 //! @return 923 //! 次の子ペインへのポインタを返します。次の子ペインが存在しない場合は NULL を返します。 924 //! 925 //! @since 2010/04/09 初版。 926 //! GetNextChild(const Pane * pChild)927 __forceinline Pane* GetNextChild(const Pane* pChild) const 928 { 929 const PaneList& list = this->GetChildList(); 930 return const_cast<Pane*>(list.GetNext(pChild)); 931 } 932 933 //! @brief 子ペインの一覧を取得します。 934 //! 935 //! @return 子ペインの一覧を返します。 936 //! 937 //! @since 2009/09/18 初版。 938 //! GetChildList()939 __forceinline const PaneList & GetChildList() const 940 { 941 return m_ChildList; 942 } 943 944 //! @brief 子ペインの一覧を取得します。 945 //! 946 //! @return 子ペインの一覧を返します。 947 //! 948 //! @since 2009/09/18 初版。 949 //! GetChildList()950 __forceinline PaneList& GetChildList() 951 { 952 return m_ChildList; 953 } 954 955 //! @brief ペインを子供ペインリストの末尾に追加します。 956 //! 957 //! @details 958 //! このペインやこのペインを子ペインに持つペインを追加しないように注意してください。 959 //! 960 //! @param pChild 追加するペインです。 961 //! 962 //! @sa PrependChild 963 //! @sa InsertChild 964 //! @sa RemoveChild 965 //! 966 //! @since 2009/09/18 初版。 967 //! 968 void AppendChild(Pane* pChild); 969 970 //! @brief ペインを子供ペインリストの先頭に追加します。 971 //! 972 //! @details 973 //! このペインやこのペインを子ペインに持つペインを追加しないように注意してください。 974 //! 975 //! @param pChild 追加するペインです。 976 //! 977 //! @sa AppendChild 978 //! @sa InsertChild 979 //! @sa RemoveChild 980 //! 981 //! @since 2009/09/18 初版。 982 //! 983 void PrependChild(Pane* pChild); 984 985 //! @brief 子ペインを指定した位置に挿入します。 986 //! 987 //! @details 988 //! pChild で指定したペインをこのペインの子として追加します。 989 //! pNext で指定したペインの次の位置に挿入します。 990 //! 991 //! このペインやこのペインを子ペインに持つペインを追加しないように注意してください。 992 //! 993 //! @param pNext 挿入する位置の1つ前となるペインです。 994 //! @param pChild 追加するペインです。 995 //! 996 //! @sa AppendChild 997 //! @sa PrependChild 998 //! @sa RemoveChild 999 //! 1000 //! @since 2009/09/18 初版。 1001 //! 1002 void InsertChild( 1003 Pane* pNext, 1004 Pane* pChild); 1005 1006 //! @brief 子ペインを指定した位置に挿入します。 1007 //! 1008 //! @details 1009 //! pChild で指定したペインをこのペインの子として追加します。 1010 //! next で指定したイテレータの次の位置に挿入します。 1011 //! 1012 //! このペインやこのペインを子ペインに持つペインを追加しないように注意してください。 1013 //! 1014 //! @param next 挿入する位置の1つ前となるイテレータです。 1015 //! @param pChild 追加するペインです。 1016 //! 1017 //! @sa AppendChild 1018 //! @sa PrependChild 1019 //! @sa RemoveChild 1020 //! 1021 //! @since 2009/09/18 初版。 1022 //! 1023 void InsertChild( 1024 PaneList::Iterator next, 1025 Pane* pChild); 1026 1027 //! @brief ペインを子供ペインリストから削除します。 1028 //! 1029 //! @param pChild 削除するペインです。 1030 //! 1031 //! @sa AppendChild 1032 //! @sa PrependChild 1033 //! @sa InsertChild 1034 //! 1035 //! @since 2009/09/18 初版。 1036 //! 1037 void RemoveChild(Pane* pChild); 1038 1039 //@} 1040 1041 //---------------------------------------- 1042 //! @name 検索 1043 //@{ 1044 1045 //! @brief 名前でペインを検索します。 1046 //! 1047 //! @details 1048 //! findName のペイン名を持つペインを検索します。 1049 //! 1050 //! bRecursive に true を渡した場合は子ペインと、 1051 //! 子ペインが子を持つ場合はさらにその子ペインからも検索します。 1052 1053 //! @param findName 検索するペイン名です。 1054 //! @param bRecursive 子ペインも検索する場合は true を指定します。 1055 //! 1056 //! @return 1057 //! findName のペイン名を持つペインが見つかった場合はペインへのポインタを、 1058 //! 見つからなかった場合は NULL を返します。 1059 //! 1060 //! @since 2009/09/18 初版。 1061 //! 1062 virtual Pane* FindPaneByName( 1063 const char* findName, 1064 bool bRecursive = true); 1065 1066 //! @brief 名前でマテリアルを検索します。 1067 //! 1068 //! @details 1069 //! findName のマテリアル名を持つマテリアルを検索します。 1070 //! 1071 //! bRecursive に true を渡した場合は子ペインと、 1072 //! 子ペインが子を持つ場合はさらにその子ペインからも検索します。 1073 //! 1074 //! @param findName 検索するマテリアル名です。 1075 //! @param bRecursive 子ペインも検索する場合は true を指定します。 1076 //! 1077 //! @return 1078 //! findName のマテリアル名を持つマテリアルが見つかった場合は 1079 //! マテリアルへのポインタを、見つからなかった場合は NULL を返します。 1080 //! 1081 //! @since 2009/09/18 初版。 1082 //! 1083 virtual Material* FindMaterialByName( 1084 const char* findName, 1085 bool bRecursive = true); 1086 1087 //@} 1088 1089 //---------------------------------------- 1090 //! @name アニメーション 1091 //@{ 1092 1093 //! @brief 自分と子供以下のアニメーションの結果を計算します。 1094 //! 1095 //! @details 1096 //! opiton に lyt::ANIMATEOPT_NOANIMATEINVISIBLE を指定した場合、 1097 //! 非表示のペイン(IsVisible() が false)とその子供以下の 1098 //! ペインのアニメーションの計算を省略します。 1099 //! 1100 //! @param option オプションです。 lyt::AnimateOpt を指定します。 1101 //! 1102 //! @sa lyt::AnimateOpt 1103 //! @sa IsVisible 1104 //! 1105 //! @since 2009/09/18 初版。 1106 //! 1107 virtual void Animate(u32 option); 1108 1109 //! @brief 自分のアニメーションの結果を計算します。 1110 //! 1111 //! @details 1112 //! opiton に lyt::ANIMATEOPT_NOANIMATEINVISIBLE を指定した場合、 1113 //! 非表示のペイン(IsVisible() が false)とその子供以下の 1114 //! ペインのアニメーションの計算を省略します。 1115 //! 1116 //! @param option オプションです。 lyt::AnimateOpt を指定します。 1117 //! 1118 //! @sa lyt::AnimateOpt 1119 //! @sa IsVisible 1120 //! 1121 //! @since 2009/09/18 初版。 1122 //! 1123 virtual void AnimateSelf(u32 option); 1124 1125 //! @brief 関連付けられているアニメーションのリストを取得します。 1126 //! 1127 //! @return アニメーションリンク情報のリストを返します。 1128 //! 1129 //! @sa AnimationLink 1130 //! 1131 //! @since 2009/09/18 初版。 1132 //! GetAnimationList()1133 const AnimationList& GetAnimationList() const 1134 { 1135 return m_AnimList; 1136 } 1137 1138 //! @brief 関連付けられているアニメーションのリストを取得します。 1139 //! 1140 //! @since 2009/09/18 初版。 1141 //! GetAnimationList()1142 AnimationList& GetAnimationList() 1143 { 1144 return m_AnimList; 1145 } 1146 1147 //! @brief アニメーションを関連付けます。 1148 //! 1149 //! @details 1150 //! bRecursive に true を渡して呼び出した場合は、 1151 //! 関連付けるペインを子ペインからも検索します。 1152 //! 1153 //! bDisable に true を渡して呼び出した場合は、 1154 //! アニメーションを無効状態で関連付けます。 1155 //! 有効にする場合は SetAnimationEnable() を使用してください。 1156 //! 1157 //! @param pAnimTrans アニメーションへのポインタです。 1158 //! @param bRecursive 子ペインも検索する場合は true を指定します。 1159 //! @param bDisable アニメーションを無効状態で関連付ける場合は true を指定します。 1160 //! 1161 //! @sa UnbindAnimation 1162 //! @sa UnbindAnimationSelf 1163 //! @sa UnbindAllAnimation 1164 //! @sa SetAnimationEnable 1165 //! 1166 //! @since 2009/09/18 初版。 1167 //! 1168 virtual void BindAnimation( 1169 AnimTransform* pAnimTrans, 1170 bool bRecursive = true, 1171 bool bDisable = false); 1172 1173 //! @brief アニメーションの関連付けを解除します。 1174 //! 1175 //! @details 1176 //! pAnimTrans に NULL を渡した場合はすべての関連付けが解除されます。 1177 //! (UnbindAllAnimation() と同義) 1178 //! 1179 //! @param pAnimTrans アニメーションへのポインタです。 1180 //! @param bRecursive 子ペインも検索する場合は true を指定します。 1181 //! 1182 //! @sa BindAnimation 1183 //! @sa UnbindAnimationSelf 1184 //! @sa UnbindAllAnimation 1185 //! 1186 //! @since 2009/09/18 初版。 1187 //! 1188 virtual void UnbindAnimation( 1189 AnimTransform* pAnimTrans, 1190 bool bRecursive = true); 1191 1192 //! @brief すべてのアニメーションの関連付けを解除します。 1193 //! 1194 //! @details 1195 //! BindAnimation() の引数に NULL を渡すのと同義です。 1196 //! 1197 //! @param bRecursive 子ペインも検索する場合は true を指定します。 1198 //! 1199 //! @sa BindAnimation 1200 //! @sa UnbindAnimation 1201 //! @sa UnbindAnimationSelf 1202 //! 1203 //! @since 2009/09/18 初版。 1204 //! 1205 virtual void UnbindAllAnimation(bool bRecursive = true); 1206 1207 //! @brief 自身のアニメーションの関連付けを解除します。 1208 //! 1209 //! @details 1210 //! pAnimTrans に NULL を渡した場合はすべてのアニメーションとの関連付けが解除されます。 1211 //! 1212 //! @param pAnimTrans アニメーションへのポインタです。 1213 //! 1214 //! @sa BindAnimation 1215 //! @sa UnbindAnimation 1216 //! @sa UnbindAllAnimation 1217 //! 1218 //! @since 2009/09/18 初版。 1219 //! 1220 virtual void UnbindAnimationSelf(AnimTransform* pAnimTrans); 1221 1222 //! @brief アニメーションリンク情報を追加します。 1223 //! 1224 //! @param pAnimationLink アニメーションリンク情報へのポインタです。 1225 //! 1226 //! @since 2009/09/18 初版。 1227 //! 1228 void AddAnimationLink(AnimationLink* pAnimationLink); 1229 1230 //! @brief アニメーションリンク情報を検索します。 1231 //! 1232 //! @details 1233 //! 指定されたアニメーションを持つアニメーションリンク情報を検索します。 1234 //! 1235 //! @param pAnimTrans アニメーションへのポインタです。 1236 //! 1237 //! @return 1238 //! 見つかった場合はアニメーションリンク情報へのポインタを、 1239 //! 見つからなかった場合は NULL を返します。 1240 //! 1241 //! @since 2009/09/18 初版。 1242 //! 1243 virtual AnimationLink* FindAnimationLinkSelf(AnimTransform* pAnimTrans); 1244 1245 //! @brief アニメーションリンク情報を検索します。 1246 //! 1247 //! @details 1248 //! 指定されたアニメーションリソースを使用するアニメーション(AnimTransform)を 1249 //! 持つアニメーションリンク情報を検索します。 1250 //! 1251 //! @param animRes アニメーションリソースオブジェクトです。 1252 //! 1253 //! @return 1254 //! 見つかった場合はアニメーションリンク情報へのポインタを、 1255 //! 見つからなかった場合は NULL を返します。 1256 //! 1257 //! @sa AnimTransform 1258 //! 1259 //! @since 2009/09/18 初版。 1260 //! 1261 virtual AnimationLink* FindAnimationLinkSelf(const AnimResource& animRes); 1262 1263 //! @brief アニメーションの有効/無効状態を設定します。 1264 //! 1265 //! @details 1266 //! bRecursive に true を渡して呼び出した場合は、設定するペインを子ペインからも検索します。 1267 //! 1268 //! 指定されたアニメーションの有効/無効状態を設定します。 1269 //! 1270 //! @param pAnimTrans 有効/無効にする AnimTransform インスタンスへのポインタです。 1271 //! @param bEnable セットするアニメーションの状態です。 1272 //! true の場合は有効、falseの場合は無効に設定します。 1273 //! @param bRecursive true の場合は、子供のペインに再帰的に処理します。 1274 //! 1275 //! @since 2009/09/18 初版。 1276 //! 1277 virtual void SetAnimationEnable( 1278 AnimTransform* pAnimTrans, 1279 bool bEnable, 1280 bool bRecursive = true); 1281 1282 //! @brief アニメーションの有効/無効状態を設定します。 1283 //! 1284 //! @details 1285 //! bRecursive に true を渡して呼び出した場合は、設定するペインを子ペインからも検索します。 1286 //! 1287 //! 指定されたアニメーションリソースを使用する 1288 //! アニメーション(AnimTransform)の有効/無効状態を設定します。 1289 //! 1290 //! @param animRes アニメーションリソースオブジェクトです。 1291 //! @param bEnable セットするアニメーションの状態です。 1292 //! true の場合は有効、falseの場合は無効に設定します。 1293 //! @param bRecursive true の場合は、子供のペインに再帰的に処理します。 1294 //! 1295 //! @sa AnimTransform 1296 //! 1297 //! @since 2009/09/18 初版。 1298 //! 1299 virtual void SetAnimationEnable( 1300 const AnimResource& animRes, 1301 bool bEnable, 1302 bool bRecursive = true); 1303 1304 //@} 1305 1306 //---------------------------------------- 1307 //! @name 描画 1308 //@{ 1309 1310 //! @brief ペインが表示されるかどうかを判定します。 1311 //! 1312 //! @return ペインが表示される場合は true を、表示されない場合は false を返します。 1313 //! 1314 //! @sa SetVisible 1315 //! 1316 //! @since 2009/09/18 初版。 1317 //! IsVisible()1318 bool IsVisible() const 1319 { 1320 return internal::TestBit(m_Flag, PANEFLAG_VISIBLE); 1321 } 1322 1323 //! @brief ペインの表示/非表示を設定します。 1324 //! 1325 //! @param bVisible ペインを表示させる場合は true を指定します。 1326 //! 1327 //! @sa IsVisible 1328 //! 1329 //! @since 2009/09/18 初版。 1330 //! SetVisible(bool bVisible)1331 void SetVisible(bool bVisible) 1332 { 1333 internal::SetBit(&m_Flag, PANEFLAG_VISIBLE, bVisible); 1334 } 1335 1336 //! @brief 描画のための行列を計算します。 1337 //! 1338 //! @param drawInfo 描画情報です。 1339 //! 1340 //! @since 2009/09/18 初版。 1341 //! 1342 virtual void CalculateMtx(const DrawInfo& drawInfo); 1343 1344 //@} 1345 1346 //! @brief ユーザーがペインを構築したかどうかを判定します。 1347 //! 1348 //! @return ペインをユーザーが構築した場合は true を返します。 1349 //! 1350 //! @since 2009/09/18 初版。 1351 //! IsUserAllocated()1352 bool IsUserAllocated() const 1353 { 1354 return internal::TestBit(m_Flag, PANEFLAG_USERALLOCATED); 1355 } 1356 1357 //! @brief ユーザーが構築したペインであることを宣言します。 1358 //! 1359 //! @details 1360 //! ユーザが構築したと宣言されたペインはライブラリによって解放されません。 1361 //! 1362 //! @since 2010/03/26 初版。 1363 //! SetUserAllocated()1364 void SetUserAllocated() 1365 { 1366 internal::SetBit(&m_Flag, PANEFLAG_USERALLOCATED, true); 1367 } 1368 1369 //! @brief 拡張ユーザデータリストを設定します。 1370 //! 1371 //! @param pBlock 拡張ユーザデータリソースへのポインタです。 1372 //! 1373 //! @since 2009/09/18 初版。 1374 //! SetExtUserDataList(const res::ExtUserDataList * pBlock)1375 void SetExtUserDataList(const res::ExtUserDataList* pBlock) 1376 { 1377 m_pExtUserDataList = pBlock; 1378 } 1379 1380 #ifdef NW_LYT_DMPGL_ENABLED 1381 //! @brief ペイン自身と子ペインの描画処理を行います。 1382 //! 1383 //! @details 1384 //! 本関数は NW_LYT_DMPGL_ENABLED マクロを定義してライブラリを 1385 //! ビルドした場合にのみ利用可能です。 1386 //! 1387 //! Layout および親ペインから呼ばれます。 1388 //! 1389 //! DrawSelf() でペイン自身の描画を行い、次に子ペインの Draw() を 1390 //! 呼び出します。 1391 //! 1392 //! @param drawInfo 描画情報です。 1393 //! 1394 //! @since 2009/09/18 初版。 1395 //! @date 2010/10/20 NW_LYT_DMPGL_ENABLED マクロを定義してライブラリをビルドした場合にのみ利用できるようにしました。 1396 //! 1397 virtual void Draw(const DrawInfo& drawInfo); 1398 1399 //! @brief 自身の描画処理を行います。 1400 //! 1401 //! @details 1402 //! 本関数は NW_LYT_DMPGL_ENABLED マクロを定義してライブラリを 1403 //! ビルドした場合にのみ利用可能です。 1404 //! 1405 //! Layout および親ペインから呼ばれます。 1406 //! 1407 //! @param drawInfo 描画情報です。 1408 //! 1409 //! @since 2009/09/18 初版。 1410 //! @date 2010/10/20 NW_LYT_DMPGL_ENABLED マクロを定義してライブラリをビルドした場合にのみ利用できるようにしました。 1411 //! 1412 virtual void DrawSelf(const DrawInfo& drawInfo); 1413 #endif 1414 1415 #ifdef NW_LYT_DRAWER_ENABLE 1416 //! @details :private 1417 void MakeUniformData( DrawInfo* pDrawInfo, Drawer* pDrawer ) const; 1418 1419 //! @details :private 1420 virtual void MakeUniformDataSelf( DrawInfo* pDrawInfo, Drawer* pDrawer ) const; 1421 #endif 1422 1423 1424 //! @brief SRT行列の再計算を要求します。 1425 //! 1426 //! @since 2010/04/09 初版。 1427 //! SetMtxDirty()1428 __forceinline void SetMtxDirty() 1429 { 1430 this->SetMtxCondition(MTXCONDITION_DIRTY); 1431 } 1432 1433 protected: 1434 #ifdef NW_LYT_DMPGL_ENABLED 1435 //! @brief モデルビュー行列を計算し GraphicsResource に設定します。 1436 //! 1437 //! @details 1438 //! 本関数は NW_LYT_DMPGL_ENABLED マクロを定義してライブラリを 1439 //! ビルドした場合にのみ利用可能です。 1440 //! 1441 //! @param drawInfo 描画情報です。 1442 //! 1443 //! @since 2009/09/18 初版。 1444 //! @date 2010/10/20 NW_LYT_DMPGL_ENABLED マクロを定義してライブラリをビルドした場合にのみ利用できるようにしました。 1445 //! 1446 virtual void LoadMtx(const DrawInfo& drawInfo); 1447 #endif 1448 1449 //! @brief ペインの左上の座標を取得します。 1450 //! 1451 //! @return 座標を返します。 1452 //! 1453 //! @since 2009/09/18 初版。 1454 //! 1455 const math::VEC2 GetVtxPos() const; 1456 1457 //! @brief ローカル行列の状態を取得します。 1458 //! 1459 //! @return ローカル行列の状態を返します。 1460 //! 1461 //! @since 2010/04/09 初版。 1462 //! GetMtxCondition()1463 __forceinline MtxCondition GetMtxCondition() const 1464 { 1465 return static_cast<MtxCondition>(internal::GetBits(m_Flag, PANEFLAG_MTXCONDITION, PANEFLAG_MTXCONDITION_LENGTH)); 1466 } 1467 1468 //! @brief ローカル行列の状態を設定します。 1469 //! 1470 //! @param mtxCondition ローカル行列の状態です。 1471 //! 1472 //! @since 2010/04/09 初版。 1473 //! SetMtxCondition(MtxCondition mtxCondition)1474 __forceinline void SetMtxCondition(MtxCondition mtxCondition) 1475 { 1476 m_Flag = internal::SetBits(m_Flag, PANEFLAG_MTXCONDITION, PANEFLAG_MTXCONDITION_LENGTH, static_cast<u8>(mtxCondition)); 1477 } 1478 1479 private: 1480 Pane* m_pParent; 1481 PaneList m_ChildList; 1482 AnimationList m_AnimList; 1483 1484 math::VEC3 m_Translate; 1485 math::VEC3 m_Rotate; 1486 math::VEC2 m_Scale; 1487 Size m_Size; 1488 1489 // ペインのSRT行列 1490 math::MTX34 m_Mtx; 1491 // ペインのSRT行列 (親子での計算後) 1492 math::MTX34 m_GlbMtx; 1493 1494 const res::ExtUserDataList* m_pExtUserDataList; 1495 1496 u8 m_Alpha; 1497 u8 m_GlbAlpha; 1498 u8 m_BasePosition; 1499 u8 m_Flag; 1500 1501 char m_Name[ResourceNameStrMax + 1]; 1502 char m_UserData[UserDataStrMax + 1]; 1503 1504 private: 1505 // コピーコンストラクタと代入演算子の呼び出しを禁止します。実装してはいけません。 1506 Pane(const Pane& other); 1507 Pane& operator = (const Pane& other); 1508 1509 void Init(); 1510 void CalculateMtxChild(const DrawInfo& drawInfo); 1511 }; 1512 1513 } // namespace nw::lyt 1514 } // namespace nw 1515 1516 #endif // NW_LYT_PANE_H_ 1517 1518