Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/C3DPluginMode.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations) (download) (as text)
Sun Aug 15 01:53:13 2010 UTC (13 years, 9 months ago) by okadu
File MIME type: text/x-c++src
File size: 5940 byte(s)


1 #include "stdafx.h"
2 #include "HighTimer.h"
3 #include "CModelPlugin.h"
4 #include "CEnvPlugin.h"
5 #include "CSkinPlugin.h"
6 #include "CConfigMode.h"
7 #include "C3DPluginMode.h"
8
9 /*
10 * コンストラクタ
11 */
12 C3DPluginMode::C3DPluginMode(
13 char *tname // プラグインタイプ名
14 ):
15 CPluginMode(tname) // 基本クラス
16 {
17 new CPopMenu("-", m_PreviewMenu);
18 new CPopMenu(lang(ResetCamera), m_PreviewMenu);
19 new CPopMenu(lang(ResetLight), m_PreviewMenu);
20 new CPopMenu("", m_PreviewMenu);
21 new CPopMenu("", m_PreviewMenu);
22 }
23
24 /*
25 * モードを有効化
26 */
27 void C3DPluginMode::EnterPlugin(){
28 CTreeElement *tmp = m_PluginTree.GetFocusItem();
29 if(!tmp) return;
30 CTreeDirElement *de = tmp->IsDirectory();
31 if(de) de->ListDirectory();
32 m_PluginTree.GiveFocus(false);
33 Enter3DPlugin();
34 }
35
36 /*
37 * 入力チェック
38 */
39 void C3DPluginMode::ScanInputPlugin(){
40 POINT pos = g_Cursor.GetPos();
41 switch(0){
42 case 0:
43 if(m_Interface.ScanInput()) break;
44 if(m_ListWindow.CheckClose()){
45 m_ListWindow.Show(false);
46 return;
47 }
48 if(!CPlugin::IsPreview() && !g_Cursor.IsLock()) break;
49 switch(m_Camera->ScanInput(0)){
50 case 32:
51 class CCameraResetter: public CMenuCommand{
52 private:
53 CCamera *m_Camera; // カメラ
54 public:
55 CCameraResetter(CCamera *c){ m_Camera = c; }
56 void Exec(){ m_Camera->ResetCamera(); }
57 };
58 class CLightResetter: public CMenuCommand{
59 private:
60 CCamera *m_Camera; // カメラ
61 public:
62 CLightResetter(CCamera *c){ m_Camera = c; }
63 void Exec(){ m_Camera->ResetLight(); }
64 };
65 class CLightLinker: public CMenuCommand{
66 private:
67 CCamera *m_Camera; // カメラ
68 public:
69 CLightLinker(CCamera *c){ m_Camera = c; }
70 void Exec(){ m_Camera->LinkLight(!m_Camera->IsLightLinked()); }
71 };
72 class CLightSwitcher: public CMenuCommand{
73 private:
74 CCamera *m_Camera; // カメラ
75 public:
76 CLightSwitcher(CCamera *c){ m_Camera = c; }
77 void Exec(){ m_Camera->SwitchLight(!m_Camera->IsLightOn()); }
78 };
79 (m_PreviewMenu->GetMenu(2))->SetCommand(new CCameraResetter(m_Camera));
80 (m_PreviewMenu->GetMenu(3))->SetCommand(new CLightResetter(m_Camera));
81 (m_PreviewMenu->GetMenu(4))->SetCommand(new CLightLinker(m_Camera));
82 (m_PreviewMenu->GetMenu(5))->SetCommand(new CLightSwitcher(m_Camera));
83 m_PreviewMenu->GetMenu(4)->SetString(
84 m_Camera->IsLightLinked() ? lang(FixLight) : lang(InterlockLight));
85 m_PreviewMenu->GetMenu(5)->SetString(
86 m_Camera->IsLightOn() ? lang(LightOff) : lang(LightOn));
87 m_PreviewMenu->Popup(pos.x, pos.y);
88 return;
89 }
90 break;
91 }
92 ScanInput3DPlugin();
93 }
94
95 /*
96 * レンダリング
97 */
98 void C3DPluginMode::RenderPlugin(){
99 devSetState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
100 devSetState(D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_COLOR1);
101 devSetZRead(TRUE);
102 devSetZWrite(TRUE);
103 devSetLighting(TRUE);
104 InitShadow();
105 CNamedObject::InitAfterRenderList();
106 CHeadlight::InitRenderList();
107 g_ConfigMode->SetTexFilter();
108 Render3DPlugin();
109 RenderShadow();
110 CNamedObject::AfterRenderAll();
111 CHeadlight::RenderAll();
112 devSetZRead(FALSE);
113 devSetZWrite(FALSE);
114 devSetLighting(FALSE);
115 devTEX_POINT(0);
116 devTEX_POINT(1);
117 }
118
119 ////////////////////////////////////////////////////////////////////////////////
120 ////////////////////////////////////////////////////////////////////////////////
121
122 /*
123 * コンストラクタ
124 */
125 CModelPluginMode::CModelPluginMode(
126 char *tname // プラグインタイプ名
127 ):
128 C3DPluginMode(tname) // 基本クラス
129 {
130 m_Camera = &m_MyCamera;
131 m_PreviewModel = NULL;
132 }
133
134 /*
135 * スイッチウィンドウ初期化
136 */
137 void CModelPluginMode::InitSwitchWindow(){
138 int ww = TILE_UNIT*16, wh = TILE_UNIT*10;
139 m_SwitchWindow.Init(g_DispWidth-ww-TILE_UNIT*7, g_DispHeight-wh-TILE_UNIT,
140 ww, wh, lang(AppearanceSetting), &m_Interface, false);
141 m_SwitchWindow.SetResize(TILE_UNIT*8, TILE_UNIT*8, g_DispWidth, g_DispHeight, this);
142 char *swcol[2] = {lang(Switch), lang(SetValue)};
143 m_SwitchListView.Init(TILE_UNIT/2, TILE_QUAD+TILE_UNIT, ww-TILE_UNIT, wh-TILE_UNIT*2,
144 &m_SwitchWindow, 2, swcol, DRAG_NONE, 0, this, CMD_NONE);
145 char *optcol[1] = {lang(Option)};
146 m_OptionListView.Init(TILE_UNIT/2, TILE_QUAD+TILE_UNIT, ww-TILE_UNIT, wh-TILE_UNIT*2,
147 &m_SwitchWindow, 1, optcol, DRAG_NONE, 0, this, CMD_NONE);
148 m_OptionListView.GiveFocus(false);
149 WindowResized(ww, wh, &m_SwitchWindow);
150 }
151
152 /*
153 * ウィンドウリサイズ
154 */
155 void CModelPluginMode::WindowResized(
156 int w, int h, // 新規サイズ
157 CWindowCtrl *wnd // ウィドウコントロール
158 ){
159 if(wnd==&m_SwitchWindow){
160 int h0 = h-TILE_UNIT*5/2, h1 = h0/2;
161 m_SwitchListView.SetSize(w-TILE_UNIT, h1);
162 m_OptionListView.SetSize(w-TILE_UNIT, h0-h1);
163 m_OptionListView.SetPos(TILE_HALF, TILE_QUAD*3+TILE_UNIT+h1);
164 }else{
165 C3DPluginMode::WindowResized(w, h, wnd);
166 }
167 }
168
169 /*
170 * モードを有効化
171 */
172 void CModelPluginMode::Enter3DPlugin(){
173 EnterModelPlugin();
174 }
175
176 /*
177 * 入力チェック
178 */
179 void CModelPluginMode::ScanInput3DPlugin(){
180 CModelInst *inst = ScanInputModelPlugin();
181 if(m_PreviewModel!=GetModelPlugin()){
182 m_PreviewModel = GetModelPlugin();
183 if(m_PreviewModel){
184 m_PreviewModel->ListSwitch(&m_SwitchListView, &m_OptionListView, inst);
185 }else{
186 m_SwitchListView.DeleteAllItems();
187 m_OptionListView.DeleteAllItems();
188 }
189 }
190 if(m_PreviewModel && CPlugin::IsPreview()){
191 m_PreviewModel->EditSwitch(&m_SwitchListView, &m_OptionListView);
192 m_PreviewModel->StoreTempSwitch();
193 }else if(m_PreviewModel){
194 m_PreviewModel = NULL;
195 m_SwitchListView.DeleteAllItems();
196 m_OptionListView.DeleteAllItems();
197 }
198 }
199
200 /*
201 * レンダリング
202 */
203 void CModelPluginMode::Render3DPlugin(){
204 devSetState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL);
205 devSetState(D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_MATERIAL);
206 RenderModelPlugin();
207 devSetState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
208 devSetState(D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_COLOR1);
209 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26