1 /*---------------------------------------------------------------------------*
2   Project:  NintendoWare
3   File:     demo.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: 1 $
14  *---------------------------------------------------------------------------*/
15 #ifndef DEMO_H__
16 #define DEMO_H__
17 
18 #include <nw/gfx.h>
19 
20 #include "../include/GfxCtrl.h"
21 #include "../include/LytCtrl.h"
22 #include "../include/SmTouchPanelCamera.h"
23 #include "../include/SmModel.h"
24 #include "../include/SmMessage.h"
25 #include "../include/SmButton.h"
26 #include "../include/SmLayout.h"
27 #include "../include/SmLytButton.h"
28 #include "../include/SmLytSliderBar.h"
29 #include "../include/SmParticle.h"
30 
31 //------------------------------------------------------------------------------
32 //! �R���e���c�̓��e��t�h���̊Ǘ����s���N���X�ł��B
33 class Demo : public SmMessage
34 {
35     //! �R���e���c��������\�������ł��B
36     enum
37     {
38         //! �^�u�̐؂�ւ����s���܂��B
39         DEMO_TAB0_VISIBLE_BTN,
40         DEMO_TAB1_VISIBLE_BTN,
41         DEMO_TAB2_VISIBLE_BTN,
42 
43         //! �e�I�u�W�F�N�g�̕\��/��\�����s���܂��B
44         DEMO_PIERROT_VISIBLE_BTN,
45         DEMO_ROBOT_VISIBLE_BTN,
46         DEMO_STAGE_VISIBLE_BTN,
47         DEMO_PARTICLE_VISIBLE_BTN,
48         DEMO_AUDIENCE_VISIBLE_BTN,
49 
50         //! �X�e���I�`��̃I���I�t��ύX���܂��B
51         DEMO_STAGE_STEREO_ONOFF,
52 
53         //! �J�����A�j��/�^�b�`�p�l���J�����̐؂�ւ����s���܂��B
54         DEMO_CAMERA_CTRL_BTN,
55 
56         //! �V���̃I���I�t���s���܂��B
57         DEMO_EMPYREAN_VISIBLE_BTN,
58 
59         //! �e�I�u�W�F�N�g�̃��b�V���P�ʂł̕`��؂�ւ����s���܂��B
60         DEMO_ADD_PIERROT_NUM_CTRL_SLDR,
61         DEMO_ROBOT_NUM_CTRL_SLDR,
62         DEMO_STAGE_OBJECT_MESH_CTRL_SLDR,
63         DEMO_AUDIENCE_NUM_CTRL_SLDR,
64         DEMO_PARTICLE_NUM_CTRL_SLDR
65     };
66 
67     //! �������ꂽSmModel�C���X�^���X��ێ����邽�߂̔z��ł��B
68     typedef nw::ut::FixedSizeArray<SmModel*, 32>               SmModelInstanceArray;
69 
70 public:
71     //! �R���X�g���N�^
72     Demo( GfxCtrl* gfxCtrl, LytCtrl* lytCtrl );
73 
74     //! �f�X�g���N�^
75     ~Demo();
76 
77     //! �V�[���̏��������s���܂��B
78     void InitializeScene();
79 
80     //! �t���[���̏������s���܂��B
81     void Exec( f32 addFrame );
82 
83     //! ���Z�b�g�������s���܂��B
84     void Reset();
85 
86     //! ���b�Z�[�W����M���܂��B
87     virtual bool ReceveMessage( SmMessageType   type,
88                                 void*           object = NULL,
89                                 uint            targetId = 0 );
90 
91 
92     //! ���������p�p�����[�^���擾���܂��B
GetStereoLevel()93     f32 GetStereoLevel() const
94     {
95          if ( !m_LevelSlider ) return m_StereoLevel;
96         return m_LevelSlider->GetParam();
97     }
GetStereoRange()98     f32 GetStereoRange() const
99     {
100          if ( !m_RangeSlider ) return m_StereoRange;
101         return m_RangeSlider->GetParam();
102     }
103 
104     //! �X�e���I�\���I���I�t���擾���܂��B
IsStereoEnable()105     bool IsStereoEnable() const
106     {
107          if ( !m_LytStereoOnOffBtn ) return true;
108         return m_LytStereoOnOffBtn->IsSwitch();
109     }
110 
111     // ���C�A�E�g���X�V���邩�ǂ����̃t���O���擾���܂��B
IsLytUpdate()112     bool IsLytUpdate()
113     {
114         if ( m_LytUpdate )
115         {
116             m_LytUpdate = false;
117             return true;
118         }
119 
120         return false;
121     }
122 
123 private:
124     GfxCtrl*                m_GfxCtrl;
125     LytCtrl*                m_LytCtrl;
126 
127     SmModel*                m_Pierrot;
128     SmModel*                m_Robot;
129     SmModel*                m_Stage;
130     SmModel*                m_Stick;
131     SmModel*                m_Audience;
132     SmModel*                m_Empyrean;
133     SmModel*                m_AddPierrot;
134     SmModel*                m_AddRobot;
135     SmModel*                m_StageObject;
136 
137     SmParticle*             m_Particle;
138 
139     SmLayout*               m_LytTabPanel;
140     SmButton*               m_Tab0VisibleBtn;
141     SmButton*               m_Tab1VisibleBtn;
142     SmButton*               m_Tab2VisibleBtn;
143 
144     SmMessage*              m_Tab0Tree;
145     SmMessage*              m_Tab1Tree;
146     SmMessage*              m_Tab2Tree;
147 
148     SmLytButton*            m_LytPierrotVisibleBtn;
149     SmLytButton*            m_LytRobotVisibleBtn;
150     SmLytButton*            m_LytStageVisibleBtn;
151     SmLytButton*            m_LytParticleVisibleBtn;
152     SmLytButton*            m_LytAudienceVisibleBtn;
153     SmLytButton*            m_LytStereoOnOffBtn;
154     SmLytButton*            m_EmpyreanVisibleBtn;
155 
156     SmLytButton*            m_CameraCtrlBtn;
157     SmTouchPanelCamera*     m_TouchPanelCamera;
158 
159     SmLytSliderBar*         m_LevelSlider;
160     SmLytSliderBar*         m_RangeSlider;
161     f32                     m_StereoLevel;
162     f32                     m_StereoRange;
163 
164     SmLytSliderBar*         m_PierrotSlider;
165     SmLytSliderBar*         m_RobotSlider;
166     SmLytSliderBar*         m_StageMeshSlider;
167     SmLytSliderBar*         m_AudienceSlider;
168     SmLytSliderBar*         m_ParticleSlider;
169 
170 
171     SmCamera*               m_SmCamera;
172     nw::math::VEC3          m_CameraBasePos;
173     nw::math::VEC3          m_CameraBaseTarget;
174 
175     SmModelInstanceArray    m_AudienceArray;
176     SmModelInstanceArray    m_AddPierrotArray;
177     SmModelInstanceArray    m_AddRobotArray;
178 
179     bool                    m_LytUpdate;
180 
181     LytResourceFile         m_tabResFile;
182     LytResourceFile         m_btnPierrorResFile;
183     LytResourceFile         m_btnRobotResFile;
184     LytResourceFile         m_btnStageResFile;
185     LytResourceFile         m_btnAudienceResFile;
186     LytResourceFile         m_btnParticleResFile;
187     LytResourceFile         m_sliderResFile;
188 };
189 
190 
191 #endif  // GFXCTRL_H__
192