• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。


Commit MetaInfo

Revision230 (tree)
Time2020-01-04 12:27:23
Authorxops-mikan

Log Message

コンソールのコマンドを1個追加(fog)

Change Summary

Incremental Difference

--- trunk/d3dgraphics-directx.cpp (revision 229)
+++ trunk/d3dgraphics-directx.cpp (revision 230)
@@ -53,6 +53,7 @@
5353 }
5454
5555 StartRenderFlag = false;
56+ EnableFogFlag = false;
5657
5758 //ptextsprite = NULL;
5859 pxmsfont = NULL;
@@ -295,16 +296,6 @@
295296 pd3dDevice->LightEnable(0, FALSE);
296297 pd3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
297298
298- //フォグ
299- float fog_st = 100;
300- float fog_end = 800;
301- pd3dDevice->SetRenderState(D3DRS_FOGENABLE, TRUE);
302- pd3dDevice->SetRenderState(D3DRS_FOGCOLOR, D3DCOLOR_RGBA(0, 0, 0, 0));
303- pd3dDevice->SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_LINEAR);
304- pd3dDevice->SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_NONE);
305- pd3dDevice->SetRenderState(D3DRS_FOGSTART, *(DWORD*)(&fog_st));
306- pd3dDevice->SetRenderState(D3DRS_FOGEND, *(DWORD*)(&fog_end));
307-
308299 // テクスチャフィルタを使う
309300 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
310301 pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
@@ -351,6 +342,10 @@
351342
352343 //テクスチャフォント用画像を取得
353344 TextureFont = LoadTexture(TextureFontFname, true, false);
345+
346+ //フォグは再度初期化
347+ EnableFogFlag = false;
348+
354349 return 0;
355350 }
356351
@@ -1027,23 +1022,44 @@
10271022 }
10281023
10291024 //! @brief フォグを設定
1025+//! @param enablefog フォグ有効化
10301026 //! @param skynumber 空の番号
1031-void D3DGraphics::SetFog(int skynumber)
1027+void D3DGraphics::SetFog(bool enablefog, int skynumber)
10321028 {
1033- D3DCOLOR skycolor;
1029+ if( enablefog == true ){
1030+ if( EnableFogFlag == false ){
1031+ //フォグ
1032+ float fog_st = 100;
1033+ float fog_end = 800;
1034+ pd3dDevice->SetRenderState(D3DRS_FOGENABLE, TRUE);
1035+ pd3dDevice->SetRenderState(D3DRS_FOGCOLOR, D3DCOLOR_RGBA(0, 0, 0, 0));
1036+ pd3dDevice->SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_LINEAR);
1037+ pd3dDevice->SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_NONE);
1038+ pd3dDevice->SetRenderState(D3DRS_FOGSTART, *(DWORD*)(&fog_st));
1039+ pd3dDevice->SetRenderState(D3DRS_FOGEND, *(DWORD*)(&fog_end));
1040+ }
10341041
1035- //空の番号により色を決定
1036- switch(skynumber){
1037- case 1: skycolor = D3DCOLOR_RGBA(64, 64+16, 64, 0); break;
1038- case 2: skycolor = D3DCOLOR_RGBA(16, 16, 16, 0); break;
1039- case 3: skycolor = D3DCOLOR_RGBA(0, 16, 32, 0); break;
1040- case 4: skycolor = D3DCOLOR_RGBA(32, 16, 16, 0); break;
1041- case 5: skycolor = D3DCOLOR_RGBA(64, 32, 32, 0); break;
1042- default: skycolor = D3DCOLOR_RGBA(0, 0, 0, 0); break;
1042+ D3DCOLOR skycolor;
1043+
1044+ //空の番号により色を決定
1045+ switch(skynumber){
1046+ case 1: skycolor = D3DCOLOR_RGBA(64, 64+16, 64, 0); break;
1047+ case 2: skycolor = D3DCOLOR_RGBA(16, 16, 16, 0); break;
1048+ case 3: skycolor = D3DCOLOR_RGBA(0, 16, 32, 0); break;
1049+ case 4: skycolor = D3DCOLOR_RGBA(32, 16, 16, 0); break;
1050+ case 5: skycolor = D3DCOLOR_RGBA(64, 32, 32, 0); break;
1051+ default: skycolor = D3DCOLOR_RGBA(0, 0, 0, 0); break;
1052+ }
1053+
1054+ //フォグを設定
1055+ pd3dDevice->SetRenderState(D3DRS_FOGCOLOR, skycolor);
1056+
1057+ EnableFogFlag = true;
10431058 }
1044-
1045- //フォグを設定
1046- pd3dDevice->SetRenderState(D3DRS_FOGCOLOR, skycolor);
1059+ else{
1060+ pd3dDevice->SetRenderState(D3DRS_FOGENABLE, FALSE);
1061+ EnableFogFlag = false;
1062+ }
10471063 }
10481064
10491065 //! @brief カメラ(視点)を設定
--- trunk/d3dgraphics-opengl.cpp (revision 229)
+++ trunk/d3dgraphics-opengl.cpp (revision 230)
@@ -1890,30 +1890,36 @@
18901890 }
18911891
18921892 //! @brief フォグを設定
1893+//! @param enablefog フォグ有効化
18931894 //! @param skynumber 空の番号
1894-void D3DGraphics::SetFog(int skynumber)
1895+void D3DGraphics::SetFog(bool enablefog, int skynumber)
18951896 {
1896- float fogColor[4];
1897+ if( enablefog == true ){
1898+ float fogColor[4];
18971899
1898- //空の番号により色を決定
1899- switch(skynumber){
1900- case 1: fogColor[0] = 0.25f; fogColor[1] = 0.25f+0.0625; fogColor[2] = 0.25f; fogColor[3] = 1.0f; break;
1901- case 2: fogColor[0] = 0.0625; fogColor[1] = 0.0625; fogColor[2] = 0.0625; fogColor[3] = 1.0f; break;
1902- case 3: fogColor[0] = 0.0f; fogColor[1] = 0.0625; fogColor[2] = 0.125; fogColor[3] = 1.0f; break;
1903- case 4: fogColor[0] = 0.125; fogColor[1] = 0.0625; fogColor[2] = 0.0625; fogColor[3] = 1.0f; break;
1904- case 5: fogColor[0] = 0.25f; fogColor[1] = 0.125; fogColor[2] = 0.125; fogColor[3] = 1.0f; break;
1905- default: fogColor[0] = 0.0f; fogColor[1] = 0.0f; fogColor[2] = 0.0f; fogColor[3] = 1.0f; break;
1906- }
1900+ //空の番号により色を決定
1901+ switch(skynumber){
1902+ case 1: fogColor[0] = 0.25f; fogColor[1] = 0.25f+0.0625; fogColor[2] = 0.25f; fogColor[3] = 1.0f; break;
1903+ case 2: fogColor[0] = 0.0625; fogColor[1] = 0.0625; fogColor[2] = 0.0625; fogColor[3] = 1.0f; break;
1904+ case 3: fogColor[0] = 0.0f; fogColor[1] = 0.0625; fogColor[2] = 0.125; fogColor[3] = 1.0f; break;
1905+ case 4: fogColor[0] = 0.125; fogColor[1] = 0.0625; fogColor[2] = 0.0625; fogColor[3] = 1.0f; break;
1906+ case 5: fogColor[0] = 0.25f; fogColor[1] = 0.125; fogColor[2] = 0.125; fogColor[3] = 1.0f; break;
1907+ default: fogColor[0] = 0.0f; fogColor[1] = 0.0f; fogColor[2] = 0.0f; fogColor[3] = 1.0f; break;
1908+ }
19071909
1908- float fog_st = 100;
1909- float fog_end = 800;
1910- glFogi(GL_FOG_MODE, GL_LINEAR);
1911- glFogfv(GL_FOG_COLOR, fogColor);
1912- glHint(GL_FOG_HINT, GL_NICEST);
1913- glFogf(GL_FOG_START, fog_st);
1914- glFogf(GL_FOG_END, fog_end);
1910+ float fog_st = 100;
1911+ float fog_end = 800;
1912+ glFogi(GL_FOG_MODE, GL_LINEAR);
1913+ glFogfv(GL_FOG_COLOR, fogColor);
1914+ glHint(GL_FOG_HINT, GL_NICEST);
1915+ glFogf(GL_FOG_START, fog_st);
1916+ glFogf(GL_FOG_END, fog_end);
19151917
1916- glEnable(GL_FOG);
1918+ glEnable(GL_FOG);
1919+ }
1920+ else{
1921+ glDisable(GL_FOG);
1922+ }
19171923 }
19181924
19191925 //! @brief カメラ(視点)を設定
--- trunk/d3dgraphics.h (revision 229)
+++ trunk/d3dgraphics.h (revision 230)
@@ -181,11 +181,12 @@
181181 float HUD_myweapon_z[TOTAL_HAVEWEAPON]; //!< HUDの武器描画 Z座標
182182
183183 bool StartRenderFlag; //!< StartRender()関数 実行中を表すフラグ
184+ bool EnableFogFlag; //!< フォグ使用中を表すフラグ
184185
185- LPD3DXSPRITE ptextsprite; //!< 2Dテクスチャスプライト
186- LPD3DXFONT pxmsfont; //!< システムフォント
186+ LPD3DXSPRITE ptextsprite; //!< 2Dテクスチャスプライト
187+ LPD3DXFONT pxmsfont; //!< システムフォント
187188 char TextureFontFname[_MAX_PATH]; //!< テクスチャフォントのファイル名
188- int TextureFont; //!< テクスチャフォントのテクスチャID
189+ int TextureFont; //!< テクスチャフォントのテクスチャID
189190
190191 int InitSubset();
191192 void CleanupD3Dresource();
@@ -287,7 +288,7 @@
287288 void SetWorldTransformHumanWeapon(float x, float y, float z, float mx, float my, float mz, float rx, float ry, float size);
288289 void SetWorldTransformPlayerWeapon(bool rotation, float camera_rx, float camera_ry, float rx, float size);
289290 void GetWorldTransformPos(float *x, float *y, float *z);
290- void SetFog(int skynumber);
291+ void SetFog(bool enablefog, int skynumber);
291292 void SetCamera(float camera_x, float camera_y, float camera_z, float camera_rx, float camera_ry, float viewangle);
292293 void LoadMapdata(class BlockDataInterface* in_blockdata, char *directory);
293294 void RenderMapdata(bool wireframe);
--- trunk/gamemain.cpp (revision 229)
+++ trunk/gamemain.cpp (revision 230)
@@ -339,7 +339,7 @@
339339 int skymodel, skytexture;
340340
341341 //フォグとカメラを設定
342- d3dg->SetFog(1);
342+ d3dg->SetFog(true, 1);
343343 d3dg->SetCamera(camera_x, camera_y, camera_z, camera_rx, camera_ry, VIEWANGLE_NORMAL);
344344
345345 //カメラ座標に背景空を描画
@@ -751,7 +751,7 @@
751751 void mainmenu::Render3D()
752752 {
753753 //フォグとカメラを設定
754- d3dg->SetFog(0);
754+ d3dg->SetFog(true, 0);
755755 d3dg->SetCamera(camera_x, camera_y, camera_z, camera_rx, camera_ry, VIEWANGLE_NORMAL);
756756
757757 //Zバッファを初期化
@@ -1692,6 +1692,7 @@
16921692 //プレイヤーの向きを取得
16931693 ObjMgr.GetPlayerHumanObject()->GetRxRy(&mouse_rx, &mouse_ry);
16941694
1695+ FogFlag = true;
16951696 view_rx = 0.0f;
16961697 view_ry = 0.0f;
16971698 add_camera_rx = 0.0f;
@@ -2547,7 +2548,7 @@
25472548 human *myHuman = ObjMgr.GetPlayerHumanObject();
25482549
25492550 //フォグとカメラを設定
2550- d3dg->SetFog(SkyNumber);
2551+ d3dg->SetFog(FogFlag, SkyNumber);
25512552 if( (Camera_F1mode == false)&&(Camera_Debugmode == false) ){
25522553 int scopemode = myHuman->GetScopeMode();
25532554
@@ -3394,7 +3395,7 @@
33943395 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "help human result event ver");
33953396 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "config mif bd1 pd1 resinfo");
33963397 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "info view center map aiinfo <NUM>");
3397- AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "tag radar inmap sky <NUM> dark");
3398+ AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "tag radar inmap sky <NUM> dark fog");
33983399 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "ff revive kill <NUM> treat <NUM> nodamage <NUM>");
33993400 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "newobj <NUM> break <NUM> delhuman <NUM> delweapon <NUM> delobj <NUL>");
34003401 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "nofight caution ailevel <NUM> bot stop estop");
@@ -3957,6 +3958,19 @@
39573958 d3dg->LoadMapdata(&BlockData, path);
39583959 }
39593960
3961+ //フォグ切り替え
3962+ if( strcmp(NewCommand, "fog") == 0 ){
3963+ //フラグ切り替え
3964+ if( FogFlag == false ){
3965+ FogFlag = true;
3966+ AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "Enable Fog Flag.");
3967+ }
3968+ else{
3969+ FogFlag = false;
3970+ AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "Disable Fog Flag.");
3971+ }
3972+ }
3973+
39603974 //全ての死者を蘇生する
39613975 if( strcmp(NewCommand, "revive") == 0 ){
39623976 for(int i=0; i<MAX_HUMAN; i++){
--- trunk/gamemain.h (revision 229)
+++ trunk/gamemain.h (revision 230)
@@ -217,6 +217,7 @@
217217 //class EventControl Event[TOTAL_EVENTLINE]; //!< イベント制御クラス
218218 int SkyNumber; //!< 背景空番号
219219 bool DarkScreenFlag; //!< 画面を暗く
220+ bool FogFlag; //!< フォグ有効
220221 float mouse_rx; //!< マウスによる水平軸角度
221222 float mouse_ry; //!< マウスによる垂直軸角度
222223 float view_rx; //!< マウス角度とカメラ角度の差(水平軸)