• 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

Revision269 (tree)
Time2021-03-07 15:59:01
Authorxops-mikan

Log Message

オブジェクトログにて地形による死亡が取得・判定できないバグの修正、エフェクトのビルボード化処理タイミングを変更

Change Summary

Incremental Difference

--- trunk/gamemain.cpp (revision 268)
+++ trunk/gamemain.cpp (revision 269)
@@ -299,7 +299,7 @@
299299 void opening::Process()
300300 {
301301 //オブジェクトマネージャーを実行
302- ObjMgr.Process(-1, false, camera_rx, camera_ry, false);
302+ ObjMgr.Process(-1, false, false);
303303
304304 //AIを実行
305305 for(int i=0; i<MAX_HUMAN; i++){
@@ -372,7 +372,7 @@
372372 d3dg->RenderMapdata(false);
373373
374374 //オブジェクトを描画
375- ObjMgr.Render(camera_x, camera_y, camera_z, 0, false);
375+ ObjMgr.Render(camera_x, camera_y, camera_z, camera_rx, camera_ry, 0, false);
376376 }
377377
378378 void opening::Render2D()
@@ -708,7 +708,7 @@
708708 void mainmenu::Process()
709709 {
710710 //オブジェクトマネージャーを実行
711- ObjMgr.Process(-1, true, camera_rx, camera_ry, false);
711+ ObjMgr.Process(-1, true, false);
712712
713713 //AIを実行
714714 for(int i=0; i<MAX_HUMAN; i++){
@@ -747,7 +747,7 @@
747747 d3dg->RenderMapdata(false);
748748
749749 //オブジェクトを描画
750- ObjMgr.Render(camera_x, camera_y, camera_z, 0, false);
750+ ObjMgr.Render(camera_x, camera_y, camera_z, camera_rx, camera_ry, 0, false);
751751 }
752752
753753 void mainmenu::Render2D()
@@ -2428,7 +2428,7 @@
24282428 else{
24292429 cmdF5id = -1;
24302430 }
2431- ObjMgr.Process(cmdF5id, false, camera_rx, camera_ry, DarkScreenFlag);
2431+ ObjMgr.Process(cmdF5id, false, DarkScreenFlag);
24322432
24332433 //プレイヤーの戦歴を加算
24342434 ObjMgr.GetHumanShotInfo( ObjMgr.GetPlayerID(), &ontarget, &kill, &headshot);
@@ -2673,7 +2673,7 @@
26732673 }
26742674 }
26752675 //オブジェクトを描画
2676- ObjMgr.Render(camera_x, camera_y, camera_z, DrawPlayer, nomodel);
2676+ ObjMgr.Render(camera_x, camera_y, camera_z, camera_rx, camera_ry, DrawPlayer, nomodel);
26772677
26782678 //AIデバック情報表示
26792679 if( AIdebuginfoID != -1 ){
--- trunk/object.cpp (revision 268)
+++ trunk/object.cpp (revision 269)
@@ -1807,6 +1807,8 @@
18071807
18081808 //if( CheckDead == 0 ){
18091809 if( (CheckDead == 0)||(deadstate == 1) ){
1810+ int hp_old = hp;
1811+
18101812 //進行方向と速度を決定
18111813 ControlProcess();
18121814
@@ -1813,6 +1815,11 @@
18131815 //マップとの当たり判定
18141816 CollisionMap(CollD, inblockdata, AddCollisionFlag, player);
18151817
1818+ //今回のマップとの当たり判定でHPがゼロになったなら、地形による死亡
1819+ if( (hp_old >0)&&(hp <= 0) ){
1820+ return 4;
1821+ }
1822+
18161823 //今回の当たり判定で-100.0より下に落ちたら、死亡
18171824 if( CheckDead == 0 ){
18181825 if( pos_y < HUMAN_DEADLINE ){
@@ -2849,11 +2856,9 @@
28492856 //}
28502857 }
28512858
2852-//! @brief 計算を実行(ビルボード化)
2853-//! @param camera_rx カメラの横軸角度
2854-//! @param camera_ry カメラの縦軸角度
2859+//! @brief 計算を実行(エフェクト移動・時間消滅)
28552860 //! @return 処理実行:1 描画最終フレーム:2 処理なし:0
2856-int effect::RunFrame(float camera_rx, float camera_ry)
2861+int effect::RunFrame()
28572862 {
28582863 //初期化されていなければ処理しない
28592864 if( EnableFlag == false ){ return 0; }
@@ -2864,12 +2869,6 @@
28642869 return 2;
28652870 }
28662871
2867- if( (type & EFFECT_NOBILLBOARD) == 0 ){
2868- //カメラ座標を適用し、ビルボード化する
2869- rotation_x = camera_rx*-1;
2870- rotation_y = camera_ry;
2871- }
2872-
28732872 //座標移動
28742873 pos_x += move_x;
28752874 pos_y += move_y;
@@ -2902,8 +2901,10 @@
29022901
29032902 //! @brief 描画
29042903 //! @param d3dg D3DGraphicsのポインタ
2904+//! @param camera_rx カメラの横軸角度
2905+//! @param camera_ry カメラの縦軸角度
29052906 //! @param NoModel モデル描画無効化
2906-void effect::Render(class D3DGraphics *d3dg, bool NoModel)
2907+void effect::Render(class D3DGraphics *d3dg, float camera_rx, float camera_ry, bool NoModel)
29072908 {
29082909 //クラスが設定されていなければ失敗
29092910 if( d3dg == NULL ){ return; }
@@ -2911,6 +2912,12 @@
29112912 //初期化されていなければ処理しない。
29122913 if( EnableFlag == false ){ return; }
29132914
2915+ if( (type & EFFECT_NOBILLBOARD) == 0 ){
2916+ //カメラ座標を適用し、ビルボード化する
2917+ rotation_x = camera_rx*-1;
2918+ rotation_y = camera_ry;
2919+ }
2920+
29142921 //描画
29152922 d3dg->SetWorldTransformEffect(pos_x, pos_y, pos_z, rotation_x, rotation_y, rotation_texture, model_size);
29162923 d3dg->RenderBoard(id_texture, alpha, NoModel);
--- trunk/object.h (revision 268)
+++ trunk/object.h (revision 269)
@@ -359,8 +359,8 @@
359359 virtual int GetTextureID();
360360 virtual void GetMove(float *mx, float *my, float *mz);
361361 virtual bool GetCollideMapFlag();
362- virtual int RunFrame(float camera_rx, float camera_ry);
363- virtual void Render(class D3DGraphics *d3dg, bool NoModel);
362+ virtual int RunFrame();
363+ virtual void Render(class D3DGraphics *d3dg, float camera_rx, float camera_ry, bool NoModel);
364364 };
365365
366366 //! @brief 人モーション制御クラス
--- trunk/objectmanager.cpp (revision 268)
+++ trunk/objectmanager.cpp (revision 269)
@@ -2616,13 +2616,11 @@
26162616 //! @brief オブジェクトの主計算処理
26172617 //! @param cmdF5id 上昇機能(F5裏技)させる人データ番号(-1で機能無効)
26182618 //! @param demomode デモモード
2619-//! @param camera_rx カメラの横軸角度
2620-//! @param camera_ry カメラの縦軸角度
26212619 //! @param screen 画面を暗くする
26222620 //! @return 常に 0
26232621 //! @attention 一般的に cmdF5id は、F5裏技使用中はプレイヤー番号(GetPlayerID()関数で取得)、未使用時は -1 を指定します。
26242622 //! @attention demomode は主にメニュー画面で使用します。有効にすると、銃弾・手榴弾を処理しません。
2625-int ObjectManager::Process(int cmdF5id, bool demomode, float camera_rx, float camera_ry, bool screen)
2623+int ObjectManager::Process(int cmdF5id, bool demomode, bool screen)
26262624 {
26272625 //このフレームの戦歴を初期化
26282626 for(int i=0; i<MAX_HUMAN; i++){
@@ -2738,7 +2736,7 @@
27382736 EffectIndex[i].SetEnableFlag(false);
27392737 }
27402738 else{
2741- EffectIndex[i].RunFrame(camera_rx, camera_ry);
2739+ EffectIndex[i].RunFrame();
27422740 EffectIndex[i].SetDarkModelFlag(screen);
27432741 }
27442742 }
@@ -2874,9 +2872,11 @@
28742872 //! @param camera_x カメラのX座標
28752873 //! @param camera_y カメラのY座標
28762874 //! @param camera_z カメラのZ座標
2875+//! @param camera_rx カメラの横軸角度
2876+//! @param camera_ry カメラの縦軸角度
28772877 //! @param HidePlayer プレイヤーの描画設定 (描画する:0 描画しない:1 腕と武器のみ描画する:2)
28782878 //! @param NoModel モデル描画無効化
2879-void ObjectManager::Render(float camera_x, float camera_y, float camera_z, int HidePlayer, bool NoModel)
2879+void ObjectManager::Render(float camera_x, float camera_y, float camera_z, float camera_rx, float camera_ry, int HidePlayer, bool NoModel)
28802880 {
28812881 //ワールド座標を原点へ
28822882 d3dg->ResetWorldTransform();
@@ -2969,13 +2969,13 @@
29692969 d3dg->StartEffectRender();
29702970 /*
29712971 for(int i=0; i<MAX_EFFECT; i++){
2972- EffectIndex[i].Render(d3dg, NoModel);
2972+ EffectIndex[i].Render(d3dg, camera_rx, camera_ry, NoModel);
29732973 }
29742974 */
29752975 effectdata data[MAX_EFFECT];
29762976 int cnt = SortEffect(camera_x, camera_y, camera_z, data);
29772977 for(int i=0; i<cnt; i++) {
2978- EffectIndex[ data[i].id ].Render(d3dg, NoModel);
2978+ EffectIndex[ data[i].id ].Render(d3dg, camera_rx, camera_ry, NoModel);
29792979 }
29802980 d3dg->EndEffectRender();
29812981 }
--- trunk/objectmanager.h (revision 268)
+++ trunk/objectmanager.h (revision 269)
@@ -171,9 +171,9 @@
171171 bool HumanResuscitation(int id);
172172 int CheckGameOverorComplete();
173173 bool GetObjectInfoTag(float camera_x, float camera_y, float camera_z, float camera_rx, float camera_ry, int *color, char *infostr);
174- int Process(int cmdF5id, bool demomode, float camera_rx, float camera_ry, bool screen);
174+ int Process(int cmdF5id, bool demomode, bool screen);
175175 bool GetHumanShotInfo(int id, float *ontarget, int *kill, int *headshot);
176- void Render(float camera_x, float camera_y, float camera_z, int HidePlayer, bool NoModel);
176+ void Render(float camera_x, float camera_y, float camera_z, float camera_rx, float camera_ry, int HidePlayer, bool NoModel);
177177 void RenderLog(int x, int y);
178178 void Cleanup();
179179 };