/*---------------------------------------------------------------------------* Project: NintendoWare File: demo.h Copyright (C)2009-2011 Nintendo/HAL Laboratory, Inc. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo and/or its licensed developers and are protected by national and international copyright laws. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. The content herein is highly confidential and should be handled accordingly. $Revision: $ *---------------------------------------------------------------------------*/ #ifndef DEMO_H__ #define DEMO_H__ #include #include "../include/GfxCtrl.h" #include "../include/LytCtrl.h" #include "../include/SmTouchPanelCamera.h" #include "../include/SmModel.h" #include "../include/SmMessage.h" #include "../include/SmButton.h" #include "../include/SmLayout.h" #include "../include/SmLytButton.h" #include "../include/SmLytSliderBar.h" #include "../include/SmParticle.h" //------------------------------------------------------------------------------ //! コンテンツの内容やUI等の管理を行うクラスです。 class Demo : public SmMessage { //! コンテンツ内挙動を表した列挙です。 enum { //! タブの切り替えを行います。 DEMO_TAB0_VISIBLE_BTN, DEMO_TAB1_VISIBLE_BTN, DEMO_TAB2_VISIBLE_BTN, //! 各オブジェクトの表示/非表示を行います。 DEMO_PIERROT_VISIBLE_BTN, DEMO_ROBOT_VISIBLE_BTN, DEMO_STAGE_VISIBLE_BTN, DEMO_PARTICLE_VISIBLE_BTN, DEMO_AUDIENCE_VISIBLE_BTN, //! ステレオ描画のオンオフを変更します。 DEMO_STAGE_STEREO_ONOFF, //! カメラアニメ/タッチパネルカメラの切り替えを行います。 DEMO_CAMERA_CTRL_BTN, //! 天球のオンオフを行います。 DEMO_EMPYREAN_VISIBLE_BTN, //! 各オブジェクトのメッシュ単位での描画切り替えを行います。 DEMO_ADD_PIERROT_NUM_CTRL_SLDR, DEMO_ROBOT_NUM_CTRL_SLDR, DEMO_STAGE_OBJECT_MESH_CTRL_SLDR, DEMO_AUDIENCE_NUM_CTRL_SLDR, DEMO_PARTICLE_NUM_CTRL_SLDR }; //! 生成されたSmModelインスタンスを保持するための配列です。 typedef nw::ut::FixedSizeArray SmModelInstanceArray; public: //! コンストラクタ Demo( GfxCtrl* gfxCtrl, LytCtrl* lytCtrl ); //! デストラクタ ~Demo(); //! シーンの初期化を行います。 void InitializeScene(); //! フレームの処理を行います。 void Exec( f32 addFrame ); //! リセット処理を行います。 void Reset(); //! メッセージを受信します。 virtual bool ReceveMessage( SmMessageType type, void* object = NULL, uint targetId = 0 ); //! 視差調整用パラメータを取得します。 f32 GetStereoLevel() const { if ( !m_LevelSlider ) return m_StereoLevel; return m_LevelSlider->GetParam(); } f32 GetStereoRange() const { if ( !m_RangeSlider ) return m_StereoRange; return m_RangeSlider->GetParam(); } //! ステレオ表示オンオフを取得します。 bool IsStereoEnable() const { if ( !m_LytStereoOnOffBtn ) return true; return m_LytStereoOnOffBtn->IsSwitch(); } // レイアウトを更新するかどうかのフラグを取得します。 bool IsLytUpdate() { if ( m_LytUpdate ) { m_LytUpdate = false; return true; } return false; } private: GfxCtrl* m_GfxCtrl; LytCtrl* m_LytCtrl; SmModel* m_Pierrot; SmModel* m_Robot; SmModel* m_Stage; SmModel* m_Stick; SmModel* m_Audience; SmModel* m_Empyrean; SmModel* m_AddPierrot; SmModel* m_AddRobot; SmModel* m_StageObject; SmParticle* m_Particle; SmLayout* m_LytTabPanel; SmButton* m_Tab0VisibleBtn; SmButton* m_Tab1VisibleBtn; SmButton* m_Tab2VisibleBtn; SmMessage* m_Tab0Tree; SmMessage* m_Tab1Tree; SmMessage* m_Tab2Tree; SmLytButton* m_LytPierrotVisibleBtn; SmLytButton* m_LytRobotVisibleBtn; SmLytButton* m_LytStageVisibleBtn; SmLytButton* m_LytParticleVisibleBtn; SmLytButton* m_LytAudienceVisibleBtn; SmLytButton* m_LytStereoOnOffBtn; SmLytButton* m_EmpyreanVisibleBtn; SmLytButton* m_CameraCtrlBtn; SmTouchPanelCamera* m_TouchPanelCamera; SmLytSliderBar* m_LevelSlider; SmLytSliderBar* m_RangeSlider; f32 m_StereoLevel; f32 m_StereoRange; SmLytSliderBar* m_PierrotSlider; SmLytSliderBar* m_RobotSlider; SmLytSliderBar* m_StageMeshSlider; SmLytSliderBar* m_AudienceSlider; SmLytSliderBar* m_ParticleSlider; SmCamera* m_SmCamera; nw::math::VEC3 m_CameraBasePos; nw::math::VEC3 m_CameraBaseTarget; SmModelInstanceArray m_AudienceArray; SmModelInstanceArray m_AddPierrotArray; SmModelInstanceArray m_AddRobotArray; bool m_LytUpdate; LytResourceFile m_tabResFile; LytResourceFile m_btnPierrorResFile; LytResourceFile m_btnRobotResFile; LytResourceFile m_btnStageResFile; LytResourceFile m_btnAudienceResFile; LytResourceFile m_btnParticleResFile; LytResourceFile m_sliderResFile; }; #endif // GFXCTRL_H__