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