• 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

Revision169 (tree)
Time2017-03-21 00:08:53
Authorxops-mikan

Log Message

ブロックの繋ぎ目から落ちる場合がある問題の暫定対策(R142のバグ) 例:WAREHOUSE_DEF

Change Summary

Incremental Difference

--- trunk/collision.cpp (revision 168)
+++ trunk/collision.cpp (revision 169)
@@ -253,10 +253,10 @@
253253
254254 blockdata->Getdata(&bdata, id);
255255
256- //面の中心を基準点に、座標のベクトルを求める ※正確な中心点を使うこと
257- vx = bdata.material[face].center_x - x;
258- vy = bdata.material[face].center_y - y;
259- vz = bdata.material[face].center_z - z;
256+ //面の中心を基準点に、座標のベクトルを求める
257+ vx = cbdata[id].polygon_center_x[face] - x;
258+ vy = cbdata[id].polygon_center_y[face] - y;
259+ vz = cbdata[id].polygon_center_z[face] - z;
260260
261261 //内積
262262 d = bdata.material[face].vx*vx + bdata.material[face].vy*vy + bdata.material[face].vz*vz;
@@ -330,10 +330,10 @@
330330 return false; //面とレイが平行か、面に対してレイが逆向き
331331 }
332332
333- //面の中心を基準点に、座標のベクトルを求める ※正確な中心点を使うこと
334- vx1 = RayPos_x - data.material[face].center_x;
335- vy1 = RayPos_y - data.material[face].center_y;
336- vz1 = RayPos_z - data.material[face].center_z;
333+ //面の中心を基準点に、座標のベクトルを求める
334+ vx1 = RayPos_x - cbdata[blockid].polygon_center_x[face];
335+ vy1 = RayPos_y - cbdata[blockid].polygon_center_y[face];
336+ vz1 = RayPos_z - cbdata[blockid].polygon_center_z[face];
337337
338338 //内積
339339 d2 = data.material[face].vx*vx1 + data.material[face].vy*vy1 + data.material[face].vz*vz1; //面までの最短距離が求まる
@@ -355,9 +355,9 @@
355355 //  面を形成する各4辺との位置関係を算出し、面の法線と比較する。
356356
357357 //外積
358- vx2 = ((data.y[ vID[1] ] - data.y[ vID[0] ]) * (z - data.z[ vID[0] ])) - ((y - data.y[ vID[0] ]) * (data.z[ vID[1] ] - data.z[ vID[0] ]));
359- vy2 = ((data.z[ vID[1] ] - data.z[ vID[0] ]) * (x - data.x[ vID[0] ])) - ((z - data.z[ vID[0] ]) * (data.x[ vID[1] ] - data.x[ vID[0] ]));
360- vz2 = ((data.x[ vID[1] ] - data.x[ vID[0] ]) * (y - data.y[ vID[0] ])) - ((x - data.x[ vID[0] ]) * (data.y[ vID[1] ] - data.y[ vID[0] ]));
358+ vx2 = ((cbdata[blockid].y[ vID[1] ] - cbdata[blockid].y[ vID[0] ]) * (z - cbdata[blockid].z[ vID[0] ])) - ((y - cbdata[blockid].y[ vID[0] ]) * (cbdata[blockid].z[ vID[1] ] - cbdata[blockid].z[ vID[0] ]));
359+ vy2 = ((cbdata[blockid].z[ vID[1] ] - cbdata[blockid].z[ vID[0] ]) * (x - cbdata[blockid].x[ vID[0] ])) - ((z - cbdata[blockid].z[ vID[0] ]) * (cbdata[blockid].x[ vID[1] ] - cbdata[blockid].x[ vID[0] ]));
360+ vz2 = ((cbdata[blockid].x[ vID[1] ] - cbdata[blockid].x[ vID[0] ]) * (y - cbdata[blockid].y[ vID[0] ])) - ((x - cbdata[blockid].x[ vID[0] ]) * (cbdata[blockid].y[ vID[1] ] - cbdata[blockid].y[ vID[0] ]));
361361
362362 //内積
363363 d1 = data.material[face].vx*vx2 + data.material[face].vy*vy2 + data.material[face].vz*vz2; //ブロック面の法線との関係を算出
@@ -368,9 +368,9 @@
368368
369369
370370 //外積
371- vx2 = ((data.y[ vID[2] ] - data.y[ vID[1] ]) * (z - data.z[ vID[1] ])) - ((y - data.y[ vID[1] ]) * (data.z[ vID[2] ] - data.z[ vID[1] ]));
372- vy2 = ((data.z[ vID[2] ] - data.z[ vID[1] ]) * (x - data.x[ vID[1] ])) - ((z - data.z[ vID[1] ]) * (data.x[ vID[2] ] - data.x[ vID[1] ]));
373- vz2 = ((data.x[ vID[2] ] - data.x[ vID[1] ]) * (y - data.y[ vID[1] ])) - ((x - data.x[ vID[1] ]) * (data.y[ vID[2] ] - data.y[ vID[1] ]));
371+ vx2 = ((cbdata[blockid].y[ vID[2] ] - cbdata[blockid].y[ vID[1] ]) * (z - cbdata[blockid].z[ vID[1] ])) - ((y - cbdata[blockid].y[ vID[1] ]) * (cbdata[blockid].z[ vID[2] ] - cbdata[blockid].z[ vID[1] ]));
372+ vy2 = ((cbdata[blockid].z[ vID[2] ] - cbdata[blockid].z[ vID[1] ]) * (x - cbdata[blockid].x[ vID[1] ])) - ((z - cbdata[blockid].z[ vID[1] ]) * (cbdata[blockid].x[ vID[2] ] - cbdata[blockid].x[ vID[1] ]));
373+ vz2 = ((cbdata[blockid].x[ vID[2] ] - cbdata[blockid].x[ vID[1] ]) * (y - cbdata[blockid].y[ vID[1] ])) - ((x - cbdata[blockid].x[ vID[1] ]) * (cbdata[blockid].y[ vID[2] ] - cbdata[blockid].y[ vID[1] ]));
374374
375375 //内積
376376 d1 = data.material[face].vx*vx2 + data.material[face].vy*vy2 + data.material[face].vz*vz2; //ブロック面の法線との関係を算出
@@ -381,9 +381,9 @@
381381
382382
383383 //外積
384- vx2 = ((data.y[ vID[3] ] - data.y[ vID[2] ]) * (z - data.z[ vID[2] ])) - ((y - data.y[ vID[2] ]) * (data.z[ vID[3] ] - data.z[ vID[2] ]));
385- vy2 = ((data.z[ vID[3] ] - data.z[ vID[2] ]) * (x - data.x[ vID[2] ])) - ((z - data.z[ vID[2] ]) * (data.x[ vID[3] ] - data.x[ vID[2] ]));
386- vz2 = ((data.x[ vID[3] ] - data.x[ vID[2] ]) * (y - data.y[ vID[2] ])) - ((x - data.x[ vID[2] ]) * (data.y[ vID[3] ] - data.y[ vID[2] ]));
384+ vx2 = ((cbdata[blockid].y[ vID[3] ] - cbdata[blockid].y[ vID[2] ]) * (z - cbdata[blockid].z[ vID[2] ])) - ((y - cbdata[blockid].y[ vID[2] ]) * (cbdata[blockid].z[ vID[3] ] - cbdata[blockid].z[ vID[2] ]));
385+ vy2 = ((cbdata[blockid].z[ vID[3] ] - cbdata[blockid].z[ vID[2] ]) * (x - cbdata[blockid].x[ vID[2] ])) - ((z - cbdata[blockid].z[ vID[2] ]) * (cbdata[blockid].x[ vID[3] ] - cbdata[blockid].x[ vID[2] ]));
386+ vz2 = ((cbdata[blockid].x[ vID[3] ] - cbdata[blockid].x[ vID[2] ]) * (y - cbdata[blockid].y[ vID[2] ])) - ((x - cbdata[blockid].x[ vID[2] ]) * (cbdata[blockid].y[ vID[3] ] - cbdata[blockid].y[ vID[2] ]));
387387
388388 //内積
389389 d1 = data.material[face].vx*vx2 + data.material[face].vy*vy2 + data.material[face].vz*vz2; //ブロック面の法線との関係を算出
@@ -394,9 +394,9 @@
394394
395395
396396 //外積
397- vx2 = ((data.y[ vID[0] ] - data.y[ vID[3] ]) * (z - data.z[ vID[3] ])) - ((y - data.y[ vID[3] ]) * (data.z[ vID[0] ] - data.z[ vID[3] ]));
398- vy2 = ((data.z[ vID[0] ] - data.z[ vID[3] ]) * (x - data.x[ vID[3] ])) - ((z - data.z[ vID[3] ]) * (data.x[ vID[0] ] - data.x[ vID[3] ]));
399- vz2 = ((data.x[ vID[0] ] - data.x[ vID[3] ]) * (y - data.y[ vID[3] ])) - ((x - data.x[ vID[3] ]) * (data.y[ vID[0] ] - data.y[ vID[3] ]));
397+ vx2 = ((cbdata[blockid].y[ vID[0] ] - cbdata[blockid].y[ vID[3] ]) * (z - cbdata[blockid].z[ vID[3] ])) - ((y - cbdata[blockid].y[ vID[3] ]) * (cbdata[blockid].z[ vID[0] ] - cbdata[blockid].z[ vID[3] ]));
398+ vy2 = ((cbdata[blockid].z[ vID[0] ] - cbdata[blockid].z[ vID[3] ]) * (x - cbdata[blockid].x[ vID[3] ])) - ((z - cbdata[blockid].z[ vID[3] ]) * (cbdata[blockid].x[ vID[0] ] - cbdata[blockid].x[ vID[3] ]));
399+ vz2 = ((cbdata[blockid].x[ vID[0] ] - cbdata[blockid].x[ vID[3] ]) * (y - cbdata[blockid].y[ vID[3] ])) - ((x - cbdata[blockid].x[ vID[3] ]) * (cbdata[blockid].y[ vID[0] ] - cbdata[blockid].y[ vID[3] ]));
400400
401401 //内積
402402 d1 = data.material[face].vx*vx2 + data.material[face].vy*vy2 + data.material[face].vz*vz2; //ブロック面の法線との関係を算出